Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 9,232 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
New_contract | 2994260 | 46 days ago | IN | 0 ETH | 0.00065766 | ||||
New_contract | 2994240 | 46 days ago | IN | 0 ETH | 0.00062836 | ||||
New_contract | 2817302 | 73 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2817209 | 73 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2815266 | 73 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2589037 | 107 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2578383 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2577364 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2576801 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2576336 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2575970 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2575902 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2575799 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2575744 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2575685 | 109 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2555056 | 112 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2549538 | 113 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2549184 | 113 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2548915 | 113 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2548707 | 113 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2548652 | 113 days ago | IN | 0 ETH | 0.01202764 | ||||
New_contract | 2544846 | 114 days ago | IN | 0 ETH | 0.01202776 | ||||
New_contract | 2544313 | 114 days ago | IN | 0 ETH | 0.0120762 | ||||
New_contract | 2543623 | 114 days ago | IN | 0 ETH | 0.01209614 | ||||
New_contract | 2543619 | 114 days ago | IN | 0 ETH | 0.01208537 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Test_newToken_depositDG
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./token_automated_test.sol"; interface Degate { function deposit(address from,address to,address tokenAddress,uint248 amount,bytes memory extraData) external; } interface Erc20{ function approve(address spender, uint256 amount) external; } contract Test_newToken_depositDG{ // event contract_deployed( // address _from // ); constructor(){ // new ERC20(); } function new_contract(string memory name,string memory symbol,uint8 decimals) public { // ERC20 erc20=new ERC20(); // address target = address(erc20); // address_b = new address ERC20(); // address_c = new address ERC20(); // address_d = new address ERC20(); // address_e = new address ERC20(); // address_f = new address ERC20(); // address_g = new address ERC20(); // emit contract_deployed(target); new ERC20(name,symbol,decimals); } function mint_batch(uint256 times,string memory name,string memory symbol,uint8 decimals) external{ for (uint i=0;i<times; i++){ new ERC20(name,symbol,decimals); } } function tokendeposit_batch(address[] calldata listAddress,address exchangeAddress) external{ for (uint i=0;i<listAddress.length; i++){ _tokendeposit(listAddress[i],exchangeAddress); } } function approve_deposit_batch(address[] calldata listAddress,address exchangeAddress,address depositAddress)external{ for (uint i=0;i<listAddress.length; i++){ _approve_erc20(depositAddress,listAddress[i]); _tokendeposit(listAddress[i],exchangeAddress); } } function tokendeposit_batch_other(address[] calldata listAddress,address exchangeAddress,address otherAddress) external{ for (uint i=0;i<listAddress.length; i++){ // _tokendeposit(listAddress[i],exchangeAddress); _tokendeposit_other_add(listAddress[i] ,exchangeAddress,otherAddress); } } function approve_deposit_batch_other(address[] calldata listAddress,address exchangeAddress,address depositAddress,address otherAddress)external{ for (uint i=0;i<listAddress.length; i++){ _approve_erc20(depositAddress,listAddress[i]); // _tokendeposit(listAddress[i],exchangeAddress); _tokendeposit_other_add(listAddress[i],exchangeAddress,otherAddress); } } function approve_batch(address[] calldata tokenAddress,address depositAddress) public{ for (uint i=0;i<tokenAddress.length; i++){ _approve_erc20(depositAddress,tokenAddress[i]); } } function _tokendeposit(address tokenAddress,address exchangeAddress) public{ _deposit_dg(address(this),tx.origin,tokenAddress,10000000000000000000000000,"0x00",exchangeAddress); } function _tokendeposit_other_add(address tokenAddress,address exchangeAddress,address otherAddress) public{ _deposit_dg(address(this),otherAddress,tokenAddress,10000000000000000000000000,"0x00",exchangeAddress); } function _deposit_dg (address from,address to,address tokenAddress,uint248 amount,bytes memory extraData,address exchangeAddress) public{ Degate dg = Degate(exchangeAddress); dg.deposit(from,to,tokenAddress,amount,extraData); } function _approve_erc20(address spender,address tokenAddress) public{ Erc20 tk20 = Erc20(tokenAddress); tk20.approve(spender, 100000000000000000000000000000); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import "@openzeppelin/contracts/utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ // interface Degate { // function deposit(address from,address to,address tokenAddress,uint248 amount,bytes memory extraData) external; // } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ // constructor(string memory name_, string memory symbol_) { constructor(string memory name,string memory symbol,uint8 decimals) { _name = name; _symbol = symbol; _decimals = decimals; _mint(msg.sender,100000000000000000000000000000); _mint(tx.origin,100000000000000000000000000000); // _approve(msg.sender, approve_to, 100000000000000000000000000000); // _approve(tx.origin, approve_to, 100000000000000000000000000000); // _approve(msg.sender, 0x3FAf230c7041000072c0390d6333366A3bc04061, 100000000000000000000000000000); // _deposit_dg(address(this),tx.origin,address(this),1000000000000000000000000,"0x00"); } // function _deposit_dg (address from,address to,address tokenAddress,uint248 amount,bytes memory extraData) public{ // Degate dg = Degate(0x0821414fe4c7dD37e14693DaD62BCf9e302Ba827); // dg.deposit(from,to,tokenAddress,amount,extraData); // } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { // decimals = return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) public { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"_approve_erc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint248","name":"amount","type":"uint248"},{"internalType":"bytes","name":"extraData","type":"bytes"},{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"_deposit_dg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"_tokendeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"exchangeAddress","type":"address"},{"internalType":"address","name":"otherAddress","type":"address"}],"name":"_tokendeposit_other_add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenAddress","type":"address[]"},{"internalType":"address","name":"depositAddress","type":"address"}],"name":"approve_batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"listAddress","type":"address[]"},{"internalType":"address","name":"exchangeAddress","type":"address"},{"internalType":"address","name":"depositAddress","type":"address"}],"name":"approve_deposit_batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"listAddress","type":"address[]"},{"internalType":"address","name":"exchangeAddress","type":"address"},{"internalType":"address","name":"depositAddress","type":"address"},{"internalType":"address","name":"otherAddress","type":"address"}],"name":"approve_deposit_batch_other","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"times","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"name":"mint_batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"name":"new_contract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"listAddress","type":"address[]"},{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"tokendeposit_batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"listAddress","type":"address[]"},{"internalType":"address","name":"exchangeAddress","type":"address"},{"internalType":"address","name":"otherAddress","type":"address"}],"name":"tokendeposit_batch_other","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052348015600e575f80fd5b50612b278061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c8063a1c0e4281161006f578063a1c0e42814610137578063a94eb01c14610153578063ce43567c1461016f578063e5d57d341461018b578063eedd8d72146101a7578063ff0549ee146101c3576100a7565b806324fe8e9f146100ab57806326d04eac146100c7578063404acea0146100e35780634a632231146100ff5780639a10be361461011b575b5f80fd5b6100c560048036038101906100c09190610811565b6101df565b005b6100e160048036038101906100dc9190610913565b61025a565b005b6100fd60048036038101906100f89190610997565b6102df565b005b610119600480360381019061011491906109f4565b610330565b005b61013560048036038101906101309190610a44565b610383565b005b610151600480360381019061014c9190610ab5565b6103d6565b005b61016d60048036038101906101689190610ab5565b610428565b005b61018960048036038101906101849190610bc7565b6104a6565b005b6101a560048036038101906101a09190610997565b6104e1565b005b6101c160048036038101906101bc9190610a44565b610532565b005b6101dd60048036038101906101d89190610c82565b6105b5565b005b5f8190508073ffffffffffffffffffffffffffffffffffffffff16638070f2ca88888888886040518663ffffffff1660e01b8152600401610224959493929190610d9c565b5f604051808303815f87803b15801561023b575f80fd5b505af115801561024d573d5f803e3d5ffd5b5050505050505050505050565b5f5b858590508110156102d7576102988387878481811061027e5761027d610df4565b5b90506020020160208101906102939190610e21565b610428565b6102ca8686838181106102ae576102ad610df4565b5b90506020020160208101906102c39190610e21565b8584610330565b808060010191505061025c565b505050505050565b5f5b8383905081101561032a5761031d8285858481811061030357610302610df4565b5b90506020020160208101906103189190610e21565b610428565b80806001019150506102e1565b50505050565b61037e3082856a084595161401484a0000006040518060400160405280600481526020017f3078303000000000000000000000000000000000000000000000000000000000815250876101df565b505050565b5f5b848490508110156103cf576103c28585838181106103a6576103a5610df4565b5b90506020020160208101906103bb9190610e21565b8484610330565b8080600101915050610385565b5050505050565b6104243032846a084595161401484a0000006040518060400160405280600481526020017f3078303000000000000000000000000000000000000000000000000000000000815250866101df565b5050565b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3846c01431e0fae6d7217caa00000006040518363ffffffff1660e01b8152600401610474929190610e8e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b50505050505050565b8282826040516104b590610609565b6104c193929190610f16565b604051809103905ff0801580156104da573d5f803e3d5ffd5b5050505050565b5f5b8383905081101561052c5761051f84848381811061050457610503610df4565b5b90506020020160208101906105199190610e21565b836103d6565b80806001019150506104e3565b50505050565b5f5b848490508110156105ae576105708286868481811061055657610555610df4565b5b905060200201602081019061056b9190610e21565b610428565b6105a185858381811061058657610585610df4565b5b905060200201602081019061059b9190610e21565b846103d6565b8080600101915050610534565b5050505050565b5f5b84811015610602578383836040516105ce90610609565b6105da93929190610f16565b604051809103905ff0801580156105f3573d5f803e3d5ffd5b505080806001019150506105b7565b5050505050565b611b9880610f5a83390190565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61065082610627565b9050919050565b61066081610646565b811461066a575f80fd5b50565b5f8135905061067b81610657565b92915050565b5f7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6106b481610681565b81146106be575f80fd5b50565b5f813590506106cf816106ab565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610723826106dd565b810181811067ffffffffffffffff82111715610742576107416106ed565b5b80604052505050565b5f610754610616565b9050610760828261071a565b919050565b5f67ffffffffffffffff82111561077f5761077e6106ed565b5b610788826106dd565b9050602081019050919050565b828183375f83830152505050565b5f6107b56107b084610765565b61074b565b9050828152602081018484840111156107d1576107d06106d9565b5b6107dc848285610795565b509392505050565b5f82601f8301126107f8576107f76106d5565b5b81356108088482602086016107a3565b91505092915050565b5f805f805f8060c0878903121561082b5761082a61061f565b5b5f61083889828a0161066d565b965050602061084989828a0161066d565b955050604061085a89828a0161066d565b945050606061086b89828a016106c1565b935050608087013567ffffffffffffffff81111561088c5761088b610623565b5b61089889828a016107e4565b92505060a06108a989828a0161066d565b9150509295509295509295565b5f80fd5b5f80fd5b5f8083601f8401126108d3576108d26106d5565b5b8235905067ffffffffffffffff8111156108f0576108ef6108b6565b5b60208301915083602082028301111561090c5761090b6108ba565b5b9250929050565b5f805f805f6080868803121561092c5761092b61061f565b5b5f86013567ffffffffffffffff81111561094957610948610623565b5b610955888289016108be565b955095505060206109688882890161066d565b93505060406109798882890161066d565b925050606061098a8882890161066d565b9150509295509295909350565b5f805f604084860312156109ae576109ad61061f565b5b5f84013567ffffffffffffffff8111156109cb576109ca610623565b5b6109d7868287016108be565b935093505060206109ea8682870161066d565b9150509250925092565b5f805f60608486031215610a0b57610a0a61061f565b5b5f610a188682870161066d565b9350506020610a298682870161066d565b9250506040610a3a8682870161066d565b9150509250925092565b5f805f8060608587031215610a5c57610a5b61061f565b5b5f85013567ffffffffffffffff811115610a7957610a78610623565b5b610a85878288016108be565b94509450506020610a988782880161066d565b9250506040610aa98782880161066d565b91505092959194509250565b5f8060408385031215610acb57610aca61061f565b5b5f610ad88582860161066d565b9250506020610ae98582860161066d565b9150509250929050565b5f67ffffffffffffffff821115610b0d57610b0c6106ed565b5b610b16826106dd565b9050602081019050919050565b5f610b35610b3084610af3565b61074b565b905082815260208101848484011115610b5157610b506106d9565b5b610b5c848285610795565b509392505050565b5f82601f830112610b7857610b776106d5565b5b8135610b88848260208601610b23565b91505092915050565b5f60ff82169050919050565b610ba681610b91565b8114610bb0575f80fd5b50565b5f81359050610bc181610b9d565b92915050565b5f805f60608486031215610bde57610bdd61061f565b5b5f84013567ffffffffffffffff811115610bfb57610bfa610623565b5b610c0786828701610b64565b935050602084013567ffffffffffffffff811115610c2857610c27610623565b5b610c3486828701610b64565b9250506040610c4586828701610bb3565b9150509250925092565b5f819050919050565b610c6181610c4f565b8114610c6b575f80fd5b50565b5f81359050610c7c81610c58565b92915050565b5f805f8060808587031215610c9a57610c9961061f565b5b5f610ca787828801610c6e565b945050602085013567ffffffffffffffff811115610cc857610cc7610623565b5b610cd487828801610b64565b935050604085013567ffffffffffffffff811115610cf557610cf4610623565b5b610d0187828801610b64565b9250506060610d1287828801610bb3565b91505092959194509250565b610d2781610646565b82525050565b610d3681610681565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610d6e82610d3c565b610d788185610d46565b9350610d88818560208601610d56565b610d91816106dd565b840191505092915050565b5f60a082019050610daf5f830188610d1e565b610dbc6020830187610d1e565b610dc96040830186610d1e565b610dd66060830185610d2d565b8181036080830152610de88184610d64565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610e3657610e3561061f565b5b5f610e438482850161066d565b91505092915050565b5f819050919050565b5f819050919050565b5f610e78610e73610e6e84610e4c565b610e55565b610c4f565b9050919050565b610e8881610e5e565b82525050565b5f604082019050610ea15f830185610d1e565b610eae6020830184610e7f565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f610ed982610eb5565b610ee38185610ebf565b9350610ef3818560208601610d56565b610efc816106dd565b840191505092915050565b610f1081610b91565b82525050565b5f6060820190508181035f830152610f2e8186610ecf565b90508181036020830152610f428185610ecf565b9050610f516040830184610f07565b94935050505056fe608060405234801561000f575f80fd5b50604051611b98380380611b9883398181016040528101906100319190610394565b82600390816100409190610629565b5081600490816100509190610629565b508060055f6101000a81548160ff021916908360ff160217905550610088336c01431e0fae6d7217caa00000006100ad60201b60201c565b6100a5326c01431e0fae6d7217caa00000006100ad60201b60201c565b5050506107f8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361011b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011290610752565b60405180910390fd5b61012c5f838361020760201b60201c565b8060025f82825461013d919061079d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101ea91906107df565b60405180910390a36102035f838361020c60201b60201c565b5050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6102708261022a565b810181811067ffffffffffffffff8211171561028f5761028e61023a565b5b80604052505050565b5f6102a1610211565b90506102ad8282610267565b919050565b5f67ffffffffffffffff8211156102cc576102cb61023a565b5b6102d58261022a565b9050602081019050919050565b8281835e5f83830152505050565b5f6103026102fd846102b2565b610298565b90508281526020810184848401111561031e5761031d610226565b5b6103298482856102e2565b509392505050565b5f82601f83011261034557610344610222565b5b81516103558482602086016102f0565b91505092915050565b5f60ff82169050919050565b6103738161035e565b811461037d575f80fd5b50565b5f8151905061038e8161036a565b92915050565b5f805f606084860312156103ab576103aa61021a565b5b5f84015167ffffffffffffffff8111156103c8576103c761021e565b5b6103d486828701610331565b935050602084015167ffffffffffffffff8111156103f5576103f461021e565b5b61040186828701610331565b925050604061041286828701610380565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061046a57607f821691505b60208210810361047d5761047c610426565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104a4565b6104e986836104a4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61052d61052861052384610501565b61050a565b610501565b9050919050565b5f819050919050565b61054683610513565b61055a61055282610534565b8484546104b0565b825550505050565b5f90565b61056e610562565b61057981848461053d565b505050565b5b8181101561059c576105915f82610566565b60018101905061057f565b5050565b601f8211156105e1576105b281610483565b6105bb84610495565b810160208510156105ca578190505b6105de6105d685610495565b83018261057e565b50505b505050565b5f82821c905092915050565b5f6106015f19846008026105e6565b1980831691505092915050565b5f61061983836105f2565b9150826002028217905092915050565b6106328261041c565b67ffffffffffffffff81111561064b5761064a61023a565b5b6106558254610453565b6106608282856105a0565b5f60209050601f831160018114610691575f841561067f578287015190505b610689858261060e565b8655506106f0565b601f19841661069f86610483565b5f5b828110156106c6578489015182556001820191506020850194506020810190506106a1565b868310156106e357848901516106df601f8916826105f2565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61073c601f836106f8565b915061074782610708565b602082019050919050565b5f6020820190508181035f83015261076981610730565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6107a782610501565b91506107b283610501565b92508282019050808211156107ca576107c9610770565b5b92915050565b6107d981610501565b82525050565b5f6020820190506107f25f8301846107d0565b92915050565b611393806108055f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c80634e6ec2471161006f5780634e6ec247146101a057806370a08231146101bc57806395d89b41146101ec578063a457c2d71461020a578063a9059cbb1461023a578063dd62ed3e1461026a576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633950935114610170575b5f80fd5b6100be61029a565b6040516100cb9190610c45565b60405180910390f35b6100ee60048036038101906100e99190610cf6565b61032a565b6040516100fb9190610d4e565b60405180910390f35b61010c61034c565b6040516101199190610d76565b60405180910390f35b61013c60048036038101906101379190610d8f565b610355565b6040516101499190610d4e565b60405180910390f35b61015a610383565b6040516101679190610dfa565b60405180910390f35b61018a60048036038101906101859190610cf6565b610398565b6040516101979190610d4e565b60405180910390f35b6101ba60048036038101906101b59190610cf6565b6103ce565b005b6101d660048036038101906101d19190610e13565b61051c565b6040516101e39190610d76565b60405180910390f35b6101f4610561565b6040516102019190610c45565b60405180910390f35b610224600480360381019061021f9190610cf6565b6105f1565b6040516102319190610d4e565b60405180910390f35b610254600480360381019061024f9190610cf6565b610666565b6040516102619190610d4e565b60405180910390f35b610284600480360381019061027f9190610e3e565b610688565b6040516102919190610d76565b60405180910390f35b6060600380546102a990610ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546102d590610ea9565b80156103205780601f106102f757610100808354040283529160200191610320565b820191905f5260205f20905b81548152906001019060200180831161030357829003601f168201915b5050505050905090565b5f8061033461070a565b9050610341818585610711565b600191505092915050565b5f600254905090565b5f8061035f61070a565b905061036c8582856108d4565b61037785858561095f565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f806103a261070a565b90506103c38185856103b48589610688565b6103be9190610f06565b610711565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361043c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043390610f83565b60405180910390fd5b6104475f8383610bcb565b8060025f8282546104589190610f06565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105059190610d76565b60405180910390a36105185f8383610bd0565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461057090610ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90610ea9565b80156105e75780601f106105be576101008083540402835291602001916105e7565b820191905f5260205f20905b8154815290600101906020018083116105ca57829003601f168201915b5050505050905090565b5f806105fb61070a565b90505f6106088286610688565b90508381101561064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490611011565b60405180910390fd5b61065a8286868403610711565b60019250505092915050565b5f8061067061070a565b905061067d81858561095f565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061109f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e49061112d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108c79190610d76565b60405180910390a3505050565b5f6108df8484610688565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610959578181101561094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290611195565b60405180910390fd5b6109588484848403610711565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490611223565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a32906112b1565b60405180910390fd5b610a46838383610bcb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac09061133f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bb29190610d76565b60405180910390a3610bc5848484610bd0565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c1782610bd5565b610c218185610bdf565b9350610c31818560208601610bef565b610c3a81610bfd565b840191505092915050565b5f6020820190508181035f830152610c5d8184610c0d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c9282610c69565b9050919050565b610ca281610c88565b8114610cac575f80fd5b50565b5f81359050610cbd81610c99565b92915050565b5f819050919050565b610cd581610cc3565b8114610cdf575f80fd5b50565b5f81359050610cf081610ccc565b92915050565b5f8060408385031215610d0c57610d0b610c65565b5b5f610d1985828601610caf565b9250506020610d2a85828601610ce2565b9150509250929050565b5f8115159050919050565b610d4881610d34565b82525050565b5f602082019050610d615f830184610d3f565b92915050565b610d7081610cc3565b82525050565b5f602082019050610d895f830184610d67565b92915050565b5f805f60608486031215610da657610da5610c65565b5b5f610db386828701610caf565b9350506020610dc486828701610caf565b9250506040610dd586828701610ce2565b9150509250925092565b5f60ff82169050919050565b610df481610ddf565b82525050565b5f602082019050610e0d5f830184610deb565b92915050565b5f60208284031215610e2857610e27610c65565b5b5f610e3584828501610caf565b91505092915050565b5f8060408385031215610e5457610e53610c65565b5b5f610e6185828601610caf565b9250506020610e7285828601610caf565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ec057607f821691505b602082108103610ed357610ed2610e7c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f1082610cc3565b9150610f1b83610cc3565b9250828201905080821115610f3357610f32610ed9565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610f6d601f83610bdf565b9150610f7882610f39565b602082019050919050565b5f6020820190508181035f830152610f9a81610f61565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f610ffb602583610bdf565b915061100682610fa1565b604082019050919050565b5f6020820190508181035f83015261102881610fef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611089602483610bdf565b91506110948261102f565b604082019050919050565b5f6020820190508181035f8301526110b68161107d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611117602283610bdf565b9150611122826110bd565b604082019050919050565b5f6020820190508181035f8301526111448161110b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61117f601d83610bdf565b915061118a8261114b565b602082019050919050565b5f6020820190508181035f8301526111ac81611173565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61120d602583610bdf565b9150611218826111b3565b604082019050919050565b5f6020820190508181035f83015261123a81611201565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61129b602383610bdf565b91506112a682611241565b604082019050919050565b5f6020820190508181035f8301526112c88161128f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611329602683610bdf565b9150611334826112cf565b604082019050919050565b5f6020820190508181035f8301526113568161131d565b905091905056fea2646970667358221220cacb832b27cb4656b65595eb41856aac315f30b330e37cc553901a1390192a2b64736f6c63430008190033a2646970667358221220b70ca43b7788cd595aa033fac76e0223ef2076fd9d9164fd02a15a1812bda9bb64736f6c63430008190033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100a7575f3560e01c8063a1c0e4281161006f578063a1c0e42814610137578063a94eb01c14610153578063ce43567c1461016f578063e5d57d341461018b578063eedd8d72146101a7578063ff0549ee146101c3576100a7565b806324fe8e9f146100ab57806326d04eac146100c7578063404acea0146100e35780634a632231146100ff5780639a10be361461011b575b5f80fd5b6100c560048036038101906100c09190610811565b6101df565b005b6100e160048036038101906100dc9190610913565b61025a565b005b6100fd60048036038101906100f89190610997565b6102df565b005b610119600480360381019061011491906109f4565b610330565b005b61013560048036038101906101309190610a44565b610383565b005b610151600480360381019061014c9190610ab5565b6103d6565b005b61016d60048036038101906101689190610ab5565b610428565b005b61018960048036038101906101849190610bc7565b6104a6565b005b6101a560048036038101906101a09190610997565b6104e1565b005b6101c160048036038101906101bc9190610a44565b610532565b005b6101dd60048036038101906101d89190610c82565b6105b5565b005b5f8190508073ffffffffffffffffffffffffffffffffffffffff16638070f2ca88888888886040518663ffffffff1660e01b8152600401610224959493929190610d9c565b5f604051808303815f87803b15801561023b575f80fd5b505af115801561024d573d5f803e3d5ffd5b5050505050505050505050565b5f5b858590508110156102d7576102988387878481811061027e5761027d610df4565b5b90506020020160208101906102939190610e21565b610428565b6102ca8686838181106102ae576102ad610df4565b5b90506020020160208101906102c39190610e21565b8584610330565b808060010191505061025c565b505050505050565b5f5b8383905081101561032a5761031d8285858481811061030357610302610df4565b5b90506020020160208101906103189190610e21565b610428565b80806001019150506102e1565b50505050565b61037e3082856a084595161401484a0000006040518060400160405280600481526020017f3078303000000000000000000000000000000000000000000000000000000000815250876101df565b505050565b5f5b848490508110156103cf576103c28585838181106103a6576103a5610df4565b5b90506020020160208101906103bb9190610e21565b8484610330565b8080600101915050610385565b5050505050565b6104243032846a084595161401484a0000006040518060400160405280600481526020017f3078303000000000000000000000000000000000000000000000000000000000815250866101df565b5050565b5f8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3846c01431e0fae6d7217caa00000006040518363ffffffff1660e01b8152600401610474929190610e8e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b50505050505050565b8282826040516104b590610609565b6104c193929190610f16565b604051809103905ff0801580156104da573d5f803e3d5ffd5b5050505050565b5f5b8383905081101561052c5761051f84848381811061050457610503610df4565b5b90506020020160208101906105199190610e21565b836103d6565b80806001019150506104e3565b50505050565b5f5b848490508110156105ae576105708286868481811061055657610555610df4565b5b905060200201602081019061056b9190610e21565b610428565b6105a185858381811061058657610585610df4565b5b905060200201602081019061059b9190610e21565b846103d6565b8080600101915050610534565b5050505050565b5f5b84811015610602578383836040516105ce90610609565b6105da93929190610f16565b604051809103905ff0801580156105f3573d5f803e3d5ffd5b505080806001019150506105b7565b5050505050565b611b9880610f5a83390190565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61065082610627565b9050919050565b61066081610646565b811461066a575f80fd5b50565b5f8135905061067b81610657565b92915050565b5f7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6106b481610681565b81146106be575f80fd5b50565b5f813590506106cf816106ab565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610723826106dd565b810181811067ffffffffffffffff82111715610742576107416106ed565b5b80604052505050565b5f610754610616565b9050610760828261071a565b919050565b5f67ffffffffffffffff82111561077f5761077e6106ed565b5b610788826106dd565b9050602081019050919050565b828183375f83830152505050565b5f6107b56107b084610765565b61074b565b9050828152602081018484840111156107d1576107d06106d9565b5b6107dc848285610795565b509392505050565b5f82601f8301126107f8576107f76106d5565b5b81356108088482602086016107a3565b91505092915050565b5f805f805f8060c0878903121561082b5761082a61061f565b5b5f61083889828a0161066d565b965050602061084989828a0161066d565b955050604061085a89828a0161066d565b945050606061086b89828a016106c1565b935050608087013567ffffffffffffffff81111561088c5761088b610623565b5b61089889828a016107e4565b92505060a06108a989828a0161066d565b9150509295509295509295565b5f80fd5b5f80fd5b5f8083601f8401126108d3576108d26106d5565b5b8235905067ffffffffffffffff8111156108f0576108ef6108b6565b5b60208301915083602082028301111561090c5761090b6108ba565b5b9250929050565b5f805f805f6080868803121561092c5761092b61061f565b5b5f86013567ffffffffffffffff81111561094957610948610623565b5b610955888289016108be565b955095505060206109688882890161066d565b93505060406109798882890161066d565b925050606061098a8882890161066d565b9150509295509295909350565b5f805f604084860312156109ae576109ad61061f565b5b5f84013567ffffffffffffffff8111156109cb576109ca610623565b5b6109d7868287016108be565b935093505060206109ea8682870161066d565b9150509250925092565b5f805f60608486031215610a0b57610a0a61061f565b5b5f610a188682870161066d565b9350506020610a298682870161066d565b9250506040610a3a8682870161066d565b9150509250925092565b5f805f8060608587031215610a5c57610a5b61061f565b5b5f85013567ffffffffffffffff811115610a7957610a78610623565b5b610a85878288016108be565b94509450506020610a988782880161066d565b9250506040610aa98782880161066d565b91505092959194509250565b5f8060408385031215610acb57610aca61061f565b5b5f610ad88582860161066d565b9250506020610ae98582860161066d565b9150509250929050565b5f67ffffffffffffffff821115610b0d57610b0c6106ed565b5b610b16826106dd565b9050602081019050919050565b5f610b35610b3084610af3565b61074b565b905082815260208101848484011115610b5157610b506106d9565b5b610b5c848285610795565b509392505050565b5f82601f830112610b7857610b776106d5565b5b8135610b88848260208601610b23565b91505092915050565b5f60ff82169050919050565b610ba681610b91565b8114610bb0575f80fd5b50565b5f81359050610bc181610b9d565b92915050565b5f805f60608486031215610bde57610bdd61061f565b5b5f84013567ffffffffffffffff811115610bfb57610bfa610623565b5b610c0786828701610b64565b935050602084013567ffffffffffffffff811115610c2857610c27610623565b5b610c3486828701610b64565b9250506040610c4586828701610bb3565b9150509250925092565b5f819050919050565b610c6181610c4f565b8114610c6b575f80fd5b50565b5f81359050610c7c81610c58565b92915050565b5f805f8060808587031215610c9a57610c9961061f565b5b5f610ca787828801610c6e565b945050602085013567ffffffffffffffff811115610cc857610cc7610623565b5b610cd487828801610b64565b935050604085013567ffffffffffffffff811115610cf557610cf4610623565b5b610d0187828801610b64565b9250506060610d1287828801610bb3565b91505092959194509250565b610d2781610646565b82525050565b610d3681610681565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610d6e82610d3c565b610d788185610d46565b9350610d88818560208601610d56565b610d91816106dd565b840191505092915050565b5f60a082019050610daf5f830188610d1e565b610dbc6020830187610d1e565b610dc96040830186610d1e565b610dd66060830185610d2d565b8181036080830152610de88184610d64565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610e3657610e3561061f565b5b5f610e438482850161066d565b91505092915050565b5f819050919050565b5f819050919050565b5f610e78610e73610e6e84610e4c565b610e55565b610c4f565b9050919050565b610e8881610e5e565b82525050565b5f604082019050610ea15f830185610d1e565b610eae6020830184610e7f565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f610ed982610eb5565b610ee38185610ebf565b9350610ef3818560208601610d56565b610efc816106dd565b840191505092915050565b610f1081610b91565b82525050565b5f6060820190508181035f830152610f2e8186610ecf565b90508181036020830152610f428185610ecf565b9050610f516040830184610f07565b94935050505056fe608060405234801561000f575f80fd5b50604051611b98380380611b9883398181016040528101906100319190610394565b82600390816100409190610629565b5081600490816100509190610629565b508060055f6101000a81548160ff021916908360ff160217905550610088336c01431e0fae6d7217caa00000006100ad60201b60201c565b6100a5326c01431e0fae6d7217caa00000006100ad60201b60201c565b5050506107f8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361011b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011290610752565b60405180910390fd5b61012c5f838361020760201b60201c565b8060025f82825461013d919061079d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101ea91906107df565b60405180910390a36102035f838361020c60201b60201c565b5050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6102708261022a565b810181811067ffffffffffffffff8211171561028f5761028e61023a565b5b80604052505050565b5f6102a1610211565b90506102ad8282610267565b919050565b5f67ffffffffffffffff8211156102cc576102cb61023a565b5b6102d58261022a565b9050602081019050919050565b8281835e5f83830152505050565b5f6103026102fd846102b2565b610298565b90508281526020810184848401111561031e5761031d610226565b5b6103298482856102e2565b509392505050565b5f82601f83011261034557610344610222565b5b81516103558482602086016102f0565b91505092915050565b5f60ff82169050919050565b6103738161035e565b811461037d575f80fd5b50565b5f8151905061038e8161036a565b92915050565b5f805f606084860312156103ab576103aa61021a565b5b5f84015167ffffffffffffffff8111156103c8576103c761021e565b5b6103d486828701610331565b935050602084015167ffffffffffffffff8111156103f5576103f461021e565b5b61040186828701610331565b925050604061041286828701610380565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061046a57607f821691505b60208210810361047d5761047c610426565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104a4565b6104e986836104a4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61052d61052861052384610501565b61050a565b610501565b9050919050565b5f819050919050565b61054683610513565b61055a61055282610534565b8484546104b0565b825550505050565b5f90565b61056e610562565b61057981848461053d565b505050565b5b8181101561059c576105915f82610566565b60018101905061057f565b5050565b601f8211156105e1576105b281610483565b6105bb84610495565b810160208510156105ca578190505b6105de6105d685610495565b83018261057e565b50505b505050565b5f82821c905092915050565b5f6106015f19846008026105e6565b1980831691505092915050565b5f61061983836105f2565b9150826002028217905092915050565b6106328261041c565b67ffffffffffffffff81111561064b5761064a61023a565b5b6106558254610453565b6106608282856105a0565b5f60209050601f831160018114610691575f841561067f578287015190505b610689858261060e565b8655506106f0565b601f19841661069f86610483565b5f5b828110156106c6578489015182556001820191506020850194506020810190506106a1565b868310156106e357848901516106df601f8916826105f2565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61073c601f836106f8565b915061074782610708565b602082019050919050565b5f6020820190508181035f83015261076981610730565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6107a782610501565b91506107b283610501565b92508282019050808211156107ca576107c9610770565b5b92915050565b6107d981610501565b82525050565b5f6020820190506107f25f8301846107d0565b92915050565b611393806108055f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c80634e6ec2471161006f5780634e6ec247146101a057806370a08231146101bc57806395d89b41146101ec578063a457c2d71461020a578063a9059cbb1461023a578063dd62ed3e1461026a576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633950935114610170575b5f80fd5b6100be61029a565b6040516100cb9190610c45565b60405180910390f35b6100ee60048036038101906100e99190610cf6565b61032a565b6040516100fb9190610d4e565b60405180910390f35b61010c61034c565b6040516101199190610d76565b60405180910390f35b61013c60048036038101906101379190610d8f565b610355565b6040516101499190610d4e565b60405180910390f35b61015a610383565b6040516101679190610dfa565b60405180910390f35b61018a60048036038101906101859190610cf6565b610398565b6040516101979190610d4e565b60405180910390f35b6101ba60048036038101906101b59190610cf6565b6103ce565b005b6101d660048036038101906101d19190610e13565b61051c565b6040516101e39190610d76565b60405180910390f35b6101f4610561565b6040516102019190610c45565b60405180910390f35b610224600480360381019061021f9190610cf6565b6105f1565b6040516102319190610d4e565b60405180910390f35b610254600480360381019061024f9190610cf6565b610666565b6040516102619190610d4e565b60405180910390f35b610284600480360381019061027f9190610e3e565b610688565b6040516102919190610d76565b60405180910390f35b6060600380546102a990610ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546102d590610ea9565b80156103205780601f106102f757610100808354040283529160200191610320565b820191905f5260205f20905b81548152906001019060200180831161030357829003601f168201915b5050505050905090565b5f8061033461070a565b9050610341818585610711565b600191505092915050565b5f600254905090565b5f8061035f61070a565b905061036c8582856108d4565b61037785858561095f565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f806103a261070a565b90506103c38185856103b48589610688565b6103be9190610f06565b610711565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361043c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043390610f83565b60405180910390fd5b6104475f8383610bcb565b8060025f8282546104589190610f06565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105059190610d76565b60405180910390a36105185f8383610bd0565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461057090610ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90610ea9565b80156105e75780601f106105be576101008083540402835291602001916105e7565b820191905f5260205f20905b8154815290600101906020018083116105ca57829003601f168201915b5050505050905090565b5f806105fb61070a565b90505f6106088286610688565b90508381101561064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490611011565b60405180910390fd5b61065a8286868403610711565b60019250505092915050565b5f8061067061070a565b905061067d81858561095f565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061109f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e49061112d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108c79190610d76565b60405180910390a3505050565b5f6108df8484610688565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610959578181101561094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290611195565b60405180910390fd5b6109588484848403610711565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490611223565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a32906112b1565b60405180910390fd5b610a46838383610bcb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac09061133f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bb29190610d76565b60405180910390a3610bc5848484610bd0565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c1782610bd5565b610c218185610bdf565b9350610c31818560208601610bef565b610c3a81610bfd565b840191505092915050565b5f6020820190508181035f830152610c5d8184610c0d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c9282610c69565b9050919050565b610ca281610c88565b8114610cac575f80fd5b50565b5f81359050610cbd81610c99565b92915050565b5f819050919050565b610cd581610cc3565b8114610cdf575f80fd5b50565b5f81359050610cf081610ccc565b92915050565b5f8060408385031215610d0c57610d0b610c65565b5b5f610d1985828601610caf565b9250506020610d2a85828601610ce2565b9150509250929050565b5f8115159050919050565b610d4881610d34565b82525050565b5f602082019050610d615f830184610d3f565b92915050565b610d7081610cc3565b82525050565b5f602082019050610d895f830184610d67565b92915050565b5f805f60608486031215610da657610da5610c65565b5b5f610db386828701610caf565b9350506020610dc486828701610caf565b9250506040610dd586828701610ce2565b9150509250925092565b5f60ff82169050919050565b610df481610ddf565b82525050565b5f602082019050610e0d5f830184610deb565b92915050565b5f60208284031215610e2857610e27610c65565b5b5f610e3584828501610caf565b91505092915050565b5f8060408385031215610e5457610e53610c65565b5b5f610e6185828601610caf565b9250506020610e7285828601610caf565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ec057607f821691505b602082108103610ed357610ed2610e7c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f1082610cc3565b9150610f1b83610cc3565b9250828201905080821115610f3357610f32610ed9565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610f6d601f83610bdf565b9150610f7882610f39565b602082019050919050565b5f6020820190508181035f830152610f9a81610f61565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f610ffb602583610bdf565b915061100682610fa1565b604082019050919050565b5f6020820190508181035f83015261102881610fef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611089602483610bdf565b91506110948261102f565b604082019050919050565b5f6020820190508181035f8301526110b68161107d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611117602283610bdf565b9150611122826110bd565b604082019050919050565b5f6020820190508181035f8301526111448161110b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61117f601d83610bdf565b915061118a8261114b565b602082019050919050565b5f6020820190508181035f8301526111ac81611173565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61120d602583610bdf565b9150611218826111b3565b604082019050919050565b5f6020820190508181035f83015261123a81611201565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61129b602383610bdf565b91506112a682611241565b604082019050919050565b5f6020820190508181035f8301526112c88161128f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611329602683610bdf565b9150611334826112cf565b604082019050919050565b5f6020820190508181035f8301526113568161131d565b905091905056fea2646970667358221220cacb832b27cb4656b65595eb41856aac315f30b330e37cc553901a1390192a2b64736f6c63430008190033a2646970667358221220b70ca43b7788cd595aa033fac76e0223ef2076fd9d9164fd02a15a1812bda9bb64736f6c63430008190033
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.