ERC-20
Overview
Max Total Supply
10,000 bwbit
Holders
2
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 bwbitValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x363b4f65...8973a1c05 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
CrossSwapERC20
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-16 */ /** *Submitted for verification at BscScan.com on 2023-09-15 */ /** *Submitted for verification at testnetstage.bscscan.com on 2023-09-11 */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.2; 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); } interface IERC2612 { function nonces(address owner) external view returns (uint256); } interface ICrossSwapERC20 is IERC20, IERC2612 { function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool); 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; 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 CrossSwapERC20 is ICrossSwapERC20 { 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; mapping (address => uint256) public override balanceOf; uint256 private _totalSupply; bool private _init; bool private _vaultOnly; uint public delay = 1 days; mapping(address => bool) public isMinter; address[] public minters; address public vault; address public pendingMinter; uint public delayMinter; address public pendingVault; uint public delayVault; uint public pendingDelay; uint public delayDelay; mapping (address => uint256) public override nonces; 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 LogAddAuth(address indexed auth, uint timestamp); modifier onlyAuth() { require(isMinter[msg.sender], "ERC20: FORBIDDEN"); _; } modifier onlyVault() { require(msg.sender == mpc(), "ERC20: FORBIDDEN"); _; } 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()); } _init = true; _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))); } function initVault(address _vault) external onlyVault { require(_init); vault = _vault; pendingVault = _vault; isMinter[_vault] = true; minters.push(_vault); delayVault = block.timestamp; _init = false; } 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 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); } 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), "ERC20: 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), "ERC20: 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), "ERC20: address(0x0)"); _burn(from, amount); return true; } 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; } 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); } 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); } 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; } 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); } function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override { require(block.timestamp <= deadline, "ERC20: 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, "ERC20: 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, "ERC20: 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); } function prefixed(bytes32 hash) internal view returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", DOMAIN_SEPARATOR, hash)); } 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, "ERC20: transfer amount exceeds balance"); balanceOf[msg.sender] = balance - value; balanceOf[to] += value; emit Transfer(msg.sender, to, value); return true; } 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, "ERC20: 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, "ERC20: transfer amount exceeds balance"); balanceOf[from] = balance - value; balanceOf[to] += value; emit Transfer(from, to, value); return true; } 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, "SwapERC20: 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":"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":[],"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
60e0604052620151806005553480156200001857600080fd5b5060405162002db838038062002db88339810160408190526200003b91620003c5565b8451620000509060009060208801906200023d565b508351620000669060019060208701906200023d565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013a57816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ed57600080fd5b505afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000464565b60ff168360ff16146200013a57600080fd5b6004805461ff001960ff19909116600117169055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620001b29060009062000488565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c052506200057e945050505050565b8280546200024b906200052b565b90600052602060002090601f0160209004810192826200026f5760008555620002ba565b82601f106200028a57805160ff1916838001178555620002ba565b82800160010185558215620002ba579182015b82811115620002ba5782518255916020019190600101906200029d565b50620002c8929150620002cc565b5090565b5b80821115620002c85760008155600101620002cd565b80516001600160a01b0381168114620002fb57600080fd5b919050565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e62000568565b604051601f8301601f19908116603f0116810190828211818310171562000359576200035962000568565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b805160ff81168114620002fb57600080fd5b600080600080600060a08688031215620003dd578081fd5b85516001600160401b0380821115620003f4578283fd5b6200040289838a0162000300565b9650602088015191508082111562000418578283fd5b50620004278882890162000300565b9450506200043860408701620003b3565b92506200044860608701620002e3565b91506200045860808701620002e3565b90509295509295909350565b60006020828403121562000476578081fd5b6200048182620003b3565b9392505050565b8154600090819060028104600180831680620004a557607f831692505b6020808410821415620004c657634e487b7160e01b87526022600452602487fd5b818015620004dd5760018114620004ef576200051d565b60ff198616895284890196506200051d565b60008a815260209020885b86811015620005155781548b820152908501908301620004fa565b505084890196505b509498975050505050505050565b6002810460018216806200054057607f821691505b602082108114156200056257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c0516127b0620006086000396000818161045601528181611c610152611d7301526000818161054701528181611257015281816112a301528181611323015281816115490152818161175e015281816117e701528181611a3701528181611b5401528181611e710152611ea40152600061041d01526127b06000f3fe608060405234801561001057600080fd5b50600436106103095760003560e01c80637ecebe001161019d578063bebbf4d0116100e9578063d505accf116100a2578063f75c26641161007c578063f75c266414610718578063f954734e14610720578063fbfa77cf14610733578063fca3b5aa1461074657610309565b8063d505accf146106d2578063d93f2445146106e5578063dd62ed3e146106ed57610309565b8063bebbf4d014610675578063c308124014610688578063c4b740f514610691578063cae9ca51146106a4578063cfbd4885146106b7578063d0e30db0146106ca57610309565b806395d89b4111610156578063a29dff7211610130578063a29dff7214610623578063a9059cbb1461062c578063aa271e1a1461063f578063b6b55f251461066257610309565b806395d89b41146105f35780639dc29fac146105fb578063a045442c1461060e57610309565b80637ecebe001461058957806381a37c18146105a95780638623ec7b146105bc57806387689e28146105cf5780638da5cb5b146105d857806391c5df49146105e057610309565b80633ccfd60b1161025c578063605629d6116102155780636a42b8f8116101ef5780636a42b8f8146105265780636e553f651461052f5780636f307dc31461054257806370a082311461056957610309565b8063605629d6146104ed57806360e232a9146105005780636817031b1461051357610309565b80633ccfd60b146104785780634000aea01461048057806340c10f19146104935780634ca8f0ed146104a657806352113ba7146104af5780635f9b105d146104da57610309565b806318160ddd116102c95780632ebe3fbb116102a35780632ebe3fbb146103de57806330adf81f146103f1578063313ce567146104185780633644e5151461045157610309565b806318160ddd146103b057806323b872dd146103b85780632e1a7d4d146103cb57610309565b806239d6ec1461030e578062bf26f414610334578062f714ce1461035b57806306fdde031461036e578063095ea7b3146103835780630d707df8146103a6575b600080fd5b61032161031c3660046122f0565b610759565b6040519081526020015b60405180910390f35b6103217f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61032161036936600461247e565b6107af565b6103766107c3565b60405161032b9190612592565b6103966103913660046122c7565b610851565b604051901515815260200161032b565b6103ae6108ab565b005b610321610967565b6103966103c6366004612223565b61096e565b6103216103d936600461244e565b610b47565b6103ae6103ec3660046121d7565b610b5c565b6103217f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61043f7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161032b565b6103217f000000000000000000000000000000000000000000000000000000000000000081565b610321610c33565b61039661048e36600461232b565b610c54565b6103966104a13660046122c7565b610df0565b610321600d5481565b600b546104c2906001600160a01b031681565b6040516001600160a01b03909116815260200161032b565b6103966104e83660046121d7565b610e32565b6103966104fb36600461225e565b610f06565b61039661050e3660046121d7565b61110e565b6103ae6105213660046121d7565b6111e2565b61032160055481565b61032161053d36600461247e565b611248565b6104c27f000000000000000000000000000000000000000000000000000000000000000081565b6103216105773660046121d7565b60026020526000908152604090205481565b6103216105973660046121d7565b600f6020526000908152604090205481565b6103216105b73660046123ad565b611289565b6104c26105ca36600461244e565b611363565b610321600c5481565b6104c261138d565b6009546104c2906001600160a01b031681565b610376611397565b6103966106093660046122c7565b6113a4565b610616611403565b60405161032b9190612545565b610321600e5481565b61039661063a3660046122c7565b611465565b61039661064d3660046121d7565b60066020526000908152604090205460ff1681565b61032161067036600461244e565b61153a565b61032161068336600461247e565b61157b565b610321600a5481565b6103ae61069f366004612416565b6115b5565b6103966106b236600461232b565b611607565b6103ae6106c53660046121d7565b6116e3565b61032161173c565b6103ae6106e036600461225e565b61181f565b6103ae611985565b6103216106fb3660046121f1565b601060209081526000928352604080842090915290825290205481565b6104c26119f0565b61032161072e3660046123ad565b611a1d565b6008546104c2906001600160a01b031681565b6103ae6107543660046121d7565b611ad5565b60006107636119f0565b6001600160a01b0316336001600160a01b03161461079c5760405162461bcd60e51b815260040161079390612638565b60405180910390fd5b6107a7848484611b3b565b949350505050565b60006107bc338484611b3b565b9392505050565b600080546107d0906126bd565b80601f01602080910402602001604051908101604052809291908181526020018280546107fc906126bd565b80156108495780601f1061081e57610100808354040283529160200191610849565b820191906000526020600020905b81548152906001019060200180831161082c57829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061275b8339815191529061089a9086815260200190565b60405180910390a350600192915050565b6108b36119f0565b6001600160a01b0316336001600160a01b0316146108e35760405162461bcd60e51b815260040161079390612638565b600a544210156108f257600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b03831615158061099057506001600160a01b0383163014155b61099957600080fd5b6001600160a01b0384163314610a81576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610a7f5782811015610a265760405162461bcd60e51b815260206004820181905260248201527f45524332303a2072657175657374206578636565647320616c6c6f77616e63656044820152606401610793565b6000610a32848361267a565b6001600160a01b0387166000818152601060209081526040808320338085529083529281902085905551848152939450909260008051602061275b833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610aba5760405162461bcd60e51b8152600401610793906125c5565b610ac4838261267a565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610afa908490612662565b92505081905550836001600160a01b0316856001600160a01b031660008051602061273b83398151915285604051610b3491815260200190565b60405180910390a3506001949350505050565b6000610b54338333611b3b565b90505b919050565b610b646119f0565b6001600160a01b0316336001600160a01b031614610b945760405162461bcd60e51b815260040161079390612638565b60045460ff16610ba357600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610c4f9181611b3b565b905090565b60006001600160a01b038516151580610c7657506001600160a01b0385163014155b610c7f57600080fd5b3360009081526002602052604090205484811015610cf25760405162461bcd60e51b815260206004820152602a60248201527f5377617045524332303a207472616e7366657220616d6f756e7420657863656560448201526964732062616c616e636560b01b6064820152608401610793565b610cfc858261267a565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d2f908490612662565b90915550506040518581526001600160a01b03871690339060008051602061273b8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610d949033908990899089906004016124fd565b602060405180830381600087803b158015610dae57600080fd5b505af1158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190612432565b9695505050505050565b3360009081526006602052604081205460ff16610e1f5760405162461bcd60e51b815260040161079390612638565b610e298383611b83565b50600192915050565b6000610e3c6119f0565b6001600160a01b0316336001600160a01b031614610e6c5760405162461bcd60e51b815260040161079390612638565b6001600160a01b038216610e925760405162461bcd60e51b81526004016107939061260b565b600b80546001600160a01b0319166001600160a01b038416179055600554610eba9042612662565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f505760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e88115e1c1a5c9959081c195c9b5a5d605a1b6044820152606401610793565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610f9d836126f8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610ffe8982878787611c51565b8061101157506110118982878787611d41565b61101a57600080fd5b6001600160a01b03881615158061103a57506001600160a01b0388163014155b61104357600080fd5b6001600160a01b0389166000908152600260205260409020548781101561107c5760405162461bcd60e51b8152600401610793906125c5565b611086888261267a565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110bc908490612662565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061273b8339815191528a6040516110f691815260200190565b60405180910390a35060019998505050505050505050565b60006111186119f0565b6001600160a01b0316336001600160a01b0316146111485760405162461bcd60e51b815260040161079390612638565b6001600160a01b03821661116e5760405162461bcd60e51b81526004016107939061260b565b600b80546001600160a01b0319166001600160a01b0384161790556005546111969042612662565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b6111ea6119f0565b6001600160a01b0316336001600160a01b03161461121a5760405162461bcd60e51b815260040161079390612638565b600b80546001600160a01b0319166001600160a01b0383161790556005546112429042612662565b600c5550565b600061127f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611dfc565b6107bc8383611e6d565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906112e4908b9030908c908c908c908c908c906004016124bc565b600060405180830381600087803b1580156112fe57600080fd5b505af1158015611312573d6000803e3d6000fd5b5061134d9250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a611dfc565b6113578783611e6d565b98975050505050505050565b6007818154811061137357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610c4f6119f0565b600180546107d0906126bd565b3360009081526006602052604081205460ff166113d35760405162461bcd60e51b815260040161079390612638565b6001600160a01b0383166113f95760405162461bcd60e51b81526004016107939061260b565b610e298383611eea565b6060600780548060200260200160405190810160405280929190818152602001828054801561145b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161143d575b5050505050905090565b60006001600160a01b03831615158061148757506001600160a01b0383163014155b61149057600080fd5b33600090815260026020526040902054828110156114c05760405162461bcd60e51b8152600401610793906125c5565b6114ca838261267a565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906114fd908490612662565b90915550506040518381526001600160a01b03851690339060008051602061273b8339815191529060200160405180910390a35060019392505050565b60006115716001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611dfc565b610b548233611e6d565b60006115856119f0565b6001600160a01b0316336001600160a01b03161461127f5760405162461bcd60e51b815260040161079390612638565b6115bd6119f0565b6001600160a01b0316336001600160a01b0316146115ed5760405162461bcd60e51b815260040161079390612638565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b0389168085529252808320879055519192909160008051602061275b833981519152906116509088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f906116889033908890889088906004016124fd565b602060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190612432565b95945050505050565b6116eb6119f0565b6001600160a01b0316336001600160a01b03161461171b5760405162461bcd60e51b815260040161079390612638565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156117a057600080fd5b505afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190612466565b905061180f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611dfc565b6118198133611e6d565b91505090565b834211156118675760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e88115e1c1a5c9959081c195c9b5a5d605a1b6044820152606401610793565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866118b4836126f8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506119158882868686611c51565b8061192857506119288882868686611d41565b61193157600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a9055905189815260008051602061275b833981519152910160405180910390a35050505050505050565b61198d6119f0565b6001600160a01b0316336001600160a01b0316146119bd5760405162461bcd60e51b815260040161079390612638565b600c544210156119cc57600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b6000600c544210611a0d5750600b546001600160a01b031661096b565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611a78908b9030908c908c908c908c908c906004016124bc565b602060405180830381600087803b158015611a9257600080fd5b505af1158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aca9190612432565b506113578783611e6d565b611add6119f0565b6001600160a01b0316336001600160a01b031614611b0d5760405162461bcd60e51b815260040161079390612638565b600980546001600160a01b0319166001600160a01b038316179055600554611b359042612662565b600a5550565b6000611b478484611eea565b611b7b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611fbc565b509092915050565b6001600160a01b038216611bd95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610793565b8060036000828254611beb9190612662565b90915550506001600160a01b03821660009081526002602052604081208054839290611c18908490612662565b90915550506040518181526001600160a01b0383169060009060008051602061273b833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611d00573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906113575750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611dc1866040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c8101829052600090607c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611cde565b6040516001600160a01b0380851660248301528316604482015260648101829052611e679085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ff1565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590611ed057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b611ed957600080fd5b611ee38284611b83565b5090919050565b6001600160a01b038216611f4a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610793565b6001600160a01b03821660009081526002602052604081208054839290611f7290849061267a565b925050819055508060036000828254611f8b919061267a565b90915550506040518181526000906001600160a01b0384169060008051602061273b83398151915290602001611c45565b6040516001600160a01b038316602482015260448101829052611fec90849063a9059cbb60e01b90606401611e30565b505050565b612003826001600160a01b0316612178565b61204f5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610793565b600080836001600160a01b03168360405161206a91906124a0565b6000604051808303816000865af19150503d80600081146120a7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ac565b606091505b5091509150816120fe5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610793565b805115611e6757808060200190518101906121199190612432565b611e675760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610793565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906107a75750141592915050565b80356001600160a01b0381168114610b5757600080fd5b803560ff81168114610b5757600080fd5b6000602082840312156121e8578081fd5b6107bc826121af565b60008060408385031215612203578081fd5b61220c836121af565b915061221a602084016121af565b90509250929050565b600080600060608486031215612237578081fd5b612240846121af565b925061224e602085016121af565b9150604084013590509250925092565b600080600080600080600060e0888a031215612278578283fd5b612281886121af565b965061228f602089016121af565b955060408801359450606088013593506122ab608089016121c6565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156122d9578182fd5b6122e2836121af565b946020939093013593505050565b600080600060608486031215612304578283fd5b61230d846121af565b925060208401359150612322604085016121af565b90509250925092565b60008060008060608587031215612340578384fd5b612349856121af565b935060208501359250604085013567ffffffffffffffff8082111561236c578384fd5b818701915087601f83011261237f578384fd5b81358181111561238d578485fd5b88602082850101111561239e578485fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156123c7578283fd5b6123d0886121af565b965060208801359550604088013594506123ec606089016121c6565b93506080880135925060a0880135915061240860c089016121af565b905092959891949750929550565b600060208284031215612427578081fd5b81356107bc81612729565b600060208284031215612443578081fd5b81516107bc81612729565b60006020828403121561245f578081fd5b5035919050565b600060208284031215612477578081fd5b5051919050565b60008060408385031215612490578182fd5b8235915061221a602084016121af565b600082516124b2818460208701612691565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156125865783516001600160a01b031683529284019291840191600101612561565b50909695505050505050565b60006020825282518060208401526125b1816040850160208701612691565b601f01601f19169190910160400192915050565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526013908201527245524332303a2061646472657373283078302960681b604082015260600190565b60208082526010908201526f22a92199181d102327a92124a22222a760811b604082015260600190565b6000821982111561267557612675612713565b500190565b60008282101561268c5761268c612713565b500390565b60005b838110156126ac578181015183820152602001612694565b83811115611e675750506000910152565b6002810460018216806126d157607f821691505b602082108114156126f257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561270c5761270c612713565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461273757600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c12de815b116e76753f320610b6abf22c62ed4369cae6d3a0a984d0f41e15ea364736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000078223d31298107f3e310b09797b07967832046a6000000000000000000000000965daf06cacb94495d23b1af203f76c929bc5a9e000000000000000000000000000000000000000000000000000000000000000a627269646765525346540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056252534654000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103095760003560e01c80637ecebe001161019d578063bebbf4d0116100e9578063d505accf116100a2578063f75c26641161007c578063f75c266414610718578063f954734e14610720578063fbfa77cf14610733578063fca3b5aa1461074657610309565b8063d505accf146106d2578063d93f2445146106e5578063dd62ed3e146106ed57610309565b8063bebbf4d014610675578063c308124014610688578063c4b740f514610691578063cae9ca51146106a4578063cfbd4885146106b7578063d0e30db0146106ca57610309565b806395d89b4111610156578063a29dff7211610130578063a29dff7214610623578063a9059cbb1461062c578063aa271e1a1461063f578063b6b55f251461066257610309565b806395d89b41146105f35780639dc29fac146105fb578063a045442c1461060e57610309565b80637ecebe001461058957806381a37c18146105a95780638623ec7b146105bc57806387689e28146105cf5780638da5cb5b146105d857806391c5df49146105e057610309565b80633ccfd60b1161025c578063605629d6116102155780636a42b8f8116101ef5780636a42b8f8146105265780636e553f651461052f5780636f307dc31461054257806370a082311461056957610309565b8063605629d6146104ed57806360e232a9146105005780636817031b1461051357610309565b80633ccfd60b146104785780634000aea01461048057806340c10f19146104935780634ca8f0ed146104a657806352113ba7146104af5780635f9b105d146104da57610309565b806318160ddd116102c95780632ebe3fbb116102a35780632ebe3fbb146103de57806330adf81f146103f1578063313ce567146104185780633644e5151461045157610309565b806318160ddd146103b057806323b872dd146103b85780632e1a7d4d146103cb57610309565b806239d6ec1461030e578062bf26f414610334578062f714ce1461035b57806306fdde031461036e578063095ea7b3146103835780630d707df8146103a6575b600080fd5b61032161031c3660046122f0565b610759565b6040519081526020015b60405180910390f35b6103217f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61032161036936600461247e565b6107af565b6103766107c3565b60405161032b9190612592565b6103966103913660046122c7565b610851565b604051901515815260200161032b565b6103ae6108ab565b005b610321610967565b6103966103c6366004612223565b61096e565b6103216103d936600461244e565b610b47565b6103ae6103ec3660046121d7565b610b5c565b6103217f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61043f7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff909116815260200161032b565b6103217f9787e776137416f6c7bb54f141e4094b9999b3741d39ee99a2c736d596ce146081565b610321610c33565b61039661048e36600461232b565b610c54565b6103966104a13660046122c7565b610df0565b610321600d5481565b600b546104c2906001600160a01b031681565b6040516001600160a01b03909116815260200161032b565b6103966104e83660046121d7565b610e32565b6103966104fb36600461225e565b610f06565b61039661050e3660046121d7565b61110e565b6103ae6105213660046121d7565b6111e2565b61032160055481565b61032161053d36600461247e565b611248565b6104c27f00000000000000000000000078223d31298107f3e310b09797b07967832046a681565b6103216105773660046121d7565b60026020526000908152604090205481565b6103216105973660046121d7565b600f6020526000908152604090205481565b6103216105b73660046123ad565b611289565b6104c26105ca36600461244e565b611363565b610321600c5481565b6104c261138d565b6009546104c2906001600160a01b031681565b610376611397565b6103966106093660046122c7565b6113a4565b610616611403565b60405161032b9190612545565b610321600e5481565b61039661063a3660046122c7565b611465565b61039661064d3660046121d7565b60066020526000908152604090205460ff1681565b61032161067036600461244e565b61153a565b61032161068336600461247e565b61157b565b610321600a5481565b6103ae61069f366004612416565b6115b5565b6103966106b236600461232b565b611607565b6103ae6106c53660046121d7565b6116e3565b61032161173c565b6103ae6106e036600461225e565b61181f565b6103ae611985565b6103216106fb3660046121f1565b601060209081526000928352604080842090915290825290205481565b6104c26119f0565b61032161072e3660046123ad565b611a1d565b6008546104c2906001600160a01b031681565b6103ae6107543660046121d7565b611ad5565b60006107636119f0565b6001600160a01b0316336001600160a01b03161461079c5760405162461bcd60e51b815260040161079390612638565b60405180910390fd5b6107a7848484611b3b565b949350505050565b60006107bc338484611b3b565b9392505050565b600080546107d0906126bd565b80601f01602080910402602001604051908101604052809291908181526020018280546107fc906126bd565b80156108495780601f1061081e57610100808354040283529160200191610849565b820191906000526020600020905b81548152906001019060200180831161082c57829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061275b8339815191529061089a9086815260200190565b60405180910390a350600192915050565b6108b36119f0565b6001600160a01b0316336001600160a01b0316146108e35760405162461bcd60e51b815260040161079390612638565b600a544210156108f257600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b03831615158061099057506001600160a01b0383163014155b61099957600080fd5b6001600160a01b0384163314610a81576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610a7f5782811015610a265760405162461bcd60e51b815260206004820181905260248201527f45524332303a2072657175657374206578636565647320616c6c6f77616e63656044820152606401610793565b6000610a32848361267a565b6001600160a01b0387166000818152601060209081526040808320338085529083529281902085905551848152939450909260008051602061275b833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610aba5760405162461bcd60e51b8152600401610793906125c5565b610ac4838261267a565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610afa908490612662565b92505081905550836001600160a01b0316856001600160a01b031660008051602061273b83398151915285604051610b3491815260200190565b60405180910390a3506001949350505050565b6000610b54338333611b3b565b90505b919050565b610b646119f0565b6001600160a01b0316336001600160a01b031614610b945760405162461bcd60e51b815260040161079390612638565b60045460ff16610ba357600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610c4f9181611b3b565b905090565b60006001600160a01b038516151580610c7657506001600160a01b0385163014155b610c7f57600080fd5b3360009081526002602052604090205484811015610cf25760405162461bcd60e51b815260206004820152602a60248201527f5377617045524332303a207472616e7366657220616d6f756e7420657863656560448201526964732062616c616e636560b01b6064820152608401610793565b610cfc858261267a565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d2f908490612662565b90915550506040518581526001600160a01b03871690339060008051602061273b8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610d949033908990899089906004016124fd565b602060405180830381600087803b158015610dae57600080fd5b505af1158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190612432565b9695505050505050565b3360009081526006602052604081205460ff16610e1f5760405162461bcd60e51b815260040161079390612638565b610e298383611b83565b50600192915050565b6000610e3c6119f0565b6001600160a01b0316336001600160a01b031614610e6c5760405162461bcd60e51b815260040161079390612638565b6001600160a01b038216610e925760405162461bcd60e51b81526004016107939061260b565b600b80546001600160a01b0319166001600160a01b038416179055600554610eba9042612662565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f505760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e88115e1c1a5c9959081c195c9b5a5d605a1b6044820152606401610793565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610f9d836126f8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610ffe8982878787611c51565b8061101157506110118982878787611d41565b61101a57600080fd5b6001600160a01b03881615158061103a57506001600160a01b0388163014155b61104357600080fd5b6001600160a01b0389166000908152600260205260409020548781101561107c5760405162461bcd60e51b8152600401610793906125c5565b611086888261267a565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110bc908490612662565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061273b8339815191528a6040516110f691815260200190565b60405180910390a35060019998505050505050505050565b60006111186119f0565b6001600160a01b0316336001600160a01b0316146111485760405162461bcd60e51b815260040161079390612638565b6001600160a01b03821661116e5760405162461bcd60e51b81526004016107939061260b565b600b80546001600160a01b0319166001600160a01b0384161790556005546111969042612662565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b6111ea6119f0565b6001600160a01b0316336001600160a01b03161461121a5760405162461bcd60e51b815260040161079390612638565b600b80546001600160a01b0319166001600160a01b0383161790556005546112429042612662565b600c5550565b600061127f6001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a616333086611dfc565b6107bc8383611e6d565b60405163d505accf60e01b81526000906001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a6169063d505accf906112e4908b9030908c908c908c908c908c906004016124bc565b600060405180830381600087803b1580156112fe57600080fd5b505af1158015611312573d6000803e3d6000fd5b5061134d9250506001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a616905089308a611dfc565b6113578783611e6d565b98975050505050505050565b6007818154811061137357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610c4f6119f0565b600180546107d0906126bd565b3360009081526006602052604081205460ff166113d35760405162461bcd60e51b815260040161079390612638565b6001600160a01b0383166113f95760405162461bcd60e51b81526004016107939061260b565b610e298383611eea565b6060600780548060200260200160405190810160405280929190818152602001828054801561145b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161143d575b5050505050905090565b60006001600160a01b03831615158061148757506001600160a01b0383163014155b61149057600080fd5b33600090815260026020526040902054828110156114c05760405162461bcd60e51b8152600401610793906125c5565b6114ca838261267a565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906114fd908490612662565b90915550506040518381526001600160a01b03851690339060008051602061273b8339815191529060200160405180910390a35060019392505050565b60006115716001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a616333085611dfc565b610b548233611e6d565b60006115856119f0565b6001600160a01b0316336001600160a01b03161461127f5760405162461bcd60e51b815260040161079390612638565b6115bd6119f0565b6001600160a01b0316336001600160a01b0316146115ed5760405162461bcd60e51b815260040161079390612638565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b0389168085529252808320879055519192909160008051602061275b833981519152906116509088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f906116889033908890889088906004016124fd565b602060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190612432565b95945050505050565b6116eb6119f0565b6001600160a01b0316336001600160a01b03161461171b5760405162461bcd60e51b815260040161079390612638565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a616906370a082319060240160206040518083038186803b1580156117a057600080fd5b505afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190612466565b905061180f6001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a616333084611dfc565b6118198133611e6d565b91505090565b834211156118675760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e88115e1c1a5c9959081c195c9b5a5d605a1b6044820152606401610793565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866118b4836126f8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506119158882868686611c51565b8061192857506119288882868686611d41565b61193157600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a9055905189815260008051602061275b833981519152910160405180910390a35050505050505050565b61198d6119f0565b6001600160a01b0316336001600160a01b0316146119bd5760405162461bcd60e51b815260040161079390612638565b600c544210156119cc57600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b6000600c544210611a0d5750600b546001600160a01b031661096b565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a6169063605629d690611a78908b9030908c908c908c908c908c906004016124bc565b602060405180830381600087803b158015611a9257600080fd5b505af1158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aca9190612432565b506113578783611e6d565b611add6119f0565b6001600160a01b0316336001600160a01b031614611b0d5760405162461bcd60e51b815260040161079390612638565b600980546001600160a01b0319166001600160a01b038316179055600554611b359042612662565b600a5550565b6000611b478484611eea565b611b7b6001600160a01b037f00000000000000000000000078223d31298107f3e310b09797b07967832046a6168385611fbc565b509092915050565b6001600160a01b038216611bd95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610793565b8060036000828254611beb9190612662565b90915550506001600160a01b03821660009081526002602052604081208054839290611c18908490612662565b90915550506040518181526001600160a01b0383169060009060008051602061273b833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f9787e776137416f6c7bb54f141e4094b9999b3741d39ee99a2c736d596ce1460602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611d00573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906113575750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611dc1866040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f9787e776137416f6c7bb54f141e4094b9999b3741d39ee99a2c736d596ce1460603c820152605c8101829052600090607c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611cde565b6040516001600160a01b0380851660248301528316604482015260648101829052611e679085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ff1565b50505050565b60007f00000000000000000000000078223d31298107f3e310b09797b07967832046a66001600160a01b031615801590611ed057507f00000000000000000000000078223d31298107f3e310b09797b07967832046a66001600160a01b03163014155b611ed957600080fd5b611ee38284611b83565b5090919050565b6001600160a01b038216611f4a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610793565b6001600160a01b03821660009081526002602052604081208054839290611f7290849061267a565b925050819055508060036000828254611f8b919061267a565b90915550506040518181526000906001600160a01b0384169060008051602061273b83398151915290602001611c45565b6040516001600160a01b038316602482015260448101829052611fec90849063a9059cbb60e01b90606401611e30565b505050565b612003826001600160a01b0316612178565b61204f5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610793565b600080836001600160a01b03168360405161206a91906124a0565b6000604051808303816000865af19150503d80600081146120a7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ac565b606091505b5091509150816120fe5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610793565b805115611e6757808060200190518101906121199190612432565b611e675760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610793565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906107a75750141592915050565b80356001600160a01b0381168114610b5757600080fd5b803560ff81168114610b5757600080fd5b6000602082840312156121e8578081fd5b6107bc826121af565b60008060408385031215612203578081fd5b61220c836121af565b915061221a602084016121af565b90509250929050565b600080600060608486031215612237578081fd5b612240846121af565b925061224e602085016121af565b9150604084013590509250925092565b600080600080600080600060e0888a031215612278578283fd5b612281886121af565b965061228f602089016121af565b955060408801359450606088013593506122ab608089016121c6565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156122d9578182fd5b6122e2836121af565b946020939093013593505050565b600080600060608486031215612304578283fd5b61230d846121af565b925060208401359150612322604085016121af565b90509250925092565b60008060008060608587031215612340578384fd5b612349856121af565b935060208501359250604085013567ffffffffffffffff8082111561236c578384fd5b818701915087601f83011261237f578384fd5b81358181111561238d578485fd5b88602082850101111561239e578485fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156123c7578283fd5b6123d0886121af565b965060208801359550604088013594506123ec606089016121c6565b93506080880135925060a0880135915061240860c089016121af565b905092959891949750929550565b600060208284031215612427578081fd5b81356107bc81612729565b600060208284031215612443578081fd5b81516107bc81612729565b60006020828403121561245f578081fd5b5035919050565b600060208284031215612477578081fd5b5051919050565b60008060408385031215612490578182fd5b8235915061221a602084016121af565b600082516124b2818460208701612691565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156125865783516001600160a01b031683529284019291840191600101612561565b50909695505050505050565b60006020825282518060208401526125b1816040850160208701612691565b601f01601f19169190910160400192915050565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526013908201527245524332303a2061646472657373283078302960681b604082015260600190565b60208082526010908201526f22a92199181d102327a92124a22222a760811b604082015260600190565b6000821982111561267557612675612713565b500190565b60008282101561268c5761268c612713565b500390565b60005b838110156126ac578181015183820152602001612694565b83811115611e675750506000910152565b6002810460018216806126d157607f821691505b602082108114156126f257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561270c5761270c612713565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461273757600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c12de815b116e76753f320610b6abf22c62ed4369cae6d3a0a984d0f41e15ea364736f6c63430008020033
Deployed Bytecode Sourcemap
3584:13207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10830:149;;;;;;:::i;:::-;;:::i;:::-;;;9232:25:1;;;9220:2;9205:18;10830:149:0;;;;;;;;3957:136;;4001:92;3957:136;;10696:126;;;;;;:::i;:::-;;:::i;3667:18::-;;;:::i;:::-;;;;;;;:::i;11747:265::-;;;;;;:::i;:::-;;:::i;:::-;;;9059:14:1;;9052:22;9034:41;;9022:2;9007:18;11747:265:0;8989:92:1;7274:179:0;;;:::i;:::-;;8665:102;;;:::i;15353:909::-;;;;;;:::i;:::-;;:::i;10566:122::-;;;;;;:::i;:::-;;:::i;6197:272::-;;;;;;:::i;:::-;;:::i;3813:137::-;;3855:95;3813:137;;3719:41;;;;;;;;15125:4:1;15113:17;;;15095:36;;15083:2;15068:18;3719:41:0;15050:87:1;4100:41:0;;;;;10432:126;;;:::i;16270:518::-;;;;;;:::i;:::-;;:::i;8318:133::-;;;;;;:::i;:::-;;:::i;4583:24::-;;;;;;4518:27;;;;;-1:-1:-1;;;;;4518:27:0;;;;;;-1:-1:-1;;;;;6283:32:1;;;6265:51;;6253:2;6238:18;4518:27:0;6220:102:1;7994:316:0;;;;;;:::i;:::-;;:::i;13098:920::-;;;;;;:::i;:::-;;:::i;7674:312::-;;;;;;:::i;:::-;;:::i;6989:140::-;;;;;;:::i;:::-;;:::i;4307:26::-;;;;;;9884:193;;;;;;:::i;:::-;;:::i;3769:35::-;;;;;4150:54;;;;;;:::i;:::-;;;;;;;;;;;;;;4645:51;;;;;;:::i;:::-;;;;;;;;;;;;;;8775:349;;;;;;:::i;:::-;;:::i;4389:24::-;;;;;;:::i;:::-;;:::i;4552:22::-;;;;;;6477:78;;;:::i;4451:28::-;;;;;-1:-1:-1;;;;;4451:28:0;;;3692:20;;;:::i;8459:198::-;;;;;;:::i;:::-;;:::i;7567:99::-;;;:::i;:::-;;;;;;;:::i;4614:22::-;;;;;;14916:429;;;;;;:::i;:::-;;:::i;4342:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9687:189;;;;;;:::i;:::-;;:::i;10085:127::-;;;;;;:::i;:::-;;:::i;4486:23::-;;;;;;6738:94;;;;;;:::i;:::-;;:::i;12020:356::-;;;;;;:::i;:::-;;:::i;7461:98::-;;;;;;:::i;:::-;;:::i;9433:246::-;;;:::i;12384:706::-;;;;;;:::i;:::-;;:::i;7137:129::-;;;:::i;4705:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6563:167;;;:::i;9132:293::-;;;;;;:::i;:::-;;:::i;4422:20::-;;;;;-1:-1:-1;;;;;4422:20:0;;;6840:141;;;;;;:::i;:::-;;:::i;10830:149::-;10920:4;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;;;;;;;;;10944:27:::1;10954:4;10960:6;10968:2;10944:9;:27::i;:::-;10937:34:::0;10830:149;-1:-1:-1;;;;10830:149:0:o;10696:126::-;10757:4;10781:33;10791:10;10803:6;10811:2;10781:9;:33::i;:::-;10774:40;10696:126;-1:-1:-1;;;10696:126:0:o;3667:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11747:265::-;11900:10;11823:4;11890:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;11890:30:0;;;;;;;;;;:38;;;11944:36;11823:4;;11890:30;;-1:-1:-1;;;;;;;;;;;11944:36:0;;;11923:5;9232:25:1;;9220:2;9205:18;;9187:76;11944:36:0;;;;;;;;-1:-1:-1;12000:4:0;11747:265;;;;:::o;7274:179::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;7354:11:::1;;7335:15;:30;;7327:39;;;::::0;::::1;;7386:13;::::0;;-1:-1:-1;;;;;7386:13:0;;::::1;7377:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;7377:30:0::1;7403:4;7377:30:::0;;::::1;::::0;;;7431:13;;7418:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;7418:27:0::1;7431:13:::0;;;::::1;7418:27:::0;;;::::1;::::0;;7274:179::o;8665:102::-;8747:12;;8665:102;;:::o;15353:909::-;15443:4;-1:-1:-1;;;;;15468:16:0;;;;;:39;;-1:-1:-1;;;;;;15488:19:0;;15502:4;15488:19;;15468:39;15460:48;;;;;;-1:-1:-1;;;;;15523:18:0;;15531:10;15523:18;15519:468;;-1:-1:-1;;;;;15637:15:0;;15619;15637;;;:9;:15;;;;;;;;15653:10;15637:27;;;;;;;;-1:-1:-1;;15683:28:0;;15679:297;;15751:5;15740:7;:16;;15732:61;;;;-1:-1:-1;;;15732:61:0;;12720:2:1;15732:61:0;;;12702:21:1;;;12739:18;;;12732:30;12798:34;12778:18;;;12771:62;12850:18;;15732:61:0;12692:182:1;15732:61:0;15812:15;15830;15840:5;15830:7;:15;:::i;:::-;-1:-1:-1;;;;;15864:15:0;;;;;;:9;:15;;;;;;;;15880:10;15864:27;;;;;;;;;;:37;;;15925:35;9232:25:1;;;15864:37:0;;-1:-1:-1;15880:10:0;;-1:-1:-1;;;;;;;;;;;15925:35:0;9205:18:1;15925:35:0;;;;;;;15679:297;;15519:468;;-1:-1:-1;;;;;16017:15:0;;15999;16017;;;:9;:15;;;;;;16051:16;;;;16043:67;;;;-1:-1:-1;;;16043:67:0;;;;;;;:::i;:::-;16141:15;16151:5;16141:7;:15;:::i;:::-;-1:-1:-1;;;;;16123:15:0;;;;;;;:9;:15;;;;;;:33;;;;16167:13;;;;;;;;:22;;16184:5;;16123:15;16167:22;;16184:5;;16167:22;:::i;:::-;;;;;;;;16220:2;-1:-1:-1;;;;;16205:25:0;16214:4;-1:-1:-1;;;;;16205:25:0;-1:-1:-1;;;;;;;;;;;16224:5:0;16205:25;;;;9232::1;;9220:2;9205:18;;9187:76;16205:25:0;;;;;;;;-1:-1:-1;16250:4:0;;15353:909;-1:-1:-1;;;;15353:909:0:o;10566:122::-;10615:4;10639:41;10649:10;10661:6;10669:10;10639:9;:41::i;:::-;10632:48;;10566:122;;;;:::o;6197:272::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;6270:5:::1;::::0;::::1;;6262:14;;;::::0;::::1;;6287:5;:14:::0;;-1:-1:-1;;;;;6287:14:0;;::::1;-1:-1:-1::0;;;;;;6287:14:0;;::::1;::::0;::::1;::::0;;;6312:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;6287:5:::1;6344:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;6344:23:0;;::::1;6287:14:::0;6344:23;;::::1;::::0;;;6378:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;6422:15:::1;6409:10;:28:::0;6448:5:::1;:13:::0;;;;::::1;::::0;;6197:272::o;10432:126::-;10504:10;10470:4;10516:21;;;:9;:21;;;;;;10470:4;;10494:56;;10504:10;10494:9;:56::i;:::-;10487:63;;10432:126;:::o;16270:518::-;16367:4;-1:-1:-1;;;;;16392:16:0;;;;;:39;;-1:-1:-1;;;;;;16412:19:0;;16426:4;16412:19;;16392:39;16384:48;;;;;;16473:10;16445:15;16463:21;;;:9;:21;;;;;;16503:16;;;;16495:71;;;;-1:-1:-1;;;16495:71:0;;13081:2:1;16495:71:0;;;13063:21:1;13120:2;13100:18;;;13093:30;13159:34;13139:18;;;13132:62;-1:-1:-1;;;13210:18:1;;;13203:40;13260:19;;16495:71:0;13053:232:1;16495:71:0;16603:15;16613:5;16603:7;:15;:::i;:::-;16589:10;16579:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;16629:13:0;;;;;;;:22;;16646:5;;16579:21;16629:22;;16646:5;;16629:22;:::i;:::-;;;;-1:-1:-1;;16667:31:0;;9232:25:1;;;-1:-1:-1;;;;;16667:31:0;;;16676:10;;-1:-1:-1;;;;;;;;;;;16667:31:0;9220:2:1;9205:18;16667:31:0;;;;;;;16718:62;;-1:-1:-1;;;16718:62:0;;-1:-1:-1;;;;;16718:37:0;;;;;:62;;16756:10;;16768:5;;16775:4;;;;16718:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16711:69;16270:518;-1:-1:-1;;;;;;16270:518:0:o;8318:133::-;5121:10;8387:4;5112:20;;;:8;:20;;;;;;;;5104:49;;;;-1:-1:-1;;;5104:49:0;;;;;;;:::i;:::-;8404:17:::1;8410:2;8414:6;8404:5;:17::i;:::-;-1:-1:-1::0;8439:4:0::1;8318:133:::0;;;;:::o;7994:316::-;8062:4;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8087:22:0;::::1;8079:54;;;;-1:-1:-1::0;;;8079:54:0::1;;;;;;;:::i;:::-;8144:12;:23:::0;;-1:-1:-1;;;;;;8144:23:0::1;-1:-1:-1::0;;;;;8144:23:0;::::1;;::::0;;8209:5:::1;::::0;8191:23:::1;::::0;:15:::1;:23;:::i;:::-;8178:10;:36:::0;;;8255:12:::1;::::0;8248:5:::1;::::0;8230:50:::1;::::0;-1:-1:-1;;;;;8255:12:0;;::::1;::::0;8248:5;;::::1;::::0;8230:50:::1;::::0;8255:12:::1;::::0;8230:50:::1;-1:-1:-1::0;8298:4:0::1;7994:316:::0;;;:::o;13098:920::-;13245:4;13289:8;13270:15;:27;;13262:61;;;;-1:-1:-1;;;13262:61:0;;13492:2:1;13262:61:0;;;13474:21:1;13531:2;13511:18;;;13504:30;-1:-1:-1;;;13550:18:1;;;13543:51;13611:18;;13262:61:0;13464:171:1;13262:61:0;-1:-1:-1;;;;;13516:14:0;;13336:18;13516:14;;;:6;:14;;;;;:16;;4001:92;;13446:6;;13471:2;;13492:5;;13516:16;13336:18;13516:16;;;:::i;:::-;;;;-1:-1:-1;13381:179:0;;;;;;9555:25:1;;;;-1:-1:-1;;;;;9654:15:1;;;9634:18;;;9627:43;9706:15;;;;9686:18;;;9679:43;9738:18;;;9731:34;9781:19;;;9774:35;9825:19;;;9818:35;;;9527:19;;13381:179:0;;;;;;;;;;;;13357:204;;;;;;13336:225;;13582:41;13595:6;13603:10;13615:1;13618;13621;13582:12;:41::i;:::-;:92;;;;13627:47;13646:6;13654:10;13666:1;13669;13672;13627:18;:47::i;:::-;13574:101;;;;;;-1:-1:-1;;;;;13696:16:0;;;;;:39;;-1:-1:-1;;;;;;13716:19:0;;13730:4;13716:19;;13696:39;13688:48;;;;;;-1:-1:-1;;;;;13767:17:0;;13749:15;13767:17;;;:9;:17;;;;;;13803:16;;;;13795:67;;;;-1:-1:-1;;;13795:67:0;;;;;;;:::i;:::-;13895:15;13905:5;13895:7;:15;:::i;:::-;-1:-1:-1;;;;;13875:17:0;;;;;;;:9;:17;;;;;;:35;;;;13921:13;;;;;;;;:22;;13938:5;;13875:17;13921:22;;13938:5;;13921:22;:::i;:::-;;;;;;;;13976:2;-1:-1:-1;;;;;13959:27:0;13968:6;-1:-1:-1;;;;;13959:27:0;-1:-1:-1;;;;;;;;;;;13980:5:0;13959:27;;;;9232:25:1;;9220:2;9205:18;;9187:76;13959:27:0;;;;;;;;-1:-1:-1;14006:4:0;;13098:920;-1:-1:-1;;;;;;;;;13098:920:0:o;7674:312::-;7741:4;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7766:22:0;::::1;7758:54;;;;-1:-1:-1::0;;;7758:54:0::1;;;;;;;:::i;:::-;7823:12;:23:::0;;-1:-1:-1;;;;;;7823:23:0::1;-1:-1:-1::0;;;;;7823:23:0;::::1;;::::0;;7888:5:::1;::::0;7870:23:::1;::::0;:15:::1;:23;:::i;:::-;7857:10;:36:::0;;;7931:12:::1;::::0;7924:5:::1;::::0;7909:47:::1;::::0;-1:-1:-1;;;;;7931:12:0;;::::1;::::0;7924:5;;::::1;::::0;7909:47:::1;::::0;7931:12:::1;::::0;7909:47:::1;-1:-1:-1::0;7974:4:0::1;7674:312:::0;;;:::o;6989:140::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;7053:12:::1;:21:::0;;-1:-1:-1;;;;;;7053:21:0::1;-1:-1:-1::0;;;;;7053:21:0;::::1;;::::0;;7116:5:::1;::::0;7098:23:::1;::::0;:15:::1;:23;:::i;:::-;7085:10;:36:::0;-1:-1:-1;6989:140:0:o;9884:193::-;9944:4;9961:70;-1:-1:-1;;;;;9968:10:0;9961:35;9997:10;10017:4;10024:6;9961:35;:70::i;:::-;10049:20;10058:6;10066:2;10049:8;:20::i;8775:349::-;8929:74;;-1:-1:-1;;;8929:74:0;;8912:4;;-1:-1:-1;;;;;8936:10:0;8929:25;;;;:74;;8955:6;;8971:4;;8978:5;;8985:8;;8995:1;;8998;;9001;;8929:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9014:65:0;;-1:-1:-1;;;;;;;9021:10:0;9014:35;;-1:-1:-1;9050:6:0;9066:4;9073:5;9014:35;:65::i;:::-;9097:19;9106:5;9113:2;9097:8;:19::i;:::-;9090:26;8775:349;-1:-1:-1;;;;;;;;8775:349:0:o;4389:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4389:24:0;;-1:-1:-1;4389:24:0;:::o;6477:78::-;6515:7;6542:5;:3;:5::i;3692:20::-;;;;;;;:::i;8459:198::-;5121:10;8530:4;5112:20;;;:8;:20;;;;;;;;5104:49;;;;-1:-1:-1;;;5104:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8555:18:0;::::1;8547:50;;;;-1:-1:-1::0;;;8547:50:0::1;;;;;;;:::i;:::-;8608:19;8614:4;8620:6;8608:5;:19::i;7567:99::-:0;7615:16;7651:7;7644:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7644:14:0;;;;;;;;;;;;;;;;;;;;;;;7567:99;:::o;14916:429::-;14988:4;-1:-1:-1;;;;;15013:16:0;;;;;:39;;-1:-1:-1;;;;;;15033:19:0;;15047:4;15033:19;;15013:39;15005:48;;;;;;15092:10;15064:15;15082:21;;;:9;:21;;;;;;15122:16;;;;15114:67;;;;-1:-1:-1;;;15114:67:0;;;;;;;:::i;:::-;15218:15;15228:5;15218:7;:15;:::i;:::-;15204:10;15194:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;15244:13:0;;;;;;;:22;;15261:5;;15194:21;15244:22;;15261:5;;15244:22;:::i;:::-;;;;-1:-1:-1;;15282:31:0;;9232:25:1;;;-1:-1:-1;;;;;15282:31:0;;;15291:10;;-1:-1:-1;;;;;;;;;;;15282:31:0;9220:2:1;9205:18;15282:31:0;;;;;;;-1:-1:-1;15333:4:0;;14916:429;-1:-1:-1;;;14916:429:0:o;9687:189::-;9735:4;9752:70;-1:-1:-1;;;;;9759:10:0;9752:35;9788:10;9808:4;9815:6;9752:35;:70::i;:::-;9840:28;9849:6;9857:10;9840:8;:28::i;10085:127::-;10160:4;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;6738:94::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;6804:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;6804:20:0;;::::1;::::0;;;::::1;::::0;;6738:94::o;12020:356::-;12201:10;12124:4;12191:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;12191:30:0;;;;;;;;;;:38;;;12245:36;12124:4;;12191:30;;-1:-1:-1;;;;;;;;;;;12245:36:0;;;12224:5;9232:25:1;;9220:2;9205:18;;9187:76;12245:36:0;;;;;;;;12301:67;;-1:-1:-1;;;12301:67:0;;-1:-1:-1;;;;;12301:42:0;;;;;:67;;12344:10;;12356:5;;12363:4;;;;12301:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12294:74;12020:356;-1:-1:-1;;;;;12020:356:0:o;7461:98::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7528:15:0::1;7546:5;7528:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;7528:23:0::1;::::0;;7461:98::o;9433:246::-;9502:40;;-1:-1:-1;;;9502:40:0;;9531:10;9502:40;;;6265:51:1;9470:4:0;;;;-1:-1:-1;;;;;9509:10:0;9502:28;;;;6238:18:1;;9502:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9487:55;-1:-1:-1;9553:71:0;-1:-1:-1;;;;;9560:10:0;9553:35;9589:10;9609:4;9487:55;9553:35;:71::i;:::-;9642:29;9651:7;9660:10;9642:8;:29::i;:::-;9635:36;;;9433:246;:::o;12384:706::-;12553:8;12534:15;:27;;12526:61;;;;-1:-1:-1;;;12526:61:0;;13492:2:1;12526:61:0;;;13474:21:1;13531:2;13511:18;;;13504:30;-1:-1:-1;;;13550:18:1;;;13543:51;13611:18;;12526:61:0;13464:171:1;12526:61:0;-1:-1:-1;;;;;12783:14:0;;12600:18;12783:14;;;:6;:14;;;;;:16;;3855:95;;12708:6;;12733:7;;12759:5;;12783:16;12600:18;12783:16;;;:::i;:::-;;;;-1:-1:-1;12645:182:0;;;;;;9555:25:1;;;;-1:-1:-1;;;;;9654:15:1;;;9634:18;;;9627:43;9706:15;;;;9686:18;;;9679:43;9738:18;;;9731:34;9781:19;;;9774:35;9825:19;;;9818:35;;;9527:19;;12645:182:0;;;;;;;;;;;;12621:207;;;;;;12600:228;;12849:41;12862:6;12870:10;12882:1;12885;12888;12849:12;:41::i;:::-;:92;;;;12894:47;12913:6;12921:10;12933:1;12936;12939;12894:18;:47::i;:::-;12841:101;;;;;;-1:-1:-1;;;;;13000:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;13050:32;;9232:25:1;;;-1:-1:-1;;;;;;;;;;;13050:32:0;9205:18:1;13050:32:0;;;;;;;12384:706;;;;;;;;:::o;7137:129::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;7216:10:::1;;7197:15;:29;;7189:38;;;::::0;::::1;;7246:12;::::0;7238:5:::1;:20:::0;;-1:-1:-1;;;;;;7238:20:0::1;-1:-1:-1::0;;;;;7246:12:0;;::::1;7238:20:::0;;;::::1;::::0;;7137:129::o;6563:167::-;6599:7;6642:10;;6623:15;:29;6619:81;;-1:-1:-1;6676:12:0;;-1:-1:-1;;;;;6676:12:0;6669:19;;6619:81;-1:-1:-1;6717:5:0;;-1:-1:-1;;;;;6717:5:0;6563:167;:::o;9132:293::-;9294:86;;-1:-1:-1;;;9294:86:0;;9277:4;;-1:-1:-1;;;;;9301:10:0;9294:37;;;;:86;;9332:6;;9348:4;;9355:5;;9362:8;;9372:1;;9375;;9378;;9294:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9398:19;9407:5;9414:2;9398:8;:19::i;6840:141::-;5235:5;:3;:5::i;:::-;-1:-1:-1;;;;;5221:19:0;:10;-1:-1:-1;;;;;5221:19:0;;5213:48;;;;-1:-1:-1;;;5213:48:0;;;;;;;:::i;:::-;6904:13:::1;:21:::0;;-1:-1:-1;;;;;;6904:21:0::1;-1:-1:-1::0;;;;;6904:21:0;::::1;;::::0;;6968:5:::1;::::0;6950:23:::1;::::0;:15:::1;:23;:::i;:::-;6936:11;:37:::0;-1:-1:-1;6840:141:0:o;10987:198::-;11063:4;11080:19;11086:4;11092:6;11080:5;:19::i;:::-;11110:43;-1:-1:-1;;;;;11117:10:0;11110:31;11142:2;11146:6;11110:31;:43::i;:::-;-1:-1:-1;11171:6:0;;10987:198;-1:-1:-1;;10987:198:0:o;11193:268::-;-1:-1:-1;;;;;11269:21:0;;11261:65;;;;-1:-1:-1;;;11261:65:0;;14613:2:1;11261:65:0;;;14595:21:1;14652:2;14632:18;;;14625:30;14691:33;14671:18;;;14664:61;14742:18;;11261:65:0;14585:181:1;11261:65:0;11355:6;11339:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11372:18:0;;;;;;:9;:18;;;;;:28;;11394:6;;11372:18;:28;;11394:6;;11372:28;:::i;:::-;;;;-1:-1:-1;;11416:37:0;;9232:25:1;;;-1:-1:-1;;;;;11416:37:0;;;11433:1;;-1:-1:-1;;;;;;;;;;;11416:37:0;9220:2:1;9205:18;11416:37:0;;;;;;;;11193:268;;:::o;14026:399::-;14194:110;;-1:-1:-1;;;14194:110:0;;;5980:27:1;14258:16:0;6023:11:1;;;6016:27;6059:12;;;6052:28;;;14138:4:0;;;;6096:12:1;;14194:110:0;;;-1:-1:-1;;14194:110:0;;;;;;;;;14170:135;;14194:110;14170:135;;;;14316:14;14333:24;;;;;;;;;10091:25:1;;;10164:4;10152:17;;10132:18;;;10125:45;;;;10186:18;;;10179:34;;;10229:18;;;10222:34;;;14170:135:0;;-1:-1:-1;14316:14:0;14333:24;;10063:19:1;;14333:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14333:24:0;;-1:-1:-1;;14333:24:0;;;-1:-1:-1;;;;;;;14376:20:0;;;;;;:40;;;14410:6;-1:-1:-1;;;;;14400:16:0;:6;-1:-1:-1;;;;;14400:16:0;;14368:49;14026:399;-1:-1:-1;;;;;;;;14026:399:0:o;14433:290::-;14551:4;14568:12;14583:20;14592:10;14823:76;;5542:66:1;14823:76:0;;;5530:79:1;14876:16:0;5625:12:1;;;5618:28;5662:12;;;5655:28;;;14786:7:0;;5699:12:1;;14823:76:0;;;;;;;;;;;;14813:87;;;;;;14806:94;;14731:177;;;;14583:20;14631:24;;;14614:14;14631:24;;;;;;;;;10091:25:1;;;10164:4;10152:17;;10132:18;;;10125:45;;;;10186:18;;;10179:34;;;10229:18;;;10222:34;;;14568:35:0;;-1:-1:-1;14614:14:0;14631:24;;10063:19:1;;14631:24:0;10045:217:1;2420:201:0;2544:68;;-1:-1:-1;;;;;6585:15:1;;;2544:68:0;;;6567:34:1;6637:15;;6617:18;;;6610:43;6669:18;;;6662:34;;;2518:95:0;;2537:5;;-1:-1:-1;;;2567:27:0;6502:18:1;;2544:68:0;;;;-1:-1:-1;;2544:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:68:0;-1:-1:-1;;;;;;2544:68:0;;;;;;;;;;2518:18;:95::i;:::-;2420:201;;;;:::o;10220:204::-;10281:4;10306:10;-1:-1:-1;;;;;10306:26:0;;;;;:57;;-1:-1:-1;10336:10:0;-1:-1:-1;;;;;10336:27:0;10358:4;10336:27;;10306:57;10298:66;;;;;;10375:17;10381:2;10385:6;10375:5;:17::i;:::-;-1:-1:-1;10410:6:0;;10220:204;-1:-1:-1;10220:204:0:o;11469:270::-;-1:-1:-1;;;;;11545:21:0;;11537:67;;;;-1:-1:-1;;;11537:67:0;;11973:2:1;11537:67:0;;;11955:21:1;12012:2;11992:18;;;11985:30;12051:34;12031:18;;;12024:62;-1:-1:-1;;;12102:18:1;;;12095:31;12143:19;;11537:67:0;11945:223:1;11537:67:0;-1:-1:-1;;;;;11617:18:0;;;;;;:9;:18;;;;;:28;;11639:6;;11617:18;:28;;11639:6;;11617:28;:::i;:::-;;;;;;;;11672:6;11656:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;11694:37:0;;9232:25:1;;;11720:1:0;;-1:-1:-1;;;;;11694:37:0;;;-1:-1:-1;;;;;;;;;;;11694:37:0;9220:2:1;9205:18;11694:37:0;9187:76:1;2239:173:0;2345:58;;-1:-1:-1;;;;;7574:32:1;;2345:58:0;;;7556:51:1;7623:18;;;7616:34;;;2319:85:0;;2338:5;;-1:-1:-1;;;2368:23:0;7529:18:1;;2345:58:0;7511:145:1;2319:85:0;2239:173;;;:::o;2979:598::-;3067:27;3075:5;-1:-1:-1;;;;;3067:25:0;;:27::i;:::-;3059:71;;;;-1:-1:-1;;;3059:71:0;;14253:2:1;3059:71:0;;;14235:21:1;14292:2;14272:18;;;14265:30;14331:33;14311:18;;;14304:61;14382:18;;3059:71:0;14225:181:1;3059:71:0;3204:12;3218:23;3253:5;-1:-1:-1;;;;;3245:19:0;3265:4;3245:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3203:67;;;;3289:7;3281:52;;;;-1:-1:-1;;;3281:52:0;;11264:2:1;3281:52:0;;;11246:21:1;;;11283:18;;;11276:30;11342:34;11322:18;;;11315:62;11394:18;;3281:52:0;11236:182:1;3281:52:0;3350:17;;:21;3346:224;;3492:10;3481:30;;;;;;;;;;;;:::i;:::-;3473:85;;;;-1:-1:-1;;;3473:85:0;;13842:2:1;3473:85:0;;;13824:21:1;13881:2;13861:18;;;13854:30;13920:34;13900:18;;;13893:62;-1:-1:-1;;;13971:18:1;;;13964:40;14021:19;;3473:85:0;13814:232:1;1856:317:0;1916:4;2082:20;;1982:66;2122:15;;;;;:42;;-1:-1:-1;2141:23:0;;;2114:51;-1:-1:-1;;1856:317: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:190::-;;4442:2;4430:9;4421:7;4417:23;4413:32;4410:2;;;4463:6;4455;4448:22;4410:2;-1:-1:-1;4491:23:1;;4400:120;-1:-1:-1;4400:120:1:o;4525:194::-;;4648:2;4636:9;4627:7;4623:23;4619:32;4616:2;;;4669:6;4661;4654:22;4616:2;-1:-1:-1;4697:16:1;;4606:113;-1:-1:-1;4606:113:1:o;4724:264::-;;;4853:2;4841:9;4832:7;4828:23;4824:32;4821:2;;;4874:6;4866;4859:22;4821:2;4915:9;4902:23;4892:33;;4944:38;4978:2;4967:9;4963:18;4944:38;:::i;4993:274::-;;5160:6;5154:13;5176:53;5222:6;5217:3;5210:4;5202:6;5198:17;5176:53;:::i;:::-;5245:16;;;;;5130:137;-1:-1:-1;;5130:137:1:o;6707:670::-;-1:-1:-1;;;;;7074:15:1;;;7056:34;;7126:15;;;;7121:2;7106:18;;7099:43;7173:2;7158:18;;7151:34;;;;7216:2;7201:18;;7194:34;;;;7277:4;7265:17;7259:3;7244:19;;7237:46;7036:3;7299:19;;7292:35;7358:3;7343:19;;7336:35;;;;7005:3;6990:19;;6972:405::o;7661:562::-;-1:-1:-1;;;;;7874:32:1;;7856:51;;7938:2;7923:18;;7916:34;;;7986:2;7981;7966:18;;7959:30;;;8005:18;;7998:34;;;7661:562;8025:6;8075;8069:3;8054:19;;8041:49;8110:22;;;8134:3;8106:32;;;8099:46;;;;8206:2;8185:15;;;-1:-1:-1;;8181:29:1;8166:45;8162:55;;7846:377;-1:-1:-1;;;7846:377:1:o;8228:661::-;8399:2;8451:21;;;8521:13;;8424:18;;;8543:22;;;8228:661;;8399:2;8622:15;;;;8596:2;8581:18;;;8228:661;8668:195;8682:6;8679:1;8676:13;8668:195;;;8747:13;;-1:-1:-1;;;;;8743:39:1;8731:52;;8838:15;;;;8803:12;;;;8779:1;8697:9;8668:195;;;-1:-1:-1;8880:3:1;;8379:510;-1:-1:-1;;;;;;8379:510:1:o;10267:383::-;;10416:2;10405:9;10398:21;10448:6;10442:13;10491:6;10486:2;10475:9;10471:18;10464:34;10507:66;10566:6;10561:2;10550:9;10546:18;10541:2;10533:6;10529:15;10507:66;:::i;:::-;10634:2;10613:15;-1:-1:-1;;10609:29:1;10594:45;;;;10641:2;10590:54;;10388:262;-1:-1:-1;;10388:262:1:o;10655:402::-;10857:2;10839:21;;;10896:2;10876:18;;;10869:30;10935:34;10930:2;10915:18;;10908:62;-1:-1:-1;;;11001:2:1;10986:18;;10979:36;11047:3;11032:19;;10829:228::o;11423:343::-;11625:2;11607:21;;;11664:2;11644:18;;;11637:30;-1:-1:-1;;;11698:2:1;11683:18;;11676:49;11757:2;11742:18;;11597:169::o;12173:340::-;12375:2;12357:21;;;12414:2;12394:18;;;12387:30;-1:-1:-1;;;12448:2:1;12433:18;;12426:46;12504:2;12489:18;;12347:166::o;15142:128::-;;15213:1;15209:6;15206:1;15203:13;15200:2;;;15219:18;;:::i;:::-;-1:-1:-1;15255:9:1;;15190:80::o;15275:125::-;;15343:1;15340;15337:8;15334:2;;;15348:18;;:::i;:::-;-1:-1:-1;15385:9:1;;15324:76::o;15405:258::-;15477:1;15487:113;15501:6;15498:1;15495:13;15487:113;;;15577:11;;;15571:18;15558:11;;;15551:39;15523:2;15516:10;15487:113;;;15618:6;15615:1;15612:13;15609:2;;;-1:-1:-1;;15653:1:1;15635:16;;15628:27;15458:205::o;15668:380::-;15753:1;15743:12;;15800:1;15790:12;;;15811:2;;15865:4;15857:6;15853:17;15843:27;;15811:2;15918;15910:6;15907:14;15887:18;15884:38;15881:2;;;15964:10;15959:3;15955:20;15952:1;15945:31;15999:4;15996:1;15989:15;16027:4;16024:1;16017:15;15881:2;;15723:325;;;:::o;16053:135::-;;-1:-1:-1;;16113:17:1;;16110:2;;;16133:18;;:::i;:::-;-1:-1:-1;16180:1:1;16169:13;;16100:88::o;16193:127::-;16254:10;16249:3;16245:20;16242:1;16235:31;16285:4;16282:1;16275:15;16309:4;16306:1;16299:15;16325:118;16411:5;16404:13;16397:21;16390:5;16387:32;16377:2;;16433:1;16430;16423:12;16377:2;16367:76;:::o
Swarm Source
ipfs://c12de815b116e76753f320610b6abf22c62ed4369cae6d3a0a984d0f41e15ea3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.