{
	"id": "ce43a0afedb37cfd5c4649a353337cfb",
	"_format": "hh-sol-build-info-1",
	"solcVersion": "0.5.16",
	"solcLongVersion": "0.5.16+commit.9c3226ce",
	"input": {
		"language": "Solidity",
		"sources": {
			"contracts/FirepotERC20.sol": {
				"content": "pragma solidity =0.5.16;\n\nimport './interfaces/IFirepotERC20.sol';\nimport './libraries/SafeMath.sol';\n\ncontract FirepotERC20 is IFirepotERC20 {\n    using SafeMath for uint;\n\n    string public constant name = 'Firepot-LP-Token';\n    string public constant symbol = 'FLP';\n    uint8 public constant decimals = 18;\n    uint  public totalSupply;\n    mapping(address => uint) public balanceOf;\n    mapping(address => mapping(address => uint)) public allowance;\n\n    bytes32 public DOMAIN_SEPARATOR;\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n    mapping(address => uint) public nonces;\n\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    constructor() public {\n        uint chainId;\n        assembly {\n            chainId := chainid\n        }\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n                keccak256(bytes(name)),\n                keccak256(bytes('1')),\n                chainId,\n                address(this)\n            )\n        );\n    }\n\n    function _mint(address to, uint value) internal {\n        totalSupply = totalSupply.add(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(address(0), to, value);\n    }\n\n    function _burn(address from, uint value) internal {\n        balanceOf[from] = balanceOf[from].sub(value);\n        totalSupply = totalSupply.sub(value);\n        emit Transfer(from, address(0), value);\n    }\n\n    function _approve(address owner, address spender, uint value) private {\n        allowance[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _transfer(address from, address to, uint value) private {\n        balanceOf[from] = balanceOf[from].sub(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(from, to, value);\n    }\n\n    function approve(address spender, uint value) external returns (bool) {\n        _approve(msg.sender, spender, value);\n        return true;\n    }\n\n    function transfer(address to, uint value) external returns (bool) {\n        _transfer(msg.sender, to, value);\n        return true;\n    }\n\n    function transferFrom(address from, address to, uint value) external returns (bool) {\n        if (allowance[from][msg.sender] != uint(-1)) {\n            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n        }\n        _transfer(from, to, value);\n        return true;\n    }\n\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n        require(deadline >= block.timestamp, 'Firepot: EXPIRED');\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(recoveredAddress != address(0) && recoveredAddress == owner, 'Firepot: INVALID_SIGNATURE');\n        _approve(owner, spender, value);\n    }\n}\n"
			},
			"contracts/libraries/SafeMath.sol": {
				"content": "pragma solidity =0.5.16;\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary SafeMath {\n    function add(uint x, uint y) internal pure returns (uint z) {\n        require((z = x + y) >= x, 'ds-math-add-overflow');\n    }\n\n    function sub(uint x, uint y) internal pure returns (uint z) {\n        require((z = x - y) <= x, 'ds-math-sub-underflow');\n    }\n\n    function mul(uint x, uint y) internal pure returns (uint z) {\n        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\n    }\n}\n"
			},
			"contracts/interfaces/IFirepotERC20.sol": {
				"content": "pragma solidity >=0.5.0;\n\ninterface IFirepotERC20 {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external pure returns (string memory);\n    function symbol() external pure returns (string memory);\n    function decimals() external pure returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n    function nonces(address owner) external view returns (uint);\n\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n}\n"
			}
		},
		"settings": {
			"optimizer": {
				"enabled": true,
				"runs": 999999
			},
			"outputSelection": {
				"*": {
					"": [
						"ast"
					],
					"*": [
						"abi",
						"metadata",
						"devdoc",
						"userdoc",
						"storageLayout",
						"evm.legacyAssembly",
						"evm.bytecode",
						"evm.deployedBytecode",
						"evm.methodIdentifiers",
						"evm.gasEstimates",
						"evm.assembly"
					]
				}
			},
			"evmVersion": "istanbul"
		}
	},
	"output": {
		"contracts": {
			"contracts/FirepotERC20.sol": {
				"FirepotERC20": {
					"abi": [
						{
							"inputs": [],
							"payable": false,
							"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"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "DOMAIN_SEPARATOR",
							"outputs": [
								{
									"internalType": "bytes32",
									"name": "",
									"type": "bytes32"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "PERMIT_TYPEHASH",
							"outputs": [
								{
									"internalType": "bytes32",
									"name": "",
									"type": "bytes32"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "",
									"type": "address"
								},
								{
									"internalType": "address",
									"name": "",
									"type": "address"
								}
							],
							"name": "allowance",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"inputs": [
								{
									"internalType": "address",
									"name": "spender",
									"type": "address"
								},
								{
									"internalType": "uint256",
									"name": "value",
									"type": "uint256"
								}
							],
							"name": "approve",
							"outputs": [
								{
									"internalType": "bool",
									"name": "",
									"type": "bool"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "",
									"type": "address"
								}
							],
							"name": "balanceOf",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "decimals",
							"outputs": [
								{
									"internalType": "uint8",
									"name": "",
									"type": "uint8"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "name",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "",
									"type": "address"
								}
							],
							"name": "nonces",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"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": [],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "symbol",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "totalSupply",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"inputs": [
								{
									"internalType": "address",
									"name": "to",
									"type": "address"
								},
								{
									"internalType": "uint256",
									"name": "value",
									"type": "uint256"
								}
							],
							"name": "transfer",
							"outputs": [
								{
									"internalType": "bool",
									"name": "",
									"type": "bool"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": false,
							"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"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						}
					],
					"devdoc": {
						"methods": {}
					},
					"evm": {
						"assembly": "    /* \"contracts/FirepotERC20.sol\":103:3427  contract FirepotERC20 is IFirepotERC20 {... */\n  mstore(0x40, 0x80)\n    /* \"contracts/FirepotERC20.sol\":916:1360  constructor() public {... */\n  callvalue\n    /* \"--CODEGEN--\":8:17   */\n  dup1\n    /* \"--CODEGEN--\":5:7   */\n  iszero\n  tag_1\n  jumpi\n    /* \"--CODEGEN--\":30:31   */\n  0x00\n    /* \"--CODEGEN--\":27:28   */\n  dup1\n    /* \"--CODEGEN--\":20:32   */\n  revert\n    /* \"--CODEGEN--\":5:7   */\ntag_1:\n  pop\n    /* \"contracts/FirepotERC20.sol\":1099:1194  keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)') */\n  mload(0x40)\n    /* \"contracts/FirepotERC20.sol\":1003:1010  chainid */\n  chainid\n  swap1\n    /* \"contracts/FirepotERC20.sol\":1099:1194  keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)') */\n  dup1\n  0x52\n  data_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f\n  dup3\n  codecopy\n  0x40\n  dup1\n  mload\n  swap2\n  dup3\n  swap1\n  sub\n  0x52\n  add\n  dup3\n  keccak256\n    /* \"contracts/FirepotERC20.sol\":1228:1232  name */\n  dup3\n  dup3\n  add\n  dup3\n  mstore\n  0x10\n  dup4\n  mstore\n  shl(0x81, 0x2334b932b837ba16a62816aa37b5b2b7)\n  0x20\n  swap4\n  dup5\n  add\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1262:1272  bytes('1') */\n  dup2\n  mload\n  dup1\n  dup4\n  add\n  dup4\n  mstore\n  0x01\n  dup2\n  mstore\n  shl(0xf8, 0x31)\n  swap1\n  dup5\n  add\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1071:1343  abi.encode(... */\n  dup2\n  mload\n  dup1\n  dup5\n  add\n  swap2\n  swap1\n  swap2\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1212:1234  keccak256(bytes(name)) */\n  0x3385a9db56213d5d224192fa2a4ce7b4c32b3c201da41f3238a75728962c8bd6\n    /* \"contracts/FirepotERC20.sol\":1071:1343  abi.encode(... */\n  dup2\n  dup4\n  add\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1252:1273  keccak256(bytes('1')) */\n  0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6\n    /* \"contracts/FirepotERC20.sol\":1071:1343  abi.encode(... */\n  0x60\n  dup3\n  add\n  mstore\n  0x80\n  dup2\n  add\n  swap5\n  swap1\n  swap5\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1324:1328  this */\n  address\n    /* \"contracts/FirepotERC20.sol\":1071:1343  abi.encode(... */\n  0xa0\n  dup1\n  dup7\n  add\n  swap2\n  swap1\n  swap2\n  mstore\n  dup2\n  mload\n    /* \"--CODEGEN--\":26:47   */\n  dup1\n  dup7\n  sub\n    /* \"--CODEGEN--\":22:54   */\n  swap1\n  swap2\n  add\n    /* \"--CODEGEN--\":6:55   */\n  dup2\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1071:1343  abi.encode(... */\n  0xc0\n  swap1\n  swap5\n  add\n  swap1\n  mstore\n    /* \"contracts/FirepotERC20.sol\":1048:1353  keccak256(... */\n  dup3\n  mload\n  swap3\n  add\n  swap2\n  swap1\n  swap2\n  keccak256\n    /* \"contracts/FirepotERC20.sol\":1029:1045  DOMAIN_SEPARATOR */\n  0x03\n    /* \"contracts/FirepotERC20.sol\":1029:1353  DOMAIN_SEPARATOR = keccak256(... */\n  sstore\n  pop\n    /* \"contracts/FirepotERC20.sol\":103:3427  contract FirepotERC20 is IFirepotERC20 {... */\n  dataSize(sub_0)\n  dup1\n  dataOffset(sub_0)\n  0x00\n  codecopy\n  0x00\n  return\nstop\ndata_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429\n\nsub_0: assembly {\n        /* \"contracts/FirepotERC20.sol\":103:3427  contract FirepotERC20 is IFirepotERC20 {... */\n      mstore(0x40, 0x80)\n      callvalue\n        /* \"--CODEGEN--\":8:17   */\n      dup1\n        /* \"--CODEGEN--\":5:7   */\n      iszero\n      tag_1\n      jumpi\n        /* \"--CODEGEN--\":30:31   */\n      0x00\n        /* \"--CODEGEN--\":27:28   */\n      dup1\n        /* \"--CODEGEN--\":20:32   */\n      revert\n        /* \"--CODEGEN--\":5:7   */\n    tag_1:\n        /* \"contracts/FirepotERC20.sol\":103:3427  contract FirepotERC20 is IFirepotERC20 {... */\n      pop\n      jumpi(tag_2, lt(calldatasize, 0x04))\n      shr(0xe0, calldataload(0x00))\n      dup1\n      0x3644e515\n      gt\n      tag_16\n      jumpi\n      dup1\n      0x95d89b41\n      gt\n      tag_17\n      jumpi\n      dup1\n      0x95d89b41\n      eq\n      tag_12\n      jumpi\n      dup1\n      0xa9059cbb\n      eq\n      tag_13\n      jumpi\n      dup1\n      0xd505accf\n      eq\n      tag_14\n      jumpi\n      dup1\n      0xdd62ed3e\n      eq\n      tag_15\n      jumpi\n      jump(tag_2)\n    tag_17:\n      dup1\n      0x3644e515\n      eq\n      tag_9\n      jumpi\n      dup1\n      0x70a08231\n      eq\n      tag_10\n      jumpi\n      dup1\n      0x7ecebe00\n      eq\n      tag_11\n      jumpi\n      jump(tag_2)\n    tag_16:\n      dup1\n      0x23b872dd\n      gt\n      tag_18\n      jumpi\n      dup1\n      0x23b872dd\n      eq\n      tag_6\n      jumpi\n      dup1\n      0x30adf81f\n      eq\n      tag_7\n      jumpi\n      dup1\n      0x313ce567\n      eq\n      tag_8\n      jumpi\n      jump(tag_2)\n    tag_18:\n      dup1\n      0x06fdde03\n      eq\n      tag_3\n      jumpi\n      dup1\n      0x095ea7b3\n      eq\n      tag_4\n      jumpi\n      dup1\n      0x18160ddd\n      eq\n      tag_5\n      jumpi\n    tag_2:\n      0x00\n      dup1\n      revert\n        /* \"contracts/FirepotERC20.sol\":178:226  string public constant name = 'Firepot-LP-Token' */\n    tag_3:\n      tag_19\n      tag_20\n      jump\t// in\n    tag_19:\n      0x40\n      dup1\n      mload\n      0x20\n      dup1\n      dup3\n      mstore\n      dup4\n      mload\n      dup2\n      dup4\n      add\n      mstore\n      dup4\n      mload\n      swap2\n      swap3\n      dup4\n      swap3\n      swap1\n      dup4\n      add\n      swap2\n      dup6\n      add\n      swap1\n      dup1\n      dup4\n      dup4\n      0x00\n        /* \"--CODEGEN--\":8:108   */\n    tag_21:\n        /* \"--CODEGEN--\":33:36   */\n      dup4\n        /* \"--CODEGEN--\":30:31   */\n      dup2\n        /* \"--CODEGEN--\":27:37   */\n      lt\n        /* \"--CODEGEN--\":8:108   */\n      iszero\n      tag_23\n      jumpi\n        /* \"--CODEGEN--\":90:101   */\n      dup2\n      dup2\n      add\n        /* \"--CODEGEN--\":84:102   */\n      mload\n        /* \"--CODEGEN--\":71:82   */\n      dup4\n      dup3\n      add\n        /* \"--CODEGEN--\":64:103   */\n      mstore\n        /* \"--CODEGEN--\":52:54   */\n      0x20\n        /* \"--CODEGEN--\":45:55   */\n      add\n        /* \"--CODEGEN--\":8:108   */\n      jump(tag_21)\n    tag_23:\n        /* \"--CODEGEN--\":12:26   */\n      pop\n        /* \"contracts/FirepotERC20.sol\":178:226  string public constant name = 'Firepot-LP-Token' */\n      pop\n      pop\n      pop\n      swap1\n      pop\n      swap1\n      dup2\n      add\n      swap1\n      0x1f\n      and\n      dup1\n      iszero\n      tag_24\n      jumpi\n      dup1\n      dup3\n      sub\n      dup1\n      mload\n      0x01\n      dup4\n      0x20\n      sub\n      0x0100\n      exp\n      sub\n      not\n      and\n      dup2\n      mstore\n      0x20\n      add\n      swap2\n      pop\n    tag_24:\n      pop\n      swap3\n      pop\n      pop\n      pop\n      mload(0x40)\n      dup1\n      swap2\n      sub\n      swap1\n      return\n        /* \"contracts/FirepotERC20.sol\":2174:2318  function approve(address spender, uint value) external returns (bool) {... */\n    tag_4:\n      tag_25\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x40\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_26\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_26:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2174:2318  function approve(address spender, uint value) external returns (bool) {... */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      calldataload\n      and\n      swap1\n      0x20\n      add\n      calldataload\n      tag_27\n      jump\t// in\n    tag_25:\n      0x40\n      dup1\n      mload\n      swap2\n      iszero\n      iszero\n      dup3\n      mstore\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x20\n      add\n      swap1\n      return\n        /* \"contracts/FirepotERC20.sol\":316:340  uint  public totalSupply */\n    tag_5:\n      tag_28\n      tag_29\n      jump\t// in\n    tag_28:\n      0x40\n      dup1\n      mload\n      swap2\n      dup3\n      mstore\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x20\n      add\n      swap1\n      return\n        /* \"contracts/FirepotERC20.sol\":2466:2761  function transferFrom(address from, address to, uint value) external returns (bool) {... */\n    tag_6:\n      tag_25\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x60\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_31\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_31:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2466:2761  function transferFrom(address from, address to, uint value) external returns (bool) {... */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      calldataload\n      dup2\n      and\n      swap2\n      0x20\n      dup2\n      add\n      calldataload\n      swap1\n      swap2\n      and\n      swap1\n      0x40\n      add\n      calldataload\n      tag_32\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":602:710  bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 */\n    tag_7:\n      tag_28\n      tag_34\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":275:310  uint8 public constant decimals = 18 */\n    tag_8:\n      tag_35\n      tag_36\n      jump\t// in\n    tag_35:\n      0x40\n      dup1\n      mload\n      0xff\n      swap1\n      swap3\n      and\n      dup3\n      mstore\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x20\n      add\n      swap1\n      return\n        /* \"contracts/FirepotERC20.sol\":461:492  bytes32 public DOMAIN_SEPARATOR */\n    tag_9:\n      tag_28\n      tag_38\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":346:387  mapping(address => uint) public balanceOf */\n    tag_10:\n      tag_28\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x20\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_40\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_40:\n      pop\n        /* \"contracts/FirepotERC20.sol\":346:387  mapping(address => uint) public balanceOf */\n      calldataload\n      0xffffffffffffffffffffffffffffffffffffffff\n      and\n      tag_41\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":716:754  mapping(address => uint) public nonces */\n    tag_11:\n      tag_28\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x20\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_43\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_43:\n      pop\n        /* \"contracts/FirepotERC20.sol\":716:754  mapping(address => uint) public nonces */\n      calldataload\n      0xffffffffffffffffffffffffffffffffffffffff\n      and\n      tag_44\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":232:269  string public constant symbol = 'FLP' */\n    tag_12:\n      tag_19\n      tag_46\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":2324:2460  function transfer(address to, uint value) external returns (bool) {... */\n    tag_13:\n      tag_25\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x40\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_52\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_52:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2324:2460  function transfer(address to, uint value) external returns (bool) {... */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      calldataload\n      and\n      swap1\n      0x20\n      add\n      calldataload\n      tag_53\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":2767:3425  function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {... */\n    tag_14:\n      tag_54\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:16   */\n      0xe0\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:17   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_55\n      jumpi\n        /* \"--CODEGEN--\":30:31   */\n      0x00\n        /* \"--CODEGEN--\":27:28   */\n      dup1\n        /* \"--CODEGEN--\":20:32   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_55:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2767:3425  function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {... */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      calldataload\n      dup2\n      and\n      swap2\n      0x20\n      dup2\n      add\n      calldataload\n      swap1\n      swap2\n      and\n      swap1\n      0x40\n      dup2\n      add\n      calldataload\n      swap1\n      0x60\n      dup2\n      add\n      calldataload\n      swap1\n      0xff\n      0x80\n      dup3\n      add\n      calldataload\n      and\n      swap1\n      0xa0\n      dup2\n      add\n      calldataload\n      swap1\n      0xc0\n      add\n      calldataload\n      tag_56\n      jump\t// in\n    tag_54:\n      stop\n        /* \"contracts/FirepotERC20.sol\":393:454  mapping(address => mapping(address => uint)) public allowance */\n    tag_15:\n      tag_28\n      0x04\n      dup1\n      calldatasize\n      sub\n        /* \"--CODEGEN--\":13:15   */\n      0x40\n        /* \"--CODEGEN--\":8:11   */\n      dup2\n        /* \"--CODEGEN--\":5:16   */\n      lt\n        /* \"--CODEGEN--\":2:4   */\n      iszero\n      tag_58\n      jumpi\n        /* \"--CODEGEN--\":29:30   */\n      0x00\n        /* \"--CODEGEN--\":26:27   */\n      dup1\n        /* \"--CODEGEN--\":19:31   */\n      revert\n        /* \"--CODEGEN--\":2:4   */\n    tag_58:\n      pop\n        /* \"contracts/FirepotERC20.sol\":393:454  mapping(address => mapping(address => uint)) public allowance */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      calldataload\n      dup2\n      and\n      swap2\n      0x20\n      add\n      calldataload\n      and\n      tag_59\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":178:226  string public constant name = 'Firepot-LP-Token' */\n    tag_20:\n      mload(0x40)\n      dup1\n      0x40\n      add\n      0x40\n      mstore\n      dup1\n      0x10\n      dup2\n      mstore\n      0x20\n      add\n      0x46697265706f742d4c502d546f6b656e00000000000000000000000000000000\n      dup2\n      mstore\n      pop\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":2174:2318  function approve(address spender, uint value) external returns (bool) {... */\n    tag_27:\n        /* \"contracts/FirepotERC20.sol\":2238:2242  bool */\n      0x00\n        /* \"contracts/FirepotERC20.sol\":2254:2290  _approve(msg.sender, spender, value) */\n      tag_61\n        /* \"contracts/FirepotERC20.sol\":2263:2273  msg.sender */\n      caller\n        /* \"contracts/FirepotERC20.sol\":2275:2282  spender */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2284:2289  value */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2254:2262  _approve */\n      tag_62\n        /* \"contracts/FirepotERC20.sol\":2254:2290  _approve(msg.sender, spender, value) */\n      jump\t// in\n    tag_61:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2307:2311  true */\n      0x01\n        /* \"contracts/FirepotERC20.sol\":2174:2318  function approve(address spender, uint value) external returns (bool) {... */\n    tag_60:\n      swap3\n      swap2\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":316:340  uint  public totalSupply */\n    tag_29:\n      sload(0x00)\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":2466:2761  function transferFrom(address from, address to, uint value) external returns (bool) {... */\n    tag_32:\n        /* \"contracts/FirepotERC20.sol\":2564:2579  allowance[from] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup4\n      and\n        /* \"contracts/FirepotERC20.sol\":2544:2548  bool */\n      0x00\n        /* \"contracts/FirepotERC20.sol\":2564:2579  allowance[from] */\n      swap1\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2564:2573  allowance */\n      0x02\n        /* \"contracts/FirepotERC20.sol\":2564:2579  allowance[from] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      dup1\n      dup4\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2580:2590  msg.sender */\n      caller\n        /* \"contracts/FirepotERC20.sol\":2564:2591  allowance[from][msg.sender] */\n      dup5\n      mstore\n      swap1\n      swap2\n      mstore\n      dup2\n      keccak256\n      sload\n        /* \"contracts/FirepotERC20.sol\":2600:2602  -1 */\n      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n        /* \"contracts/FirepotERC20.sol\":2564:2603  allowance[from][msg.sender] != uint(-1) */\n      eq\n        /* \"contracts/FirepotERC20.sol\":2560:2698  if (allowance[from][msg.sender] != uint(-1)) {... */\n      tag_64\n      jumpi\n        /* \"contracts/FirepotERC20.sol\":2649:2664  allowance[from] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup5\n      and\n      0x00\n      swap1\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2649:2658  allowance */\n      0x02\n        /* \"contracts/FirepotERC20.sol\":2649:2664  allowance[from] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      dup1\n      dup4\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2665:2675  msg.sender */\n      caller\n        /* \"contracts/FirepotERC20.sol\":2649:2676  allowance[from][msg.sender] */\n      dup5\n      mstore\n      swap1\n      swap2\n      mstore\n      swap1\n      keccak256\n      sload\n        /* \"contracts/FirepotERC20.sol\":2649:2687  allowance[from][msg.sender].sub(value) */\n      tag_65\n      swap1\n        /* \"contracts/FirepotERC20.sol\":2681:2686  value */\n      dup4\n        /* \"contracts/FirepotERC20.sol\":2649:2687  allowance[from][msg.sender].sub(value) */\n      0xffffffff\n        /* \"contracts/FirepotERC20.sol\":2649:2680  allowance[from][msg.sender].sub */\n      tag_66\n        /* \"contracts/FirepotERC20.sol\":2649:2687  allowance[from][msg.sender].sub(value) */\n      and\n      jump\t// in\n    tag_65:\n        /* \"contracts/FirepotERC20.sol\":2619:2634  allowance[from] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup6\n      and\n      0x00\n      swap1\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2619:2628  allowance */\n      0x02\n        /* \"contracts/FirepotERC20.sol\":2619:2634  allowance[from] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      dup1\n      dup4\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2635:2645  msg.sender */\n      caller\n        /* \"contracts/FirepotERC20.sol\":2619:2646  allowance[from][msg.sender] */\n      dup5\n      mstore\n      swap1\n      swap2\n      mstore\n      swap1\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2619:2687  allowance[from][msg.sender] = allowance[from][msg.sender].sub(value) */\n      sstore\n        /* \"contracts/FirepotERC20.sol\":2560:2698  if (allowance[from][msg.sender] != uint(-1)) {... */\n    tag_64:\n        /* \"contracts/FirepotERC20.sol\":2707:2733  _transfer(from, to, value) */\n      tag_67\n        /* \"contracts/FirepotERC20.sol\":2717:2721  from */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2723:2725  to */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2727:2732  value */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2707:2716  _transfer */\n      tag_68\n        /* \"contracts/FirepotERC20.sol\":2707:2733  _transfer(from, to, value) */\n      jump\t// in\n    tag_67:\n      pop\n        /* \"contracts/FirepotERC20.sol\":2750:2754  true */\n      0x01\n        /* \"contracts/FirepotERC20.sol\":2466:2761  function transferFrom(address from, address to, uint value) external returns (bool) {... */\n      swap4\n      swap3\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":602:710  bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 */\n    tag_34:\n        /* \"contracts/FirepotERC20.sol\":644:710  0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 */\n      0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9\n        /* \"contracts/FirepotERC20.sol\":602:710  bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 */\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":275:310  uint8 public constant decimals = 18 */\n    tag_36:\n        /* \"contracts/FirepotERC20.sol\":308:310  18 */\n      0x12\n        /* \"contracts/FirepotERC20.sol\":275:310  uint8 public constant decimals = 18 */\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":461:492  bytes32 public DOMAIN_SEPARATOR */\n    tag_38:\n      sload(0x03)\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":346:387  mapping(address => uint) public balanceOf */\n    tag_41:\n      mstore(0x20, 0x01)\n      0x00\n      swap1\n      dup2\n      mstore\n      0x40\n      swap1\n      keccak256\n      sload\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":716:754  mapping(address => uint) public nonces */\n    tag_44:\n      mstore(0x20, 0x04)\n      0x00\n      swap1\n      dup2\n      mstore\n      0x40\n      swap1\n      keccak256\n      sload\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":232:269  string public constant symbol = 'FLP' */\n    tag_46:\n      mload(0x40)\n      dup1\n      0x40\n      add\n      0x40\n      mstore\n      dup1\n      0x03\n      dup2\n      mstore\n      0x20\n      add\n      0x464c500000000000000000000000000000000000000000000000000000000000\n      dup2\n      mstore\n      pop\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":2324:2460  function transfer(address to, uint value) external returns (bool) {... */\n    tag_53:\n        /* \"contracts/FirepotERC20.sol\":2384:2388  bool */\n      0x00\n        /* \"contracts/FirepotERC20.sol\":2400:2432  _transfer(msg.sender, to, value) */\n      tag_61\n        /* \"contracts/FirepotERC20.sol\":2410:2420  msg.sender */\n      caller\n        /* \"contracts/FirepotERC20.sol\":2422:2424  to */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2426:2431  value */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2400:2409  _transfer */\n      tag_68\n        /* \"contracts/FirepotERC20.sol\":2400:2432  _transfer(msg.sender, to, value) */\n      jump\t// in\n        /* \"contracts/FirepotERC20.sol\":2767:3425  function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {... */\n    tag_56:\n        /* \"contracts/FirepotERC20.sol\":2912:2927  block.timestamp */\n      timestamp\n        /* \"contracts/FirepotERC20.sol\":2900:2908  deadline */\n      dup5\n        /* \"contracts/FirepotERC20.sol\":2900:2927  deadline >= block.timestamp */\n      lt\n      iszero\n        /* \"contracts/FirepotERC20.sol\":2892:2948  require(deadline >= block.timestamp, 'Firepot: EXPIRED') */\n      tag_72\n      jumpi\n      0x40\n      dup1\n      mload\n      0x08c379a000000000000000000000000000000000000000000000000000000000\n      dup2\n      mstore\n      0x20\n      0x04\n      dup3\n      add\n      mstore\n      0x10\n      0x24\n      dup3\n      add\n      mstore\n      0x46697265706f743a204558504952454400000000000000000000000000000000\n      0x44\n      dup3\n      add\n      mstore\n      swap1\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x64\n      add\n      swap1\n      revert\n    tag_72:\n        /* \"contracts/FirepotERC20.sol\":3060:3076  DOMAIN_SEPARATOR */\n      sload(0x03)\n        /* \"contracts/FirepotERC20.sol\":3155:3168  nonces[owner] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup1\n      dup10\n      and\n        /* \"contracts/FirepotERC20.sol\":2958:2972  bytes32 digest */\n      0x00\n        /* \"contracts/FirepotERC20.sol\":3155:3168  nonces[owner] */\n      dup2\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":3155:3161  nonces */\n      0x04\n        /* \"contracts/FirepotERC20.sol\":3155:3168  nonces[owner] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      dup1\n      dup4\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":3155:3170  nonces[owner]++ */\n      dup1\n      sload\n      0x01\n      dup1\n      dup3\n      add\n      swap1\n      swap3\n      sstore\n        /* \"contracts/FirepotERC20.sol\":3104:3181  abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline) */\n      dup3\n      mload\n        /* \"contracts/FirepotERC20.sol\":644:710  0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 */\n      0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9\n        /* \"contracts/FirepotERC20.sol\":3104:3181  abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline) */\n      dup2\n      dup7\n      add\n      mstore\n      dup1\n      dup5\n      add\n      swap7\n      swap1\n      swap7\n      mstore\n      swap6\n      dup14\n      and\n      0x60\n      dup7\n      add\n      mstore\n      0x80\n      dup6\n      add\n      dup13\n      swap1\n      mstore\n      0xa0\n      dup6\n      add\n      swap6\n      swap1\n      swap6\n      mstore\n      0xc0\n      dup1\n      dup6\n      add\n      dup12\n      swap1\n      mstore\n      dup2\n      mload\n        /* \"--CODEGEN--\":26:47   */\n      dup1\n      dup7\n      sub\n        /* \"--CODEGEN--\":22:54   */\n      swap1\n      swap2\n      add\n        /* \"--CODEGEN--\":6:55   */\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":3104:3181  abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline) */\n      0xe0\n      dup6\n      add\n      dup3\n      mstore\n        /* \"contracts/FirepotERC20.sol\":3094:3182  keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) */\n      dup1\n      mload\n      swap1\n      dup4\n      add\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2998:3196  abi.encodePacked(... */\n      0x1901000000000000000000000000000000000000000000000000000000000000\n      0x0100\n      dup7\n      add\n      mstore\n      0x0102\n      dup6\n      add\n      swap7\n      swap1\n      swap7\n      mstore\n      0x0122\n      dup1\n      dup6\n      add\n      swap7\n      swap1\n      swap7\n      mstore\n      dup1\n      mload\n        /* \"--CODEGEN--\":26:47   */\n      dup1\n      dup6\n      sub\n        /* \"--CODEGEN--\":22:54   */\n      swap1\n      swap7\n      add\n        /* \"--CODEGEN--\":6:55   */\n      dup7\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2998:3196  abi.encodePacked(... */\n      0x0142\n      dup5\n      add\n      dup1\n      dup3\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2975:3206  keccak256(... */\n      dup7\n      mload\n      swap7\n      dup4\n      add\n      swap7\n      swap1\n      swap7\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":3243:3269  ecrecover(digest, v, r, s) */\n      swap6\n      dup4\n      swap1\n      mstore\n      0x0162\n      dup5\n      add\n      dup1\n      dup3\n      mstore\n      dup7\n      swap1\n      mstore\n      0xff\n      dup10\n      and\n      0x0182\n      dup6\n      add\n      mstore\n      0x01a2\n      dup5\n      add\n      dup9\n      swap1\n      mstore\n      0x01c2\n      dup5\n      add\n      dup8\n      swap1\n      mstore\n      mload\n        /* \"contracts/FirepotERC20.sol\":2958:2972  bytes32 digest */\n      swap2\n      swap4\n        /* \"contracts/FirepotERC20.sol\":3155:3170  nonces[owner]++ */\n      swap3\n        /* \"contracts/FirepotERC20.sol\":3243:3269  ecrecover(digest, v, r, s) */\n      0x01e2\n      dup1\n      dup3\n      add\n      swap4\n      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n      dup2\n      add\n      swap3\n      dup2\n      swap1\n      sub\n      swap1\n      swap2\n      add\n      swap1\n        /* \"contracts/FirepotERC20.sol\":3155:3170  nonces[owner]++ */\n      dup6\n        /* \"contracts/FirepotERC20.sol\":3243:3269  ecrecover(digest, v, r, s) */\n      gas\n      staticcall\n      iszero\n        /* \"--CODEGEN--\":8:17   */\n      dup1\n        /* \"--CODEGEN--\":5:7   */\n      iszero\n      tag_73\n      jumpi\n        /* \"--CODEGEN--\":45:61   */\n      returndatasize\n        /* \"--CODEGEN--\":42:43   */\n      0x00\n        /* \"--CODEGEN--\":39:40   */\n      dup1\n        /* \"--CODEGEN--\":24:62   */\n      returndatacopy\n        /* \"--CODEGEN--\":77:93   */\n      returndatasize\n        /* \"--CODEGEN--\":74:75   */\n      0x00\n        /* \"--CODEGEN--\":67:94   */\n      revert\n        /* \"--CODEGEN--\":5:7   */\n    tag_73:\n      pop\n      pop\n        /* \"contracts/FirepotERC20.sol\":3243:3269  ecrecover(digest, v, r, s) */\n      mload(add(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0, mload(0x40)))\n      swap2\n      pop\n      pop\n        /* \"contracts/FirepotERC20.sol\":3287:3317  recoveredAddress != address(0) */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup2\n      and\n      iszero\n      dup1\n      iszero\n      swap1\n        /* \"contracts/FirepotERC20.sol\":3287:3346  recoveredAddress != address(0) && recoveredAddress == owner */\n      tag_74\n      jumpi\n      pop\n        /* \"contracts/FirepotERC20.sol\":3341:3346  owner */\n      dup9\n        /* \"contracts/FirepotERC20.sol\":3321:3346  recoveredAddress == owner */\n      0xffffffffffffffffffffffffffffffffffffffff\n      and\n        /* \"contracts/FirepotERC20.sol\":3321:3337  recoveredAddress */\n      dup2\n        /* \"contracts/FirepotERC20.sol\":3321:3346  recoveredAddress == owner */\n      0xffffffffffffffffffffffffffffffffffffffff\n      and\n      eq\n        /* \"contracts/FirepotERC20.sol\":3287:3346  recoveredAddress != address(0) && recoveredAddress == owner */\n    tag_74:\n        /* \"contracts/FirepotERC20.sol\":3279:3377  require(recoveredAddress != address(0) && recoveredAddress == owner, 'Firepot: INVALID_SIGNATURE') */\n      tag_75\n      jumpi\n      0x40\n      dup1\n      mload\n      0x08c379a000000000000000000000000000000000000000000000000000000000\n      dup2\n      mstore\n      0x20\n      0x04\n      dup3\n      add\n      mstore\n      0x1a\n      0x24\n      dup3\n      add\n      mstore\n      0x46697265706f743a20494e56414c49445f5349474e4154555245000000000000\n      0x44\n      dup3\n      add\n      mstore\n      swap1\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x64\n      add\n      swap1\n      revert\n    tag_75:\n        /* \"contracts/FirepotERC20.sol\":3387:3418  _approve(owner, spender, value) */\n      tag_76\n        /* \"contracts/FirepotERC20.sol\":3396:3401  owner */\n      dup10\n        /* \"contracts/FirepotERC20.sol\":3403:3410  spender */\n      dup10\n        /* \"contracts/FirepotERC20.sol\":3412:3417  value */\n      dup10\n        /* \"contracts/FirepotERC20.sol\":3387:3395  _approve */\n      tag_62\n        /* \"contracts/FirepotERC20.sol\":3387:3418  _approve(owner, spender, value) */\n      jump\t// in\n    tag_76:\n        /* \"contracts/FirepotERC20.sol\":2767:3425  function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {... */\n      pop\n      pop\n      pop\n      pop\n      pop\n      pop\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":393:454  mapping(address => mapping(address => uint)) public allowance */\n    tag_59:\n      0x02\n      0x20\n      swap1\n      dup2\n      mstore\n      0x00\n      swap3\n      dup4\n      mstore\n      0x40\n      dup1\n      dup5\n      keccak256\n      swap1\n      swap2\n      mstore\n      swap1\n      dup3\n      mstore\n      swap1\n      keccak256\n      sload\n      dup2\n      jump\t// out\n        /* \"contracts/FirepotERC20.sol\":1780:1946  function _approve(address owner, address spender, uint value) private {... */\n    tag_62:\n        /* \"contracts/FirepotERC20.sol\":1860:1876  allowance[owner] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup1\n      dup5\n      and\n      0x00\n      dup2\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":1860:1869  allowance */\n      0x02\n        /* \"contracts/FirepotERC20.sol\":1860:1876  allowance[owner] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      dup1\n      dup4\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":1860:1885  allowance[owner][spender] */\n      swap5\n      dup8\n      and\n      dup1\n      dup5\n      mstore\n      swap5\n      dup3\n      mstore\n      swap2\n      dup3\n      swap1\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":1860:1893  allowance[owner][spender] = value */\n      dup6\n      swap1\n      sstore\n        /* \"contracts/FirepotERC20.sol\":1908:1939  Approval(owner, spender, value) */\n      dup2\n      mload\n      dup6\n      dup2\n      mstore\n      swap2\n      mload\n      0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n      swap3\n      dup2\n      swap1\n      sub\n      swap1\n      swap2\n      add\n      swap1\n      log3\n        /* \"contracts/FirepotERC20.sol\":1780:1946  function _approve(address owner, address spender, uint value) private {... */\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/libraries/SafeMath.sol\":287:414  function sub(uint x, uint y) internal pure returns (uint z) {... */\n    tag_66:\n        /* \"contracts/libraries/SafeMath.sol\":370:375  x - y */\n      dup1\n      dup3\n      sub\n        /* \"contracts/libraries/SafeMath.sol\":365:381  (z = x - y) <= x */\n      dup3\n      dup2\n      gt\n      iszero\n        /* \"contracts/libraries/SafeMath.sol\":357:407  require((z = x - y) <= x, 'ds-math-sub-underflow') */\n      tag_60\n      jumpi\n      0x40\n      dup1\n      mload\n      0x08c379a000000000000000000000000000000000000000000000000000000000\n      dup2\n      mstore\n      0x20\n      0x04\n      dup3\n      add\n      mstore\n      0x15\n      0x24\n      dup3\n      add\n      mstore\n      0x64732d6d6174682d7375622d756e646572666c6f770000000000000000000000\n      0x44\n      dup3\n      add\n      mstore\n      swap1\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x64\n      add\n      swap1\n      revert\n        /* \"contracts/FirepotERC20.sol\":1952:2168  function _transfer(address from, address to, uint value) private {... */\n    tag_68:\n        /* \"contracts/FirepotERC20.sol\":2045:2060  balanceOf[from] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup4\n      and\n      0x00\n      swap1\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2045:2054  balanceOf */\n      0x01\n        /* \"contracts/FirepotERC20.sol\":2045:2060  balanceOf[from] */\n      0x20\n      mstore\n      0x40\n      swap1\n      keccak256\n      sload\n        /* \"contracts/FirepotERC20.sol\":2045:2071  balanceOf[from].sub(value) */\n      tag_81\n      swap1\n        /* \"contracts/FirepotERC20.sol\":2065:2070  value */\n      dup3\n        /* \"contracts/FirepotERC20.sol\":2045:2071  balanceOf[from].sub(value) */\n      0xffffffff\n        /* \"contracts/FirepotERC20.sol\":2045:2064  balanceOf[from].sub */\n      tag_66\n        /* \"contracts/FirepotERC20.sol\":2045:2071  balanceOf[from].sub(value) */\n      and\n      jump\t// in\n    tag_81:\n        /* \"contracts/FirepotERC20.sol\":2027:2042  balanceOf[from] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup1\n      dup6\n      and\n      0x00\n      swap1\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2027:2036  balanceOf */\n      0x01\n        /* \"contracts/FirepotERC20.sol\":2027:2042  balanceOf[from] */\n      0x20\n      mstore\n      0x40\n      dup1\n      dup3\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2027:2071  balanceOf[from] = balanceOf[from].sub(value) */\n      swap4\n      swap1\n      swap4\n      sstore\n        /* \"contracts/FirepotERC20.sol\":2097:2110  balanceOf[to] */\n      swap1\n      dup5\n      and\n      dup2\n      mstore\n      keccak256\n      sload\n        /* \"contracts/FirepotERC20.sol\":2097:2121  balanceOf[to].add(value) */\n      tag_82\n      swap1\n        /* \"contracts/FirepotERC20.sol\":2115:2120  value */\n      dup3\n        /* \"contracts/FirepotERC20.sol\":2097:2121  balanceOf[to].add(value) */\n      0xffffffff\n        /* \"contracts/FirepotERC20.sol\":2097:2114  balanceOf[to].add */\n      tag_83\n        /* \"contracts/FirepotERC20.sol\":2097:2121  balanceOf[to].add(value) */\n      and\n      jump\t// in\n    tag_82:\n        /* \"contracts/FirepotERC20.sol\":2081:2094  balanceOf[to] */\n      0xffffffffffffffffffffffffffffffffffffffff\n      dup1\n      dup5\n      and\n      0x00\n      dup2\n      dup2\n      mstore\n        /* \"contracts/FirepotERC20.sol\":2081:2090  balanceOf */\n      0x01\n        /* \"contracts/FirepotERC20.sol\":2081:2094  balanceOf[to] */\n      0x20\n      swap1\n      dup2\n      mstore\n      0x40\n      swap2\n      dup3\n      swap1\n      keccak256\n        /* \"contracts/FirepotERC20.sol\":2081:2121  balanceOf[to] = balanceOf[to].add(value) */\n      swap5\n      swap1\n      swap5\n      sstore\n        /* \"contracts/FirepotERC20.sol\":2136:2161  Transfer(from, to, value) */\n      dup1\n      mload\n      dup6\n      dup2\n      mstore\n      swap1\n      mload\n        /* \"contracts/FirepotERC20.sol\":2081:2094  balanceOf[to] */\n      swap2\n      swap4\n        /* \"contracts/FirepotERC20.sol\":2136:2161  Transfer(from, to, value) */\n      swap3\n      dup8\n      and\n      swap3\n      0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n      swap3\n      swap2\n      dup3\n      swap1\n      sub\n      add\n      swap1\n      log3\n        /* \"contracts/FirepotERC20.sol\":1952:2168  function _transfer(address from, address to, uint value) private {... */\n      pop\n      pop\n      pop\n      jump\t// out\n        /* \"contracts/libraries/SafeMath.sol\":155:281  function add(uint x, uint y) internal pure returns (uint z) {... */\n    tag_83:\n        /* \"contracts/libraries/SafeMath.sol\":238:243  x + y */\n      dup1\n      dup3\n      add\n        /* \"contracts/libraries/SafeMath.sol\":233:249  (z = x + y) >= x */\n      dup3\n      dup2\n      lt\n      iszero\n        /* \"contracts/libraries/SafeMath.sol\":225:274  require((z = x + y) >= x, 'ds-math-add-overflow') */\n      tag_60\n      jumpi\n      0x40\n      dup1\n      mload\n      0x08c379a000000000000000000000000000000000000000000000000000000000\n      dup2\n      mstore\n      0x20\n      0x04\n      dup3\n      add\n      mstore\n      0x14\n      0x24\n      dup3\n      add\n      mstore\n      0x64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000\n      0x44\n      dup3\n      add\n      mstore\n      swap1\n      mload\n      swap1\n      dup2\n      swap1\n      sub\n      0x64\n      add\n      swap1\n      revert\n\n    auxdata: 0xa265627a7a72315820cad12380a1edf9d3553eeececcbc124baa9467abfd57b077e36fb7c886e2e2ac64736f6c63430005100032\n}\n",
						"bytecode": {
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b506040514690806052610b8f8239604080519182900360520182208282018252601083526f2334b932b837ba16a62816aa37b5b2b760811b6020938401528151808301835260018152603160f81b908401528151808401919091527f3385a9db56213d5d224192fa2a4ce7b4c32b3c201da41f3238a75728962c8bd6818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550610a9b806100f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601081526020017f46697265706f742d4c502d546f6b656e0000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f464c50000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f46697265706f743a204558504952454400000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46697265706f743a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea265627a7a72315820cad12380a1edf9d3553eeececcbc124baa9467abfd57b077e36fb7c886e2e2ac64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
							"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0xB8F DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0x10 DUP4 MSTORE PUSH16 0x2334B932B837BA16A62816AA37B5B2B7 PUSH1 0x81 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x3385A9DB56213D5D224192FA2A4CE7B4C32B3C201DA41F3238A75728962C8BD6 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP5 ADD SWAP1 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0xA9B DUP1 PUSH2 0xF4 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 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 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 0x4D9 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 0x4DF 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 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 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 0x53C 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 0x549 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 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x46697265706F742D4C502D546F6B656E00000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 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 0x49B 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 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND 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 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 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 0x464C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46697265706F743A204558504952454400000000000000000000000000000000 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 0x719 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 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46697265706F743A20494E56414C49445F5349474E4154555245000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 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 0x949 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND 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 0x98B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9F4 AND 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 PUSH6 0x627A7A723158 KECCAK256 0xCA 0xD1 0x23 DUP1 LOG1 0xED 0xF9 0xD3 SSTORE RETURNDATACOPY 0xEE 0xCE 0xCC 0xBC SLT 0x4B 0xAA SWAP5 PUSH8 0xABFD57B077E36FB7 0xC8 DUP7 0xE2 0xE2 0xAC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ",
							"sourceMap": "103:3324:0:-;;;916:444;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1099:95:0;;1003:7;;1099:95;;;;;;;;;;;;;;;;1228:4;;;;;;;;-1:-1:-1;;;1228:4:0;;;;;1262:10;;;;;;;;;;-1:-1:-1;;;1262:10:0;;;;1071:272;;;;;;;;;1212:22;1071:272;;;;1252:21;1071:272;;;;;;;;;;;1324:4;1071:272;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1071:272:0;;;;;;1048:305;;;;;;;;1029:16;:324;-1:-1:-1;103:3324:0;;;;;;"
						},
						"deployedBytecode": {
							"linkReferences": {},
							"object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601081526020017f46697265706f742d4c502d546f6b656e0000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f464c50000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f46697265706f743a204558504952454400000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46697265706f743a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea265627a7a72315820cad12380a1edf9d3553eeececcbc124baa9467abfd57b077e36fb7c886e2e2ac64736f6c63430005100032",
							"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 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 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 0x4D9 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 0x4DF 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 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 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 0x53C 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 0x549 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 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x46697265706F742D4C502D546F6B656E00000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 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 0x49B 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 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND 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 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 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 0x464C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46697265706F743A204558504952454400000000000000000000000000000000 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 0x719 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 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46697265706F743A20494E56414C49445F5349474E4154555245000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 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 0x949 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND 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 0x98B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9F4 AND 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 PUSH6 0x627A7A723158 KECCAK256 0xCA 0xD1 0x23 DUP1 LOG1 0xED 0xF9 0xD3 SSTORE RETURNDATACOPY 0xEE 0xCE 0xCC 0xBC SLT 0x4B 0xAA SWAP5 PUSH8 0xABFD57B077E36FB7 0xC8 DUP7 0xE2 0xE2 0xAC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
							"sourceMap": "103:3324:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;103:3324:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;178:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;178:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2174:144;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2174:144:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;316:24;;;:::i;:::-;;;;;;;;;;;;;;;;2466:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2466:295:0;;;;;;;;;;;;;;;;;;:::i;602:108::-;;;:::i;275:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;461:31;;;:::i;346:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;346:41:0;;;;:::i;716:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;716:38:0;;;;:::i;232:37::-;;;:::i;2324:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2324:136:0;;;;;;;;;:::i;2767:658::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2767:658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;393:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;393:61:0;;;;;;;;;;;:::i;178:48::-;;;;;;;;;;;;;;;;;;;:::o;2174:144::-;2238:4;2254:36;2263:10;2275:7;2284:5;2254:8;:36::i;:::-;-1:-1:-1;2307:4:0;2174:144;;;;;:::o;316:24::-;;;;:::o;2466:295::-;2564:15;;;2544:4;2564:15;;;:9;:15;;;;;;;;2580:10;2564:27;;;;;;;;2600:2;2564:39;2560:138;;2649:15;;;;;;;:9;:15;;;;;;;;2665:10;2649:27;;;;;;;;:38;;2681:5;2649:38;:31;:38;:::i;:::-;2619:15;;;;;;;:9;:15;;;;;;;;2635:10;2619:27;;;;;;;:68;2560:138;2707:26;2717:4;2723:2;2727:5;2707:9;:26::i;:::-;-1:-1:-1;2750:4:0;2466:295;;;;;:::o;602:108::-;644:66;602:108;:::o;275:35::-;308:2;275:35;:::o;461:31::-;;;;:::o;346:41::-;;;;;;;;;;;;;:::o;716:38::-;;;;;;;;;;;;;:::o;232:37::-;;;;;;;;;;;;;;;;;;;:::o;2324:136::-;2384:4;2400:32;2410:10;2422:2;2426:5;2400:9;:32::i;2767:658::-;2912:15;2900:8;:27;;2892:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3060:16;;3155:13;;;;2958:14;3155:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3104:77;;644:66;3104:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3104:77:0;;;;;3094:88;;;;;;2998:198;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2998:198:0;;;;;;2975:231;;;;;;;;;3243:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2958:14;;3155:15;3243:26;;;;;-1:-1:-1;3243:26:0;;;;;;;;;;3155:15;3243:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3243:26:0;;;;;;-1:-1:-1;;3287:30:0;;;;;;;:59;;;3341:5;3321:25;;:16;:25;;;3287:59;3279:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:31;3396:5;3403:7;3412:5;3387:8;:31::i;:::-;2767:658;;;;;;;;;:::o;393:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1780:166::-;1860:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1908:31;;;;;;;;;;;;;;;;;1780:166;;;:::o;287:127:2:-;370:5;;;365:16;;;;357:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1952:216:0;2045:15;;;;;;;:9;:15;;;;;;:26;;2065:5;2045:26;:19;:26;:::i;:::-;2027:15;;;;;;;;:9;:15;;;;;;:44;;;;2097:13;;;;;;;:24;;2115:5;2097:24;:17;:24;:::i;:::-;2081:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2136:25;;;;;;;2081:13;;2136:25;;;;;;;;;;;;;1952:216;;;:::o;155:126:2:-;238:5;;;233:16;;;;225:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "543000",
								"executionCost": "infinite",
								"totalCost": "infinite"
							},
							"external": {
								"DOMAIN_SEPARATOR()": "1021",
								"PERMIT_TYPEHASH()": "243",
								"allowance(address,address)": "1293",
								"approve(address,uint256)": "22342",
								"balanceOf(address)": "1157",
								"decimals()": "274",
								"name()": "infinite",
								"nonces(address)": "1179",
								"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
								"symbol()": "infinite",
								"totalSupply()": "1066",
								"transfer(address,uint256)": "infinite",
								"transferFrom(address,address,uint256)": "infinite"
							},
							"internal": {
								"_approve(address,address,uint256)": "infinite",
								"_burn(address,uint256)": "infinite",
								"_mint(address,uint256)": "infinite",
								"_transfer(address,address,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH",
									"value": "80"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH",
									"value": "40"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "MSTORE"
								},
								{
									"begin": 916,
									"end": 1360,
									"name": "CALLVALUE"
								},
								{
									"begin": 8,
									"end": 17,
									"name": "DUP1"
								},
								{
									"begin": 5,
									"end": 7,
									"name": "ISZERO"
								},
								{
									"begin": 5,
									"end": 7,
									"name": "PUSH [tag]",
									"value": "1"
								},
								{
									"begin": 5,
									"end": 7,
									"name": "JUMPI"
								},
								{
									"begin": 30,
									"end": 31,
									"name": "PUSH",
									"value": "0"
								},
								{
									"begin": 27,
									"end": 28,
									"name": "DUP1"
								},
								{
									"begin": 20,
									"end": 32,
									"name": "REVERT"
								},
								{
									"begin": 5,
									"end": 7,
									"name": "tag",
									"value": "1"
								},
								{
									"begin": 5,
									"end": 7,
									"name": "JUMPDEST"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "POP"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "PUSH",
									"value": "40"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "MLOAD"
								},
								{
									"begin": 1003,
									"end": 1010,
									"name": "CHAINID"
								},
								{
									"begin": 1003,
									"end": 1010,
									"name": "SWAP1"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "DUP1"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "PUSH",
									"value": "52"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "PUSH data",
									"value": "8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "DUP3"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "CODECOPY"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "PUSH",
									"value": "40"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "DUP1"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "MLOAD"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "SWAP2"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "DUP3"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "SWAP1"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "SUB"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "PUSH",
									"value": "52"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "ADD"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "DUP3"
								},
								{
									"begin": 1099,
									"end": 1194,
									"name": "KECCAK256"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "DUP3"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "DUP3"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "ADD"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "DUP3"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "MSTORE"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "PUSH",
									"value": "10"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "DUP4"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "MSTORE"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"value": "2334B932B837BA16A62816AA37B5B2B7"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"value": "81"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "SHL"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "PUSH",
									"value": "20"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "SWAP4"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "DUP5"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "ADD"
								},
								{
									"begin": 1228,
									"end": 1232,
									"name": "MSTORE"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP2"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "MLOAD"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP1"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP4"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "ADD"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP4"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "MSTORE"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "PUSH",
									"value": "1"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP2"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "MSTORE"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"value": "31"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "PUSH",
									"value": "F8"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "SHL"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "SWAP1"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "DUP5"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "ADD"
								},
								{
									"begin": 1262,
									"end": 1272,
									"name": "MSTORE"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MLOAD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP5"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1212,
									"end": 1234,
									"name": "PUSH",
									"value": "3385A9DB56213D5D224192FA2A4CE7B4C32B3C201DA41F3238A75728962C8BD6"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP4"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1252,
									"end": 1273,
									"name": "PUSH",
									"value": "C89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "PUSH",
									"value": "60"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP3"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "PUSH",
									"value": "80"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP5"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP5"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1324,
									"end": 1328,
									"name": "ADDRESS"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "PUSH",
									"value": "A0"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP7"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "DUP2"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MLOAD"
								},
								{
									"begin": 26,
									"end": 47,
									"name": "DUP1"
								},
								{
									"begin": 26,
									"end": 47,
									"name": "DUP7"
								},
								{
									"begin": 26,
									"end": 47,
									"name": "SUB"
								},
								{
									"begin": 22,
									"end": 54,
									"name": "SWAP1"
								},
								{
									"begin": 22,
									"end": 54,
									"name": "SWAP2"
								},
								{
									"begin": 22,
									"end": 54,
									"name": "ADD"
								},
								{
									"begin": 6,
									"end": 55,
									"name": "DUP2"
								},
								{
									"begin": 6,
									"end": 55,
									"name": "MSTORE"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "PUSH",
									"value": "C0"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP5"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "ADD"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "SWAP1"
								},
								{
									"begin": 1071,
									"end": 1343,
									"name": "MSTORE"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "DUP3"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "MLOAD"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "SWAP3"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "ADD"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "SWAP2"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "SWAP1"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "SWAP2"
								},
								{
									"begin": 1048,
									"end": 1353,
									"name": "KECCAK256"
								},
								{
									"begin": 1029,
									"end": 1045,
									"name": "PUSH",
									"value": "3"
								},
								{
									"begin": 1029,
									"end": 1353,
									"name": "SSTORE"
								},
								{
									"begin": -1,
									"end": -1,
									"name": "POP"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH #[$]",
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "DUP1"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH [$]",
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH",
									"value": "0"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "CODECOPY"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "PUSH",
									"value": "0"
								},
								{
									"begin": 103,
									"end": 3427,
									"name": "RETURN"
								}
							],
							".data": {
								"0": {
									".auxdata": "a265627a7a72315820cad12380a1edf9d3553eeececcbc124baa9467abfd57b077e36fb7c886e2e2ac64736f6c63430005100032",
									".code": [
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "80"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "MSTORE"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "CALLVALUE"
										},
										{
											"begin": 8,
											"end": 17,
											"name": "DUP1"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "ISZERO"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "PUSH [tag]",
											"value": "1"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "JUMPI"
										},
										{
											"begin": 30,
											"end": 31,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 27,
											"end": 28,
											"name": "DUP1"
										},
										{
											"begin": 20,
											"end": 32,
											"name": "REVERT"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "tag",
											"value": "1"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "JUMPDEST"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "POP"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "LT"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "2"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "E0"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "SHR"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "3644E515"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "GT"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "16"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "95D89B41"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "GT"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "17"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "95D89B41"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "12"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "A9059CBB"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "13"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "D505ACCF"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "14"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "DD62ED3E"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "15"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "2"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMP"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "tag",
											"value": "17"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPDEST"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "3644E515"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "9"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "70A08231"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "10"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "7ECEBE00"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "11"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "2"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMP"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "tag",
											"value": "16"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPDEST"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "23B872DD"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "GT"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "18"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "23B872DD"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "6"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "30ADF81F"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "7"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "313CE567"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "8"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "2"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMP"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "tag",
											"value": "18"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPDEST"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "6FDDE03"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "3"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "95EA7B3"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "4"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "18160DDD"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "EQ"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH [tag]",
											"value": "5"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPI"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "tag",
											"value": "2"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "JUMPDEST"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "DUP1"
										},
										{
											"begin": 103,
											"end": 3427,
											"name": "REVERT"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "tag",
											"value": "3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMPDEST"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH [tag]",
											"value": "19"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH [tag]",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "tag",
											"value": "19"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMPDEST"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP6"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "tag",
											"value": "21"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "JUMPDEST"
										},
										{
											"begin": 33,
											"end": 36,
											"name": "DUP4"
										},
										{
											"begin": 30,
											"end": 31,
											"name": "DUP2"
										},
										{
											"begin": 27,
											"end": 37,
											"name": "LT"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "ISZERO"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "PUSH [tag]",
											"value": "23"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "JUMPI"
										},
										{
											"begin": 90,
											"end": 101,
											"name": "DUP2"
										},
										{
											"begin": 90,
											"end": 101,
											"name": "DUP2"
										},
										{
											"begin": 90,
											"end": 101,
											"name": "ADD"
										},
										{
											"begin": 84,
											"end": 102,
											"name": "MLOAD"
										},
										{
											"begin": 71,
											"end": 82,
											"name": "DUP4"
										},
										{
											"begin": 71,
											"end": 82,
											"name": "DUP3"
										},
										{
											"begin": 71,
											"end": 82,
											"name": "ADD"
										},
										{
											"begin": 64,
											"end": 103,
											"name": "MSTORE"
										},
										{
											"begin": 52,
											"end": 54,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 45,
											"end": 55,
											"name": "ADD"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "PUSH [tag]",
											"value": "21"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "JUMP"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "tag",
											"value": "23"
										},
										{
											"begin": 8,
											"end": 108,
											"name": "JUMPDEST"
										},
										{
											"begin": 12,
											"end": 26,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "1F"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "AND"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ISZERO"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH [tag]",
											"value": "24"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMPI"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SUB"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP4"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SUB"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "100"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "EXP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SUB"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "NOT"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "AND"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "tag",
											"value": "24"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMPDEST"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP3"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SUB"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "SWAP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "RETURN"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "tag",
											"value": "4"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMPDEST"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH [tag]",
											"value": "25"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "DUP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "26"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "26"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "DUP2"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "AND"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "ADD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH [tag]",
											"value": "27"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "tag",
											"value": "25"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMPDEST"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "DUP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "MLOAD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP2"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "ISZERO"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "ISZERO"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "DUP3"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "MSTORE"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "MLOAD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "DUP2"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SUB"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "ADD"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "RETURN"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "tag",
											"value": "5"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "JUMPDEST"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "PUSH [tag]",
											"value": "29"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "tag",
											"value": "28"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "JUMPDEST"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "DUP1"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "MLOAD"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SWAP2"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "DUP3"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "MSTORE"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "MLOAD"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SWAP1"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "DUP2"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SWAP1"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SUB"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "ADD"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SWAP1"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "RETURN"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "tag",
											"value": "6"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "JUMPDEST"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH [tag]",
											"value": "25"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "DUP1"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "60"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "31"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "31"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "DUP2"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "DUP2"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "AND"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP2"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "DUP2"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "ADD"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP1"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP2"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "AND"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP1"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "ADD"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "PUSH [tag]",
											"value": "32"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "tag",
											"value": "7"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "JUMPDEST"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "PUSH [tag]",
											"value": "34"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "tag",
											"value": "8"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "JUMPDEST"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "PUSH [tag]",
											"value": "35"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "PUSH [tag]",
											"value": "36"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "tag",
											"value": "35"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "JUMPDEST"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "DUP1"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "MLOAD"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "PUSH",
											"value": "FF"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SWAP1"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SWAP3"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "AND"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "DUP3"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "MSTORE"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "MLOAD"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SWAP1"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "DUP2"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SWAP1"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SUB"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "ADD"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "SWAP1"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "RETURN"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "tag",
											"value": "9"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "JUMPDEST"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "PUSH [tag]",
											"value": "38"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "tag",
											"value": "10"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "JUMPDEST"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "DUP1"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "40"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "40"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "AND"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH [tag]",
											"value": "41"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "tag",
											"value": "11"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "JUMPDEST"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "DUP1"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "43"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "43"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "AND"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH [tag]",
											"value": "44"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "tag",
											"value": "12"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "JUMPDEST"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH [tag]",
											"value": "19"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH [tag]",
											"value": "46"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "tag",
											"value": "13"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "JUMPDEST"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "PUSH [tag]",
											"value": "25"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "DUP1"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "52"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "52"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "DUP2"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "AND"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "SWAP1"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "ADD"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "PUSH [tag]",
											"value": "53"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "tag",
											"value": "14"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "JUMPDEST"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH [tag]",
											"value": "54"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 16,
											"name": "PUSH",
											"value": "E0"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 17,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "55"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 30,
											"end": 31,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 27,
											"end": 28,
											"name": "DUP1"
										},
										{
											"begin": 20,
											"end": 32,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "55"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "AND"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "AND"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "60"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "FF"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "80"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP3"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "AND"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "A0"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "DUP2"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "SWAP1"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH",
											"value": "C0"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "ADD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "PUSH [tag]",
											"value": "56"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "tag",
											"value": "54"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "JUMPDEST"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "STOP"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "tag",
											"value": "15"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "JUMPDEST"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH [tag]",
											"value": "28"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "CALLDATASIZE"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SUB"
										},
										{
											"begin": 13,
											"end": 15,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 8,
											"end": 11,
											"name": "DUP2"
										},
										{
											"begin": 5,
											"end": 16,
											"name": "LT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "ISZERO"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "PUSH [tag]",
											"value": "58"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPI"
										},
										{
											"begin": 29,
											"end": 30,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 26,
											"end": 27,
											"name": "DUP1"
										},
										{
											"begin": 19,
											"end": 31,
											"name": "REVERT"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "tag",
											"value": "58"
										},
										{
											"begin": 2,
											"end": 4,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "AND"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "ADD"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "CALLDATALOAD"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "AND"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH [tag]",
											"value": "59"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "tag",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMPDEST"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MLOAD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP1"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "10"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "ADD"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "PUSH",
											"value": "46697265706F742D4C502D546F6B656E00000000000000000000000000000000"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "MSTORE"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "POP"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "DUP2"
										},
										{
											"begin": 178,
											"end": 226,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "tag",
											"value": "27"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMPDEST"
										},
										{
											"begin": 2238,
											"end": 2242,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2254,
											"end": 2290,
											"name": "PUSH [tag]",
											"value": "61"
										},
										{
											"begin": 2263,
											"end": 2273,
											"name": "CALLER"
										},
										{
											"begin": 2275,
											"end": 2282,
											"name": "DUP5"
										},
										{
											"begin": 2284,
											"end": 2289,
											"name": "DUP5"
										},
										{
											"begin": 2254,
											"end": 2262,
											"name": "PUSH [tag]",
											"value": "62"
										},
										{
											"begin": 2254,
											"end": 2290,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2254,
											"end": 2290,
											"name": "tag",
											"value": "61"
										},
										{
											"begin": 2254,
											"end": 2290,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2307,
											"end": 2311,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "tag",
											"value": "60"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMPDEST"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP3"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "SWAP2"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "POP"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "POP"
										},
										{
											"begin": 2174,
											"end": 2318,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "tag",
											"value": "29"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "JUMPDEST"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "SLOAD"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "DUP2"
										},
										{
											"begin": 316,
											"end": 340,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "tag",
											"value": "32"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "JUMPDEST"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "DUP4"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "AND"
										},
										{
											"begin": 2544,
											"end": 2548,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "SWAP1"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "DUP2"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "MSTORE"
										},
										{
											"begin": 2564,
											"end": 2573,
											"name": "PUSH",
											"value": "2"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "SWAP1"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "DUP2"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "MSTORE"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "DUP1"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "DUP4"
										},
										{
											"begin": 2564,
											"end": 2579,
											"name": "KECCAK256"
										},
										{
											"begin": 2580,
											"end": 2590,
											"name": "CALLER"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "DUP5"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "MSTORE"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "SWAP1"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "SWAP2"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "MSTORE"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "DUP2"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "KECCAK256"
										},
										{
											"begin": 2564,
											"end": 2591,
											"name": "SLOAD"
										},
										{
											"begin": 2600,
											"end": 2602,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2564,
											"end": 2603,
											"name": "EQ"
										},
										{
											"begin": 2560,
											"end": 2698,
											"name": "PUSH [tag]",
											"value": "64"
										},
										{
											"begin": 2560,
											"end": 2698,
											"name": "JUMPI"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "DUP5"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "AND"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "SWAP1"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "DUP2"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "MSTORE"
										},
										{
											"begin": 2649,
											"end": 2658,
											"name": "PUSH",
											"value": "2"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "SWAP1"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "DUP2"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "MSTORE"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "DUP1"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "DUP4"
										},
										{
											"begin": 2649,
											"end": 2664,
											"name": "KECCAK256"
										},
										{
											"begin": 2665,
											"end": 2675,
											"name": "CALLER"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "DUP5"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "MSTORE"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "SWAP1"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "SWAP2"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "MSTORE"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "SWAP1"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "KECCAK256"
										},
										{
											"begin": 2649,
											"end": 2676,
											"name": "SLOAD"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "PUSH [tag]",
											"value": "65"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "SWAP1"
										},
										{
											"begin": 2681,
											"end": 2686,
											"name": "DUP4"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "PUSH",
											"value": "FFFFFFFF"
										},
										{
											"begin": 2649,
											"end": 2680,
											"name": "PUSH [tag]",
											"value": "66"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "AND"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "tag",
											"value": "65"
										},
										{
											"begin": 2649,
											"end": 2687,
											"name": "JUMPDEST"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "DUP6"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "AND"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "SWAP1"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "DUP2"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "MSTORE"
										},
										{
											"begin": 2619,
											"end": 2628,
											"name": "PUSH",
											"value": "2"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "SWAP1"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "DUP2"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "MSTORE"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "DUP1"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "DUP4"
										},
										{
											"begin": 2619,
											"end": 2634,
											"name": "KECCAK256"
										},
										{
											"begin": 2635,
											"end": 2645,
											"name": "CALLER"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "DUP5"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "MSTORE"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "SWAP1"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "SWAP2"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "MSTORE"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "SWAP1"
										},
										{
											"begin": 2619,
											"end": 2646,
											"name": "KECCAK256"
										},
										{
											"begin": 2619,
											"end": 2687,
											"name": "SSTORE"
										},
										{
											"begin": 2560,
											"end": 2698,
											"name": "tag",
											"value": "64"
										},
										{
											"begin": 2560,
											"end": 2698,
											"name": "JUMPDEST"
										},
										{
											"begin": 2707,
											"end": 2733,
											"name": "PUSH [tag]",
											"value": "67"
										},
										{
											"begin": 2717,
											"end": 2721,
											"name": "DUP5"
										},
										{
											"begin": 2723,
											"end": 2725,
											"name": "DUP5"
										},
										{
											"begin": 2727,
											"end": 2732,
											"name": "DUP5"
										},
										{
											"begin": 2707,
											"end": 2716,
											"name": "PUSH [tag]",
											"value": "68"
										},
										{
											"begin": 2707,
											"end": 2733,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2707,
											"end": 2733,
											"name": "tag",
											"value": "67"
										},
										{
											"begin": 2707,
											"end": 2733,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 2750,
											"end": 2754,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP4"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "SWAP3"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "POP"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "POP"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "POP"
										},
										{
											"begin": 2466,
											"end": 2761,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "tag",
											"value": "34"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "JUMPDEST"
										},
										{
											"begin": 644,
											"end": 710,
											"name": "PUSH",
											"value": "6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "DUP2"
										},
										{
											"begin": 602,
											"end": 710,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "tag",
											"value": "36"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "JUMPDEST"
										},
										{
											"begin": 308,
											"end": 310,
											"name": "PUSH",
											"value": "12"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "DUP2"
										},
										{
											"begin": 275,
											"end": 310,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "tag",
											"value": "38"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "JUMPDEST"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "PUSH",
											"value": "3"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "SLOAD"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "DUP2"
										},
										{
											"begin": 461,
											"end": 492,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "tag",
											"value": "41"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "JUMPDEST"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "MSTORE"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "SWAP1"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "DUP2"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "MSTORE"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "SWAP1"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "KECCAK256"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "SLOAD"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "DUP2"
										},
										{
											"begin": 346,
											"end": 387,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "tag",
											"value": "44"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "JUMPDEST"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "MSTORE"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "SWAP1"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "DUP2"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "MSTORE"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "SWAP1"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "KECCAK256"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "SLOAD"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "DUP2"
										},
										{
											"begin": 716,
											"end": 754,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "tag",
											"value": "46"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "JUMPDEST"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "MLOAD"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "DUP1"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "ADD"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "MSTORE"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "DUP1"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "3"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "DUP2"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "MSTORE"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "ADD"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "PUSH",
											"value": "464C500000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "DUP2"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "MSTORE"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "POP"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "DUP2"
										},
										{
											"begin": 232,
											"end": 269,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "tag",
											"value": "53"
										},
										{
											"begin": 2324,
											"end": 2460,
											"name": "JUMPDEST"
										},
										{
											"begin": 2384,
											"end": 2388,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2400,
											"end": 2432,
											"name": "PUSH [tag]",
											"value": "61"
										},
										{
											"begin": 2410,
											"end": 2420,
											"name": "CALLER"
										},
										{
											"begin": 2422,
											"end": 2424,
											"name": "DUP5"
										},
										{
											"begin": 2426,
											"end": 2431,
											"name": "DUP5"
										},
										{
											"begin": 2400,
											"end": 2409,
											"name": "PUSH [tag]",
											"value": "68"
										},
										{
											"begin": 2400,
											"end": 2432,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "tag",
											"value": "56"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "JUMPDEST"
										},
										{
											"begin": 2912,
											"end": 2927,
											"name": "TIMESTAMP"
										},
										{
											"begin": 2900,
											"end": 2908,
											"name": "DUP5"
										},
										{
											"begin": 2900,
											"end": 2927,
											"name": "LT"
										},
										{
											"begin": 2900,
											"end": 2927,
											"name": "ISZERO"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH [tag]",
											"value": "72"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "JUMPI"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP1"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MLOAD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "8C379A000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP2"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MSTORE"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP3"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "ADD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MSTORE"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "10"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "24"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP3"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "ADD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MSTORE"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "46697265706F743A204558504952454400000000000000000000000000000000"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "44"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP3"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "ADD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MSTORE"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "SWAP1"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "MLOAD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "SWAP1"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "DUP2"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "SWAP1"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "SUB"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "PUSH",
											"value": "64"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "ADD"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "SWAP1"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "REVERT"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "tag",
											"value": "72"
										},
										{
											"begin": 2892,
											"end": 2948,
											"name": "JUMPDEST"
										},
										{
											"begin": 3060,
											"end": 3076,
											"name": "PUSH",
											"value": "3"
										},
										{
											"begin": 3060,
											"end": 3076,
											"name": "SLOAD"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP1"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP10"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "AND"
										},
										{
											"begin": 2958,
											"end": 2972,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP2"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP2"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "MSTORE"
										},
										{
											"begin": 3155,
											"end": 3161,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "SWAP1"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP2"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "MSTORE"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP1"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "DUP4"
										},
										{
											"begin": 3155,
											"end": 3168,
											"name": "KECCAK256"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "DUP1"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "SLOAD"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "DUP1"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "DUP3"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "ADD"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "SWAP1"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "SWAP3"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "SSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP3"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MLOAD"
										},
										{
											"begin": 644,
											"end": 710,
											"name": "PUSH",
											"value": "6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP2"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP7"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP5"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP7"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP7"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP14"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "AND"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "PUSH",
											"value": "60"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP7"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "PUSH",
											"value": "80"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP13"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "PUSH",
											"value": "A0"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "PUSH",
											"value": "C0"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP12"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "SWAP1"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP2"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MLOAD"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "DUP1"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "DUP7"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "SUB"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "SWAP1"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "SWAP2"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "ADD"
										},
										{
											"begin": 6,
											"end": 55,
											"name": "DUP2"
										},
										{
											"begin": 6,
											"end": 55,
											"name": "MSTORE"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "PUSH",
											"value": "E0"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP6"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "ADD"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "DUP3"
										},
										{
											"begin": 3104,
											"end": 3181,
											"name": "MSTORE"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "DUP1"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "MLOAD"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "SWAP1"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "DUP4"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "ADD"
										},
										{
											"begin": 3094,
											"end": 3182,
											"name": "KECCAK256"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "PUSH",
											"value": "1901000000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "PUSH",
											"value": "100"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP7"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "ADD"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "MSTORE"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "PUSH",
											"value": "102"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP6"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "ADD"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP7"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP1"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP7"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "MSTORE"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "PUSH",
											"value": "122"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP1"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP6"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "ADD"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP7"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP1"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "SWAP7"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "MSTORE"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP1"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "MLOAD"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "DUP1"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "DUP6"
										},
										{
											"begin": 26,
											"end": 47,
											"name": "SUB"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "SWAP1"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "SWAP7"
										},
										{
											"begin": 22,
											"end": 54,
											"name": "ADD"
										},
										{
											"begin": 6,
											"end": 55,
											"name": "DUP7"
										},
										{
											"begin": 6,
											"end": 55,
											"name": "MSTORE"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "PUSH",
											"value": "142"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP5"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "ADD"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP1"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "DUP3"
										},
										{
											"begin": 2998,
											"end": 3196,
											"name": "MSTORE"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "DUP7"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "MLOAD"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "SWAP7"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "DUP4"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "ADD"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "SWAP7"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "SWAP1"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "SWAP7"
										},
										{
											"begin": 2975,
											"end": 3206,
											"name": "KECCAK256"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP6"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP4"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "162"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP5"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP3"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP7"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "FF"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP10"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "AND"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "182"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP6"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "1A2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP5"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP9"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "1C2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP5"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP8"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MSTORE"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MLOAD"
										},
										{
											"begin": 2958,
											"end": 2972,
											"name": "SWAP2"
										},
										{
											"begin": 2958,
											"end": 2972,
											"name": "SWAP4"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "SWAP3"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "1E2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP3"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP4"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP3"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "DUP2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SUB"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP2"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP1"
										},
										{
											"begin": 3155,
											"end": 3170,
											"name": "DUP6"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "GAS"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "STATICCALL"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ISZERO"
										},
										{
											"begin": 8,
											"end": 17,
											"name": "DUP1"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "ISZERO"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "PUSH [tag]",
											"value": "73"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "JUMPI"
										},
										{
											"begin": 45,
											"end": 61,
											"name": "RETURNDATASIZE"
										},
										{
											"begin": 42,
											"end": 43,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 39,
											"end": 40,
											"name": "DUP1"
										},
										{
											"begin": 24,
											"end": 62,
											"name": "RETURNDATACOPY"
										},
										{
											"begin": 77,
											"end": 93,
											"name": "RETURNDATASIZE"
										},
										{
											"begin": 74,
											"end": 75,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 67,
											"end": 94,
											"name": "REVERT"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "tag",
											"value": "73"
										},
										{
											"begin": 5,
											"end": 7,
											"name": "JUMPDEST"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MLOAD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "ADD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "MLOAD"
										},
										{
											"begin": 3243,
											"end": 3269,
											"name": "SWAP2"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": -1,
											"end": -1,
											"name": "POP"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "DUP2"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "AND"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "ISZERO"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "DUP1"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "ISZERO"
										},
										{
											"begin": 3287,
											"end": 3317,
											"name": "SWAP1"
										},
										{
											"begin": 3287,
											"end": 3346,
											"name": "PUSH [tag]",
											"value": "74"
										},
										{
											"begin": 3287,
											"end": 3346,
											"name": "JUMPI"
										},
										{
											"begin": 3287,
											"end": 3346,
											"name": "POP"
										},
										{
											"begin": 3341,
											"end": 3346,
											"name": "DUP9"
										},
										{
											"begin": 3321,
											"end": 3346,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 3321,
											"end": 3346,
											"name": "AND"
										},
										{
											"begin": 3321,
											"end": 3337,
											"name": "DUP2"
										},
										{
											"begin": 3321,
											"end": 3346,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 3321,
											"end": 3346,
											"name": "AND"
										},
										{
											"begin": 3321,
											"end": 3346,
											"name": "EQ"
										},
										{
											"begin": 3287,
											"end": 3346,
											"name": "tag",
											"value": "74"
										},
										{
											"begin": 3287,
											"end": 3346,
											"name": "JUMPDEST"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH [tag]",
											"value": "75"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "JUMPI"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP1"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MLOAD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "8C379A000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP2"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MSTORE"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP3"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "ADD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MSTORE"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "1A"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "24"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP3"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "ADD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MSTORE"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "46697265706F743A20494E56414C49445F5349474E4154555245000000000000"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "44"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP3"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "ADD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MSTORE"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "SWAP1"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "MLOAD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "SWAP1"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "DUP2"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "SWAP1"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "SUB"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "PUSH",
											"value": "64"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "ADD"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "SWAP1"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "REVERT"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "tag",
											"value": "75"
										},
										{
											"begin": 3279,
											"end": 3377,
											"name": "JUMPDEST"
										},
										{
											"begin": 3387,
											"end": 3418,
											"name": "PUSH [tag]",
											"value": "76"
										},
										{
											"begin": 3396,
											"end": 3401,
											"name": "DUP10"
										},
										{
											"begin": 3403,
											"end": 3410,
											"name": "DUP10"
										},
										{
											"begin": 3412,
											"end": 3417,
											"name": "DUP10"
										},
										{
											"begin": 3387,
											"end": 3395,
											"name": "PUSH [tag]",
											"value": "62"
										},
										{
											"begin": 3387,
											"end": 3418,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 3387,
											"end": 3418,
											"name": "tag",
											"value": "76"
										},
										{
											"begin": 3387,
											"end": 3418,
											"name": "JUMPDEST"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "POP"
										},
										{
											"begin": 2767,
											"end": 3425,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "tag",
											"value": "59"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "JUMPDEST"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "MSTORE"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP3"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP4"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "MSTORE"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP5"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "KECCAK256"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "MSTORE"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP3"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "MSTORE"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SWAP1"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "KECCAK256"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "SLOAD"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "DUP2"
										},
										{
											"begin": 393,
											"end": 454,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "tag",
											"value": "62"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "JUMPDEST"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP1"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP5"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "AND"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP2"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP2"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "MSTORE"
										},
										{
											"begin": 1860,
											"end": 1869,
											"name": "PUSH",
											"value": "2"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "SWAP1"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP2"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "MSTORE"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP1"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "DUP4"
										},
										{
											"begin": 1860,
											"end": 1876,
											"name": "KECCAK256"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "SWAP5"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "DUP8"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "AND"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "DUP1"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "DUP5"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "MSTORE"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "SWAP5"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "DUP3"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "MSTORE"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "SWAP2"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "DUP3"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "SWAP1"
										},
										{
											"begin": 1860,
											"end": 1885,
											"name": "KECCAK256"
										},
										{
											"begin": 1860,
											"end": 1893,
											"name": "DUP6"
										},
										{
											"begin": 1860,
											"end": 1893,
											"name": "SWAP1"
										},
										{
											"begin": 1860,
											"end": 1893,
											"name": "SSTORE"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "DUP2"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "MLOAD"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "DUP6"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "DUP2"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "MSTORE"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP2"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "MLOAD"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "PUSH",
											"value": "8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP3"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "DUP2"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP1"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SUB"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP1"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP2"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "ADD"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "SWAP1"
										},
										{
											"begin": 1908,
											"end": 1939,
											"name": "LOG3"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "POP"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "POP"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "POP"
										},
										{
											"begin": 1780,
											"end": 1946,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 287,
											"end": 414,
											"name": "tag",
											"value": "66"
										},
										{
											"begin": 287,
											"end": 414,
											"name": "JUMPDEST"
										},
										{
											"begin": 370,
											"end": 375,
											"name": "DUP1"
										},
										{
											"begin": 370,
											"end": 375,
											"name": "DUP3"
										},
										{
											"begin": 370,
											"end": 375,
											"name": "SUB"
										},
										{
											"begin": 365,
											"end": 381,
											"name": "DUP3"
										},
										{
											"begin": 365,
											"end": 381,
											"name": "DUP2"
										},
										{
											"begin": 365,
											"end": 381,
											"name": "GT"
										},
										{
											"begin": 365,
											"end": 381,
											"name": "ISZERO"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH [tag]",
											"value": "60"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "JUMPI"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP1"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MLOAD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "8C379A000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP2"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MSTORE"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP3"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "ADD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MSTORE"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "15"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "24"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP3"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "ADD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MSTORE"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "64732D6D6174682D7375622D756E646572666C6F770000000000000000000000"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "44"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP3"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "ADD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MSTORE"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "SWAP1"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "MLOAD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "SWAP1"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "DUP2"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "SWAP1"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "SUB"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "PUSH",
											"value": "64"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "ADD"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "SWAP1"
										},
										{
											"begin": 357,
											"end": 407,
											"name": "REVERT"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "tag",
											"value": "68"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "JUMPDEST"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "DUP4"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "AND"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "SWAP1"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "DUP2"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "MSTORE"
										},
										{
											"begin": 2045,
											"end": 2054,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "MSTORE"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "SWAP1"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "KECCAK256"
										},
										{
											"begin": 2045,
											"end": 2060,
											"name": "SLOAD"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "PUSH [tag]",
											"value": "81"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "SWAP1"
										},
										{
											"begin": 2065,
											"end": 2070,
											"name": "DUP3"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "PUSH",
											"value": "FFFFFFFF"
										},
										{
											"begin": 2045,
											"end": 2064,
											"name": "PUSH [tag]",
											"value": "66"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "AND"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "tag",
											"value": "81"
										},
										{
											"begin": 2045,
											"end": 2071,
											"name": "JUMPDEST"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "DUP1"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "DUP6"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "AND"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "SWAP1"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "DUP2"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "MSTORE"
										},
										{
											"begin": 2027,
											"end": 2036,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "MSTORE"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "DUP1"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "DUP3"
										},
										{
											"begin": 2027,
											"end": 2042,
											"name": "KECCAK256"
										},
										{
											"begin": 2027,
											"end": 2071,
											"name": "SWAP4"
										},
										{
											"begin": 2027,
											"end": 2071,
											"name": "SWAP1"
										},
										{
											"begin": 2027,
											"end": 2071,
											"name": "SWAP4"
										},
										{
											"begin": 2027,
											"end": 2071,
											"name": "SSTORE"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "SWAP1"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "DUP5"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "AND"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "DUP2"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "MSTORE"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "KECCAK256"
										},
										{
											"begin": 2097,
											"end": 2110,
											"name": "SLOAD"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "PUSH [tag]",
											"value": "82"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "SWAP1"
										},
										{
											"begin": 2115,
											"end": 2120,
											"name": "DUP3"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "PUSH",
											"value": "FFFFFFFF"
										},
										{
											"begin": 2097,
											"end": 2114,
											"name": "PUSH [tag]",
											"value": "83"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "AND"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "JUMP",
											"value": "[in]"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "tag",
											"value": "82"
										},
										{
											"begin": 2097,
											"end": 2121,
											"name": "JUMPDEST"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "PUSH",
											"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP1"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP5"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "AND"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP2"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP2"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "MSTORE"
										},
										{
											"begin": 2081,
											"end": 2090,
											"name": "PUSH",
											"value": "1"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "SWAP1"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP2"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "MSTORE"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "SWAP2"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "DUP3"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "SWAP1"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "KECCAK256"
										},
										{
											"begin": 2081,
											"end": 2121,
											"name": "SWAP5"
										},
										{
											"begin": 2081,
											"end": 2121,
											"name": "SWAP1"
										},
										{
											"begin": 2081,
											"end": 2121,
											"name": "SWAP5"
										},
										{
											"begin": 2081,
											"end": 2121,
											"name": "SSTORE"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "DUP1"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "MLOAD"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "DUP6"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "DUP2"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "MSTORE"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP1"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "MLOAD"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "SWAP2"
										},
										{
											"begin": 2081,
											"end": 2094,
											"name": "SWAP4"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP3"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "DUP8"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "AND"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP3"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "PUSH",
											"value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP3"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP2"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "DUP3"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP1"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SUB"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "ADD"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "SWAP1"
										},
										{
											"begin": 2136,
											"end": 2161,
											"name": "LOG3"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "POP"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "POP"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "POP"
										},
										{
											"begin": 1952,
											"end": 2168,
											"name": "JUMP",
											"value": "[out]"
										},
										{
											"begin": 155,
											"end": 281,
											"name": "tag",
											"value": "83"
										},
										{
											"begin": 155,
											"end": 281,
											"name": "JUMPDEST"
										},
										{
											"begin": 238,
											"end": 243,
											"name": "DUP1"
										},
										{
											"begin": 238,
											"end": 243,
											"name": "DUP3"
										},
										{
											"begin": 238,
											"end": 243,
											"name": "ADD"
										},
										{
											"begin": 233,
											"end": 249,
											"name": "DUP3"
										},
										{
											"begin": 233,
											"end": 249,
											"name": "DUP2"
										},
										{
											"begin": 233,
											"end": 249,
											"name": "LT"
										},
										{
											"begin": 233,
											"end": 249,
											"name": "ISZERO"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH [tag]",
											"value": "60"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "JUMPI"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP1"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MLOAD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "8C379A000000000000000000000000000000000000000000000000000000000"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP2"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MSTORE"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "20"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "4"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP3"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "ADD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MSTORE"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "14"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "24"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP3"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "ADD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MSTORE"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "44"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP3"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "ADD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MSTORE"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "SWAP1"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "MLOAD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "SWAP1"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "DUP2"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "SWAP1"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "SUB"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "PUSH",
											"value": "64"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "ADD"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "SWAP1"
										},
										{
											"begin": 225,
											"end": 274,
											"name": "REVERT"
										}
									]
								},
								"8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429"
							}
						},
						"methodIdentifiers": {
							"DOMAIN_SEPARATOR()": "3644e515",
							"PERMIT_TYPEHASH()": "30adf81f",
							"allowance(address,address)": "dd62ed3e",
							"approve(address,uint256)": "095ea7b3",
							"balanceOf(address)": "70a08231",
							"decimals()": "313ce567",
							"name()": "06fdde03",
							"nonces(address)": "7ecebe00",
							"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
							"symbol()": "95d89b41",
							"totalSupply()": "18160ddd",
							"transfer(address,uint256)": "a9059cbb",
							"transferFrom(address,address,uint256)": "23b872dd"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"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\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"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\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/FirepotERC20.sol\":\"FirepotERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FirepotERC20.sol\":{\"keccak256\":\"0xb01e42b389fbd947494823ebd2f0bd80ad3f2b39c6a2d8f4007dc2fd97400367\",\"urls\":[\"bzz-raw://2c16ad9e401790843fcb6c05cae596243ae6aafb26603aa94bc722646a7fbdf4\",\"dweb:/ipfs/QmbQTBo6Uchby8YWciRxb9Nrvenftb2NPChfMbKeMZnntV\"]},\"contracts/interfaces/IFirepotERC20.sol\":{\"keccak256\":\"0x9732ddfba02937aa07809561b52b8e671716a2c76aa2ceabf04c81dbebf88212\",\"urls\":[\"bzz-raw://ede4b0e0d64e6cc41530b80452f30347400b25529ac1092e553063b669984104\",\"dweb:/ipfs/QmYBvinvPUXKdGwnbZaqD5Hahy1kDgtD4QJMumcJ5DFfwm\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x9c8465de751317860b623cd77f7f53f41a84b6624c0580ee526dcf7a2b7cb80c\",\"urls\":[\"bzz-raw://9b371b3eb0649b486f76cd628cc060354d1ac11fa8baed1170567271655f05d7\",\"dweb:/ipfs/QmTUg31wK9UyX6o1Q1mxE4DQhuc1rWGBanNTu1uagNVQB6\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [
							{
								"astId": 19,
								"contract": "contracts/FirepotERC20.sol:FirepotERC20",
								"label": "totalSupply",
								"offset": 0,
								"slot": "0",
								"type": "t_uint256"
							},
							{
								"astId": 23,
								"contract": "contracts/FirepotERC20.sol:FirepotERC20",
								"label": "balanceOf",
								"offset": 0,
								"slot": "1",
								"type": "t_mapping(t_address,t_uint256)"
							},
							{
								"astId": 29,
								"contract": "contracts/FirepotERC20.sol:FirepotERC20",
								"label": "allowance",
								"offset": 0,
								"slot": "2",
								"type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
							},
							{
								"astId": 31,
								"contract": "contracts/FirepotERC20.sol:FirepotERC20",
								"label": "DOMAIN_SEPARATOR",
								"offset": 0,
								"slot": "3",
								"type": "t_bytes32"
							},
							{
								"astId": 38,
								"contract": "contracts/FirepotERC20.sol:FirepotERC20",
								"label": "nonces",
								"offset": 0,
								"slot": "4",
								"type": "t_mapping(t_address,t_uint256)"
							}
						],
						"types": {
							"t_address": {
								"encoding": "inplace",
								"label": "address",
								"numberOfBytes": "20"
							},
							"t_bytes32": {
								"encoding": "inplace",
								"label": "bytes32",
								"numberOfBytes": "32"
							},
							"t_mapping(t_address,t_mapping(t_address,t_uint256))": {
								"encoding": "mapping",
								"key": "t_address",
								"label": "mapping(address => mapping(address => uint256))",
								"numberOfBytes": "32",
								"value": "t_mapping(t_address,t_uint256)"
							},
							"t_mapping(t_address,t_uint256)": {
								"encoding": "mapping",
								"key": "t_address",
								"label": "mapping(address => uint256)",
								"numberOfBytes": "32",
								"value": "t_uint256"
							},
							"t_uint256": {
								"encoding": "inplace",
								"label": "uint256",
								"numberOfBytes": "32"
							}
						}
					},
					"userdoc": {
						"methods": {}
					}
				}
			},
			"contracts/interfaces/IFirepotERC20.sol": {
				"IFirepotERC20": {
					"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"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "DOMAIN_SEPARATOR",
							"outputs": [
								{
									"internalType": "bytes32",
									"name": "",
									"type": "bytes32"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "PERMIT_TYPEHASH",
							"outputs": [
								{
									"internalType": "bytes32",
									"name": "",
									"type": "bytes32"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "owner",
									"type": "address"
								},
								{
									"internalType": "address",
									"name": "spender",
									"type": "address"
								}
							],
							"name": "allowance",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"inputs": [
								{
									"internalType": "address",
									"name": "spender",
									"type": "address"
								},
								{
									"internalType": "uint256",
									"name": "value",
									"type": "uint256"
								}
							],
							"name": "approve",
							"outputs": [
								{
									"internalType": "bool",
									"name": "",
									"type": "bool"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "owner",
									"type": "address"
								}
							],
							"name": "balanceOf",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "decimals",
							"outputs": [
								{
									"internalType": "uint8",
									"name": "",
									"type": "uint8"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "name",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [
								{
									"internalType": "address",
									"name": "owner",
									"type": "address"
								}
							],
							"name": "nonces",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"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": [],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "symbol",
							"outputs": [
								{
									"internalType": "string",
									"name": "",
									"type": "string"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": true,
							"inputs": [],
							"name": "totalSupply",
							"outputs": [
								{
									"internalType": "uint256",
									"name": "",
									"type": "uint256"
								}
							],
							"payable": false,
							"stateMutability": "view",
							"type": "function"
						},
						{
							"constant": false,
							"inputs": [
								{
									"internalType": "address",
									"name": "to",
									"type": "address"
								},
								{
									"internalType": "uint256",
									"name": "value",
									"type": "uint256"
								}
							],
							"name": "transfer",
							"outputs": [
								{
									"internalType": "bool",
									"name": "",
									"type": "bool"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						},
						{
							"constant": false,
							"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"
								}
							],
							"payable": false,
							"stateMutability": "nonpayable",
							"type": "function"
						}
					],
					"devdoc": {
						"methods": {}
					},
					"evm": {
						"assembly": "",
						"bytecode": {
							"linkReferences": {},
							"object": "",
							"opcodes": "",
							"sourceMap": ""
						},
						"deployedBytecode": {
							"linkReferences": {},
							"object": "",
							"opcodes": "",
							"sourceMap": ""
						},
						"gasEstimates": null,
						"legacyAssembly": null,
						"methodIdentifiers": {
							"DOMAIN_SEPARATOR()": "3644e515",
							"PERMIT_TYPEHASH()": "30adf81f",
							"allowance(address,address)": "dd62ed3e",
							"approve(address,uint256)": "095ea7b3",
							"balanceOf(address)": "70a08231",
							"decimals()": "313ce567",
							"name()": "06fdde03",
							"nonces(address)": "7ecebe00",
							"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
							"symbol()": "95d89b41",
							"totalSupply()": "18160ddd",
							"transfer(address,uint256)": "a9059cbb",
							"transferFrom(address,address,uint256)": "23b872dd"
						}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"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\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"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\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirepotERC20.sol\":\"IFirepotERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirepotERC20.sol\":{\"keccak256\":\"0x9732ddfba02937aa07809561b52b8e671716a2c76aa2ceabf04c81dbebf88212\",\"urls\":[\"bzz-raw://ede4b0e0d64e6cc41530b80452f30347400b25529ac1092e553063b669984104\",\"dweb:/ipfs/QmYBvinvPUXKdGwnbZaqD5Hahy1kDgtD4QJMumcJ5DFfwm\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"methods": {}
					}
				}
			},
			"contracts/libraries/SafeMath.sol": {
				"SafeMath": {
					"abi": [],
					"devdoc": {
						"methods": {}
					},
					"evm": {
						"assembly": "    /* \"contracts/libraries/SafeMath.sol\":132:562  library SafeMath {... */\n  dataSize(sub_0)\n  dataOffset(sub_0)\n    /* \"--CODEGEN--\":132:134   */\n  0x0b\n    /* \"--CODEGEN--\":166:173   */\n  dup3\n    /* \"--CODEGEN--\":155:164   */\n  dup3\n    /* \"--CODEGEN--\":146:153   */\n  dup3\n    /* \"--CODEGEN--\":137:174   */\n  codecopy\n    /* \"--CODEGEN--\":255:262   */\n  dup1\n    /* \"--CODEGEN--\":249:263   */\n  mload\n    /* \"--CODEGEN--\":246:247   */\n  0x00\n    /* \"--CODEGEN--\":241:264   */\n  byte\n    /* \"--CODEGEN--\":235:239   */\n  0x73\n    /* \"--CODEGEN--\":232:265   */\n  eq\n    /* \"--CODEGEN--\":222:224   */\n  tag_1\n  jumpi\n    /* \"--CODEGEN--\":269:278   */\n  invalid\n    /* \"--CODEGEN--\":222:224   */\ntag_1:\n    /* \"--CODEGEN--\":293:302   */\n  address\n    /* \"--CODEGEN--\":290:291   */\n  0x00\n    /* \"--CODEGEN--\":283:303   */\n  mstore\n    /* \"--CODEGEN--\":323:327   */\n  0x73\n    /* \"--CODEGEN--\":314:321   */\n  dup2\n    /* \"--CODEGEN--\":306:328   */\n  mstore8\n    /* \"--CODEGEN--\":347:354   */\n  dup3\n    /* \"--CODEGEN--\":338:345   */\n  dup2\n    /* \"--CODEGEN--\":331:355   */\n  return\nstop\n\nsub_0: assembly {\n        /* \"contracts/libraries/SafeMath.sol\":132:562  library SafeMath {... */\n      eq(address, deployTimeAddress())\n      mstore(0x40, 0x80)\n      0x00\n      dup1\n      revert\n\n    auxdata: 0xa265627a7a723158203c0bf53663e5b2e5e11865bb035c7a2a5bbe93e3494cedcfc11169dd22796a9f64736f6c63430005100032\n}\n",
						"bytecode": {
							"linkReferences": {},
							"object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158203c0bf53663e5b2e5e11865bb035c7a2a5bbe93e3494cedcfc11169dd22796a9f64736f6c63430005100032",
							"opcodes": "PUSH1 0x55 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 PUSH6 0x627A7A723158 KECCAK256 EXTCODECOPY SIGNEXTEND CREATE2 CALLDATASIZE PUSH4 0xE5B2E5E1 XOR PUSH6 0xBB035C7A2A5B 0xBE SWAP4 0xE3 0x49 0x4C 0xED 0xCF 0xC1 GT PUSH10 0xDD22796A9F64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ",
							"sourceMap": "132:430:2:-;;:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
						},
						"deployedBytecode": {
							"linkReferences": {},
							"object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158203c0bf53663e5b2e5e11865bb035c7a2a5bbe93e3494cedcfc11169dd22796a9f64736f6c63430005100032",
							"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 EXTCODECOPY SIGNEXTEND CREATE2 CALLDATASIZE PUSH4 0xE5B2E5E1 XOR PUSH6 0xBB035C7A2A5B 0xBE SWAP4 0xE3 0x49 0x4C 0xED 0xCF 0xC1 GT PUSH10 0xDD22796A9F64736F6C63 NUMBER STOP SDIV LT STOP ORIGIN ",
							"sourceMap": "132:430:2:-;;;;;;;;"
						},
						"gasEstimates": {
							"creation": {
								"codeDepositCost": "17000",
								"executionCost": "94",
								"totalCost": "17094"
							},
							"internal": {
								"add(uint256,uint256)": "infinite",
								"mul(uint256,uint256)": "infinite",
								"sub(uint256,uint256)": "infinite"
							}
						},
						"legacyAssembly": {
							".code": [
								{
									"begin": 132,
									"end": 562,
									"name": "PUSH #[$]",
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 132,
									"end": 562,
									"name": "PUSH [$]",
									"value": "0000000000000000000000000000000000000000000000000000000000000000"
								},
								{
									"begin": 132,
									"end": 134,
									"name": "PUSH",
									"value": "B"
								},
								{
									"begin": 166,
									"end": 173,
									"name": "DUP3"
								},
								{
									"begin": 155,
									"end": 164,
									"name": "DUP3"
								},
								{
									"begin": 146,
									"end": 153,
									"name": "DUP3"
								},
								{
									"begin": 137,
									"end": 174,
									"name": "CODECOPY"
								},
								{
									"begin": 255,
									"end": 262,
									"name": "DUP1"
								},
								{
									"begin": 249,
									"end": 263,
									"name": "MLOAD"
								},
								{
									"begin": 246,
									"end": 247,
									"name": "PUSH",
									"value": "0"
								},
								{
									"begin": 241,
									"end": 264,
									"name": "BYTE"
								},
								{
									"begin": 235,
									"end": 239,
									"name": "PUSH",
									"value": "73"
								},
								{
									"begin": 232,
									"end": 265,
									"name": "EQ"
								},
								{
									"begin": 222,
									"end": 224,
									"name": "PUSH [tag]",
									"value": "1"
								},
								{
									"begin": 222,
									"end": 224,
									"name": "JUMPI"
								},
								{
									"begin": 269,
									"end": 278,
									"name": "INVALID"
								},
								{
									"begin": 222,
									"end": 224,
									"name": "tag",
									"value": "1"
								},
								{
									"begin": 222,
									"end": 224,
									"name": "JUMPDEST"
								},
								{
									"begin": 293,
									"end": 302,
									"name": "ADDRESS"
								},
								{
									"begin": 290,
									"end": 291,
									"name": "PUSH",
									"value": "0"
								},
								{
									"begin": 283,
									"end": 303,
									"name": "MSTORE"
								},
								{
									"begin": 323,
									"end": 327,
									"name": "PUSH",
									"value": "73"
								},
								{
									"begin": 314,
									"end": 321,
									"name": "DUP2"
								},
								{
									"begin": 306,
									"end": 328,
									"name": "MSTORE8"
								},
								{
									"begin": 347,
									"end": 354,
									"name": "DUP3"
								},
								{
									"begin": 338,
									"end": 345,
									"name": "DUP2"
								},
								{
									"begin": 331,
									"end": 355,
									"name": "RETURN"
								}
							],
							".data": {
								"0": {
									".auxdata": "a265627a7a723158203c0bf53663e5b2e5e11865bb035c7a2a5bbe93e3494cedcfc11169dd22796a9f64736f6c63430005100032",
									".code": [
										{
											"begin": 132,
											"end": 562,
											"name": "PUSHDEPLOYADDRESS"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "ADDRESS"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "EQ"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "PUSH",
											"value": "80"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "PUSH",
											"value": "40"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "MSTORE"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "PUSH",
											"value": "0"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "DUP1"
										},
										{
											"begin": 132,
											"end": 562,
											"name": "REVERT"
										}
									]
								}
							}
						},
						"methodIdentifiers": {}
					},
					"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x9c8465de751317860b623cd77f7f53f41a84b6624c0580ee526dcf7a2b7cb80c\",\"urls\":[\"bzz-raw://9b371b3eb0649b486f76cd628cc060354d1ac11fa8baed1170567271655f05d7\",\"dweb:/ipfs/QmTUg31wK9UyX6o1Q1mxE4DQhuc1rWGBanNTu1uagNVQB6\"]}},\"version\":1}",
					"storageLayout": {
						"storage": [],
						"types": null
					},
					"userdoc": {
						"methods": {}
					}
				}
			}
		},
		"sources": {
			"contracts/FirepotERC20.sol": {
				"ast": {
					"absolutePath": "contracts/FirepotERC20.sol",
					"exportedSymbols": {
						"FirepotERC20": [
							384
						]
					},
					"id": 385,
					"nodeType": "SourceUnit",
					"nodes": [
						{
							"id": 1,
							"literals": [
								"solidity",
								"=",
								"0.5",
								".16"
							],
							"nodeType": "PragmaDirective",
							"src": "0:24:0"
						},
						{
							"absolutePath": "contracts/interfaces/IFirepotERC20.sol",
							"file": "./interfaces/IFirepotERC20.sol",
							"id": 2,
							"nodeType": "ImportDirective",
							"scope": 385,
							"sourceUnit": 503,
							"src": "26:40:0",
							"symbolAliases": [],
							"unitAlias": ""
						},
						{
							"absolutePath": "contracts/libraries/SafeMath.sol",
							"file": "./libraries/SafeMath.sol",
							"id": 3,
							"nodeType": "ImportDirective",
							"scope": 385,
							"sourceUnit": 578,
							"src": "67:34:0",
							"symbolAliases": [],
							"unitAlias": ""
						},
						{
							"baseContracts": [
								{
									"arguments": null,
									"baseName": {
										"contractScope": null,
										"id": 4,
										"name": "IFirepotERC20",
										"nodeType": "UserDefinedTypeName",
										"referencedDeclaration": 502,
										"src": "128:13:0",
										"typeDescriptions": {
											"typeIdentifier": "t_contract$_IFirepotERC20_$502",
											"typeString": "contract IFirepotERC20"
										}
									},
									"id": 5,
									"nodeType": "InheritanceSpecifier",
									"src": "128:13:0"
								}
							],
							"contractDependencies": [
								502
							],
							"contractKind": "contract",
							"documentation": null,
							"fullyImplemented": true,
							"id": 384,
							"linearizedBaseContracts": [
								384,
								502
							],
							"name": "FirepotERC20",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"id": 8,
									"libraryName": {
										"contractScope": null,
										"id": 6,
										"name": "SafeMath",
										"nodeType": "UserDefinedTypeName",
										"referencedDeclaration": 577,
										"src": "154:8:0",
										"typeDescriptions": {
											"typeIdentifier": "t_contract$_SafeMath_$577",
											"typeString": "library SafeMath"
										}
									},
									"nodeType": "UsingForDirective",
									"src": "148:24:0",
									"typeName": {
										"id": 7,
										"name": "uint",
										"nodeType": "ElementaryTypeName",
										"src": "167:4:0",
										"typeDescriptions": {
											"typeIdentifier": "t_uint256",
											"typeString": "uint256"
										}
									}
								},
								{
									"constant": true,
									"id": 11,
									"name": "name",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "178:48:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_string_memory",
										"typeString": "string"
									},
									"typeName": {
										"id": 9,
										"name": "string",
										"nodeType": "ElementaryTypeName",
										"src": "178:6:0",
										"typeDescriptions": {
											"typeIdentifier": "t_string_storage_ptr",
											"typeString": "string"
										}
									},
									"value": {
										"argumentTypes": null,
										"hexValue": "46697265706f742d4c502d546f6b656e",
										"id": 10,
										"isConstant": false,
										"isLValue": false,
										"isPure": true,
										"kind": "string",
										"lValueRequested": false,
										"nodeType": "Literal",
										"src": "208:18:0",
										"subdenomination": null,
										"typeDescriptions": {
											"typeIdentifier": "t_stringliteral_3385a9db56213d5d224192fa2a4ce7b4c32b3c201da41f3238a75728962c8bd6",
											"typeString": "literal_string \"Firepot-LP-Token\""
										},
										"value": "Firepot-LP-Token"
									},
									"visibility": "public"
								},
								{
									"constant": true,
									"id": 14,
									"name": "symbol",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "232:37:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_string_memory",
										"typeString": "string"
									},
									"typeName": {
										"id": 12,
										"name": "string",
										"nodeType": "ElementaryTypeName",
										"src": "232:6:0",
										"typeDescriptions": {
											"typeIdentifier": "t_string_storage_ptr",
											"typeString": "string"
										}
									},
									"value": {
										"argumentTypes": null,
										"hexValue": "464c50",
										"id": 13,
										"isConstant": false,
										"isLValue": false,
										"isPure": true,
										"kind": "string",
										"lValueRequested": false,
										"nodeType": "Literal",
										"src": "264:5:0",
										"subdenomination": null,
										"typeDescriptions": {
											"typeIdentifier": "t_stringliteral_ef163914e371d386337f0b46246f3f0f2dc194ef85aa4e2edbe60ea7537dfecc",
											"typeString": "literal_string \"FLP\""
										},
										"value": "FLP"
									},
									"visibility": "public"
								},
								{
									"constant": true,
									"id": 17,
									"name": "decimals",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "275:35:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_uint8",
										"typeString": "uint8"
									},
									"typeName": {
										"id": 15,
										"name": "uint8",
										"nodeType": "ElementaryTypeName",
										"src": "275:5:0",
										"typeDescriptions": {
											"typeIdentifier": "t_uint8",
											"typeString": "uint8"
										}
									},
									"value": {
										"argumentTypes": null,
										"hexValue": "3138",
										"id": 16,
										"isConstant": false,
										"isLValue": false,
										"isPure": true,
										"kind": "number",
										"lValueRequested": false,
										"nodeType": "Literal",
										"src": "308:2:0",
										"subdenomination": null,
										"typeDescriptions": {
											"typeIdentifier": "t_rational_18_by_1",
											"typeString": "int_const 18"
										},
										"value": "18"
									},
									"visibility": "public"
								},
								{
									"constant": false,
									"id": 19,
									"name": "totalSupply",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "316:24:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_uint256",
										"typeString": "uint256"
									},
									"typeName": {
										"id": 18,
										"name": "uint",
										"nodeType": "ElementaryTypeName",
										"src": "316:4:0",
										"typeDescriptions": {
											"typeIdentifier": "t_uint256",
											"typeString": "uint256"
										}
									},
									"value": null,
									"visibility": "public"
								},
								{
									"constant": false,
									"id": 23,
									"name": "balanceOf",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "346:41:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
										"typeString": "mapping(address => uint256)"
									},
									"typeName": {
										"id": 22,
										"keyType": {
											"id": 20,
											"name": "address",
											"nodeType": "ElementaryTypeName",
											"src": "354:7:0",
											"typeDescriptions": {
												"typeIdentifier": "t_address",
												"typeString": "address"
											}
										},
										"nodeType": "Mapping",
										"src": "346:24:0",
										"typeDescriptions": {
											"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
											"typeString": "mapping(address => uint256)"
										},
										"valueType": {
											"id": 21,
											"name": "uint",
											"nodeType": "ElementaryTypeName",
											"src": "365:4:0",
											"typeDescriptions": {
												"typeIdentifier": "t_uint256",
												"typeString": "uint256"
											}
										}
									},
									"value": null,
									"visibility": "public"
								},
								{
									"constant": false,
									"id": 29,
									"name": "allowance",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "393:61: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": 28,
										"keyType": {
											"id": 24,
											"name": "address",
											"nodeType": "ElementaryTypeName",
											"src": "401:7:0",
											"typeDescriptions": {
												"typeIdentifier": "t_address",
												"typeString": "address"
											}
										},
										"nodeType": "Mapping",
										"src": "393:44:0",
										"typeDescriptions": {
											"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
											"typeString": "mapping(address => mapping(address => uint256))"
										},
										"valueType": {
											"id": 27,
											"keyType": {
												"id": 25,
												"name": "address",
												"nodeType": "ElementaryTypeName",
												"src": "420:7:0",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												}
											},
											"nodeType": "Mapping",
											"src": "412:24:0",
											"typeDescriptions": {
												"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
												"typeString": "mapping(address => uint256)"
											},
											"valueType": {
												"id": 26,
												"name": "uint",
												"nodeType": "ElementaryTypeName",
												"src": "431:4:0",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												}
											}
										}
									},
									"value": null,
									"visibility": "public"
								},
								{
									"constant": false,
									"id": 31,
									"name": "DOMAIN_SEPARATOR",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "461:31:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_bytes32",
										"typeString": "bytes32"
									},
									"typeName": {
										"id": 30,
										"name": "bytes32",
										"nodeType": "ElementaryTypeName",
										"src": "461:7:0",
										"typeDescriptions": {
											"typeIdentifier": "t_bytes32",
											"typeString": "bytes32"
										}
									},
									"value": null,
									"visibility": "public"
								},
								{
									"constant": true,
									"id": 34,
									"name": "PERMIT_TYPEHASH",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "602:108:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_bytes32",
										"typeString": "bytes32"
									},
									"typeName": {
										"id": 32,
										"name": "bytes32",
										"nodeType": "ElementaryTypeName",
										"src": "602:7:0",
										"typeDescriptions": {
											"typeIdentifier": "t_bytes32",
											"typeString": "bytes32"
										}
									},
									"value": {
										"argumentTypes": null,
										"hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
										"id": 33,
										"isConstant": false,
										"isLValue": false,
										"isPure": true,
										"kind": "number",
										"lValueRequested": false,
										"nodeType": "Literal",
										"src": "644:66:0",
										"subdenomination": null,
										"typeDescriptions": {
											"typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
											"typeString": "int_const 4995...(69 digits omitted)...3241"
										},
										"value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
									},
									"visibility": "public"
								},
								{
									"constant": false,
									"id": 38,
									"name": "nonces",
									"nodeType": "VariableDeclaration",
									"scope": 384,
									"src": "716:38:0",
									"stateVariable": true,
									"storageLocation": "default",
									"typeDescriptions": {
										"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
										"typeString": "mapping(address => uint256)"
									},
									"typeName": {
										"id": 37,
										"keyType": {
											"id": 35,
											"name": "address",
											"nodeType": "ElementaryTypeName",
											"src": "724:7:0",
											"typeDescriptions": {
												"typeIdentifier": "t_address",
												"typeString": "address"
											}
										},
										"nodeType": "Mapping",
										"src": "716:24:0",
										"typeDescriptions": {
											"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
											"typeString": "mapping(address => uint256)"
										},
										"valueType": {
											"id": 36,
											"name": "uint",
											"nodeType": "ElementaryTypeName",
											"src": "735:4:0",
											"typeDescriptions": {
												"typeIdentifier": "t_uint256",
												"typeString": "uint256"
											}
										}
									},
									"value": null,
									"visibility": "public"
								},
								{
									"anonymous": false,
									"documentation": null,
									"id": 46,
									"name": "Approval",
									"nodeType": "EventDefinition",
									"parameters": {
										"id": 45,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 40,
												"indexed": true,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 46,
												"src": "776:21:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 39,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "776:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 42,
												"indexed": true,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 46,
												"src": "799:23:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 41,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "799:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 44,
												"indexed": false,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 46,
												"src": "824:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 43,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "824:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "775:60:0"
									},
									"src": "761:75:0"
								},
								{
									"anonymous": false,
									"documentation": null,
									"id": 54,
									"name": "Transfer",
									"nodeType": "EventDefinition",
									"parameters": {
										"id": 53,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 48,
												"indexed": true,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "856:20:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 47,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "856:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 50,
												"indexed": true,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "878:18:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 49,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "878:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 52,
												"indexed": false,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 54,
												"src": "898:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 51,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "898:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "855:54:0"
									},
									"src": "841:69:0"
								},
								{
									"body": {
										"id": 86,
										"nodeType": "Block",
										"src": "937:423:0",
										"statements": [
											{
												"assignments": [
													58
												],
												"declarations": [
													{
														"constant": false,
														"id": 58,
														"name": "chainId",
														"nodeType": "VariableDeclaration",
														"scope": 86,
														"src": "947:12:0",
														"stateVariable": false,
														"storageLocation": "default",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														},
														"typeName": {
															"id": 57,
															"name": "uint",
															"nodeType": "ElementaryTypeName",
															"src": "947:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															}
														},
														"value": null,
														"visibility": "internal"
													}
												],
												"id": 59,
												"initialValue": null,
												"nodeType": "VariableDeclarationStatement",
												"src": "947:12:0"
											},
											{
												"externalReferences": [
													{
														"chainId": {
															"declaration": 58,
															"isOffset": false,
															"isSlot": false,
															"src": "992:7:0",
															"valueSize": 1
														}
													}
												],
												"id": 60,
												"nodeType": "InlineAssembly",
												"operations": "{ chainId := chainid() }",
												"src": "969:51:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"id": 84,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"id": 61,
														"name": "DOMAIN_SEPARATOR",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 31,
														"src": "1029: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": 66,
																				"isConstant": false,
																				"isLValue": false,
																				"isPure": true,
																				"kind": "string",
																				"lValueRequested": false,
																				"nodeType": "Literal",
																				"src": "1109: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": 65,
																			"name": "keccak256",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 586,
																			"src": "1099:9:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
																				"typeString": "function (bytes memory) pure returns (bytes32)"
																			}
																		},
																		"id": 67,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": true,
																		"kind": "functionCall",
																		"lValueRequested": false,
																		"names": [],
																		"nodeType": "FunctionCall",
																		"src": "1099:95:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_bytes32",
																			"typeString": "bytes32"
																		}
																	},
																	{
																		"argumentTypes": null,
																		"arguments": [
																			{
																				"argumentTypes": null,
																				"arguments": [
																					{
																						"argumentTypes": null,
																						"id": 70,
																						"name": "name",
																						"nodeType": "Identifier",
																						"overloadedDeclarations": [],
																						"referencedDeclaration": 11,
																						"src": "1228:4:0",
																						"typeDescriptions": {
																							"typeIdentifier": "t_string_memory",
																							"typeString": "string memory"
																						}
																					}
																				],
																				"expression": {
																					"argumentTypes": [
																						{
																							"typeIdentifier": "t_string_memory",
																							"typeString": "string memory"
																						}
																					],
																					"id": 69,
																					"isConstant": false,
																					"isLValue": false,
																					"isPure": true,
																					"lValueRequested": false,
																					"nodeType": "ElementaryTypeNameExpression",
																					"src": "1222:5:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
																						"typeString": "type(bytes storage pointer)"
																					},
																					"typeName": "bytes"
																				},
																				"id": 71,
																				"isConstant": false,
																				"isLValue": false,
																				"isPure": true,
																				"kind": "typeConversion",
																				"lValueRequested": false,
																				"names": [],
																				"nodeType": "FunctionCall",
																				"src": "1222:11:0",
																				"typeDescriptions": {
																					"typeIdentifier": "t_bytes_memory_ptr",
																					"typeString": "bytes memory"
																				}
																			}
																		],
																		"expression": {
																			"argumentTypes": [
																				{
																					"typeIdentifier": "t_bytes_memory_ptr",
																					"typeString": "bytes memory"
																				}
																			],
																			"id": 68,
																			"name": "keccak256",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 586,
																			"src": "1212:9:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
																				"typeString": "function (bytes memory) pure returns (bytes32)"
																			}
																		},
																		"id": 72,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": true,
																		"kind": "functionCall",
																		"lValueRequested": false,
																		"names": [],
																		"nodeType": "FunctionCall",
																		"src": "1212:22:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_bytes32",
																			"typeString": "bytes32"
																		}
																	},
																	{
																		"argumentTypes": null,
																		"arguments": [
																			{
																				"argumentTypes": null,
																				"arguments": [
																					{
																						"argumentTypes": null,
																						"hexValue": "31",
																						"id": 75,
																						"isConstant": false,
																						"isLValue": false,
																						"isPure": true,
																						"kind": "string",
																						"lValueRequested": false,
																						"nodeType": "Literal",
																						"src": "1268: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": 74,
																					"isConstant": false,
																					"isLValue": false,
																					"isPure": true,
																					"lValueRequested": false,
																					"nodeType": "ElementaryTypeNameExpression",
																					"src": "1262:5:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
																						"typeString": "type(bytes storage pointer)"
																					},
																					"typeName": "bytes"
																				},
																				"id": 76,
																				"isConstant": false,
																				"isLValue": false,
																				"isPure": true,
																				"kind": "typeConversion",
																				"lValueRequested": false,
																				"names": [],
																				"nodeType": "FunctionCall",
																				"src": "1262:10:0",
																				"typeDescriptions": {
																					"typeIdentifier": "t_bytes_memory_ptr",
																					"typeString": "bytes memory"
																				}
																			}
																		],
																		"expression": {
																			"argumentTypes": [
																				{
																					"typeIdentifier": "t_bytes_memory_ptr",
																					"typeString": "bytes memory"
																				}
																			],
																			"id": 73,
																			"name": "keccak256",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 586,
																			"src": "1252:9:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
																				"typeString": "function (bytes memory) pure returns (bytes32)"
																			}
																		},
																		"id": 77,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": true,
																		"kind": "functionCall",
																		"lValueRequested": false,
																		"names": [],
																		"nodeType": "FunctionCall",
																		"src": "1252:21:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_bytes32",
																			"typeString": "bytes32"
																		}
																	},
																	{
																		"argumentTypes": null,
																		"id": 78,
																		"name": "chainId",
																		"nodeType": "Identifier",
																		"overloadedDeclarations": [],
																		"referencedDeclaration": 58,
																		"src": "1291:7:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_uint256",
																			"typeString": "uint256"
																		}
																	},
																	{
																		"argumentTypes": null,
																		"arguments": [
																			{
																				"argumentTypes": null,
																				"id": 80,
																				"name": "this",
																				"nodeType": "Identifier",
																				"overloadedDeclarations": [],
																				"referencedDeclaration": 610,
																				"src": "1324:4:0",
																				"typeDescriptions": {
																					"typeIdentifier": "t_contract$_FirepotERC20_$384",
																					"typeString": "contract FirepotERC20"
																				}
																			}
																		],
																		"expression": {
																			"argumentTypes": [
																				{
																					"typeIdentifier": "t_contract$_FirepotERC20_$384",
																					"typeString": "contract FirepotERC20"
																				}
																			],
																			"id": 79,
																			"isConstant": false,
																			"isLValue": false,
																			"isPure": true,
																			"lValueRequested": false,
																			"nodeType": "ElementaryTypeNameExpression",
																			"src": "1316:7:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_type$_t_address_$",
																				"typeString": "type(address)"
																			},
																			"typeName": "address"
																		},
																		"id": 81,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": false,
																		"kind": "typeConversion",
																		"lValueRequested": false,
																		"names": [],
																		"nodeType": "FunctionCall",
																		"src": "1316:13:0",
																		"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": 63,
																		"name": "abi",
																		"nodeType": "Identifier",
																		"overloadedDeclarations": [],
																		"referencedDeclaration": 579,
																		"src": "1071:3:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_magic_abi",
																			"typeString": "abi"
																		}
																	},
																	"id": 64,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"lValueRequested": false,
																	"memberName": "encode",
																	"nodeType": "MemberAccess",
																	"referencedDeclaration": null,
																	"src": "1071:10:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
																		"typeString": "function () pure returns (bytes memory)"
																	}
																},
																"id": 82,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"kind": "functionCall",
																"lValueRequested": false,
																"names": [],
																"nodeType": "FunctionCall",
																"src": "1071:272:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_bytes_memory_ptr",
																	"typeString": "bytes memory"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_bytes_memory_ptr",
																	"typeString": "bytes memory"
																}
															],
															"id": 62,
															"name": "keccak256",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 586,
															"src": "1048:9:0",
															"typeDescriptions": {
																"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
																"typeString": "function (bytes memory) pure returns (bytes32)"
															}
														},
														"id": 83,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "1048:305:0",
														"typeDescriptions": {
															"typeIdentifier": "t_bytes32",
															"typeString": "bytes32"
														}
													},
													"src": "1029:324:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"id": 85,
												"nodeType": "ExpressionStatement",
												"src": "1029:324:0"
											}
										]
									},
									"documentation": null,
									"id": 87,
									"implemented": true,
									"kind": "constructor",
									"modifiers": [],
									"name": "",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 55,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "927:2:0"
									},
									"returnParameters": {
										"id": 56,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "937:0:0"
									},
									"scope": 384,
									"src": "916:444:0",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "public"
								},
								{
									"body": {
										"id": 120,
										"nodeType": "Block",
										"src": "1414:149:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"id": 99,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"id": 94,
														"name": "totalSupply",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 19,
														"src": "1424:11:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 97,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 91,
																"src": "1454:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"id": 95,
																"name": "totalSupply",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 19,
																"src": "1438:11:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 96,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "add",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 526,
															"src": "1438: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": 98,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "1438:22:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "1424:36:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 100,
												"nodeType": "ExpressionStatement",
												"src": "1424:36:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"id": 110,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"id": 101,
															"name": "balanceOf",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 23,
															"src": "1470:9:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 103,
														"indexExpression": {
															"argumentTypes": null,
															"id": 102,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 89,
															"src": "1480:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": true,
														"nodeType": "IndexAccess",
														"src": "1470:13:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 108,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 91,
																"src": "1504:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"baseExpression": {
																	"argumentTypes": null,
																	"id": 104,
																	"name": "balanceOf",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 23,
																	"src": "1486:9:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																		"typeString": "mapping(address => uint256)"
																	}
																},
																"id": 106,
																"indexExpression": {
																	"argumentTypes": null,
																	"id": 105,
																	"name": "to",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 89,
																	"src": "1496:2:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"isConstant": false,
																"isLValue": true,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "IndexAccess",
																"src": "1486:13:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 107,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "add",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 526,
															"src": "1486: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": 109,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "1486:24:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "1470:40:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 111,
												"nodeType": "ExpressionStatement",
												"src": "1470:40:0"
											},
											{
												"eventCall": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"arguments": [
																{
																	"argumentTypes": null,
																	"hexValue": "30",
																	"id": 114,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "number",
																	"lValueRequested": false,
																	"nodeType": "Literal",
																	"src": "1542: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": 113,
																"isConstant": false,
																"isLValue": false,
																"isPure": true,
																"lValueRequested": false,
																"nodeType": "ElementaryTypeNameExpression",
																"src": "1534:7:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_type$_t_address_$",
																	"typeString": "type(address)"
																},
																"typeName": "address"
															},
															"id": 115,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "typeConversion",
															"lValueRequested": false,
															"names": [],
															"nodeType": "FunctionCall",
															"src": "1534:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address_payable",
																"typeString": "address payable"
															}
														},
														{
															"argumentTypes": null,
															"id": 116,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 89,
															"src": "1546:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 117,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 91,
															"src": "1550: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": 112,
														"name": "Transfer",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															54
														],
														"referencedDeclaration": 54,
														"src": "1525:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 118,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1525:31:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 119,
												"nodeType": "EmitStatement",
												"src": "1520:36:0"
											}
										]
									},
									"documentation": null,
									"id": 121,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "_mint",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 92,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 89,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 121,
												"src": "1381:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 88,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1381:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 91,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 121,
												"src": "1393:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 90,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1393:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1380:24:0"
									},
									"returnParameters": {
										"id": 93,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1414:0:0"
									},
									"scope": 384,
									"src": "1366:197:0",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "internal"
								},
								{
									"body": {
										"id": 154,
										"nodeType": "Block",
										"src": "1619:155:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"id": 137,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"id": 128,
															"name": "balanceOf",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 23,
															"src": "1629:9:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 130,
														"indexExpression": {
															"argumentTypes": null,
															"id": 129,
															"name": "from",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 123,
															"src": "1639:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": true,
														"nodeType": "IndexAccess",
														"src": "1629:15:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 135,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 125,
																"src": "1667:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"baseExpression": {
																	"argumentTypes": null,
																	"id": 131,
																	"name": "balanceOf",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 23,
																	"src": "1647:9:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																		"typeString": "mapping(address => uint256)"
																	}
																},
																"id": 133,
																"indexExpression": {
																	"argumentTypes": null,
																	"id": 132,
																	"name": "from",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 123,
																	"src": "1657:4:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"isConstant": false,
																"isLValue": true,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "IndexAccess",
																"src": "1647:15:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 134,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sub",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 548,
															"src": "1647: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": 136,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "1647:26:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "1629:44:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 138,
												"nodeType": "ExpressionStatement",
												"src": "1629:44:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"id": 144,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"id": 139,
														"name": "totalSupply",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 19,
														"src": "1683:11:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 142,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 125,
																"src": "1713:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"id": 140,
																"name": "totalSupply",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 19,
																"src": "1697:11:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 141,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sub",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 548,
															"src": "1697: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": 143,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "1697:22:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "1683:36:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 145,
												"nodeType": "ExpressionStatement",
												"src": "1683:36:0"
											},
											{
												"eventCall": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 147,
															"name": "from",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 123,
															"src": "1743:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"arguments": [
																{
																	"argumentTypes": null,
																	"hexValue": "30",
																	"id": 149,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "number",
																	"lValueRequested": false,
																	"nodeType": "Literal",
																	"src": "1757: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": 148,
																"isConstant": false,
																"isLValue": false,
																"isPure": true,
																"lValueRequested": false,
																"nodeType": "ElementaryTypeNameExpression",
																"src": "1749:7:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_type$_t_address_$",
																	"typeString": "type(address)"
																},
																"typeName": "address"
															},
															"id": 150,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "typeConversion",
															"lValueRequested": false,
															"names": [],
															"nodeType": "FunctionCall",
															"src": "1749:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address_payable",
																"typeString": "address payable"
															}
														},
														{
															"argumentTypes": null,
															"id": 151,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 125,
															"src": "1761: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": 146,
														"name": "Transfer",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															54
														],
														"referencedDeclaration": 54,
														"src": "1734:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 152,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1734:33:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 153,
												"nodeType": "EmitStatement",
												"src": "1729:38:0"
											}
										]
									},
									"documentation": null,
									"id": 155,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "_burn",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 126,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 123,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 155,
												"src": "1584:12:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 122,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1584:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 125,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 155,
												"src": "1598:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 124,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1598:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1583:26:0"
									},
									"returnParameters": {
										"id": 127,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1619:0:0"
									},
									"scope": 384,
									"src": "1569:205:0",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "internal"
								},
								{
									"body": {
										"id": 178,
										"nodeType": "Block",
										"src": "1850:96:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"id": 170,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"baseExpression": {
																"argumentTypes": null,
																"id": 164,
																"name": "allowance",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 29,
																"src": "1860:9:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
																	"typeString": "mapping(address => mapping(address => uint256))"
																}
															},
															"id": 167,
															"indexExpression": {
																"argumentTypes": null,
																"id": 165,
																"name": "owner",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 157,
																"src": "1870:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_address",
																	"typeString": "address"
																}
															},
															"isConstant": false,
															"isLValue": true,
															"isPure": false,
															"lValueRequested": false,
															"nodeType": "IndexAccess",
															"src": "1860:16:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 168,
														"indexExpression": {
															"argumentTypes": null,
															"id": 166,
															"name": "spender",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 159,
															"src": "1877:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": true,
														"nodeType": "IndexAccess",
														"src": "1860:25:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"id": 169,
														"name": "value",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 161,
														"src": "1888:5:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "1860:33:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 171,
												"nodeType": "ExpressionStatement",
												"src": "1860:33:0"
											},
											{
												"eventCall": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 173,
															"name": "owner",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 157,
															"src": "1917:5:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 174,
															"name": "spender",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 159,
															"src": "1924:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 175,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 161,
															"src": "1933: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": 172,
														"name": "Approval",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															46
														],
														"referencedDeclaration": 46,
														"src": "1908:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 176,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "1908:31:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 177,
												"nodeType": "EmitStatement",
												"src": "1903:36:0"
											}
										]
									},
									"documentation": null,
									"id": 179,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "_approve",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 162,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 157,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 179,
												"src": "1798:13:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 156,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1798:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 159,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 179,
												"src": "1813:15:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 158,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1813:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 161,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 179,
												"src": "1830:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 160,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1830:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1797:44:0"
									},
									"returnParameters": {
										"id": 163,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1850:0:0"
									},
									"scope": 384,
									"src": "1780:166:0",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "private"
								},
								{
									"body": {
										"id": 216,
										"nodeType": "Block",
										"src": "2017:151:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"id": 197,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"id": 188,
															"name": "balanceOf",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 23,
															"src": "2027:9:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 190,
														"indexExpression": {
															"argumentTypes": null,
															"id": 189,
															"name": "from",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 181,
															"src": "2037:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": true,
														"nodeType": "IndexAccess",
														"src": "2027:15:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 195,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 185,
																"src": "2065:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"baseExpression": {
																	"argumentTypes": null,
																	"id": 191,
																	"name": "balanceOf",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 23,
																	"src": "2045:9:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																		"typeString": "mapping(address => uint256)"
																	}
																},
																"id": 193,
																"indexExpression": {
																	"argumentTypes": null,
																	"id": 192,
																	"name": "from",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 181,
																	"src": "2055:4:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"isConstant": false,
																"isLValue": true,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "IndexAccess",
																"src": "2045:15:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 194,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sub",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 548,
															"src": "2045: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": 196,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "2045:26:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "2027:44:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 198,
												"nodeType": "ExpressionStatement",
												"src": "2027:44:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"id": 208,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftHandSide": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"id": 199,
															"name": "balanceOf",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 23,
															"src": "2081:9:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 201,
														"indexExpression": {
															"argumentTypes": null,
															"id": 200,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 183,
															"src": "2091:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": true,
														"nodeType": "IndexAccess",
														"src": "2081:13:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "Assignment",
													"operator": "=",
													"rightHandSide": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 206,
																"name": "value",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 185,
																"src": "2115:5:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															}
														],
														"expression": {
															"argumentTypes": [
																{
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															],
															"expression": {
																"argumentTypes": null,
																"baseExpression": {
																	"argumentTypes": null,
																	"id": 202,
																	"name": "balanceOf",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 23,
																	"src": "2097:9:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																		"typeString": "mapping(address => uint256)"
																	}
																},
																"id": 204,
																"indexExpression": {
																	"argumentTypes": null,
																	"id": 203,
																	"name": "to",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 183,
																	"src": "2107:2:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"isConstant": false,
																"isLValue": true,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "IndexAccess",
																"src": "2097:13:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 205,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "add",
															"nodeType": "MemberAccess",
															"referencedDeclaration": 526,
															"src": "2097: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": 207,
														"isConstant": false,
														"isLValue": false,
														"isPure": false,
														"kind": "functionCall",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "2097:24:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "2081:40:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"id": 209,
												"nodeType": "ExpressionStatement",
												"src": "2081:40:0"
											},
											{
												"eventCall": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 211,
															"name": "from",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 181,
															"src": "2145:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 212,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 183,
															"src": "2151:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 213,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 185,
															"src": "2155: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": 210,
														"name": "Transfer",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															54
														],
														"referencedDeclaration": 54,
														"src": "2136:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 214,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2136:25:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 215,
												"nodeType": "EmitStatement",
												"src": "2131:30:0"
											}
										]
									},
									"documentation": null,
									"id": 217,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "_transfer",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 186,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 181,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 217,
												"src": "1971:12:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 180,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1971:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 183,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 217,
												"src": "1985:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 182,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1985:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 185,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 217,
												"src": "1997:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 184,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1997:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1970:38:0"
									},
									"returnParameters": {
										"id": 187,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "2017:0:0"
									},
									"scope": 384,
									"src": "1952:216:0",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "private"
								},
								{
									"body": {
										"id": 235,
										"nodeType": "Block",
										"src": "2244:74:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"expression": {
																"argumentTypes": null,
																"id": 227,
																"name": "msg",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 592,
																"src": "2263:3:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_magic_message",
																	"typeString": "msg"
																}
															},
															"id": 228,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sender",
															"nodeType": "MemberAccess",
															"referencedDeclaration": null,
															"src": "2263:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address_payable",
																"typeString": "address payable"
															}
														},
														{
															"argumentTypes": null,
															"id": 229,
															"name": "spender",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 219,
															"src": "2275:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 230,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 221,
															"src": "2284: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": 226,
														"name": "_approve",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 179,
														"src": "2254:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 231,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2254:36:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 232,
												"nodeType": "ExpressionStatement",
												"src": "2254:36:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"hexValue": "74727565",
													"id": 233,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "bool",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "2307:4:0",
													"subdenomination": null,
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													},
													"value": "true"
												},
												"functionReturnParameters": 225,
												"id": 234,
												"nodeType": "Return",
												"src": "2300:11:0"
											}
										]
									},
									"documentation": null,
									"id": 236,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "approve",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 222,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 219,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 236,
												"src": "2191:15:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 218,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2191:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 221,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 236,
												"src": "2208:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 220,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "2208:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2190:29:0"
									},
									"returnParameters": {
										"id": 225,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 224,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 236,
												"src": "2238:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 223,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "2238:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2237:6:0"
									},
									"scope": 384,
									"src": "2174:144:0",
									"stateMutability": "nonpayable",
									"superFunction": 447,
									"visibility": "external"
								},
								{
									"body": {
										"id": 254,
										"nodeType": "Block",
										"src": "2390:70:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"expression": {
																"argumentTypes": null,
																"id": 246,
																"name": "msg",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 592,
																"src": "2410:3:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_magic_message",
																	"typeString": "msg"
																}
															},
															"id": 247,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sender",
															"nodeType": "MemberAccess",
															"referencedDeclaration": null,
															"src": "2410:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address_payable",
																"typeString": "address payable"
															}
														},
														{
															"argumentTypes": null,
															"id": 248,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 238,
															"src": "2422:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 249,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 240,
															"src": "2426: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": 245,
														"name": "_transfer",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 217,
														"src": "2400:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 250,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2400:32:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 251,
												"nodeType": "ExpressionStatement",
												"src": "2400:32:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"hexValue": "74727565",
													"id": 252,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "bool",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "2449:4:0",
													"subdenomination": null,
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													},
													"value": "true"
												},
												"functionReturnParameters": 244,
												"id": 253,
												"nodeType": "Return",
												"src": "2442:11:0"
											}
										]
									},
									"documentation": null,
									"id": 255,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "transfer",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 241,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 238,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 255,
												"src": "2342:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 237,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2342:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 240,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 255,
												"src": "2354:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 239,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "2354:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2341:24:0"
									},
									"returnParameters": {
										"id": 244,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 243,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 255,
												"src": "2384:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 242,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "2384:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2383:6:0"
									},
									"scope": 384,
									"src": "2324:136:0",
									"stateMutability": "nonpayable",
									"superFunction": 456,
									"visibility": "external"
								},
								{
									"body": {
										"id": 304,
										"nodeType": "Block",
										"src": "2550:211:0",
										"statements": [
											{
												"condition": {
													"argumentTypes": null,
													"commonType": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													},
													"id": 276,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"lValueRequested": false,
													"leftExpression": {
														"argumentTypes": null,
														"baseExpression": {
															"argumentTypes": null,
															"baseExpression": {
																"argumentTypes": null,
																"id": 266,
																"name": "allowance",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 29,
																"src": "2564:9:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
																	"typeString": "mapping(address => mapping(address => uint256))"
																}
															},
															"id": 268,
															"indexExpression": {
																"argumentTypes": null,
																"id": 267,
																"name": "from",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 257,
																"src": "2574:4:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_address",
																	"typeString": "address"
																}
															},
															"isConstant": false,
															"isLValue": true,
															"isPure": false,
															"lValueRequested": false,
															"nodeType": "IndexAccess",
															"src": "2564:15:0",
															"typeDescriptions": {
																"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																"typeString": "mapping(address => uint256)"
															}
														},
														"id": 271,
														"indexExpression": {
															"argumentTypes": null,
															"expression": {
																"argumentTypes": null,
																"id": 269,
																"name": "msg",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 592,
																"src": "2580:3:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_magic_message",
																	"typeString": "msg"
																}
															},
															"id": 270,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"memberName": "sender",
															"nodeType": "MemberAccess",
															"referencedDeclaration": null,
															"src": "2580:10:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address_payable",
																"typeString": "address payable"
															}
														},
														"isConstant": false,
														"isLValue": true,
														"isPure": false,
														"lValueRequested": false,
														"nodeType": "IndexAccess",
														"src": "2564:27:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"nodeType": "BinaryOperation",
													"operator": "!=",
													"rightExpression": {
														"argumentTypes": null,
														"arguments": [
															{
																"argumentTypes": null,
																"id": 274,
																"isConstant": false,
																"isLValue": false,
																"isPure": true,
																"lValueRequested": false,
																"nodeType": "UnaryOperation",
																"operator": "-",
																"prefix": true,
																"src": "2600:2:0",
																"subExpression": {
																	"argumentTypes": null,
																	"hexValue": "31",
																	"id": 273,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "number",
																	"lValueRequested": false,
																	"nodeType": "Literal",
																	"src": "2601: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": 272,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"lValueRequested": false,
															"nodeType": "ElementaryTypeNameExpression",
															"src": "2595:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_type$_t_uint256_$",
																"typeString": "type(uint256)"
															},
															"typeName": "uint"
														},
														"id": 275,
														"isConstant": false,
														"isLValue": false,
														"isPure": true,
														"kind": "typeConversion",
														"lValueRequested": false,
														"names": [],
														"nodeType": "FunctionCall",
														"src": "2595:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_uint256",
															"typeString": "uint256"
														}
													},
													"src": "2564:39:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"falseBody": null,
												"id": 295,
												"nodeType": "IfStatement",
												"src": "2560:138:0",
												"trueBody": {
													"id": 294,
													"nodeType": "Block",
													"src": "2605:93:0",
													"statements": [
														{
															"expression": {
																"argumentTypes": null,
																"id": 292,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftHandSide": {
																	"argumentTypes": null,
																	"baseExpression": {
																		"argumentTypes": null,
																		"baseExpression": {
																			"argumentTypes": null,
																			"id": 277,
																			"name": "allowance",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 29,
																			"src": "2619:9:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
																				"typeString": "mapping(address => mapping(address => uint256))"
																			}
																		},
																		"id": 281,
																		"indexExpression": {
																			"argumentTypes": null,
																			"id": 278,
																			"name": "from",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 257,
																			"src": "2629:4:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_address",
																				"typeString": "address"
																			}
																		},
																		"isConstant": false,
																		"isLValue": true,
																		"isPure": false,
																		"lValueRequested": false,
																		"nodeType": "IndexAccess",
																		"src": "2619:15:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																			"typeString": "mapping(address => uint256)"
																		}
																	},
																	"id": 282,
																	"indexExpression": {
																		"argumentTypes": null,
																		"expression": {
																			"argumentTypes": null,
																			"id": 279,
																			"name": "msg",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 592,
																			"src": "2635:3:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_magic_message",
																				"typeString": "msg"
																			}
																		},
																		"id": 280,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": false,
																		"lValueRequested": false,
																		"memberName": "sender",
																		"nodeType": "MemberAccess",
																		"referencedDeclaration": null,
																		"src": "2635:10:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_address_payable",
																			"typeString": "address payable"
																		}
																	},
																	"isConstant": false,
																	"isLValue": true,
																	"isPure": false,
																	"lValueRequested": true,
																	"nodeType": "IndexAccess",
																	"src": "2619:27:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"nodeType": "Assignment",
																"operator": "=",
																"rightHandSide": {
																	"argumentTypes": null,
																	"arguments": [
																		{
																			"argumentTypes": null,
																			"id": 290,
																			"name": "value",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 261,
																			"src": "2681: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": 283,
																					"name": "allowance",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 29,
																					"src": "2649: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": 257,
																					"src": "2659:4:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_address",
																						"typeString": "address"
																					}
																				},
																				"isConstant": false,
																				"isLValue": true,
																				"isPure": false,
																				"lValueRequested": false,
																				"nodeType": "IndexAccess",
																				"src": "2649: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": 592,
																					"src": "2665: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": "2665:10:0",
																				"typeDescriptions": {
																					"typeIdentifier": "t_address_payable",
																					"typeString": "address payable"
																				}
																			},
																			"isConstant": false,
																			"isLValue": true,
																			"isPure": false,
																			"lValueRequested": false,
																			"nodeType": "IndexAccess",
																			"src": "2649:27:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			}
																		},
																		"id": 289,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": false,
																		"lValueRequested": false,
																		"memberName": "sub",
																		"nodeType": "MemberAccess",
																		"referencedDeclaration": 548,
																		"src": "2649: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": 291,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": false,
																	"kind": "functionCall",
																	"lValueRequested": false,
																	"names": [],
																	"nodeType": "FunctionCall",
																	"src": "2649:38:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"src": "2619:68:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"id": 293,
															"nodeType": "ExpressionStatement",
															"src": "2619:68:0"
														}
													]
												}
											},
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 297,
															"name": "from",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 257,
															"src": "2717:4:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 298,
															"name": "to",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 259,
															"src": "2723:2:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 299,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 261,
															"src": "2727: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": 296,
														"name": "_transfer",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 217,
														"src": "2707:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 300,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2707:26:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 301,
												"nodeType": "ExpressionStatement",
												"src": "2707:26:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"hexValue": "74727565",
													"id": 302,
													"isConstant": false,
													"isLValue": false,
													"isPure": true,
													"kind": "bool",
													"lValueRequested": false,
													"nodeType": "Literal",
													"src": "2750:4:0",
													"subdenomination": null,
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													},
													"value": "true"
												},
												"functionReturnParameters": 265,
												"id": 303,
												"nodeType": "Return",
												"src": "2743:11:0"
											}
										]
									},
									"documentation": null,
									"id": 305,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "transferFrom",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 262,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 257,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 305,
												"src": "2488:12:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 256,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2488:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 259,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 305,
												"src": "2502:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 258,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2502:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 261,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 305,
												"src": "2514:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 260,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "2514:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2487:38:0"
									},
									"returnParameters": {
										"id": 265,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 264,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 305,
												"src": "2544:4:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 263,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "2544:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2543:6:0"
									},
									"scope": 384,
									"src": "2466:295:0",
									"stateMutability": "nonpayable",
									"superFunction": 467,
									"visibility": "external"
								},
								{
									"body": {
										"id": 382,
										"nodeType": "Block",
										"src": "2882:543:0",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"commonType": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															"id": 326,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"argumentTypes": null,
																"id": 323,
																"name": "deadline",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 313,
																"src": "2900:8:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": ">=",
															"rightExpression": {
																"argumentTypes": null,
																"expression": {
																	"argumentTypes": null,
																	"id": 324,
																	"name": "block",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 582,
																	"src": "2912:5:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_magic_block",
																		"typeString": "block"
																	}
																},
																"id": 325,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"memberName": "timestamp",
																"nodeType": "MemberAccess",
																"referencedDeclaration": null,
																"src": "2912:15:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"src": "2900:27:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"argumentTypes": null,
															"hexValue": "46697265706f743a2045585049524544",
															"id": 327,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "2929:18:0",
															"subdenomination": null,
															"typeDescriptions": {
																"typeIdentifier": "t_stringliteral_7e75b84a599de5883ef332b25f32813074d60f472880108c4ebe05e375345b6b",
																"typeString": "literal_string \"Firepot: EXPIRED\""
															},
															"value": "Firepot: EXPIRED"
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															{
																"typeIdentifier": "t_stringliteral_7e75b84a599de5883ef332b25f32813074d60f472880108c4ebe05e375345b6b",
																"typeString": "literal_string \"Firepot: EXPIRED\""
															}
														],
														"id": 322,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															595,
															596
														],
														"referencedDeclaration": 596,
														"src": "2892:7:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 328,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2892:56:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 329,
												"nodeType": "ExpressionStatement",
												"src": "2892:56:0"
											},
											{
												"assignments": [
													331
												],
												"declarations": [
													{
														"constant": false,
														"id": 331,
														"name": "digest",
														"nodeType": "VariableDeclaration",
														"scope": 382,
														"src": "2958:14:0",
														"stateVariable": false,
														"storageLocation": "default",
														"typeDescriptions": {
															"typeIdentifier": "t_bytes32",
															"typeString": "bytes32"
														},
														"typeName": {
															"id": 330,
															"name": "bytes32",
															"nodeType": "ElementaryTypeName",
															"src": "2958:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bytes32",
																"typeString": "bytes32"
															}
														},
														"value": null,
														"visibility": "internal"
													}
												],
												"id": 353,
												"initialValue": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"arguments": [
																{
																	"argumentTypes": null,
																	"hexValue": "1901",
																	"id": 335,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "string",
																	"lValueRequested": false,
																	"nodeType": "Literal",
																	"src": "3032:10:0",
																	"subdenomination": null,
																	"typeDescriptions": {
																		"typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
																		"typeString": "literal_string \"\u0019\u0001\""
																	},
																	"value": "\u0019\u0001"
																},
																{
																	"argumentTypes": null,
																	"id": 336,
																	"name": "DOMAIN_SEPARATOR",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 31,
																	"src": "3060:16:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_bytes32",
																		"typeString": "bytes32"
																	}
																},
																{
																	"argumentTypes": null,
																	"arguments": [
																		{
																			"argumentTypes": null,
																			"arguments": [
																				{
																					"argumentTypes": null,
																					"id": 340,
																					"name": "PERMIT_TYPEHASH",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 34,
																					"src": "3115:15:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_bytes32",
																						"typeString": "bytes32"
																					}
																				},
																				{
																					"argumentTypes": null,
																					"id": 341,
																					"name": "owner",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 307,
																					"src": "3132:5:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_address",
																						"typeString": "address"
																					}
																				},
																				{
																					"argumentTypes": null,
																					"id": 342,
																					"name": "spender",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 309,
																					"src": "3139:7:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_address",
																						"typeString": "address"
																					}
																				},
																				{
																					"argumentTypes": null,
																					"id": 343,
																					"name": "value",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 311,
																					"src": "3148:5:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_uint256",
																						"typeString": "uint256"
																					}
																				},
																				{
																					"argumentTypes": null,
																					"id": 347,
																					"isConstant": false,
																					"isLValue": false,
																					"isPure": false,
																					"lValueRequested": false,
																					"nodeType": "UnaryOperation",
																					"operator": "++",
																					"prefix": false,
																					"src": "3155:15:0",
																					"subExpression": {
																						"argumentTypes": null,
																						"baseExpression": {
																							"argumentTypes": null,
																							"id": 344,
																							"name": "nonces",
																							"nodeType": "Identifier",
																							"overloadedDeclarations": [],
																							"referencedDeclaration": 38,
																							"src": "3155:6:0",
																							"typeDescriptions": {
																								"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
																								"typeString": "mapping(address => uint256)"
																							}
																						},
																						"id": 346,
																						"indexExpression": {
																							"argumentTypes": null,
																							"id": 345,
																							"name": "owner",
																							"nodeType": "Identifier",
																							"overloadedDeclarations": [],
																							"referencedDeclaration": 307,
																							"src": "3162:5:0",
																							"typeDescriptions": {
																								"typeIdentifier": "t_address",
																								"typeString": "address"
																							}
																						},
																						"isConstant": false,
																						"isLValue": true,
																						"isPure": false,
																						"lValueRequested": true,
																						"nodeType": "IndexAccess",
																						"src": "3155:13:0",
																						"typeDescriptions": {
																							"typeIdentifier": "t_uint256",
																							"typeString": "uint256"
																						}
																					},
																					"typeDescriptions": {
																						"typeIdentifier": "t_uint256",
																						"typeString": "uint256"
																					}
																				},
																				{
																					"argumentTypes": null,
																					"id": 348,
																					"name": "deadline",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 313,
																					"src": "3172: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": 338,
																					"name": "abi",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 579,
																					"src": "3104:3:0",
																					"typeDescriptions": {
																						"typeIdentifier": "t_magic_abi",
																						"typeString": "abi"
																					}
																				},
																				"id": 339,
																				"isConstant": false,
																				"isLValue": false,
																				"isPure": true,
																				"lValueRequested": false,
																				"memberName": "encode",
																				"nodeType": "MemberAccess",
																				"referencedDeclaration": null,
																				"src": "3104:10:0",
																				"typeDescriptions": {
																					"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
																					"typeString": "function () pure returns (bytes memory)"
																				}
																			},
																			"id": 349,
																			"isConstant": false,
																			"isLValue": false,
																			"isPure": false,
																			"kind": "functionCall",
																			"lValueRequested": false,
																			"names": [],
																			"nodeType": "FunctionCall",
																			"src": "3104:77:0",
																			"typeDescriptions": {
																				"typeIdentifier": "t_bytes_memory_ptr",
																				"typeString": "bytes memory"
																			}
																		}
																	],
																	"expression": {
																		"argumentTypes": [
																			{
																				"typeIdentifier": "t_bytes_memory_ptr",
																				"typeString": "bytes memory"
																			}
																		],
																		"id": 337,
																		"name": "keccak256",
																		"nodeType": "Identifier",
																		"overloadedDeclarations": [],
																		"referencedDeclaration": 586,
																		"src": "3094:9:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
																			"typeString": "function (bytes memory) pure returns (bytes32)"
																		}
																	},
																	"id": 350,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": false,
																	"kind": "functionCall",
																	"lValueRequested": false,
																	"names": [],
																	"nodeType": "FunctionCall",
																	"src": "3094:88:0",
																	"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": 333,
																	"name": "abi",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 579,
																	"src": "2998:3:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_magic_abi",
																		"typeString": "abi"
																	}
																},
																"id": 334,
																"isConstant": false,
																"isLValue": false,
																"isPure": true,
																"lValueRequested": false,
																"memberName": "encodePacked",
																"nodeType": "MemberAccess",
																"referencedDeclaration": null,
																"src": "2998:16:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
																	"typeString": "function () pure returns (bytes memory)"
																}
															},
															"id": 351,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"kind": "functionCall",
															"lValueRequested": false,
															"names": [],
															"nodeType": "FunctionCall",
															"src": "2998:198:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bytes_memory_ptr",
																"typeString": "bytes memory"
															}
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_bytes_memory_ptr",
																"typeString": "bytes memory"
															}
														],
														"id": 332,
														"name": "keccak256",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 586,
														"src": "2975:9:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
															"typeString": "function (bytes memory) pure returns (bytes32)"
														}
													},
													"id": 352,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "2975:231:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"nodeType": "VariableDeclarationStatement",
												"src": "2958:248:0"
											},
											{
												"assignments": [
													355
												],
												"declarations": [
													{
														"constant": false,
														"id": 355,
														"name": "recoveredAddress",
														"nodeType": "VariableDeclaration",
														"scope": 382,
														"src": "3216:24:0",
														"stateVariable": false,
														"storageLocation": "default",
														"typeDescriptions": {
															"typeIdentifier": "t_address",
															"typeString": "address"
														},
														"typeName": {
															"id": 354,
															"name": "address",
															"nodeType": "ElementaryTypeName",
															"src": "3216:7:0",
															"stateMutability": "nonpayable",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														"value": null,
														"visibility": "internal"
													}
												],
												"id": 362,
												"initialValue": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 357,
															"name": "digest",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 331,
															"src": "3253:6:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bytes32",
																"typeString": "bytes32"
															}
														},
														{
															"argumentTypes": null,
															"id": 358,
															"name": "v",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 315,
															"src": "3261:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_uint8",
																"typeString": "uint8"
															}
														},
														{
															"argumentTypes": null,
															"id": 359,
															"name": "r",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 317,
															"src": "3264:1:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bytes32",
																"typeString": "bytes32"
															}
														},
														{
															"argumentTypes": null,
															"id": 360,
															"name": "s",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 319,
															"src": "3267: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": 356,
														"name": "ecrecover",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 584,
														"src": "3243: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": 361,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "3243:26:0",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"nodeType": "VariableDeclarationStatement",
												"src": "3216:53:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"commonType": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															"id": 372,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"argumentTypes": null,
																"commonType": {
																	"typeIdentifier": "t_address",
																	"typeString": "address"
																},
																"id": 368,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftExpression": {
																	"argumentTypes": null,
																	"id": 364,
																	"name": "recoveredAddress",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 355,
																	"src": "3287:16:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"nodeType": "BinaryOperation",
																"operator": "!=",
																"rightExpression": {
																	"argumentTypes": null,
																	"arguments": [
																		{
																			"argumentTypes": null,
																			"hexValue": "30",
																			"id": 366,
																			"isConstant": false,
																			"isLValue": false,
																			"isPure": true,
																			"kind": "number",
																			"lValueRequested": false,
																			"nodeType": "Literal",
																			"src": "3315: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": 365,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": true,
																		"lValueRequested": false,
																		"nodeType": "ElementaryTypeNameExpression",
																		"src": "3307:7:0",
																		"typeDescriptions": {
																			"typeIdentifier": "t_type$_t_address_$",
																			"typeString": "type(address)"
																		},
																		"typeName": "address"
																	},
																	"id": 367,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "typeConversion",
																	"lValueRequested": false,
																	"names": [],
																	"nodeType": "FunctionCall",
																	"src": "3307:10:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address_payable",
																		"typeString": "address payable"
																	}
																},
																"src": "3287:30:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_bool",
																	"typeString": "bool"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": "&&",
															"rightExpression": {
																"argumentTypes": null,
																"commonType": {
																	"typeIdentifier": "t_address",
																	"typeString": "address"
																},
																"id": 371,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftExpression": {
																	"argumentTypes": null,
																	"id": 369,
																	"name": "recoveredAddress",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 355,
																	"src": "3321:16:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"nodeType": "BinaryOperation",
																"operator": "==",
																"rightExpression": {
																	"argumentTypes": null,
																	"id": 370,
																	"name": "owner",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 307,
																	"src": "3341:5:0",
																	"typeDescriptions": {
																		"typeIdentifier": "t_address",
																		"typeString": "address"
																	}
																},
																"src": "3321:25:0",
																"typeDescriptions": {
																	"typeIdentifier": "t_bool",
																	"typeString": "bool"
																}
															},
															"src": "3287:59:0",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"argumentTypes": null,
															"hexValue": "46697265706f743a20494e56414c49445f5349474e4154555245",
															"id": 373,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "3348:28:0",
															"subdenomination": null,
															"typeDescriptions": {
																"typeIdentifier": "t_stringliteral_56fafac88e3158407bdc0364599e7af65bec8307341c41ff0d69d2d9e7d1a1a3",
																"typeString": "literal_string \"Firepot: INVALID_SIGNATURE\""
															},
															"value": "Firepot: INVALID_SIGNATURE"
														}
													],
													"expression": {
														"argumentTypes": [
															{
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															{
																"typeIdentifier": "t_stringliteral_56fafac88e3158407bdc0364599e7af65bec8307341c41ff0d69d2d9e7d1a1a3",
																"typeString": "literal_string \"Firepot: INVALID_SIGNATURE\""
															}
														],
														"id": 363,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															595,
															596
														],
														"referencedDeclaration": 596,
														"src": "3279:7:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 374,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "3279:98:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 375,
												"nodeType": "ExpressionStatement",
												"src": "3279:98:0"
											},
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"id": 377,
															"name": "owner",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 307,
															"src": "3396:5:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 378,
															"name": "spender",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 309,
															"src": "3403:7:0",
															"typeDescriptions": {
																"typeIdentifier": "t_address",
																"typeString": "address"
															}
														},
														{
															"argumentTypes": null,
															"id": 379,
															"name": "value",
															"nodeType": "Identifier",
															"overloadedDeclarations": [],
															"referencedDeclaration": 311,
															"src": "3412: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": 376,
														"name": "_approve",
														"nodeType": "Identifier",
														"overloadedDeclarations": [],
														"referencedDeclaration": 179,
														"src": "3387:8:0",
														"typeDescriptions": {
															"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
															"typeString": "function (address,address,uint256)"
														}
													},
													"id": 380,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "3387:31:0",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 381,
												"nodeType": "ExpressionStatement",
												"src": "3387:31:0"
											}
										]
									},
									"documentation": null,
									"id": 383,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "permit",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 320,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 307,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2783:13:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 306,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2783:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 309,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2798:15:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 308,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "2798:7:0",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 311,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2815:10:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 310,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "2815:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 313,
												"name": "deadline",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2827:13:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 312,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "2827:4:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 315,
												"name": "v",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2842:7:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint8",
													"typeString": "uint8"
												},
												"typeName": {
													"id": 314,
													"name": "uint8",
													"nodeType": "ElementaryTypeName",
													"src": "2842:5:0",
													"typeDescriptions": {
														"typeIdentifier": "t_uint8",
														"typeString": "uint8"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 317,
												"name": "r",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2851:9:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 316,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "2851:7:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 319,
												"name": "s",
												"nodeType": "VariableDeclaration",
												"scope": 383,
												"src": "2862:9:0",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 318,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "2862:7:0",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "2782:90:0"
									},
									"returnParameters": {
										"id": 321,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "2882:0:0"
									},
									"scope": 384,
									"src": "2767:658:0",
									"stateMutability": "nonpayable",
									"superFunction": 501,
									"visibility": "external"
								}
							],
							"scope": 385,
							"src": "103:3324:0"
						}
					],
					"src": "0:3428:0"
				},
				"id": 0
			},
			"contracts/interfaces/IFirepotERC20.sol": {
				"ast": {
					"absolutePath": "contracts/interfaces/IFirepotERC20.sol",
					"exportedSymbols": {
						"IFirepotERC20": [
							502
						]
					},
					"id": 503,
					"nodeType": "SourceUnit",
					"nodes": [
						{
							"id": 386,
							"literals": [
								"solidity",
								">=",
								"0.5",
								".0"
							],
							"nodeType": "PragmaDirective",
							"src": "0:24:1"
						},
						{
							"baseContracts": [],
							"contractDependencies": [],
							"contractKind": "interface",
							"documentation": null,
							"fullyImplemented": false,
							"id": 502,
							"linearizedBaseContracts": [
								502
							],
							"name": "IFirepotERC20",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"anonymous": false,
									"documentation": null,
									"id": 394,
									"name": "Approval",
									"nodeType": "EventDefinition",
									"parameters": {
										"id": 393,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 388,
												"indexed": true,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 394,
												"src": "71:21:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 387,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "71:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 390,
												"indexed": true,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 394,
												"src": "94:23:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 389,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "94:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 392,
												"indexed": false,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 394,
												"src": "119:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 391,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "119:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "70:60:1"
									},
									"src": "56:75:1"
								},
								{
									"anonymous": false,
									"documentation": null,
									"id": 402,
									"name": "Transfer",
									"nodeType": "EventDefinition",
									"parameters": {
										"id": 401,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 396,
												"indexed": true,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 402,
												"src": "151:20:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 395,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "151:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 398,
												"indexed": true,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 402,
												"src": "173:18:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 397,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "173:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 400,
												"indexed": false,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 402,
												"src": "193:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 399,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "193:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "150:54:1"
									},
									"src": "136:69:1"
								},
								{
									"body": null,
									"documentation": null,
									"id": 407,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "name",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 403,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "224:2:1"
									},
									"returnParameters": {
										"id": 406,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 405,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 407,
												"src": "250:13:1",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 404,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "250:6:1",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "249:15:1"
									},
									"scope": 502,
									"src": "211:54:1",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 412,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "symbol",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 408,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "285:2:1"
									},
									"returnParameters": {
										"id": 411,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 410,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 412,
												"src": "311:13:1",
												"stateVariable": false,
												"storageLocation": "memory",
												"typeDescriptions": {
													"typeIdentifier": "t_string_memory_ptr",
													"typeString": "string"
												},
												"typeName": {
													"id": 409,
													"name": "string",
													"nodeType": "ElementaryTypeName",
													"src": "311:6:1",
													"typeDescriptions": {
														"typeIdentifier": "t_string_storage_ptr",
														"typeString": "string"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "310:15:1"
									},
									"scope": 502,
									"src": "270:56:1",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 417,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "decimals",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 413,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "348:2:1"
									},
									"returnParameters": {
										"id": 416,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 415,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 417,
												"src": "374:5:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint8",
													"typeString": "uint8"
												},
												"typeName": {
													"id": 414,
													"name": "uint8",
													"nodeType": "ElementaryTypeName",
													"src": "374:5:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint8",
														"typeString": "uint8"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "373:7:1"
									},
									"scope": 502,
									"src": "331:50:1",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 422,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "totalSupply",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 418,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "406:2:1"
									},
									"returnParameters": {
										"id": 421,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 420,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 422,
												"src": "432:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 419,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "432:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "431:6:1"
									},
									"scope": 502,
									"src": "386:52:1",
									"stateMutability": "view",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 429,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "balanceOf",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 425,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 424,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 429,
												"src": "462:13:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 423,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "462:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "461:15:1"
									},
									"returnParameters": {
										"id": 428,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 427,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 429,
												"src": "500:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 426,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "500:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "499:6:1"
									},
									"scope": 502,
									"src": "443:63:1",
									"stateMutability": "view",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 438,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "allowance",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 434,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 431,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 438,
												"src": "530:13:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 430,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "530:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 433,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 438,
												"src": "545:15:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 432,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "545:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "529:32:1"
									},
									"returnParameters": {
										"id": 437,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 436,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 438,
												"src": "585:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 435,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "585:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "584:6:1"
									},
									"scope": 502,
									"src": "511:80:1",
									"stateMutability": "view",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 447,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "approve",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 443,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 440,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 447,
												"src": "614:15:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 439,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "614:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 442,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 447,
												"src": "631:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 441,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "631:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "613:29:1"
									},
									"returnParameters": {
										"id": 446,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 445,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 447,
												"src": "661:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 444,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "661:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "660:6:1"
									},
									"scope": 502,
									"src": "597:70:1",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 456,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "transfer",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 452,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 449,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 456,
												"src": "690:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 448,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "690:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 451,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 456,
												"src": "702:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 450,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "702:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "689:24:1"
									},
									"returnParameters": {
										"id": 455,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 454,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 456,
												"src": "732:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 453,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "732:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "731:6:1"
									},
									"scope": 502,
									"src": "672:66:1",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 467,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "transferFrom",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 463,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 458,
												"name": "from",
												"nodeType": "VariableDeclaration",
												"scope": 467,
												"src": "765:12:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 457,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "765:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 460,
												"name": "to",
												"nodeType": "VariableDeclaration",
												"scope": 467,
												"src": "779:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 459,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "779:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 462,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 467,
												"src": "791:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 461,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "791:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "764:38:1"
									},
									"returnParameters": {
										"id": 466,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 465,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 467,
												"src": "821:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bool",
													"typeString": "bool"
												},
												"typeName": {
													"id": 464,
													"name": "bool",
													"nodeType": "ElementaryTypeName",
													"src": "821:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bool",
														"typeString": "bool"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "820:6:1"
									},
									"scope": 502,
									"src": "743:84:1",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 472,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "DOMAIN_SEPARATOR",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 468,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "858:2:1"
									},
									"returnParameters": {
										"id": 471,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 470,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 472,
												"src": "884:7:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 469,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "884:7:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "883:9:1"
									},
									"scope": 502,
									"src": "833:60:1",
									"stateMutability": "view",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 477,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "PERMIT_TYPEHASH",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 473,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "922:2:1"
									},
									"returnParameters": {
										"id": 476,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 475,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 477,
												"src": "948:7:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 474,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "948:7:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "947:9:1"
									},
									"scope": 502,
									"src": "898:59:1",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 484,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "nonces",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 480,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 479,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 484,
												"src": "978:13:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 478,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "978:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "977:15:1"
									},
									"returnParameters": {
										"id": 483,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 482,
												"name": "",
												"nodeType": "VariableDeclaration",
												"scope": 484,
												"src": "1016:4:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 481,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1016:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1015:6:1"
									},
									"scope": 502,
									"src": "962:60:1",
									"stateMutability": "view",
									"superFunction": null,
									"visibility": "external"
								},
								{
									"body": null,
									"documentation": null,
									"id": 501,
									"implemented": false,
									"kind": "function",
									"modifiers": [],
									"name": "permit",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 499,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 486,
												"name": "owner",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1044:13:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 485,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1044:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 488,
												"name": "spender",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1059:15:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_address",
													"typeString": "address"
												},
												"typeName": {
													"id": 487,
													"name": "address",
													"nodeType": "ElementaryTypeName",
													"src": "1059:7:1",
													"stateMutability": "nonpayable",
													"typeDescriptions": {
														"typeIdentifier": "t_address",
														"typeString": "address"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 490,
												"name": "value",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1076:10:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 489,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1076:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 492,
												"name": "deadline",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1088:13:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 491,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "1088:4:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 494,
												"name": "v",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1103:7:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint8",
													"typeString": "uint8"
												},
												"typeName": {
													"id": 493,
													"name": "uint8",
													"nodeType": "ElementaryTypeName",
													"src": "1103:5:1",
													"typeDescriptions": {
														"typeIdentifier": "t_uint8",
														"typeString": "uint8"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 496,
												"name": "r",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1112:9:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 495,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "1112:7:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 498,
												"name": "s",
												"nodeType": "VariableDeclaration",
												"scope": 501,
												"src": "1123:9:1",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_bytes32",
													"typeString": "bytes32"
												},
												"typeName": {
													"id": 497,
													"name": "bytes32",
													"nodeType": "ElementaryTypeName",
													"src": "1123:7:1",
													"typeDescriptions": {
														"typeIdentifier": "t_bytes32",
														"typeString": "bytes32"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "1043:90:1"
									},
									"returnParameters": {
										"id": 500,
										"nodeType": "ParameterList",
										"parameters": [],
										"src": "1142:0:1"
									},
									"scope": 502,
									"src": "1028:115:1",
									"stateMutability": "nonpayable",
									"superFunction": null,
									"visibility": "external"
								}
							],
							"scope": 503,
							"src": "26:1119:1"
						}
					],
					"src": "0:1146:1"
				},
				"id": 1
			},
			"contracts/libraries/SafeMath.sol": {
				"ast": {
					"absolutePath": "contracts/libraries/SafeMath.sol",
					"exportedSymbols": {
						"SafeMath": [
							577
						]
					},
					"id": 578,
					"nodeType": "SourceUnit",
					"nodes": [
						{
							"id": 504,
							"literals": [
								"solidity",
								"=",
								"0.5",
								".16"
							],
							"nodeType": "PragmaDirective",
							"src": "0:24:2"
						},
						{
							"baseContracts": [],
							"contractDependencies": [],
							"contractKind": "library",
							"documentation": null,
							"fullyImplemented": true,
							"id": 577,
							"linearizedBaseContracts": [
								577
							],
							"name": "SafeMath",
							"nodeType": "ContractDefinition",
							"nodes": [
								{
									"body": {
										"id": 525,
										"nodeType": "Block",
										"src": "215:66:2",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"commonType": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															"id": 521,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"argumentTypes": null,
																"components": [
																	{
																		"argumentTypes": null,
																		"id": 518,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": false,
																		"lValueRequested": false,
																		"leftHandSide": {
																			"argumentTypes": null,
																			"id": 514,
																			"name": "z",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 511,
																			"src": "234:1:2",
																			"typeDescriptions": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			}
																		},
																		"nodeType": "Assignment",
																		"operator": "=",
																		"rightHandSide": {
																			"argumentTypes": null,
																			"commonType": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			},
																			"id": 517,
																			"isConstant": false,
																			"isLValue": false,
																			"isPure": false,
																			"lValueRequested": false,
																			"leftExpression": {
																				"argumentTypes": null,
																				"id": 515,
																				"name": "x",
																				"nodeType": "Identifier",
																				"overloadedDeclarations": [],
																				"referencedDeclaration": 506,
																				"src": "238:1:2",
																				"typeDescriptions": {
																					"typeIdentifier": "t_uint256",
																					"typeString": "uint256"
																				}
																			},
																			"nodeType": "BinaryOperation",
																			"operator": "+",
																			"rightExpression": {
																				"argumentTypes": null,
																				"id": 516,
																				"name": "y",
																				"nodeType": "Identifier",
																				"overloadedDeclarations": [],
																				"referencedDeclaration": 508,
																				"src": "242:1:2",
																				"typeDescriptions": {
																					"typeIdentifier": "t_uint256",
																					"typeString": "uint256"
																				}
																			},
																			"src": "238:5:2",
																			"typeDescriptions": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			}
																		},
																		"src": "234:9:2",
																		"typeDescriptions": {
																			"typeIdentifier": "t_uint256",
																			"typeString": "uint256"
																		}
																	}
																],
																"id": 519,
																"isConstant": false,
																"isInlineArray": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "TupleExpression",
																"src": "233:11:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": ">=",
															"rightExpression": {
																"argumentTypes": null,
																"id": 520,
																"name": "x",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 506,
																"src": "248:1:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"src": "233:16:2",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"argumentTypes": null,
															"hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
															"id": 522,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "251:22:2",
															"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": 513,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															595,
															596
														],
														"referencedDeclaration": 596,
														"src": "225:7:2",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 523,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "225:49:2",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 524,
												"nodeType": "ExpressionStatement",
												"src": "225:49:2"
											}
										]
									},
									"documentation": null,
									"id": 526,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "add",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 509,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 506,
												"name": "x",
												"nodeType": "VariableDeclaration",
												"scope": 526,
												"src": "168:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 505,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "168:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 508,
												"name": "y",
												"nodeType": "VariableDeclaration",
												"scope": 526,
												"src": "176:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 507,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "176:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "167:16:2"
									},
									"returnParameters": {
										"id": 512,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 511,
												"name": "z",
												"nodeType": "VariableDeclaration",
												"scope": 526,
												"src": "207:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 510,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "207:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "206:8:2"
									},
									"scope": 577,
									"src": "155:126:2",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "internal"
								},
								{
									"body": {
										"id": 547,
										"nodeType": "Block",
										"src": "347:67:2",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"commonType": {
																"typeIdentifier": "t_uint256",
																"typeString": "uint256"
															},
															"id": 543,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"argumentTypes": null,
																"components": [
																	{
																		"argumentTypes": null,
																		"id": 540,
																		"isConstant": false,
																		"isLValue": false,
																		"isPure": false,
																		"lValueRequested": false,
																		"leftHandSide": {
																			"argumentTypes": null,
																			"id": 536,
																			"name": "z",
																			"nodeType": "Identifier",
																			"overloadedDeclarations": [],
																			"referencedDeclaration": 533,
																			"src": "366:1:2",
																			"typeDescriptions": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			}
																		},
																		"nodeType": "Assignment",
																		"operator": "=",
																		"rightHandSide": {
																			"argumentTypes": null,
																			"commonType": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			},
																			"id": 539,
																			"isConstant": false,
																			"isLValue": false,
																			"isPure": false,
																			"lValueRequested": false,
																			"leftExpression": {
																				"argumentTypes": null,
																				"id": 537,
																				"name": "x",
																				"nodeType": "Identifier",
																				"overloadedDeclarations": [],
																				"referencedDeclaration": 528,
																				"src": "370:1:2",
																				"typeDescriptions": {
																					"typeIdentifier": "t_uint256",
																					"typeString": "uint256"
																				}
																			},
																			"nodeType": "BinaryOperation",
																			"operator": "-",
																			"rightExpression": {
																				"argumentTypes": null,
																				"id": 538,
																				"name": "y",
																				"nodeType": "Identifier",
																				"overloadedDeclarations": [],
																				"referencedDeclaration": 530,
																				"src": "374:1:2",
																				"typeDescriptions": {
																					"typeIdentifier": "t_uint256",
																					"typeString": "uint256"
																				}
																			},
																			"src": "370:5:2",
																			"typeDescriptions": {
																				"typeIdentifier": "t_uint256",
																				"typeString": "uint256"
																			}
																		},
																		"src": "366:9:2",
																		"typeDescriptions": {
																			"typeIdentifier": "t_uint256",
																			"typeString": "uint256"
																		}
																	}
																],
																"id": 541,
																"isConstant": false,
																"isInlineArray": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"nodeType": "TupleExpression",
																"src": "365:11:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": "<=",
															"rightExpression": {
																"argumentTypes": null,
																"id": 542,
																"name": "x",
																"nodeType": "Identifier",
																"overloadedDeclarations": [],
																"referencedDeclaration": 528,
																"src": "380:1:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																}
															},
															"src": "365:16:2",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"argumentTypes": null,
															"hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
															"id": 544,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "383:23:2",
															"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": 535,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															595,
															596
														],
														"referencedDeclaration": 596,
														"src": "357:7:2",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 545,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "357:50:2",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 546,
												"nodeType": "ExpressionStatement",
												"src": "357:50:2"
											}
										]
									},
									"documentation": null,
									"id": 548,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "sub",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 531,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 528,
												"name": "x",
												"nodeType": "VariableDeclaration",
												"scope": 548,
												"src": "300:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 527,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "300:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 530,
												"name": "y",
												"nodeType": "VariableDeclaration",
												"scope": 548,
												"src": "308:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 529,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "308:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "299:16:2"
									},
									"returnParameters": {
										"id": 534,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 533,
												"name": "z",
												"nodeType": "VariableDeclaration",
												"scope": 548,
												"src": "339:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 532,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "339:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "338:8:2"
									},
									"scope": 577,
									"src": "287:127:2",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "internal"
								},
								{
									"body": {
										"id": 575,
										"nodeType": "Block",
										"src": "480:80:2",
										"statements": [
											{
												"expression": {
													"argumentTypes": null,
													"arguments": [
														{
															"argumentTypes": null,
															"commonType": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															},
															"id": 571,
															"isConstant": false,
															"isLValue": false,
															"isPure": false,
															"lValueRequested": false,
															"leftExpression": {
																"argumentTypes": null,
																"commonType": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																},
																"id": 560,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftExpression": {
																	"argumentTypes": null,
																	"id": 558,
																	"name": "y",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 552,
																	"src": "498:1:2",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"nodeType": "BinaryOperation",
																"operator": "==",
																"rightExpression": {
																	"argumentTypes": null,
																	"hexValue": "30",
																	"id": 559,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": true,
																	"kind": "number",
																	"lValueRequested": false,
																	"nodeType": "Literal",
																	"src": "503:1:2",
																	"subdenomination": null,
																	"typeDescriptions": {
																		"typeIdentifier": "t_rational_0_by_1",
																		"typeString": "int_const 0"
																	},
																	"value": "0"
																},
																"src": "498:6:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_bool",
																	"typeString": "bool"
																}
															},
															"nodeType": "BinaryOperation",
															"operator": "||",
															"rightExpression": {
																"argumentTypes": null,
																"commonType": {
																	"typeIdentifier": "t_uint256",
																	"typeString": "uint256"
																},
																"id": 570,
																"isConstant": false,
																"isLValue": false,
																"isPure": false,
																"lValueRequested": false,
																"leftExpression": {
																	"argumentTypes": null,
																	"commonType": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	},
																	"id": 568,
																	"isConstant": false,
																	"isLValue": false,
																	"isPure": false,
																	"lValueRequested": false,
																	"leftExpression": {
																		"argumentTypes": null,
																		"components": [
																			{
																				"argumentTypes": null,
																				"id": 565,
																				"isConstant": false,
																				"isLValue": false,
																				"isPure": false,
																				"lValueRequested": false,
																				"leftHandSide": {
																					"argumentTypes": null,
																					"id": 561,
																					"name": "z",
																					"nodeType": "Identifier",
																					"overloadedDeclarations": [],
																					"referencedDeclaration": 555,
																					"src": "509:1:2",
																					"typeDescriptions": {
																						"typeIdentifier": "t_uint256",
																						"typeString": "uint256"
																					}
																				},
																				"nodeType": "Assignment",
																				"operator": "=",
																				"rightHandSide": {
																					"argumentTypes": null,
																					"commonType": {
																						"typeIdentifier": "t_uint256",
																						"typeString": "uint256"
																					},
																					"id": 564,
																					"isConstant": false,
																					"isLValue": false,
																					"isPure": false,
																					"lValueRequested": false,
																					"leftExpression": {
																						"argumentTypes": null,
																						"id": 562,
																						"name": "x",
																						"nodeType": "Identifier",
																						"overloadedDeclarations": [],
																						"referencedDeclaration": 550,
																						"src": "513:1:2",
																						"typeDescriptions": {
																							"typeIdentifier": "t_uint256",
																							"typeString": "uint256"
																						}
																					},
																					"nodeType": "BinaryOperation",
																					"operator": "*",
																					"rightExpression": {
																						"argumentTypes": null,
																						"id": 563,
																						"name": "y",
																						"nodeType": "Identifier",
																						"overloadedDeclarations": [],
																						"referencedDeclaration": 552,
																						"src": "517:1:2",
																						"typeDescriptions": {
																							"typeIdentifier": "t_uint256",
																							"typeString": "uint256"
																						}
																					},
																					"src": "513:5:2",
																					"typeDescriptions": {
																						"typeIdentifier": "t_uint256",
																						"typeString": "uint256"
																					}
																				},
																				"src": "509:9:2",
																				"typeDescriptions": {
																					"typeIdentifier": "t_uint256",
																					"typeString": "uint256"
																				}
																			}
																		],
																		"id": 566,
																		"isConstant": false,
																		"isInlineArray": false,
																		"isLValue": false,
																		"isPure": false,
																		"lValueRequested": false,
																		"nodeType": "TupleExpression",
																		"src": "508:11:2",
																		"typeDescriptions": {
																			"typeIdentifier": "t_uint256",
																			"typeString": "uint256"
																		}
																	},
																	"nodeType": "BinaryOperation",
																	"operator": "/",
																	"rightExpression": {
																		"argumentTypes": null,
																		"id": 567,
																		"name": "y",
																		"nodeType": "Identifier",
																		"overloadedDeclarations": [],
																		"referencedDeclaration": 552,
																		"src": "522:1:2",
																		"typeDescriptions": {
																			"typeIdentifier": "t_uint256",
																			"typeString": "uint256"
																		}
																	},
																	"src": "508:15:2",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"nodeType": "BinaryOperation",
																"operator": "==",
																"rightExpression": {
																	"argumentTypes": null,
																	"id": 569,
																	"name": "x",
																	"nodeType": "Identifier",
																	"overloadedDeclarations": [],
																	"referencedDeclaration": 550,
																	"src": "527:1:2",
																	"typeDescriptions": {
																		"typeIdentifier": "t_uint256",
																		"typeString": "uint256"
																	}
																},
																"src": "508:20:2",
																"typeDescriptions": {
																	"typeIdentifier": "t_bool",
																	"typeString": "bool"
																}
															},
															"src": "498:30:2",
															"typeDescriptions": {
																"typeIdentifier": "t_bool",
																"typeString": "bool"
															}
														},
														{
															"argumentTypes": null,
															"hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
															"id": 572,
															"isConstant": false,
															"isLValue": false,
															"isPure": true,
															"kind": "string",
															"lValueRequested": false,
															"nodeType": "Literal",
															"src": "530:22:2",
															"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": 557,
														"name": "require",
														"nodeType": "Identifier",
														"overloadedDeclarations": [
															595,
															596
														],
														"referencedDeclaration": 596,
														"src": "490:7:2",
														"typeDescriptions": {
															"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
															"typeString": "function (bool,string memory) pure"
														}
													},
													"id": 573,
													"isConstant": false,
													"isLValue": false,
													"isPure": false,
													"kind": "functionCall",
													"lValueRequested": false,
													"names": [],
													"nodeType": "FunctionCall",
													"src": "490:63:2",
													"typeDescriptions": {
														"typeIdentifier": "t_tuple$__$",
														"typeString": "tuple()"
													}
												},
												"id": 574,
												"nodeType": "ExpressionStatement",
												"src": "490:63:2"
											}
										]
									},
									"documentation": null,
									"id": 576,
									"implemented": true,
									"kind": "function",
									"modifiers": [],
									"name": "mul",
									"nodeType": "FunctionDefinition",
									"parameters": {
										"id": 553,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 550,
												"name": "x",
												"nodeType": "VariableDeclaration",
												"scope": 576,
												"src": "433:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 549,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "433:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											},
											{
												"constant": false,
												"id": 552,
												"name": "y",
												"nodeType": "VariableDeclaration",
												"scope": 576,
												"src": "441:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 551,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "441:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "432:16:2"
									},
									"returnParameters": {
										"id": 556,
										"nodeType": "ParameterList",
										"parameters": [
											{
												"constant": false,
												"id": 555,
												"name": "z",
												"nodeType": "VariableDeclaration",
												"scope": 576,
												"src": "472:6:2",
												"stateVariable": false,
												"storageLocation": "default",
												"typeDescriptions": {
													"typeIdentifier": "t_uint256",
													"typeString": "uint256"
												},
												"typeName": {
													"id": 554,
													"name": "uint",
													"nodeType": "ElementaryTypeName",
													"src": "472:4:2",
													"typeDescriptions": {
														"typeIdentifier": "t_uint256",
														"typeString": "uint256"
													}
												},
												"value": null,
												"visibility": "internal"
											}
										],
										"src": "471:8:2"
									},
									"scope": 577,
									"src": "420:140:2",
									"stateMutability": "pure",
									"superFunction": null,
									"visibility": "internal"
								}
							],
							"scope": 578,
							"src": "132:430:2"
						}
					],
					"src": "0:563:2"
				},
				"id": 2
			}
		}
	}
}