Sponsored
Latest 25 from a total of 811 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 82098365 | 97 days ago | IN | 0 FTM | 0.00061115 | ||||
Approve | 78835853 | 155 days ago | IN | 0 FTM | 0.00911134 | ||||
Approve | 78835810 | 155 days ago | IN | 0 FTM | 0.00911421 | ||||
Transfer | 77324650 | 177 days ago | IN | 0 FTM | 0.00124191 | ||||
Approve | 75413282 | 210 days ago | IN | 0 FTM | 0.00038479 | ||||
Approve | 74591008 | 229 days ago | IN | 0 FTM | 0.00455229 | ||||
Approve | 73448224 | 253 days ago | IN | 0 FTM | 0.00591824 | ||||
Approve | 73035441 | 259 days ago | IN | 0 FTM | 0.00092818 | ||||
Approve | 70792000 | 294 days ago | IN | 0 FTM | 0.00063458 | ||||
Transfer | 70595096 | 299 days ago | IN | 0 FTM | 0.00185028 | ||||
Approve | 69782548 | 318 days ago | IN | 0 FTM | 0.00181009 | ||||
Approve | 69720461 | 319 days ago | IN | 0 FTM | 0.00239831 | ||||
Approve | 68670473 | 347 days ago | IN | 0 FTM | 0.00123617 | ||||
Approve | 67946130 | 366 days ago | IN | 0 FTM | 0.00787253 | ||||
Swapout | 63072027 | 471 days ago | IN | 0 FTM | 0.00334784 | ||||
Swapout | 63069701 | 471 days ago | IN | 0 FTM | 0.00296419 | ||||
Transfer | 63069592 | 471 days ago | IN | 0 FTM | 0.0043529 | ||||
Approve | 59889893 | 512 days ago | IN | 0 FTM | 0.00577471 | ||||
Approve | 58981013 | 523 days ago | IN | 0 FTM | 0.00169454 | ||||
Swapin | 58980962 | 523 days ago | IN | 0 FTM | 0.00220357 | ||||
Approve | 55931721 | 569 days ago | IN | 0 FTM | 0.00708627 | ||||
Swapin | 55931683 | 569 days ago | IN | 0 FTM | 0.00655079 | ||||
Approve | 55547973 | 575 days ago | IN | 0 FTM | 0.00058446 | ||||
Swapout | 51192600 | 657 days ago | IN | 0 FTM | 0.01896127 | ||||
Swapout | 50279584 | 678 days ago | IN | 0 FTM | 0.00076422 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20915959 | 1040 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
AnyswapV5ERC20
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-11-05 */ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.2; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Interface of the ERC2612 standard as defined in the EIP. * * Adds the {permit} method, which can be used to change one's * {IERC20-allowance} without having to send a transaction, by signing a * message. This allows users to spend tokens without having to hold Ether. * * See https://eips.ethereum.org/EIPS/eip-2612. */ interface IERC2612 { /** * @dev Returns the current ERC2612 nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); } /// @dev Wrapped ERC-20 v10 (AnyswapV3ERC20) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an AnyswapV3ERC20 balance which can then be operated as an ERC-20 token. You can /// `withdraw` ERC-20 from AnyswapV3ERC20, which will then burn AnyswapV3ERC20 token in your wallet. The amount of AnyswapV3ERC20 token in any wallet is always identical to the /// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet. interface IAnyswapV3ERC20 is IERC20, IERC2612 { /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token, /// after which a call is executed to an ERC677-compliant contract with the `data` parameter. /// Emits {Approval} event. /// Returns boolean value indicating whether operation succeeded. /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677. function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool); /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`), /// after which a call is executed to an ERC677-compliant contract with the `data` parameter. /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent AnyswapV3ERC20 token in favor of caller. /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - caller account must have at least `value` AnyswapV3ERC20 token. /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677. function transferAndCall(address to, uint value, bytes calldata data) external returns (bool); } interface ITransferReceiver { function onTokenTransfer(address, uint, bytes calldata) external returns (bool); } interface IApprovalReceiver { function onTokenApproval(address, uint, bytes calldata) external returns (bool); } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract AnyswapV5ERC20 is IAnyswapV3ERC20 { using SafeERC20 for IERC20; string public name; string public symbol; uint8 public immutable override decimals; address public immutable underlying; bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public immutable DOMAIN_SEPARATOR; /// @dev Records amount of AnyswapV3ERC20 token owned by account. mapping (address => uint256) public override balanceOf; uint256 private _totalSupply; // init flag for setting immediate vault, needed for CREATE2 support bool private _init; // flag to enable/disable swapout vs vault.burn so multiple events are triggered bool private _vaultOnly; // configurable delay for timelock functions uint public delay = 2*24*3600; // set of minters, can be this bridge or other bridges mapping(address => bool) public isMinter; address[] public minters; // primary controller of the token contract address public vault; address public pendingMinter; uint public delayMinter; address public pendingVault; uint public delayVault; uint public pendingDelay; uint public delayDelay; modifier onlyAuth() { require(isMinter[msg.sender], "AnyswapV4ERC20: FORBIDDEN"); _; } modifier onlyVault() { require(msg.sender == mpc(), "AnyswapV3ERC20: FORBIDDEN"); _; } function owner() public view returns (address) { return mpc(); } function mpc() public view returns (address) { if (block.timestamp >= delayVault) { return pendingVault; } return vault; } function setVaultOnly(bool enabled) external onlyVault { _vaultOnly = enabled; } function initVault(address _vault) external onlyVault { require(_init); vault = _vault; pendingVault = _vault; isMinter[_vault] = true; minters.push(_vault); delayVault = block.timestamp; _init = false; } function setMinter(address _auth) external onlyVault { pendingMinter = _auth; delayMinter = block.timestamp + delay; } function setVault(address _vault) external onlyVault { pendingVault = _vault; delayVault = block.timestamp + delay; } function applyVault() external onlyVault { require(block.timestamp >= delayVault); vault = pendingVault; } function applyMinter() external onlyVault { require(block.timestamp >= delayMinter); isMinter[pendingMinter] = true; minters.push(pendingMinter); } // No time delay revoke minter emergency function function revokeMinter(address _auth) external onlyVault { isMinter[_auth] = false; } function getAllMinters() external view returns (address[] memory) { return minters; } function changeVault(address newVault) external onlyVault returns (bool) { require(newVault != address(0), "AnyswapV3ERC20: address(0x0)"); pendingVault = newVault; delayVault = block.timestamp + delay; emit LogChangeVault(vault, pendingVault, delayVault); return true; } function changeMPCOwner(address newVault) public onlyVault returns (bool) { require(newVault != address(0), "AnyswapV3ERC20: address(0x0)"); pendingVault = newVault; delayVault = block.timestamp + delay; emit LogChangeMPCOwner(vault, pendingVault, delayVault); return true; } function mint(address to, uint256 amount) external onlyAuth returns (bool) { _mint(to, amount); return true; } function burn(address from, uint256 amount) external onlyAuth returns (bool) { require(from != address(0), "AnyswapV3ERC20: address(0x0)"); _burn(from, amount); return true; } function Swapin(bytes32 txhash, address account, uint256 amount) public onlyAuth returns (bool) { _mint(account, amount); emit LogSwapin(txhash, account, amount); return true; } function Swapout(uint256 amount, address bindaddr) public returns (bool) { require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth"); require(bindaddr != address(0), "AnyswapV3ERC20: address(0x0)"); _burn(msg.sender, amount); emit LogSwapout(msg.sender, bindaddr, amount); return true; } /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}. /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times. mapping (address => uint256) public override nonces; /// @dev Records number of AnyswapV3ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}. mapping (address => mapping (address => uint256)) public override allowance; event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime); event LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight); event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount); event LogSwapout(address indexed account, address indexed bindaddr, uint amount); event LogAddAuth(address indexed auth, uint timestamp); constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) { name = _name; symbol = _symbol; decimals = _decimals; underlying = _underlying; if (_underlying != address(0x0)) { require(_decimals == IERC20(_underlying).decimals()); } // Use init to allow for CREATE2 accross all chains _init = true; // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens _vaultOnly = false; vault = _vault; pendingVault = _vault; delayVault = block.timestamp; uint256 chainId; assembly {chainId := chainid()} DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256(bytes("1")), chainId, address(this))); } /// @dev Returns the total supply of AnyswapV3ERC20 token as the ETH held in this contract. function totalSupply() external view override returns (uint256) { return _totalSupply; } function depositWithPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) { IERC20(underlying).permit(target, address(this), value, deadline, v, r, s); IERC20(underlying).safeTransferFrom(target, address(this), value); return _deposit(value, to); } function depositWithTransferPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) { IERC20(underlying).transferWithPermit(target, address(this), value, deadline, v, r, s); return _deposit(value, to); } function deposit() external returns (uint) { uint _amount = IERC20(underlying).balanceOf(msg.sender); IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount); return _deposit(_amount, msg.sender); } function deposit(uint amount) external returns (uint) { IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount); return _deposit(amount, msg.sender); } function deposit(uint amount, address to) external returns (uint) { IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount); return _deposit(amount, to); } function depositVault(uint amount, address to) external onlyVault returns (uint) { return _deposit(amount, to); } function _deposit(uint amount, address to) internal returns (uint) { require(underlying != address(0x0) && underlying != address(this)); _mint(to, amount); return amount; } function withdraw() external returns (uint) { return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender); } function withdraw(uint amount) external returns (uint) { return _withdraw(msg.sender, amount, msg.sender); } function withdraw(uint amount, address to) external returns (uint) { return _withdraw(msg.sender, amount, to); } function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) { return _withdraw(from, amount, to); } function _withdraw(address from, uint amount, address to) internal returns (uint) { _burn(from, amount); IERC20(underlying).safeTransfer(to, amount); return amount; } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; balanceOf[account] += amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); balanceOf[account] -= amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token. /// Emits {Approval} event. /// Returns boolean value indicating whether operation succeeded. function approve(address spender, uint256 value) external override returns (bool) { // _approve(msg.sender, spender, value); allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token, /// after which a call is executed to an ERC677-compliant contract with the `data` parameter. /// Emits {Approval} event. /// Returns boolean value indicating whether operation succeeded. /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677. function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) { // _approve(msg.sender, spender, value); allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data); } /// @dev Sets `value` as allowance of `spender` account over `owner` account's AnyswapV3ERC20 token, given `owner` account's signed approval. /// Emits {Approval} event. /// Requirements: /// - `deadline` must be timestamp in future. /// - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments. /// - the signature must use `owner` account's current nonce (see {nonces}). /// - the signer cannot be zero address and must be `owner` account. /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. /// AnyswapV3ERC20 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol. function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override { require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit"); bytes32 hashStruct = keccak256( abi.encode( PERMIT_TYPEHASH, target, spender, value, nonces[target]++, deadline)); require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s)); // _approve(owner, spender, value); allowance[target][spender] = value; emit Approval(target, spender, value); } function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override returns (bool) { require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit"); bytes32 hashStruct = keccak256( abi.encode( TRANSFER_TYPEHASH, target, to, value, nonces[target]++, deadline)); require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s)); require(to != address(0) || to != address(this)); uint256 balance = balanceOf[target]; require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance"); balanceOf[target] = balance - value; balanceOf[to] += value; emit Transfer(target, to, value); return true; } function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) { bytes32 hash = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, hashStruct)); address signer = ecrecover(hash, v, r, s); return (signer != address(0) && signer == target); } function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) { bytes32 hash = prefixed(hashStruct); address signer = ecrecover(hash, v, r, s); return (signer != address(0) && signer == target); } // Builds a prefixed hash to mimic the behavior of eth_sign. function prefixed(bytes32 hash) internal view returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", DOMAIN_SEPARATOR, hash)); } /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`). /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller. /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - caller account must have at least `value` AnyswapV3ERC20 token. function transfer(address to, uint256 value) external override returns (bool) { require(to != address(0) || to != address(this)); uint256 balance = balanceOf[msg.sender]; require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance"); balanceOf[msg.sender] = balance - value; balanceOf[to] += value; emit Transfer(msg.sender, to, value); return true; } /// @dev Moves `value` AnyswapV3ERC20 token from account (`from`) to account (`to`) using allowance mechanism. /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`. /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller. /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`), /// unless allowance is set to `type(uint256).max` /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - `from` account must have at least `value` balance of AnyswapV3ERC20 token. /// - `from` account must have approved caller to spend at least `value` of AnyswapV3ERC20 token, unless `from` and caller are the same account. function transferFrom(address from, address to, uint256 value) external override returns (bool) { require(to != address(0) || to != address(this)); if (from != msg.sender) { // _decreaseAllowance(from, msg.sender, value); uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "AnyswapV3ERC20: request exceeds allowance"); uint256 reduced = allowed - value; allowance[from][msg.sender] = reduced; emit Approval(from, msg.sender, reduced); } } uint256 balance = balanceOf[from]; require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance"); balanceOf[from] = balance - value; balanceOf[to] += value; emit Transfer(from, to, value); return true; } /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`), /// after which a call is executed to an ERC677-compliant contract with the `data` parameter. /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller. /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - caller account must have at least `value` AnyswapV3ERC20 token. /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677. function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) { require(to != address(0) || to != address(this)); uint256 balance = balanceOf[msg.sender]; require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance"); balanceOf[msg.sender] = balance - value; balanceOf[to] += value; emit Transfer(msg.sender, to, value); return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"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":"auth","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LogAddAuth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","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"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","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"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","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":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040526202a3006005553480156200001857600080fd5b5060405162002fac38038062002fac8339810160408190526200003b91620003c5565b8451620000509060009060208801906200023d565b508351620000669060019060208701906200023d565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013a57816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ed57600080fd5b505afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000464565b60ff168360ff16146200013a57600080fd5b6004805461ff001960ff19909116600117169055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620001b29060009062000488565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c052506200057e945050505050565b8280546200024b906200052b565b90600052602060002090601f0160209004810192826200026f5760008555620002ba565b82601f106200028a57805160ff1916838001178555620002ba565b82800160010185558215620002ba579182015b82811115620002ba5782518255916020019190600101906200029d565b50620002c8929150620002cc565b5090565b5b80821115620002c85760008155600101620002cd565b80516001600160a01b0381168114620002fb57600080fd5b919050565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e62000568565b604051601f8301601f19908116603f0116810190828211818310171562000359576200035962000568565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b805160ff81168114620002fb57600080fd5b600080600080600060a08688031215620003dd578081fd5b85516001600160401b0380821115620003f4578283fd5b6200040289838a0162000300565b9650602088015191508082111562000418578283fd5b50620004278882890162000300565b9450506200043860408701620003b3565b92506200044860608701620002e3565b91506200045860808701620002e3565b90509295509295909350565b60006020828403121562000476578081fd5b6200048182620003b3565b9392505050565b8154600090819060028104600180831680620004a557607f831692505b6020808410821415620004c657634e487b7160e01b87526022600452602487fd5b818015620004dd5760018114620004ef576200051d565b60ff198616895284890196506200051d565b60008a815260209020885b86811015620005155781548b820152908501908301620004fa565b505084890196505b509498975050505050505050565b6002810460018216806200054057607f821691505b602082108114156200056257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c0516129a4620006086000396000818161048c01528181611dda0152611eec015260008181610590015281816113520152818161139e0152818161141e015281816116450152818161185a015281816118e301528181611bb001528181611ccd015281816120bc01526120ef0152600061045301526129a46000f3fe608060405234801561001057600080fd5b506004361061033f5760003560e01c80637ecebe00116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b806395d89b4111610171578063a29dff721161014b578063a29dff721461066c578063a9059cbb14610675578063aa271e1a14610688578063b6b55f25146106ab5761033f565b806395d89b411461063c5780639dc29fac14610644578063a045442c146106575761033f565b80637ecebe00146105d257806381a37c18146105f25780638623ec7b1461060557806387689e28146106185780638da5cb5b1461062157806391c5df49146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636a42b8f81161020a5780636a42b8f81461056f5780636e553f65146105785780636f307dc31461058b57806370a08231146105b25761033f565b806360e232a914610536578063628d6cba146105495780636817031b1461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b610357610352366004612469565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f36600461261b565b61080b565b6103ac61081f565b604051610361919061272f565b6103cc6103c7366004612440565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc36600461239c565b6109ca565b61035761040f3660046125eb565b610bb5565b6103e4610422366004612350565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610361565b6103577f000000000000000000000000000000000000000000000000000000000000000081565b610357610ca1565b6103cc6104c43660046124a4565b610cc2565b6103cc6104d7366004612440565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e366004612350565b610e5d565b6103cc6105313660046123d7565b610f31565b6103cc610544366004612350565b611141565b6103cc61055736600461261b565b611215565b6103e461056a366004612350565b6112dd565b61035760055481565b61035761058636600461261b565b611343565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105c0366004612350565b60026020526000908152604090205481565b6103576105e0366004612350565b600f6020526000908152604090205481565b610357610600366004612526565b611384565b6104f86106133660046125eb565b61145e565b610357600c5481565b6104f8611488565b6009546104f8906001600160a01b031681565b6103ac611492565b6103cc610652366004612440565b61149f565b61065f6114fe565b60405161036191906126e2565b610357600e5481565b6103cc610683366004612440565b611560565b6103cc610696366004612350565b60066020526000908152604090205460ff1681565b6103576106b93660046125eb565b611636565b6103576106cc36600461261b565b611677565b610357600a5481565b6103e46106e836600461258f565b6116b1565b6103cc6106fb3660046124a4565b611703565b6103e461070e366004612350565b6117df565b610357611838565b6103e46107293660046123d7565b61191b565b6103e4611a89565b61035761074436600461236a565b601060209081526000928352604080842090915290825290205481565b6103cc61076f3660046125c7565b611af4565b6104f8611b69565b61035761078a366004612526565b611b96565b6008546104f8906001600160a01b031681565b6103e46107b0366004612350565b611c4e565b60006107bf611b69565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef90612762565b60405180910390fd5b610803848484611cb4565b949350505050565b6000610818338484611cb4565b9392505050565b6000805461082c906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610858906128b1565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061294f833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b69565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef90612762565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa0848361286e565b6001600160a01b0387166000818152601060209081526040808320338085529083529281902085905551848152939450909260008051602061294f833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef906127d0565b610b32838261286e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b68908490612856565b92505081905550836001600160a01b0316856001600160a01b031660008051602061292f83398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611cb4565b90505b919050565b610bd2611b69565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef90612762565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611cb4565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef906127d0565b610d27858261286e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a908490612856565b90915550506040518581526001600160a01b03871690339060008051602061292f8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf90339089908990899060040161269a565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1191906125ab565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef9061281f565b610e548383611cfc565b50600192915050565b6000610e67611b69565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612799565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee59042612856565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd0836128ec565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dca565b8061104457506110448982878787611eba565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef906127d0565b6110b9888261286e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef908490612856565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061292f8339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b69565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612799565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c99042612856565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b600454600090610100900460ff16156112705760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6001600160a01b0382166112965760405162461bcd60e51b81526004016107ef90612799565b6112a03384611f75565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016108f6565b6112e5611b69565b6001600160a01b0316336001600160a01b0316146113155760405162461bcd60e51b81526004016107ef90612762565b600b80546001600160a01b0319166001600160a01b03831617905560055461133d9042612856565b600c5550565b600061137a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612047565b61081883836120b8565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906113df908b9030908c908c908c908c908c90600401612659565b600060405180830381600087803b1580156113f957600080fd5b505af115801561140d573d6000803e3d6000fd5b506114489250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a612047565b61145287836120b8565b98975050505050505050565b6007818154811061146e57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b69565b6001805461082c906128b1565b3360009081526006602052604081205460ff166114ce5760405162461bcd60e51b81526004016107ef9061281f565b6001600160a01b0383166114f45760405162461bcd60e51b81526004016107ef90612799565b610e548383611f75565b6060600780548060200260200160405190810160405280929190818152602001828054801561155657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611538575b5050505050905090565b60006001600160a01b03831615158061158257506001600160a01b0383163014155b61158b57600080fd5b33600090815260026020526040902054828110156115bb5760405162461bcd60e51b81526004016107ef906127d0565b6115c5838261286e565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906115f8908490612856565b90915550506040518381526001600160a01b03851690339060008051602061292f833981519152906020015b60405180910390a35060019392505050565b600061166d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612047565b610bc282336120b8565b6000611681611b69565b6001600160a01b0316336001600160a01b03161461137a5760405162461bcd60e51b81526004016107ef90612762565b6116b9611b69565b6001600160a01b0316336001600160a01b0316146116e95760405162461bcd60e51b81526004016107ef90612762565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b0389168085529252808320879055519192909160008051602061294f8339815191529061174c9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f9061178490339088908890889060040161269a565b602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d691906125ab565b95945050505050565b6117e7611b69565b6001600160a01b0316336001600160a01b0316146118175760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190612603565b905061190b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612047565b61191581336120b8565b91505090565b8342111561196b5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119b8836128ec565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a198882868686611dca565b80611a2c5750611a2c8882868686611eba565b611a3557600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a9055905189815260008051602061294f833981519152910160405180910390a35050505050505050565b611a91611b69565b6001600160a01b0316336001600160a01b031614611ac15760405162461bcd60e51b81526004016107ef90612762565b600c54421015611ad057600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b235760405162461bcd60e51b81526004016107ef9061281f565b611b2d8383611cfc565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161162491815260200190565b6000600c544210611b865750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611bf1908b9030908c908c908c908c908c90600401612659565b602060405180830381600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4391906125ab565b5061145287836120b8565b611c56611b69565b6001600160a01b0316336001600160a01b031614611c865760405162461bcd60e51b81526004016107ef90612762565b600980546001600160a01b0319166001600160a01b038316179055600554611cae9042612856565b600a5550565b6000611cc08484611f75565b611cf46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385612135565b509092915050565b6001600160a01b038216611d525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d649190612856565b90915550506001600160a01b03821660009081526002602052604081208054839290611d91908490612856565b90915550506040518181526001600160a01b0383169060009060008051602061292f833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906114525750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f3a866040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c8101829052600090607c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e57565b6001600160a01b038216611fd55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b03821660009081526002602052604081208054839290611ffd90849061286e565b925050819055508060036000828254612016919061286e565b90915550506040518181526000906001600160a01b0384169060008051602061292f83398151915290602001611dbe565b6040516001600160a01b03808516602483015283166044820152606481018290526120b29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261216a565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061211b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61212457600080fd5b61212e8284611cfc565b5090919050565b6040516001600160a01b03831660248201526044810182905261216590849063a9059cbb60e01b9060640161207b565b505050565b61217c826001600160a01b03166122f1565b6121c85760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516121e3919061263d565b6000604051808303816000865af19150503d8060008114612220576040519150601f19603f3d011682016040523d82523d6000602084013e612225565b606091505b5091509150816122775760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b8051156120b2578080602001905181019061229291906125ab565b6120b25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b600060208284031215612361578081fd5b61081882612328565b6000806040838503121561237c578081fd5b61238583612328565b915061239360208401612328565b90509250929050565b6000806000606084860312156123b0578081fd5b6123b984612328565b92506123c760208501612328565b9150604084013590509250925092565b600080600080600080600060e0888a0312156123f1578283fd5b6123fa88612328565b965061240860208901612328565b955060408801359450606088013593506124246080890161233f565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612452578182fd5b61245b83612328565b946020939093013593505050565b60008060006060848603121561247d578283fd5b61248684612328565b92506020840135915061249b60408501612328565b90509250925092565b600080600080606085870312156124b9578384fd5b6124c285612328565b935060208501359250604085013567ffffffffffffffff808211156124e5578384fd5b818701915087601f8301126124f8578384fd5b813581811115612506578485fd5b886020828501011115612517578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215612540578283fd5b61254988612328565b965060208801359550604088013594506125656060890161233f565b93506080880135925060a0880135915061258160c08901612328565b905092959891949750929550565b6000602082840312156125a0578081fd5b81356108188161291d565b6000602082840312156125bc578081fd5b81516108188161291d565b6000806000606084860312156125db578283fd5b833592506123c760208501612328565b6000602082840312156125fc578081fd5b5035919050565b600060208284031215612614578081fd5b5051919050565b6000806040838503121561262d578182fd5b8235915061239360208401612328565b6000825161264f818460208701612885565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156127235783516001600160a01b0316835292840192918401916001016126fe565b50909695505050505050565b600060208252825180602084015261274e816040850160208701612885565b601f01601f19169190910160400192915050565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b6000821982111561286957612869612907565b500190565b60008282101561288057612880612907565b500390565b60005b838110156128a0578181015183820152602001612888565b838111156120b25750506000910152565b6002810460018216806128c557607f821691505b602082108114156128e657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561290057612900612907565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461292b57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122009f133a1a7b82a84f7eb4d540d9b7632a2fb97e06b30fd18edb4988cdb70ae8164736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000e4665656465722e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044645454400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061033f5760003560e01c80637ecebe00116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b806395d89b4111610171578063a29dff721161014b578063a29dff721461066c578063a9059cbb14610675578063aa271e1a14610688578063b6b55f25146106ab5761033f565b806395d89b411461063c5780639dc29fac14610644578063a045442c146106575761033f565b80637ecebe00146105d257806381a37c18146105f25780638623ec7b1461060557806387689e28146106185780638da5cb5b1461062157806391c5df49146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636a42b8f81161020a5780636a42b8f81461056f5780636e553f65146105785780636f307dc31461058b57806370a08231146105b25761033f565b806360e232a914610536578063628d6cba146105495780636817031b1461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b610357610352366004612469565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f36600461261b565b61080b565b6103ac61081f565b604051610361919061272f565b6103cc6103c7366004612440565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc36600461239c565b6109ca565b61035761040f3660046125eb565b610bb5565b6103e4610422366004612350565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610361565b6103577f0580519dbf84f7b7f90b446d50aad1bc493e6b53d176ab5dbda767754f33d47f81565b610357610ca1565b6103cc6104c43660046124a4565b610cc2565b6103cc6104d7366004612440565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e366004612350565b610e5d565b6103cc6105313660046123d7565b610f31565b6103cc610544366004612350565b611141565b6103cc61055736600461261b565b611215565b6103e461056a366004612350565b6112dd565b61035760055481565b61035761058636600461261b565b611343565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105c0366004612350565b60026020526000908152604090205481565b6103576105e0366004612350565b600f6020526000908152604090205481565b610357610600366004612526565b611384565b6104f86106133660046125eb565b61145e565b610357600c5481565b6104f8611488565b6009546104f8906001600160a01b031681565b6103ac611492565b6103cc610652366004612440565b61149f565b61065f6114fe565b60405161036191906126e2565b610357600e5481565b6103cc610683366004612440565b611560565b6103cc610696366004612350565b60066020526000908152604090205460ff1681565b6103576106b93660046125eb565b611636565b6103576106cc36600461261b565b611677565b610357600a5481565b6103e46106e836600461258f565b6116b1565b6103cc6106fb3660046124a4565b611703565b6103e461070e366004612350565b6117df565b610357611838565b6103e46107293660046123d7565b61191b565b6103e4611a89565b61035761074436600461236a565b601060209081526000928352604080842090915290825290205481565b6103cc61076f3660046125c7565b611af4565b6104f8611b69565b61035761078a366004612526565b611b96565b6008546104f8906001600160a01b031681565b6103e46107b0366004612350565b611c4e565b60006107bf611b69565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef90612762565b60405180910390fd5b610803848484611cb4565b949350505050565b6000610818338484611cb4565b9392505050565b6000805461082c906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610858906128b1565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061294f833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b69565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef90612762565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa0848361286e565b6001600160a01b0387166000818152601060209081526040808320338085529083529281902085905551848152939450909260008051602061294f833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef906127d0565b610b32838261286e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b68908490612856565b92505081905550836001600160a01b0316856001600160a01b031660008051602061292f83398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611cb4565b90505b919050565b610bd2611b69565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef90612762565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611cb4565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef906127d0565b610d27858261286e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a908490612856565b90915550506040518581526001600160a01b03871690339060008051602061292f8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf90339089908990899060040161269a565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1191906125ab565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef9061281f565b610e548383611cfc565b50600192915050565b6000610e67611b69565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612799565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee59042612856565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd0836128ec565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dca565b8061104457506110448982878787611eba565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef906127d0565b6110b9888261286e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef908490612856565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061292f8339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b69565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612799565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c99042612856565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b600454600090610100900460ff16156112705760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6001600160a01b0382166112965760405162461bcd60e51b81526004016107ef90612799565b6112a03384611f75565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016108f6565b6112e5611b69565b6001600160a01b0316336001600160a01b0316146113155760405162461bcd60e51b81526004016107ef90612762565b600b80546001600160a01b0319166001600160a01b03831617905560055461133d9042612856565b600c5550565b600061137a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612047565b61081883836120b8565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906113df908b9030908c908c908c908c908c90600401612659565b600060405180830381600087803b1580156113f957600080fd5b505af115801561140d573d6000803e3d6000fd5b506114489250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a612047565b61145287836120b8565b98975050505050505050565b6007818154811061146e57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b69565b6001805461082c906128b1565b3360009081526006602052604081205460ff166114ce5760405162461bcd60e51b81526004016107ef9061281f565b6001600160a01b0383166114f45760405162461bcd60e51b81526004016107ef90612799565b610e548383611f75565b6060600780548060200260200160405190810160405280929190818152602001828054801561155657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611538575b5050505050905090565b60006001600160a01b03831615158061158257506001600160a01b0383163014155b61158b57600080fd5b33600090815260026020526040902054828110156115bb5760405162461bcd60e51b81526004016107ef906127d0565b6115c5838261286e565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906115f8908490612856565b90915550506040518381526001600160a01b03851690339060008051602061292f833981519152906020015b60405180910390a35060019392505050565b600061166d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612047565b610bc282336120b8565b6000611681611b69565b6001600160a01b0316336001600160a01b03161461137a5760405162461bcd60e51b81526004016107ef90612762565b6116b9611b69565b6001600160a01b0316336001600160a01b0316146116e95760405162461bcd60e51b81526004016107ef90612762565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b0389168085529252808320879055519192909160008051602061294f8339815191529061174c9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f9061178490339088908890889060040161269a565b602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d691906125ab565b95945050505050565b6117e7611b69565b6001600160a01b0316336001600160a01b0316146118175760405162461bcd60e51b81526004016107ef90612762565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190612603565b905061190b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612047565b61191581336120b8565b91505090565b8342111561196b5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119b8836128ec565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a198882868686611dca565b80611a2c5750611a2c8882868686611eba565b611a3557600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a9055905189815260008051602061294f833981519152910160405180910390a35050505050505050565b611a91611b69565b6001600160a01b0316336001600160a01b031614611ac15760405162461bcd60e51b81526004016107ef90612762565b600c54421015611ad057600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b235760405162461bcd60e51b81526004016107ef9061281f565b611b2d8383611cfc565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161162491815260200190565b6000600c544210611b865750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611bf1908b9030908c908c908c908c908c90600401612659565b602060405180830381600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4391906125ab565b5061145287836120b8565b611c56611b69565b6001600160a01b0316336001600160a01b031614611c865760405162461bcd60e51b81526004016107ef90612762565b600980546001600160a01b0319166001600160a01b038316179055600554611cae9042612856565b600a5550565b6000611cc08484611f75565b611cf46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385612135565b509092915050565b6001600160a01b038216611d525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d649190612856565b90915550506001600160a01b03821660009081526002602052604081208054839290611d91908490612856565b90915550506040518181526001600160a01b0383169060009060008051602061292f833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0580519dbf84f7b7f90b446d50aad1bc493e6b53d176ab5dbda767754f33d47f602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906114525750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f3a866040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0580519dbf84f7b7f90b446d50aad1bc493e6b53d176ab5dbda767754f33d47f603c820152605c8101829052600090607c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e57565b6001600160a01b038216611fd55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b03821660009081526002602052604081208054839290611ffd90849061286e565b925050819055508060036000828254612016919061286e565b90915550506040518181526000906001600160a01b0384169060008051602061292f83398151915290602001611dbe565b6040516001600160a01b03808516602483015283166044820152606481018290526120b29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261216a565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061211b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61212457600080fd5b61212e8284611cfc565b5090919050565b6040516001600160a01b03831660248201526044810182905261216590849063a9059cbb60e01b9060640161207b565b505050565b61217c826001600160a01b03166122f1565b6121c85760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516121e3919061263d565b6000604051808303816000865af19150503d8060008114612220576040519150601f19603f3d011682016040523d82523d6000602084013e612225565b606091505b5091509150816122775760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b8051156120b2578080602001905181019061229291906125ab565b6120b25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b600060208284031215612361578081fd5b61081882612328565b6000806040838503121561237c578081fd5b61238583612328565b915061239360208401612328565b90509250929050565b6000806000606084860312156123b0578081fd5b6123b984612328565b92506123c760208501612328565b9150604084013590509250925092565b600080600080600080600060e0888a0312156123f1578283fd5b6123fa88612328565b965061240860208901612328565b955060408801359450606088013593506124246080890161233f565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612452578182fd5b61245b83612328565b946020939093013593505050565b60008060006060848603121561247d578283fd5b61248684612328565b92506020840135915061249b60408501612328565b90509250925092565b600080600080606085870312156124b9578384fd5b6124c285612328565b935060208501359250604085013567ffffffffffffffff808211156124e5578384fd5b818701915087601f8301126124f8578384fd5b813581811115612506578485fd5b886020828501011115612517578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215612540578283fd5b61254988612328565b965060208801359550604088013594506125656060890161233f565b93506080880135925060a0880135915061258160c08901612328565b905092959891949750929550565b6000602082840312156125a0578081fd5b81356108188161291d565b6000602082840312156125bc578081fd5b81516108188161291d565b6000806000606084860312156125db578283fd5b833592506123c760208501612328565b6000602082840312156125fc578081fd5b5035919050565b600060208284031215612614578081fd5b5051919050565b6000806040838503121561262d578182fd5b8235915061239360208401612328565b6000825161264f818460208701612885565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156127235783516001600160a01b0316835292840192918401916001016126fe565b50909695505050505050565b600060208252825180602084015261274e816040850160208701612885565b601f01601f19169190910160400192915050565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b6000821982111561286957612869612907565b500190565b60008282101561288057612880612907565b500390565b60005b838110156128a0578181015183820152602001612888565b838111156120b25750506000910152565b6002810460018216806128c557607f821691505b602082108114156128e657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561290057612900612907565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461292b57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122009f133a1a7b82a84f7eb4d540d9b7632a2fb97e06b30fd18edb4988cdb70ae8164736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000e4665656465722e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044645454400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Feeder.finance
Arg [1] : _symbol (string): FEED
Arg [2] : _decimals (uint8): 18
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xfA9dA51631268A30Ec3DDd1CcBf46c65FAD99251
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [6] : 4665656465722e66696e616e6365000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 4645454400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
5729:19168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14853:149;;;;;;:::i;:::-;;:::i;:::-;;;9569:25:1;;;9557:2;9542:18;14853:149:0;;;;;;;;6102:136;;6146:92;6102:136;;14719:126;;;;;;:::i;:::-;;:::i;5812:18::-;;;:::i;:::-;;;;;;;:::i;16576:265::-;;;;;;:::i;:::-;;:::i;:::-;;;9396:14:1;;9389:22;9371:41;;9359:2;9344:18;16576:265:0;9326:92:1;8498:179:0;;;:::i;:::-;;12688:102;;;:::i;22817:927::-;;;;;;:::i;:::-;;:::i;14589:122::-;;;;;;:::i;:::-;;:::i;7784:272::-;;;;;;:::i;:::-;;:::i;5958:137::-;;6000:95;5958:137;;5864:41;;;;;;;;15843:4:1;15831:17;;;15813:36;;15801:2;15786:18;5864:41:0;15768:87:1;6245:41:0;;;;;14455:126;;;:::i;24371:523::-;;;;;;:::i;:::-;;:::i;9617:133::-;;;;;;:::i;:::-;;:::i;7123:24::-;;;;;;7058:27;;;;;-1:-1:-1;;;;;7058:27:0;;;;;;-1:-1:-1;;;;;6620:32:1;;;6602:51;;6590:2;6575:18;7058:27:0;6557:102:1;9284:325:0;;;;;;:::i;:::-;;:::i;19174:938::-;;;;;;:::i;:::-;;:::i;8955:321::-;;;;;;:::i;:::-;;:::i;10190:328::-;;;;;;:::i;:::-;;:::i;8213:140::-;;;;;;:::i;:::-;;:::i;6733:29::-;;;;;;13907:193;;;;;;:::i;:::-;;:::i;5914:35::-;;;;;6366:54;;;;;;:::i;:::-;;;;;;;;;;;;;;10790:51;;;;;;:::i;:::-;;;;;;;;;;;;;;12798:349;;;;;;:::i;:::-;;:::i;6880:24::-;;;;;;:::i;:::-;;:::i;7092:22::-;;;;;;7421:78;;;:::i;6991:28::-;;;;;-1:-1:-1;;;;;6991:28:0;;;5837:20;;;:::i;9758:207::-;;;;;;:::i;:::-;;:::i;8846:99::-;;;:::i;:::-;;;;;;;:::i;7154:22::-;;;;;;21490:438;;;;;;:::i;:::-;;:::i;6833:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13710:189;;;;;;:::i;:::-;;:::i;14108:127::-;;;;;;:::i;:::-;;:::i;7026:23::-;;;;;;7682:94;;;;;;:::i;:::-;;:::i;17262:356::-;;;;;;:::i;:::-;;:::i;8740:98::-;;;;;;:::i;:::-;;:::i;13456:246::-;;;:::i;18451:715::-;;;;;;:::i;:::-;;:::i;8361:129::-;;;:::i;11011:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9973:209;;;;;;:::i;:::-;;:::i;7507:167::-;;;:::i;13155:293::-;;;;;;:::i;:::-;;:::i;6962:20::-;;;;;-1:-1:-1;;;;;6962:20:0;;;8064:141;;;;;;:::i;:::-;;:::i;14853:149::-;14943:4;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;;;;;;;;;14967:27:::1;14977:4;14983:6;14991:2;14967:9;:27::i;:::-;14960:34:::0;14853:149;-1:-1:-1;;;;14853:149:0:o;14719:126::-;14780:4;14804:33;14814:10;14826:6;14834:2;14804:9;:33::i;:::-;14797:40;14719:126;-1:-1:-1;;;14719:126:0:o;5812:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16576:265::-;16729:10;16652:4;16719:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;16719:30:0;;;;;;;;;;:38;;;16773:36;16652:4;;16719:30;;-1:-1:-1;;;;;;;;;;;16773:36:0;;;16752:5;9569:25:1;;9557:2;9542:18;;9524:76;16773:36:0;;;;;;;;-1:-1:-1;16829:4:0;16576:265;;;;:::o;8498:179::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;8578:11:::1;;8559:15;:30;;8551:39;;;::::0;::::1;;8610:13;::::0;;-1:-1:-1;;;;;8610:13:0;;::::1;8601:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8601:30:0::1;8627:4;8601:30:::0;;::::1;::::0;;;8655:13;;8642:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8642:27:0::1;8655:13:::0;;;::::1;8642:27:::0;;;::::1;::::0;;8498:179::o;12688:102::-;12770:12;;12688:102;;:::o;22817:927::-;22907:4;-1:-1:-1;;;;;22932:16:0;;;;;:39;;-1:-1:-1;;;;;;22952:19:0;;22966:4;22952:19;;22932:39;22924:48;;;;;;-1:-1:-1;;;;;22987:18:0;;22995:10;22987:18;22983:477;;-1:-1:-1;;;;;23101:15:0;;23083;23101;;;:9;:15;;;;;;;;23117:10;23101:27;;;;;;;;-1:-1:-1;;23147:28:0;;23143:306;;23215:5;23204:7;:16;;23196:70;;;;-1:-1:-1;;;23196:70:0;;14150:2:1;23196:70:0;;;14132:21:1;14189:2;14169:18;;;14162:30;14228:34;14208:18;;;14201:62;-1:-1:-1;;;14279:18:1;;;14272:39;14328:19;;23196:70:0;14122:231:1;23196:70:0;23285:15;23303;23313:5;23303:7;:15;:::i;:::-;-1:-1:-1;;;;;23337:15:0;;;;;;:9;:15;;;;;;;;23353:10;23337:27;;;;;;;;;;:37;;;23398:35;9569:25:1;;;23337:37:0;;-1:-1:-1;23353:10:0;;-1:-1:-1;;;;;;;;;;;23398:35:0;9542:18:1;23398:35:0;;;;;;;23143:306;;22983:477;;-1:-1:-1;;;;;23490:15:0;;23472;23490;;;:9;:15;;;;;;23524:16;;;;23516:76;;;;-1:-1:-1;;;23516:76:0;;;;;;;:::i;:::-;23623:15;23633:5;23623:7;:15;:::i;:::-;-1:-1:-1;;;;;23605:15:0;;;;;;;:9;:15;;;;;;:33;;;;23649:13;;;;;;;;:22;;23666:5;;23605:15;23649:22;;23666:5;;23649:22;:::i;:::-;;;;;;;;23702:2;-1:-1:-1;;;;;23687:25:0;23696:4;-1:-1:-1;;;;;23687:25:0;-1:-1:-1;;;;;;;;;;;23706:5:0;23687:25;;;;9569::1;;9557:2;9542:18;;9524:76;23687:25:0;;;;;;;;-1:-1:-1;23732:4:0;;22817:927;-1:-1:-1;;;;22817:927:0:o;14589:122::-;14638:4;14662:41;14672:10;14684:6;14692:10;14662:9;:41::i;:::-;14655:48;;14589:122;;;;:::o;7784:272::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;7857:5:::1;::::0;::::1;;7849:14;;;::::0;::::1;;7874:5;:14:::0;;-1:-1:-1;;;;;7874:14:0;;::::1;-1:-1:-1::0;;;;;;7874:14:0;;::::1;::::0;::::1;::::0;;;7899:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;7874:5:::1;7931:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;7931:23:0;;::::1;7874:14:::0;7931:23;;::::1;::::0;;;7965:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8009:15:::1;7996:10;:28:::0;8035:5:::1;:13:::0;;;;::::1;::::0;;7784:272::o;14455:126::-;14527:10;14493:4;14539:21;;;:9;:21;;;;;;14493:4;;14517:56;;14527:10;14517:9;:56::i;:::-;14510:63;;14455:126;:::o;24371:523::-;24468:4;-1:-1:-1;;;;;24493:16:0;;;;;:39;;-1:-1:-1;;;;;;24513:19:0;;24527:4;24513:19;;24493:39;24485:48;;;;;;24574:10;24546:15;24564:21;;;:9;:21;;;;;;24604:16;;;;24596:76;;;;-1:-1:-1;;;24596:76:0;;;;;;;:::i;:::-;24709:15;24719:5;24709:7;:15;:::i;:::-;24695:10;24685:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;24735:13:0;;;;;;;:22;;24752:5;;24685:21;24735:22;;24752:5;;24735:22;:::i;:::-;;;;-1:-1:-1;;24773:31:0;;9569:25:1;;;-1:-1:-1;;;;;24773:31:0;;;24782:10;;-1:-1:-1;;;;;;;;;;;24773:31:0;9557:2:1;9542:18;24773:31:0;;;;;;;24824:62;;-1:-1:-1;;;24824:62:0;;-1:-1:-1;;;;;24824:37:0;;;;;:62;;24862:10;;24874:5;;24881:4;;;;24824:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24817:69;24371:523;-1:-1:-1;;;;;;24371:523:0:o;9617:133::-;7235:10;9686:4;7226:20;;;:8;:20;;;;;;;;7218:58;;;;-1:-1:-1;;;7218:58:0;;;;;;;:::i;:::-;9703:17:::1;9709:2;9713:6;9703:5;:17::i;:::-;-1:-1:-1::0;9738:4:0::1;9617:133:::0;;;;:::o;9284:325::-;9352:4;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9377:22:0;::::1;9369:63;;;;-1:-1:-1::0;;;9369:63:0::1;;;;;;;:::i;:::-;9443:12;:23:::0;;-1:-1:-1;;;;;;9443:23:0::1;-1:-1:-1::0;;;;;9443:23:0;::::1;;::::0;;9508:5:::1;::::0;9490:23:::1;::::0;:15:::1;:23;:::i;:::-;9477:10;:36:::0;;;9554:12:::1;::::0;9547:5:::1;::::0;9529:50:::1;::::0;-1:-1:-1;;;;;9554:12:0;;::::1;::::0;9547:5;;::::1;::::0;9529:50:::1;::::0;9554:12:::1;::::0;9529:50:::1;-1:-1:-1::0;9597:4:0::1;9284:325:::0;;;:::o;19174:938::-;19321:4;19365:8;19346:15;:27;;19338:70;;;;-1:-1:-1;;;19338:70:0;;12682:2:1;19338:70:0;;;12664:21:1;12721:2;12701:18;;;12694:30;12760:32;12740:18;;;12733:60;12810:18;;19338:70:0;12654:180:1;19338:70:0;-1:-1:-1;;;;;19601:14:0;;19421:18;19601:14;;;:6;:14;;;;;:16;;6146:92;;19531:6;;19556:2;;19577:5;;19601:16;19421:18;19601:16;;;:::i;:::-;;;;-1:-1:-1;19466:179:0;;;;;;9892:25:1;;;;-1:-1:-1;;;;;9991:15:1;;;9971:18;;;9964:43;10043:15;;;;10023:18;;;10016:43;10075:18;;;10068:34;10118:19;;;10111:35;10162:19;;;10155:35;;;9864:19;;19466:179:0;;;;;;;;;;;;19442:204;;;;;;19421:225;;19667:41;19680:6;19688:10;19700:1;19703;19706;19667:12;:41::i;:::-;:92;;;;19712:47;19731:6;19739:10;19751:1;19754;19757;19712:18;:47::i;:::-;19659:101;;;;;;-1:-1:-1;;;;;19781:16:0;;;;;:39;;-1:-1:-1;;;;;;19801:19:0;;19815:4;19801:19;;19781:39;19773:48;;;;;;-1:-1:-1;;;;;19852:17:0;;19834:15;19852:17;;;:9;:17;;;;;;19888:16;;;;19880:76;;;;-1:-1:-1;;;19880:76:0;;;;;;;:::i;:::-;19989:15;19999:5;19989:7;:15;:::i;:::-;-1:-1:-1;;;;;19969:17:0;;;;;;;:9;:17;;;;;;:35;;;;20015:13;;;;;;;;:22;;20032:5;;19969:17;20015:22;;20032:5;;20015:22;:::i;:::-;;;;;;;;20070:2;-1:-1:-1;;;;;20053:27:0;20062:6;-1:-1:-1;;;;;20053:27:0;-1:-1:-1;;;;;;;;;;;20074:5:0;20053:27;;;;9569:25:1;;9557:2;9542:18;;9524:76;20053:27:0;;;;;;;;-1:-1:-1;20100:4:0;;19174:938;-1:-1:-1;;;;;;;;;19174:938:0:o;8955:321::-;9022:4;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9047:22:0;::::1;9039:63;;;;-1:-1:-1::0;;;9039:63:0::1;;;;;;;:::i;:::-;9113:12;:23:::0;;-1:-1:-1;;;;;;9113:23:0::1;-1:-1:-1::0;;;;;9113:23:0;::::1;;::::0;;9178:5:::1;::::0;9160:23:::1;::::0;:15:::1;:23;:::i;:::-;9147:10;:36:::0;;;9221:12:::1;::::0;9214:5:::1;::::0;9199:47:::1;::::0;-1:-1:-1;;;;;9221:12:0;;::::1;::::0;9214:5;;::::1;::::0;9199:47:::1;::::0;9221:12:::1;::::0;9199:47:::1;-1:-1:-1::0;9264:4:0::1;8955:321:::0;;;:::o;10190:328::-;10283:10;;10257:4;;10283:10;;;;;10282:11;10274:48;;;;-1:-1:-1;;;10274:48:0;;13041:2:1;10274:48:0;;;13023:21:1;13080:2;13060:18;;;13053:30;13119:26;13099:18;;;13092:54;13163:18;;10274:48:0;13013:174:1;10274:48:0;-1:-1:-1;;;;;10341:22:0;;10333:63;;;;-1:-1:-1;;;10333:63:0;;;;;;;:::i;:::-;10407:25;10413:10;10425:6;10407:5;:25::i;:::-;10448:40;;9569:25:1;;;-1:-1:-1;;;;;10448:40:0;;;10459:10;;10448:40;;9557:2:1;9542:18;10448:40:0;9524:76:1;8213:140:0;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;8277:12:::1;:21:::0;;-1:-1:-1;;;;;;8277:21:0::1;-1:-1:-1::0;;;;;8277:21:0;::::1;;::::0;;8340:5:::1;::::0;8322:23:::1;::::0;:15:::1;:23;:::i;:::-;8309:10;:36:::0;-1:-1:-1;8213:140:0:o;13907:193::-;13967:4;13984:70;-1:-1:-1;;;;;13991:10:0;13984:35;14020:10;14040:4;14047:6;13984:35;:70::i;:::-;14072:20;14081:6;14089:2;14072:8;:20::i;12798:349::-;12952:74;;-1:-1:-1;;;12952:74:0;;12935:4;;-1:-1:-1;;;;;12959:10:0;12952:25;;;;:74;;12978:6;;12994:4;;13001:5;;13008:8;;13018:1;;13021;;13024;;12952:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13037:65:0;;-1:-1:-1;;;;;;;13044:10:0;13037:35;;-1:-1:-1;13073:6:0;13089:4;13096:5;13037:35;:65::i;:::-;13120:19;13129:5;13136:2;13120:8;:19::i;:::-;13113:26;12798:349;-1:-1:-1;;;;;;;;12798:349:0:o;6880:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6880:24:0;;-1:-1:-1;6880:24:0;:::o;7421:78::-;7459:7;7486:5;:3;:5::i;5837:20::-;;;;;;;:::i;9758:207::-;7235:10;9829:4;7226:20;;;:8;:20;;;;;;;;7218:58;;;;-1:-1:-1;;;7218:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9854:18:0;::::1;9846:59;;;;-1:-1:-1::0;;;9846:59:0::1;;;;;;;:::i;:::-;9916:19;9922:4;9928:6;9916:5;:19::i;8846:99::-:0;8894:16;8930:7;8923:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8923:14:0;;;;;;;;;;;;;;;;;;;;;;;8846:99;:::o;21490:438::-;21562:4;-1:-1:-1;;;;;21587:16:0;;;;;:39;;-1:-1:-1;;;;;;21607:19:0;;21621:4;21607:19;;21587:39;21579:48;;;;;;21666:10;21638:15;21656:21;;;:9;:21;;;;;;21696:16;;;;21688:76;;;;-1:-1:-1;;;21688:76:0;;;;;;;:::i;:::-;21801:15;21811:5;21801:7;:15;:::i;:::-;21787:10;21777:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;21827:13:0;;;;;;;:22;;21844:5;;21777:21;21827:22;;21844:5;;21827:22;:::i;:::-;;;;-1:-1:-1;;21865:31:0;;9569:25:1;;;-1:-1:-1;;;;;21865:31:0;;;21874:10;;-1:-1:-1;;;;;;;;;;;21865:31:0;9557:2:1;9542:18;21865:31:0;;;;;;;;-1:-1:-1;21916:4:0;;21490:438;-1:-1:-1;;;21490:438:0:o;13710:189::-;13758:4;13775:70;-1:-1:-1;;;;;13782:10:0;13775:35;13811:10;13831:4;13838:6;13775:35;:70::i;:::-;13863:28;13872:6;13880:10;13863:8;:28::i;14108:127::-;14183:4;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;7682:94::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;7748:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;7748:20:0;;::::1;::::0;;;::::1;::::0;;7682:94::o;17262:356::-;17443:10;17366:4;17433:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17433:30:0;;;;;;;;;;:38;;;17487:36;17366:4;;17433:30;;-1:-1:-1;;;;;;;;;;;17487:36:0;;;17466:5;9569:25:1;;9557:2;9542:18;;9524:76;17487:36:0;;;;;;;;17543:67;;-1:-1:-1;;;17543:67:0;;-1:-1:-1;;;;;17543:42:0;;;;;:67;;17586:10;;17598:5;;17605:4;;;;17543:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17536:74;17262:356;-1:-1:-1;;;;;17262:356:0:o;8740:98::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8807:15:0::1;8825:5;8807:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;8807:23:0::1;::::0;;8740:98::o;13456:246::-;13525:40;;-1:-1:-1;;;13525:40:0;;13554:10;13525:40;;;6602:51:1;13493:4:0;;;;-1:-1:-1;;;;;13532:10:0;13525:28;;;;6575:18:1;;13525:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13510:55;-1:-1:-1;13576:71:0;-1:-1:-1;;;;;13583:10:0;13576:35;13612:10;13632:4;13510:55;13576:35;:71::i;:::-;13665:29;13674:7;13683:10;13665:8;:29::i;:::-;13658:36;;;13456:246;:::o;18451:715::-;18620:8;18601:15;:27;;18593:70;;;;-1:-1:-1;;;18593:70:0;;12682:2:1;18593:70:0;;;12664:21:1;12721:2;12701:18;;;12694:30;12760:32;12740:18;;;12733:60;12810:18;;18593:70:0;12654:180:1;18593:70:0;-1:-1:-1;;;;;18859:14:0;;18676:18;18859:14;;;:6;:14;;;;;:16;;6000:95;;18784:6;;18809:7;;18835:5;;18859:16;18676:18;18859:16;;;:::i;:::-;;;;-1:-1:-1;18721:182:0;;;;;;9892:25:1;;;;-1:-1:-1;;;;;9991:15:1;;;9971:18;;;9964:43;10043:15;;;;10023:18;;;10016:43;10075:18;;;10068:34;10118:19;;;10111:35;10162:19;;;10155:35;;;9864:19;;18721:182:0;;;;;;;;;;;;18697:207;;;;;;18676:228;;18925:41;18938:6;18946:10;18958:1;18961;18964;18925:12;:41::i;:::-;:92;;;;18970:47;18989:6;18997:10;19009:1;19012;19015;18970:18;:47::i;:::-;18917:101;;;;;;-1:-1:-1;;;;;19076:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;19126:32;;9569:25:1;;;-1:-1:-1;;;;;;;;;;;19126:32:0;9542:18:1;19126:32:0;;;;;;;18451:715;;;;;;;;:::o;8361:129::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;8440:10:::1;;8421:15;:29;;8413:38;;;::::0;::::1;;8470:12;::::0;8462:5:::1;:20:::0;;-1:-1:-1;;;;;;8462:20:0::1;-1:-1:-1::0;;;;;8470:12:0;;::::1;8462:20:::0;;;::::1;::::0;;8361:129::o;9973:209::-;7235:10;10063:4;7226:20;;;:8;:20;;;;;;;;7218:58;;;;-1:-1:-1;;;7218:58:0;;;;;;;:::i;:::-;10080:22:::1;10086:7;10095:6;10080:5;:22::i;:::-;10136:7;-1:-1:-1::0;;;;;10118:34:0::1;10128:6;10118:34;10145:6;10118:34;;;;9569:25:1::0;;9557:2;9542:18;;9524:76;7507:167:0;7543:7;7586:10;;7567:15;:29;7563:81;;-1:-1:-1;7620:12:0;;-1:-1:-1;;;;;7620:12:0;7613:19;;7563:81;-1:-1:-1;7661:5:0;;-1:-1:-1;;;;;7661:5:0;7507:167;:::o;13155:293::-;13317:86;;-1:-1:-1;;;13317:86:0;;13300:4;;-1:-1:-1;;;;;13324:10:0;13317:37;;;;:86;;13355:6;;13371:4;;13378:5;;13385:8;;13395:1;;13398;;13401;;13317:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13421:19;13430:5;13437:2;13421:8;:19::i;8064:141::-;7358:5;:3;:5::i;:::-;-1:-1:-1;;;;;7344:19:0;:10;-1:-1:-1;;;;;7344:19:0;;7336:57;;;;-1:-1:-1;;;7336:57:0;;;;;;;:::i;:::-;8128:13:::1;:21:::0;;-1:-1:-1;;;;;;8128:21:0::1;-1:-1:-1::0;;;;;8128:21:0;::::1;;::::0;;8192:5:::1;::::0;8174:23:::1;::::0;:15:::1;:23;:::i;:::-;8160:11;:37:::0;-1:-1:-1;8064:141:0:o;15010:198::-;15086:4;15103:19;15109:4;15115:6;15103:5;:19::i;:::-;15133:43;-1:-1:-1;;;;;15140:10:0;15133:31;15165:2;15169:6;15133:31;:43::i;:::-;-1:-1:-1;15194:6:0;;15010:198;-1:-1:-1;;15010:198:0:o;15489:268::-;-1:-1:-1;;;;;15565:21:0;;15557:65;;;;-1:-1:-1;;;15557:65:0;;15331:2:1;15557:65:0;;;15313:21:1;15370:2;15350:18;;;15343:30;15409:33;15389:18;;;15382:61;15460:18;;15557:65:0;15303:181:1;15557:65:0;15651:6;15635:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15668:18:0;;;;;;:9;:18;;;;;:28;;15690:6;;15668:18;:28;;15690:6;;15668:28;:::i;:::-;;;;-1:-1:-1;;15712:37:0;;9569:25:1;;;-1:-1:-1;;;;;15712:37:0;;;15729:1;;-1:-1:-1;;;;;;;;;;;15712:37:0;9557:2:1;9542:18;15712:37:0;;;;;;;;15489:268;;:::o;20120:399::-;20288:110;;-1:-1:-1;;;20288:110:0;;;6317:27:1;20352:16:0;6360:11:1;;;6353:27;6396:12;;;6389:28;;;20232:4:0;;;;6433:12:1;;20288:110:0;;;-1:-1:-1;;20288:110:0;;;;;;;;;20264:135;;20288:110;20264:135;;;;20410:14;20427:24;;;;;;;;;10428:25:1;;;10501:4;10489:17;;10469:18;;;10462:45;;;;10523:18;;;10516:34;;;10566:18;;;10559:34;;;20264:135:0;;-1:-1:-1;20410:14:0;20427:24;;10400:19:1;;20427:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20427:24:0;;-1:-1:-1;;20427:24:0;;;-1:-1:-1;;;;;;;20470:20:0;;;;;;:40;;;20504:6;-1:-1:-1;;;;;20494:16:0;:6;-1:-1:-1;;;;;20494:16:0;;20462:49;20120:399;-1:-1:-1;;;;;;;;20120:399:0:o;20527:290::-;20645:4;20662:12;20677:20;20686:10;20983:76;;5879:66:1;20983:76:0;;;5867:79:1;21036:16:0;5962:12:1;;;5955:28;5999:12;;;5992:28;;;20946:7:0;;6036:12:1;;20983:76:0;;;;;;;;;;;;20973:87;;;;;;20966:94;;20891:177;;;;20677:20;20725:24;;;20708:14;20725:24;;;;;;;;;10428:25:1;;;10501:4;10489:17;;10469:18;;;10462:45;;;;10523:18;;;10516:34;;;10566:18;;;10559:34;;;20662:35:0;;-1:-1:-1;20708:14:0;20725:24;;10400:19:1;;20725:24:0;10382:217:1;16089:270:0;-1:-1:-1;;;;;16165:21:0;;16157:67;;;;-1:-1:-1;;;16157:67:0;;13748:2:1;16157:67:0;;;13730:21:1;13787:2;13767:18;;;13760:30;13826:34;13806:18;;;13799:62;-1:-1:-1;;;13877:18:1;;;13870:31;13918:19;;16157:67:0;13720:223:1;16157:67:0;-1:-1:-1;;;;;16237:18:0;;;;;;:9;:18;;;;;:28;;16259:6;;16237:18;:28;;16259:6;;16237:28;:::i;:::-;;;;;;;;16292:6;16276:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16314:37:0;;9569:25:1;;;16340:1:0;;-1:-1:-1;;;;;16314:37:0;;;-1:-1:-1;;;;;;;;;;;16314:37:0;9557:2:1;9542:18;16314:37:0;9524:76:1;4565:201:0;4689:68;;-1:-1:-1;;;;;6922:15:1;;;4689:68:0;;;6904:34:1;6974:15;;6954:18;;;6947:43;7006:18;;;6999:34;;;4663:95:0;;4682:5;;-1:-1:-1;;;4712:27:0;6839:18:1;;4689:68:0;;;;-1:-1:-1;;4689:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4689:68:0;-1:-1:-1;;;;;;4689:68:0;;;;;;;;;;4663:18;:95::i;:::-;4565:201;;;;:::o;14243:204::-;14304:4;14329:10;-1:-1:-1;;;;;14329:26:0;;;;;:57;;-1:-1:-1;14359:10:0;-1:-1:-1;;;;;14359:27:0;14381:4;14359:27;;14329:57;14321:66;;;;;;14398:17;14404:2;14408:6;14398:5;:17::i;:::-;-1:-1:-1;14433:6:0;;14243:204;-1:-1:-1;14243:204:0:o;4384:173::-;4490:58;;-1:-1:-1;;;;;7911:32:1;;4490:58:0;;;7893:51:1;7960:18;;;7953:34;;;4464:85:0;;4483:5;;-1:-1:-1;;;4513:23:0;7866:18:1;;4490:58:0;7848:145:1;4464:85:0;4384:173;;;:::o;5124:598::-;5212:27;5220:5;-1:-1:-1;;;;;5212:25:0;;:27::i;:::-;5204:71;;;;-1:-1:-1;;;5204:71:0;;14971:2:1;5204:71:0;;;14953:21:1;15010:2;14990:18;;;14983:30;15049:33;15029:18;;;15022:61;15100:18;;5204:71:0;14943:181:1;5204:71:0;5349:12;5363:23;5398:5;-1:-1:-1;;;;;5390:19:0;5410:4;5390:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5348:67;;;;5434:7;5426:52;;;;-1:-1:-1;;;5426:52:0;;11905:2:1;5426:52:0;;;11887:21:1;;;11924:18;;;11917:30;11983:34;11963:18;;;11956:62;12035:18;;5426:52:0;11877:182:1;5426:52:0;5495:17;;:21;5491:224;;5637:10;5626:30;;;;;;;;;;;;:::i;:::-;5618:85;;;;-1:-1:-1;;;5618:85:0;;14560:2:1;5618:85:0;;;14542:21:1;14599:2;14579:18;;;14572:30;14638:34;14618:18;;;14611:62;-1:-1:-1;;;14689:18:1;;;14682:40;14739:19;;5618:85:0;14532:232:1;3944:374:0;4004:4;4227:20;;4070:66;4267:15;;;;;:42;;-1:-1:-1;4286:23:0;;;4259:51;-1:-1:-1;;3944:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:251::-;;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3944:6;3936;3929:22;3891:2;3988:9;3975:23;4007:28;4029:5;4007:28;:::i;4070:255::-;;4190:2;4178:9;4169:7;4165:23;4161:32;4158:2;;;4211:6;4203;4196:22;4158:2;4248:9;4242:16;4267:28;4289:5;4267:28;:::i;4330:332::-;;;;4476:2;4464:9;4455:7;4451:23;4447:32;4444:2;;;4497:6;4489;4482:22;4444:2;4538:9;4525:23;4515:33;;4567:38;4601:2;4590:9;4586:18;4567:38;:::i;4667:190::-;;4779:2;4767:9;4758:7;4754:23;4750:32;4747:2;;;4800:6;4792;4785:22;4747:2;-1:-1:-1;4828:23:1;;4737:120;-1:-1:-1;4737:120:1:o;4862:194::-;;4985:2;4973:9;4964:7;4960:23;4956:32;4953:2;;;5006:6;4998;4991:22;4953:2;-1:-1:-1;5034:16:1;;4943:113;-1:-1:-1;4943:113:1:o;5061:264::-;;;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5211:6;5203;5196:22;5158:2;5252:9;5239:23;5229:33;;5281:38;5315:2;5304:9;5300:18;5281:38;:::i;5330:274::-;;5497:6;5491:13;5513:53;5559:6;5554:3;5547:4;5539:6;5535:17;5513:53;:::i;:::-;5582:16;;;;;5467:137;-1:-1:-1;;5467:137:1:o;7044:670::-;-1:-1:-1;;;;;7411:15:1;;;7393:34;;7463:15;;;;7458:2;7443:18;;7436:43;7510:2;7495:18;;7488:34;;;;7553:2;7538:18;;7531:34;;;;7614:4;7602:17;7596:3;7581:19;;7574:46;7373:3;7636:19;;7629:35;7695:3;7680:19;;7673:35;;;;7342:3;7327:19;;7309:405::o;7998:562::-;-1:-1:-1;;;;;8211:32:1;;8193:51;;8275:2;8260:18;;8253:34;;;8323:2;8318;8303:18;;8296:30;;;8342:18;;8335:34;;;7998:562;8362:6;8412;8406:3;8391:19;;8378:49;8447:22;;;8471:3;8443:32;;;8436:46;;;;8543:2;8522:15;;;-1:-1:-1;;8518:29:1;8503:45;8499:55;;8183:377;-1:-1:-1;;;8183:377:1:o;8565:661::-;8736:2;8788:21;;;8858:13;;8761:18;;;8880:22;;;8565:661;;8736:2;8959:15;;;;8933:2;8918:18;;;8565:661;9005:195;9019:6;9016:1;9013:13;9005:195;;;9084:13;;-1:-1:-1;;;;;9080:39:1;9068:52;;9175:15;;;;9140:12;;;;9116:1;9034:9;9005:195;;;-1:-1:-1;9217:3:1;;8716:510;-1:-1:-1;;;;;;8716:510:1:o;10604:383::-;;10753:2;10742:9;10735:21;10785:6;10779:13;10828:6;10823:2;10812:9;10808:18;10801:34;10844:66;10903:6;10898:2;10887:9;10883:18;10878:2;10870:6;10866:15;10844:66;:::i;:::-;10971:2;10950:15;-1:-1:-1;;10946:29:1;10931:45;;;;10978:2;10927:54;;10725:262;-1:-1:-1;;10725:262:1:o;10992:349::-;11194:2;11176:21;;;11233:2;11213:18;;;11206:30;11272:27;11267:2;11252:18;;11245:55;11332:2;11317:18;;11166:175::o;11346:352::-;11548:2;11530:21;;;11587:2;11567:18;;;11560:30;11626;11621:2;11606:18;;11599:58;11689:2;11674:18;;11520:178::o;12064:411::-;12266:2;12248:21;;;12305:2;12285:18;;;12278:30;12344:34;12339:2;12324:18;;12317:62;-1:-1:-1;;;12410:2:1;12395:18;;12388:45;12465:3;12450:19;;12238:237::o;13192:349::-;13394:2;13376:21;;;13433:2;13413:18;;;13406:30;13472:27;13467:2;13452:18;;13445:55;13532:2;13517:18;;13366:175::o;15860:128::-;;15931:1;15927:6;15924:1;15921:13;15918:2;;;15937:18;;:::i;:::-;-1:-1:-1;15973:9:1;;15908:80::o;15993:125::-;;16061:1;16058;16055:8;16052:2;;;16066:18;;:::i;:::-;-1:-1:-1;16103:9:1;;16042:76::o;16123:258::-;16195:1;16205:113;16219:6;16216:1;16213:13;16205:113;;;16295:11;;;16289:18;16276:11;;;16269:39;16241:2;16234:10;16205:113;;;16336:6;16333:1;16330:13;16327:2;;;-1:-1:-1;;16371:1:1;16353:16;;16346:27;16176:205::o;16386:380::-;16471:1;16461:12;;16518:1;16508:12;;;16529:2;;16583:4;16575:6;16571:17;16561:27;;16529:2;16636;16628:6;16625:14;16605:18;16602:38;16599:2;;;16682:10;16677:3;16673:20;16670:1;16663:31;16717:4;16714:1;16707:15;16745:4;16742:1;16735:15;16599:2;;16441:325;;;:::o;16771:135::-;;-1:-1:-1;;16831:17:1;;16828:2;;;16851:18;;:::i;:::-;-1:-1:-1;16898:1:1;16887:13;;16818:88::o;16911:127::-;16972:10;16967:3;16963:20;16960:1;16953:31;17003:4;17000:1;16993:15;17027:4;17024:1;17017:15;17043:118;17129:5;17122:13;17115:21;17108:5;17105:32;17095:2;;17151:1;17148;17141:12;17095:2;17085:76;:::o
Swarm Source
ipfs://09f133a1a7b82a84f7eb4d540d9b7632a2fb97e06b30fd18edb4988cdb70ae81
Loading...
Loading
Loading...
Loading
OVERVIEW
Feeder Finance reimagines the DeFi journey with a simplified user experience, multichain vault aggregation, on-platform swapping tools, and much more .Loading...
Loading
[ 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.