More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 26,187 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap | 104389571 | 9 hrs ago | IN | 0 FTM | 0.00041471 | ||||
Swap | 104375528 | 15 hrs ago | IN | 0 FTM | 0.02757222 | ||||
Swap | 104371178 | 16 hrs ago | IN | 0 FTM | 0.00097304 | ||||
Swap | 104347991 | 27 hrs ago | IN | 0 FTM | 0.01222027 | ||||
Swap | 104347961 | 27 hrs ago | IN | 0 FTM | 0.02291062 | ||||
Swap | 104332596 | 34 hrs ago | IN | 100 FTM | 0.00045337 | ||||
Swap | 104321091 | 39 hrs ago | IN | 0 FTM | 0.0007197 | ||||
Swap | 104318063 | 40 hrs ago | IN | 0 FTM | 0.0260771 | ||||
Swap | 104306047 | 45 hrs ago | IN | 0 FTM | 0.01985135 | ||||
Swap | 104239991 | 2 days ago | IN | 0 FTM | 0.0007196 | ||||
Swap | 104225641 | 2 days ago | IN | 0 FTM | 0.00043531 | ||||
Swap | 104218275 | 3 days ago | IN | 0 FTM | 0.00035194 | ||||
Swap | 104214317 | 3 days ago | IN | 0 FTM | 0.01518916 | ||||
Swap | 104203417 | 3 days ago | IN | 0 FTM | 0.0007097 | ||||
Swap | 104105154 | 4 days ago | IN | 0 FTM | 0.01196986 | ||||
Swap | 104105118 | 4 days ago | IN | 0 FTM | 0.02817604 | ||||
Swap | 104084502 | 5 days ago | IN | 0 FTM | 0.00159234 | ||||
Swap | 104067727 | 5 days ago | IN | 0 FTM | 0.00038225 | ||||
Swap | 104064419 | 5 days ago | IN | 0 FTM | 0.00783859 | ||||
Swap | 104055004 | 5 days ago | IN | 0 FTM | 0.00099452 | ||||
Swap | 104054972 | 5 days ago | IN | 0 FTM | 0.00041841 | ||||
Swap | 104046353 | 5 days ago | IN | 0 FTM | 0.00020978 | ||||
Swap | 104046050 | 5 days ago | IN | 0 FTM | 0.00049432 | ||||
Swap | 104023951 | 6 days ago | IN | 0 FTM | 0.0007196 | ||||
Swap | 104017627 | 6 days ago | IN | 69.5 FTM | 0.01267235 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
104332596 | 34 hrs ago | 100 FTM | ||||
104230791 | 2 days ago | 0.02 FTM | ||||
104230791 | 2 days ago | 0.02 FTM | ||||
104100854 | 4 days ago | 0.005 FTM | ||||
104100854 | 4 days ago | 0.005 FTM | ||||
104017627 | 6 days ago | 69.5 FTM | ||||
104012408 | 6 days ago | 10 FTM | ||||
103984242 | 6 days ago | 5 FTM | ||||
103926784 | 7 days ago | 95 FTM | ||||
103926784 | 7 days ago | 95 FTM | ||||
103891311 | 8 days ago | 8 FTM | ||||
103891311 | 8 days ago | 8 FTM | ||||
103885357 | 8 days ago | 20 FTM | ||||
103885357 | 8 days ago | 20 FTM | ||||
103885125 | 8 days ago | 40 FTM | ||||
103885125 | 8 days ago | 40 FTM | ||||
103884824 | 8 days ago | 40 FTM | ||||
103884824 | 8 days ago | 40 FTM | ||||
103762902 | 10 days ago | 0.1 FTM | ||||
103744794 | 10 days ago | 605 FTM | ||||
103675203 | 11 days ago | 70 FTM | ||||
103669100 | 11 days ago | 38 FTM | ||||
103669100 | 11 days ago | 38 FTM | ||||
103583958 | 13 days ago | 475 FTM | ||||
103583958 | 13 days ago | 475 FTM |
Loading...
Loading
Contract Name:
AggregationRouter
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6; pragma abicoder v2; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED"); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED"); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED"); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); } // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } function div(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b > 0, "ds-math-division-by-zero"); c = a / b; } } interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; function balanceOf(address account) external view returns (uint256); } interface IAggregationExecutor { function callBytes(bytes calldata data, address srcSpender) external payable; // 0xd9c45357 } interface IERC20Permit { function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } library RevertReasonParser { function parse(bytes memory data, string memory prefix) internal pure returns (string memory) { // https://solidity.readthedocs.io/en/latest/control-structures.html#revert // We assume that revert reason is abi-encoded as Error(string) // 68 = 4-byte selector 0x08c379a0 + 32 bytes offset + 32 bytes length if (data.length >= 68 && data[0] == "\x08" && data[1] == "\xc3" && data[2] == "\x79" && data[3] == "\xa0") { string memory reason; // solhint-disable no-inline-assembly assembly { // 68 = 32 bytes data length + 4-byte selector + 32 bytes offset reason := add(data, 68) } /* revert reason is padded up to 32 bytes with ABI encoder: Error(string) also sometimes there is extra 32 bytes of zeros padded in the end: https://github.com/ethereum/solidity/issues/10170 because of that we can't check for equality and instead check that string length + extra 68 bytes is less than overall data length */ require(data.length >= 68 + bytes(reason).length, "Invalid revert reason"); return string(abi.encodePacked(prefix, "Error(", reason, ")")); } // 36 = 4-byte selector 0x4e487b71 + 32 bytes integer else if (data.length == 36 && data[0] == "\x4e" && data[1] == "\x48" && data[2] == "\x7b" && data[3] == "\x71") { uint256 code; // solhint-disable no-inline-assembly assembly { // 36 = 32 bytes data length + 4-byte selector code := mload(add(data, 36)) } return string(abi.encodePacked(prefix, "Panic(", _toHex(code), ")")); } return string(abi.encodePacked(prefix, "Unknown(", _toHex(data), ")")); } function _toHex(uint256 value) private pure returns (string memory) { return _toHex(abi.encodePacked(value)); } function _toHex(bytes memory data) private pure returns (string memory) { bytes16 alphabet = 0x30313233343536373839616263646566; bytes memory str = new bytes(2 + data.length * 2); str[0] = "0"; str[1] = "x"; for (uint256 i = 0; i < data.length; i++) { str[2 * i + 2] = alphabet[uint8(data[i] >> 4)]; str[2 * i + 3] = alphabet[uint8(data[i] & 0x0f)]; } return string(str); } } contract Permitable { event Error(string reason); function _permit( IERC20 token, uint256 amount, bytes calldata permit ) internal { if (permit.length == 32 * 7) { // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory result) = address(token).call(abi.encodePacked(IERC20Permit.permit.selector, permit)); if (!success) { string memory reason = RevertReasonParser.parse(result, "Permit call failed: "); if (token.allowance(msg.sender, address(this)) < amount) { revert(reason); } else { emit Error(reason); } } } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract AggregationRouter is Ownable, Permitable { using SafeMath for uint256; address public immutable WETH; address private constant ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); uint256 private constant _PARTIAL_FILL = 0x01; uint256 private constant _REQUIRES_EXTRA_ETH = 0x02; uint256 private constant _SHOULD_CLAIM = 0x04; uint256 private constant _BURN_FROM_MSG_SENDER = 0x08; uint256 private constant _BURN_FROM_TX_ORIGIN = 0x10; struct SwapDescription { IERC20 srcToken; IERC20 dstToken; address srcReceiver; address dstReceiver; uint256 amount; uint256 minReturnAmount; uint256 flags; bytes permit; } event Swapped(address sender, IERC20 srcToken, IERC20 dstToken, address dstReceiver, uint256 spentAmount, uint256 returnAmount); event Exchange(address pair, uint256 amountOut, address output); modifier ensure(uint256 deadline) { require(deadline >= block.timestamp, "Router: EXPIRED"); _; } constructor(address _WETH) public { WETH = _WETH; } receive() external payable {} function swap( IAggregationExecutor caller, SwapDescription calldata desc, bytes calldata data ) external payable returns (uint256 returnAmount) { require(desc.minReturnAmount > 0, "Min return should not be 0"); require(data.length > 0, "data should be not zero"); uint256 flags = desc.flags; uint256 amount = desc.amount; IERC20 srcToken = desc.srcToken; IERC20 dstToken = desc.dstToken; if (flags & _REQUIRES_EXTRA_ETH != 0) { require(msg.value > (isETH(srcToken) ? amount : 0), "Invalid msg.value"); } else { require(msg.value == (isETH(srcToken) ? amount : 0), "Invalid msg.value"); } if (flags & _SHOULD_CLAIM != 0) { require(!isETH(srcToken), "Claim token is ETH"); _permit(srcToken, amount, desc.permit); TransferHelper.safeTransferFrom(address(srcToken), msg.sender, desc.srcReceiver, amount); } address dstReceiver = (desc.dstReceiver == address(0)) ? msg.sender : desc.dstReceiver; uint256 initialSrcBalance = (flags & _PARTIAL_FILL != 0) ? getBalance(srcToken, msg.sender) : 0; uint256 initialDstBalance = getBalance(dstToken, dstReceiver); { // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory result) = address(caller).call{value: msg.value}(abi.encodeWithSelector(caller.callBytes.selector, data, msg.sender)); if (!success) { revert(RevertReasonParser.parse(result, "callBytes failed: ")); } } uint256 spentAmount = amount; returnAmount = getBalance(dstToken, dstReceiver).sub(initialDstBalance); if (flags & _PARTIAL_FILL != 0) { spentAmount = initialSrcBalance.add(amount).sub(getBalance(srcToken, msg.sender)); require(returnAmount.mul(amount) >= desc.minReturnAmount.mul(spentAmount), "Return amount is not enough"); } else { require(returnAmount >= desc.minReturnAmount, "Return amount is not enough"); } emit Swapped(msg.sender, srcToken, dstToken, dstReceiver, spentAmount, returnAmount); emit Exchange(address(caller), returnAmount, isETH(dstToken) ? WETH : address(dstToken)); } function getBalance(IERC20 token, address account) internal view returns (uint256) { if (isETH(token)) { return account.balance; } else { return token.balanceOf(account); } } function isETH(IERC20 token) internal pure returns (bool) { return (address(token) == ETH_ADDRESS); } function rescueFunds(address token, uint256 amount) external onlyOwner { if (isETH(IERC20(token))) { TransferHelper.safeTransferETH(msg.sender, amount); } else { TransferHelper.safeTransfer(token, msg.sender, amount); } } }
{ "optimizer": { "enabled": true, "runs": 999999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"Error","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"address","name":"output","type":"address"}],"name":"Exchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"srcToken","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"dstToken","type":"address"},{"indexed":false,"internalType":"address","name":"dstReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"spentAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"}],"name":"Swapped","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAggregationExecutor","name":"caller","type":"address"},{"components":[{"internalType":"contract IERC20","name":"srcToken","type":"address"},{"internalType":"contract IERC20","name":"dstToken","type":"address"},{"internalType":"address","name":"srcReceiver","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"flags","type":"uint256"},{"internalType":"bytes","name":"permit","type":"bytes"}],"internalType":"struct AggregationRouter.SwapDescription","name":"desc","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50604051620020b9380380620020b98339810160408190526200003491620000a4565b600062000040620000a0565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b031916608052620000d4565b3390565b600060208284031215620000b6578081fd5b81516001600160a01b0381168114620000cd578182fd5b9392505050565b60805160601c611fc2620000f7600039806107b9528061081e5250611fc26000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100d5578063ad5c4648146100f7578063f2fde38b1461010c57610070565b8063715018a61461007557806378e3214f1461008c5780637c025200146100ac57610070565b3661007057005b600080fd5b34801561008157600080fd5b5061008a61012c565b005b34801561009857600080fd5b5061008a6100a73660046116d2565b610217565b6100bf6100ba36600461171d565b6102b6565b6040516100cc9190611983565b60405180910390f35b3480156100e157600080fd5b506100ea610800565b6040516100cc919061198c565b34801561010357600080fd5b506100ea61081c565b34801561011857600080fd5b5061008a6101273660046116af565b610840565b61013461098d565b73ffffffffffffffffffffffffffffffffffffffff16610152610800565b73ffffffffffffffffffffffffffffffffffffffff16146101a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61021f61098d565b73ffffffffffffffffffffffffffffffffffffffff1661023d610800565b73ffffffffffffffffffffffffffffffffffffffff161461028a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b61029382610991565b156102a7576102a233826109c3565b6102b2565b6102b2823383610a7c565b5050565b6000808460a00135116102f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d3d565b8161032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611da9565b60c08401356080850135600061034560208801886116af565b905060006103596040890160208a016116af565b905060028416156103b75761036d82610991565b61037857600061037a565b825b34116103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611ccf565b610405565b6103c082610991565b6103cb5760006103cd565b825b3414610405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611ccf565b60048416156104805761041782610991565b1561044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611bcd565b610465828461046060e08c018c611ed1565b610ba5565b610480823361047a60608c0160408d016116af565b86610db3565b60008061049360808b0160608c016116af565b73ffffffffffffffffffffffffffffffffffffffff16146104c3576104be60808a0160608b016116af565b6104c5565b335b90506000600186166104d85760006104e2565b6104e28433610ed7565b905060006104f08484610ed7565b90506000808d73ffffffffffffffffffffffffffffffffffffffff1634635697e45360e01b8e8e3360405160240161052a93929190611aa2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516105b39190611817565b60006040518083038185875af1925050503d80600081146105f0576040519150601f19603f3d011682016040523d82523d6000602084013e6105f5565b606091505b5091509150816106715761063e816040518060400160405280601281526020017f63616c6c4279746573206661696c65643a200000000000000000000000000000815250610fb0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f9190611b0e565b50869050610689826106838787610ed7565b90611382565b98506001881615610702576106ab6106a18733610ed7565b610683858a6113bf565b90506106bb60a08d0135826113fc565b6106c58a896113fc565b10156106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d06565b610740565b8b60a00135891015610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d06565b7fd6d4f5681c246c9f42c203e287975af1601f8df8035a9251f79aab5c8f09e2f833878787858e604051610779969594939291906119d4565b60405180910390a17fddac40937f35385a34f721af292e5a83fc5b840f722bff57c2fc71adba708c488d8a6107ad88610991565b6107b757876107d9565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516107e893929190611a72565b60405180910390a15050505050505050949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000081565b61084861098d565b73ffffffffffffffffffffffffffffffffffffffff16610866610800565b73ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b73ffffffffffffffffffffffffffffffffffffffff8116610900576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c04565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516109fa9190611817565b60006040518083038185875af1925050503d8060008114610a37576040519150601f19603f3d011682016040523d82523d6000602084013e610a3c565b606091505b5050905080610a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611e17565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610aae929190611a4c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610afc9190611817565b6000604051808303816000865af19150503d8060008114610b39576040519150601f19603f3d011682016040523d82523d6000602084013e610b3e565b606091505b5091509150818015610b68575080511580610b68575080806020019051810190610b6891906116fd565b610b9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611b96565b5050505050565b60e0811415610dad576000808573ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b8585604051602001610be4939291906117db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c1c91611817565b6000604051808303816000865af19150503d8060008114610c59576040519150601f19603f3d011682016040523d82523d6000602084013e610c5e565b606091505b509150915081610daa576000610ca9826040518060400160405280601481526020017f5065726d69742063616c6c206661696c65643a20000000000000000000000000815250610fb0565b9050858773ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610ce79291906119ad565b60206040518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3791906117c3565b1015610d7157806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f9190611b0e565b7f08c379a0afcc32b1a39302f7cb8073359698411ab5fd6e3edb2c02c0b5fba8aa81604051610da09190611b0e565b60405180910390a1505b50505b50505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610de793929190611a1b565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e359190611817565b6000604051808303816000865af19150503d8060008114610e72576040519150601f19603f3d011682016040523d82523d6000602084013e610e77565b606091505b5091509150818015610ea1575080511580610ea1575080806020019051810190610ea191906116fd565b610daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611e74565b6000610ee283610991565b15610f05575073ffffffffffffffffffffffffffffffffffffffff811631610faa565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610f5790859060040161198c565b60206040518083038186803b158015610f6f57600080fd5b505afa158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa791906117c3565b90505b92915050565b60606044835110158015611017575082600081518110610fcc57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f0800000000000000000000000000000000000000000000000000000000000000145b801561107657508260018151811061102b57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167fc300000000000000000000000000000000000000000000000000000000000000145b80156110d557508260028151811061108a57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7900000000000000000000000000000000000000000000000000000000000000145b80156111345750826003815181106110e957fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167fa000000000000000000000000000000000000000000000000000000000000000145b156111aa576060604484019050805160440184511015611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611de0565b8281604051602001611193929190611937565b604051602081830303815290604052915050610faa565b8251602414801561120e5750826000815181106111c357fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f4e00000000000000000000000000000000000000000000000000000000000000145b801561126d57508260018151811061122257fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f4800000000000000000000000000000000000000000000000000000000000000145b80156112cc57508260028151811061128157fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7b00000000000000000000000000000000000000000000000000000000000000145b801561132b5750826003815181106112e057fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7100000000000000000000000000000000000000000000000000000000000000145b156113505760248301518261133f8261144d565b604051602001611193929190611833565b8161135a84611473565b60405160200161136b9291906118b5565b604051602081830303815290604052905092915050565b80820382811115610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611b5f565b80820182811015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c98565b60008115806114175750508082028282828161141457fe5b04145b610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c61565b6060610faa826040516020016114639190611983565b6040516020818303038152906040525b80516060907f30313233343536373839616263646566000000000000000000000000000000009060009060029081020167ffffffffffffffff811180156114b957600080fd5b506040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061151557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061157257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b84518110156116a7578260048683815181106115bc57fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c60f81c601081106115f257fe5b1a60f81b82826002026002018151811061160857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508285828151811061164457fe5b60209101015160f81c600f166010811061165a57fe5b1a60f81b82826002026003018151811061167057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016115a4565b509392505050565b6000602082840312156116c0578081fd5b81356116cb81611f67565b9392505050565b600080604083850312156116e4578081fd5b82356116ef81611f67565b946020939093013593505050565b60006020828403121561170e578081fd5b815180151581146116cb578182fd5b60008060008060608587031215611732578182fd5b843561173d81611f67565b9350602085013567ffffffffffffffff80821115611759578384fd5b90860190610100828903121561176d578384fd5b90935060408601359080821115611782578384fd5b818701915087601f830112611795578384fd5b8135818111156117a3578485fd5b8860208285010111156117b4578485fd5b95989497505060200194505050565b6000602082840312156117d4578081fd5b5051919050565b60007fffffffff000000000000000000000000000000000000000000000000000000008516825282846004840137910160040190815292915050565b60008251611829818460208701611f3b565b9190910192915050565b60008351611845818460208801611f3b565b7f50616e6963280000000000000000000000000000000000000000000000000000908301908152835161187f816006840160208801611f3b565b7f290000000000000000000000000000000000000000000000000000000000000060069290910191820152600701949350505050565b600083516118c7818460208801611f3b565b7f556e6b6e6f776e280000000000000000000000000000000000000000000000009083019081528351611901816008840160208801611f3b565b7f290000000000000000000000000000000000000000000000000000000000000060089290910191820152600901949350505050565b60008351611949818460208801611f3b565b7f4572726f72280000000000000000000000000000000000000000000000000000908301908152835161187f816006840160208801611f3b565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff96871681529486166020860152928516604085015293166060830152608082019290925260a081019190915260c00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff93841681526020810192909252909116604082015260600190565b60006040825283604083015283856060840137806060858401015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116830101905073ffffffffffffffffffffffffffffffffffffffff83166020830152949350505050565b6000602082528251806020840152611b2d816040850160208701611f3b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526012908201527f436c61696d20746f6b656e206973204554480000000000000000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526011908201527f496e76616c6964206d73672e76616c7565000000000000000000000000000000604082015260600190565b6020808252601b908201527f52657475726e20616d6f756e74206973206e6f7420656e6f7567680000000000604082015260600190565b6020808252601a908201527f4d696e2072657475726e2073686f756c64206e6f742062652030000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f646174612073686f756c64206265206e6f74207a65726f000000000000000000604082015260600190565b60208082526015908201527f496e76616c69642072657665727420726561736f6e0000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f05578283fd5b83018035915067ffffffffffffffff821115611f1f578283fd5b602001915036819003821315611f3457600080fd5b9250929050565b60005b83811015611f56578181015183820152602001611f3e565b83811115610dad5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611f8957600080fd5b5056fea264697066735822122068ef9be5c857f15e870fcb5c0518ef8740a1e8f5c49ddb10f6256f4b20d39b7f64736f6c6343000706003300000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83
Deployed Bytecode
0x6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100d5578063ad5c4648146100f7578063f2fde38b1461010c57610070565b8063715018a61461007557806378e3214f1461008c5780637c025200146100ac57610070565b3661007057005b600080fd5b34801561008157600080fd5b5061008a61012c565b005b34801561009857600080fd5b5061008a6100a73660046116d2565b610217565b6100bf6100ba36600461171d565b6102b6565b6040516100cc9190611983565b60405180910390f35b3480156100e157600080fd5b506100ea610800565b6040516100cc919061198c565b34801561010357600080fd5b506100ea61081c565b34801561011857600080fd5b5061008a6101273660046116af565b610840565b61013461098d565b73ffffffffffffffffffffffffffffffffffffffff16610152610800565b73ffffffffffffffffffffffffffffffffffffffff16146101a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61021f61098d565b73ffffffffffffffffffffffffffffffffffffffff1661023d610800565b73ffffffffffffffffffffffffffffffffffffffff161461028a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b61029382610991565b156102a7576102a233826109c3565b6102b2565b6102b2823383610a7c565b5050565b6000808460a00135116102f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d3d565b8161032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611da9565b60c08401356080850135600061034560208801886116af565b905060006103596040890160208a016116af565b905060028416156103b75761036d82610991565b61037857600061037a565b825b34116103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611ccf565b610405565b6103c082610991565b6103cb5760006103cd565b825b3414610405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611ccf565b60048416156104805761041782610991565b1561044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611bcd565b610465828461046060e08c018c611ed1565b610ba5565b610480823361047a60608c0160408d016116af565b86610db3565b60008061049360808b0160608c016116af565b73ffffffffffffffffffffffffffffffffffffffff16146104c3576104be60808a0160608b016116af565b6104c5565b335b90506000600186166104d85760006104e2565b6104e28433610ed7565b905060006104f08484610ed7565b90506000808d73ffffffffffffffffffffffffffffffffffffffff1634635697e45360e01b8e8e3360405160240161052a93929190611aa2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516105b39190611817565b60006040518083038185875af1925050503d80600081146105f0576040519150601f19603f3d011682016040523d82523d6000602084013e6105f5565b606091505b5091509150816106715761063e816040518060400160405280601281526020017f63616c6c4279746573206661696c65643a200000000000000000000000000000815250610fb0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f9190611b0e565b50869050610689826106838787610ed7565b90611382565b98506001881615610702576106ab6106a18733610ed7565b610683858a6113bf565b90506106bb60a08d0135826113fc565b6106c58a896113fc565b10156106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d06565b610740565b8b60a00135891015610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d06565b7fd6d4f5681c246c9f42c203e287975af1601f8df8035a9251f79aab5c8f09e2f833878787858e604051610779969594939291906119d4565b60405180910390a17fddac40937f35385a34f721af292e5a83fc5b840f722bff57c2fc71adba708c488d8a6107ad88610991565b6107b757876107d9565b7f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c835b6040516107e893929190611a72565b60405180910390a15050505050505050949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8381565b61084861098d565b73ffffffffffffffffffffffffffffffffffffffff16610866610800565b73ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611d74565b73ffffffffffffffffffffffffffffffffffffffff8116610900576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c04565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516109fa9190611817565b60006040518083038185875af1925050503d8060008114610a37576040519150601f19603f3d011682016040523d82523d6000602084013e610a3c565b606091505b5050905080610a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611e17565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610aae929190611a4c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610afc9190611817565b6000604051808303816000865af19150503d8060008114610b39576040519150601f19603f3d011682016040523d82523d6000602084013e610b3e565b606091505b5091509150818015610b68575080511580610b68575080806020019051810190610b6891906116fd565b610b9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611b96565b5050505050565b60e0811415610dad576000808573ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b8585604051602001610be4939291906117db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c1c91611817565b6000604051808303816000865af19150503d8060008114610c59576040519150601f19603f3d011682016040523d82523d6000602084013e610c5e565b606091505b509150915081610daa576000610ca9826040518060400160405280601481526020017f5065726d69742063616c6c206661696c65643a20000000000000000000000000815250610fb0565b9050858773ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610ce79291906119ad565b60206040518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3791906117c3565b1015610d7157806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f9190611b0e565b7f08c379a0afcc32b1a39302f7cb8073359698411ab5fd6e3edb2c02c0b5fba8aa81604051610da09190611b0e565b60405180910390a1505b50505b50505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610de793929190611a1b565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e359190611817565b6000604051808303816000865af19150503d8060008114610e72576040519150601f19603f3d011682016040523d82523d6000602084013e610e77565b606091505b5091509150818015610ea1575080511580610ea1575080806020019051810190610ea191906116fd565b610daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611e74565b6000610ee283610991565b15610f05575073ffffffffffffffffffffffffffffffffffffffff811631610faa565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a0823190610f5790859060040161198c565b60206040518083038186803b158015610f6f57600080fd5b505afa158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa791906117c3565b90505b92915050565b60606044835110158015611017575082600081518110610fcc57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f0800000000000000000000000000000000000000000000000000000000000000145b801561107657508260018151811061102b57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167fc300000000000000000000000000000000000000000000000000000000000000145b80156110d557508260028151811061108a57fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7900000000000000000000000000000000000000000000000000000000000000145b80156111345750826003815181106110e957fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167fa000000000000000000000000000000000000000000000000000000000000000145b156111aa576060604484019050805160440184511015611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611de0565b8281604051602001611193929190611937565b604051602081830303815290604052915050610faa565b8251602414801561120e5750826000815181106111c357fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f4e00000000000000000000000000000000000000000000000000000000000000145b801561126d57508260018151811061122257fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f4800000000000000000000000000000000000000000000000000000000000000145b80156112cc57508260028151811061128157fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7b00000000000000000000000000000000000000000000000000000000000000145b801561132b5750826003815181106112e057fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f7100000000000000000000000000000000000000000000000000000000000000145b156113505760248301518261133f8261144d565b604051602001611193929190611833565b8161135a84611473565b60405160200161136b9291906118b5565b604051602081830303815290604052905092915050565b80820382811115610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611b5f565b80820182811015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c98565b60008115806114175750508082028282828161141457fe5b04145b610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019f90611c61565b6060610faa826040516020016114639190611983565b6040516020818303038152906040525b80516060907f30313233343536373839616263646566000000000000000000000000000000009060009060029081020167ffffffffffffffff811180156114b957600080fd5b506040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061151557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061157257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b84518110156116a7578260048683815181106115bc57fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c60f81c601081106115f257fe5b1a60f81b82826002026002018151811061160857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508285828151811061164457fe5b60209101015160f81c600f166010811061165a57fe5b1a60f81b82826002026003018151811061167057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016115a4565b509392505050565b6000602082840312156116c0578081fd5b81356116cb81611f67565b9392505050565b600080604083850312156116e4578081fd5b82356116ef81611f67565b946020939093013593505050565b60006020828403121561170e578081fd5b815180151581146116cb578182fd5b60008060008060608587031215611732578182fd5b843561173d81611f67565b9350602085013567ffffffffffffffff80821115611759578384fd5b90860190610100828903121561176d578384fd5b90935060408601359080821115611782578384fd5b818701915087601f830112611795578384fd5b8135818111156117a3578485fd5b8860208285010111156117b4578485fd5b95989497505060200194505050565b6000602082840312156117d4578081fd5b5051919050565b60007fffffffff000000000000000000000000000000000000000000000000000000008516825282846004840137910160040190815292915050565b60008251611829818460208701611f3b565b9190910192915050565b60008351611845818460208801611f3b565b7f50616e6963280000000000000000000000000000000000000000000000000000908301908152835161187f816006840160208801611f3b565b7f290000000000000000000000000000000000000000000000000000000000000060069290910191820152600701949350505050565b600083516118c7818460208801611f3b565b7f556e6b6e6f776e280000000000000000000000000000000000000000000000009083019081528351611901816008840160208801611f3b565b7f290000000000000000000000000000000000000000000000000000000000000060089290910191820152600901949350505050565b60008351611949818460208801611f3b565b7f4572726f72280000000000000000000000000000000000000000000000000000908301908152835161187f816006840160208801611f3b565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff96871681529486166020860152928516604085015293166060830152608082019290925260a081019190915260c00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff93841681526020810192909252909116604082015260600190565b60006040825283604083015283856060840137806060858401015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116830101905073ffffffffffffffffffffffffffffffffffffffff83166020830152949350505050565b6000602082528251806020840152611b2d816040850160208701611f3b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b60208082526012908201527f436c61696d20746f6b656e206973204554480000000000000000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526011908201527f496e76616c6964206d73672e76616c7565000000000000000000000000000000604082015260600190565b6020808252601b908201527f52657475726e20616d6f756e74206973206e6f7420656e6f7567680000000000604082015260600190565b6020808252601a908201527f4d696e2072657475726e2073686f756c64206e6f742062652030000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f646174612073686f756c64206265206e6f74207a65726f000000000000000000604082015260600190565b60208082526015908201527f496e76616c69642072657665727420726561736f6e0000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f05578283fd5b83018035915067ffffffffffffffff821115611f1f578283fd5b602001915036819003821315611f3457600080fd5b9250929050565b60005b83811015611f56578181015183820152602001611f3e565b83811115610dad5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611f8957600080fd5b5056fea264697066735822122068ef9be5c857f15e870fcb5c0518ef8740a1e8f5c49ddb10f6256f4b20d39b7f64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83
-----Decoded View---------------
Arg [0] : _WETH (address): 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.