ERC-20
Overview
Max Total Supply
500,000 BEAT
Holders
202
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BeatToken
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { /** * @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); /** * @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 ); } 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); } 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; /** * @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_) { _name = name_; _symbol = symbol_; } /** * @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) { return 18; } /** * @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, _allowances[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 = _allowances[owner][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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; } _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) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _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; } _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 {} } abstract contract Ownable is Context { address private _owner; mapping(address => bool) public addressAdmin; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } function addAdmin(address _address) external onlyOwner { addressAdmin[_address] = true; } function removeAdmin(address _address) external onlyOwner { addressAdmin[_address] = false; } modifier admin() { require( addressAdmin[msg.sender] == true || owner() == _msgSender(), "You do not have auth to do this" ); _; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } // modifier onlyOwner() { // require(owner() == _msgSender() || addressAdmin[msg.sender] == true, "Ownable: caller is not the owner"); // _; // } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract BeatToken is ERC20, Ownable { uint256 public initialTotalSupply; mapping(address => uint256) public stakes; mapping(address => bool) public proposerAddress; uint256 public totalStaked; address public surexTokenAddress; uint256 public burnedSureX; mapping(uint => Reward) public rewards; mapping(uint => Proposal) public proposals; mapping(address => mapping(uint => uint256)) public userRewards; uint public proposalSum; uint[] public proposalIds; struct Reward { uint256 rewardId; address rewardTokenAddress; uint256 rewardAmount; uint256 claimDueDate; } struct Proposal { uint256 proposalId; uint256 yesCount; uint256 noCount; uint256 dueDate; address[] yesAddresses; address[] noAddresses; } constructor(address _surexTokenAddress , address coreTeamAddress, address techTeamAddress, address devFundAddress) ERC20("Beat Token", "BEAT") { initialTotalSupply = 500000 * 10 ** 18; _mint(address(this), initialTotalSupply); surexTokenAddress = _surexTokenAddress; // Allocate tokens _transfer( address(this), coreTeamAddress, (initialTotalSupply * 5) / 100 ); // 5% _transfer( address(this), techTeamAddress, (initialTotalSupply * 3) / 100 ); // 3% _transfer( address(this), devFundAddress, (initialTotalSupply * 2) / 100 ); // 2% } //Update surexToken address function updateSTAddr(address _surexTokenAddress) external admin { surexTokenAddress = _surexTokenAddress; } function BurnAndMint(address adminAddr) external admin { IERC20 surexToken = IERC20(surexTokenAddress); IERC20 beatToken = IERC20(address(this)); // 1. Check if admin has approved at least 1*10**8 surexToken for this contract uint256 approvedAmount = surexToken.allowance(adminAddr, address(this)); require( approvedAmount >= 1 * 10 ** 8 * 10 ** 18, "Not enough surexToken approved" ); // 2. Transfer 1*10**8 surexToken from admin to this contract surexToken.transferFrom( adminAddr, address(this), 1 * 10 ** 8 * 10 ** 18 ); // 3. Transfer 50000 BEAT tokens from this contract to admin's address uint256 contractBalance = balanceOf(address(this)); require( contractBalance >= 50000 * 10 ** 18, "Contract balance not enough" ); beatToken.transfer(adminAddr, 50000 * 10 ** 18); } // AddProposer and RemoveProposer modifier onlyProposer() { require(proposerAddress[_msgSender()] == true, "Not a proposer"); _; } function addProposer(address _proposer) external admin { proposerAddress[_proposer] = true; } function removeProposer(address _proposer) external admin { proposerAddress[_proposer] = false; } //submit proposal function submitProposal( uint256 proposal_id, uint256 proposal_due_time ) external onlyProposer { proposals[proposal_id] = Proposal( proposal_id, 0, 0, proposal_due_time, new address[](0), new address[](0) ); proposalSum += 1; proposalIds.push(proposal_id); } //vote proposal // Define the event outside the function event UserVoted( address indexed user, uint256 indexed voteTime, bool indexed choice ); function voteProposal(uint proposal_id, bool choice) external { Proposal storage p = proposals[proposal_id]; // 1. Check if proposal is still valid (not outdated) require(p.dueDate > block.timestamp, "Proposal outdate"); // 2. Check if user has already voted require(!hasVoted(_msgSender(), p), "You've voted before"); if (choice) { p.yesCount++; p.yesAddresses.push(_msgSender()); } else { p.noCount++; p.noAddresses.push(_msgSender()); } // Emit the UserVoted event emit UserVoted(_msgSender(), block.timestamp, choice); } // Helper function to check if a user has already voted function hasVoted( address user, Proposal storage p ) internal view returns (bool) { for (uint i = 0; i < p.yesAddresses.length; i++) { if (p.yesAddresses[i] == user) { return true; } } for (uint i = 0; i < p.noAddresses.length; i++) { if (p.noAddresses[i] == user) { return true; } } return false; } //Stake beat event Staked( address indexed user, uint256 indexed amount, uint256 indexed stakeTime ); function stakeBeat(uint256 amount) external { require(amount > 0, "Amount should be greater than 0"); require( balanceOf(_msgSender()) - stakes[_msgSender()] >= amount, "Insufficient balance" ); // Update the staked amount for the user and the total staked amount stakes[_msgSender()] += amount; totalStaked += amount; // Emit the Staked event emit Staked(_msgSender(), amount, block.timestamp); } function _beforeTokenTransfer( address sender, address recipient, uint256 amount ) internal virtual override { super._beforeTokenTransfer(sender, recipient, amount); // Call the parent contract's version of _beforeTokenTransfer if (sender != address(this) && sender != address(0)) { require( amount <= balanceOf(sender) - stakes[sender], "You can only transfer unstaked tokens" ); } } // UnstakeBeat event Unstaked( address indexed user, uint256 indexed amount, uint256 indexed stakeTime ); function unstakeBeat() external { require(stakes[_msgSender()] > 0, "No staked amount"); // Check for active votes require( !hasActiveVote(_msgSender()), "You have an active vote and cannot unstake until the vote ends." ); uint256 amountToUnstake = stakes[_msgSender()]; stakes[_msgSender()] = 0; totalStaked -= amountToUnstake; // Emit the Unstaked event emit Unstaked(_msgSender(), amountToUnstake, block.timestamp); } // Helper function to check if a user has an active vote function hasActiveVote(address user) internal view returns (bool) { for (uint i = 0; i < proposalSum; i++) { Proposal storage p = proposals[proposalIds[i]]; for (uint j = 0; j < p.yesAddresses.length; j++) { if (p.yesAddresses[j] == user && p.dueDate > block.timestamp) { return true; } } for (uint j = 0; j < p.noAddresses.length; j++) { if (p.noAddresses[j] == user && p.dueDate > block.timestamp) { return true; } } } return false; } //Add distribute address and distribute amount function addDistributeAddress( uint256 reward_id, address[] memory address_list, uint[] memory amount_list ) external admin { // 1. Check the lengths of address_list and amount_list require( address_list.length == amount_list.length, "Address list and amount list must have the same length" ); // 2. Record each reward for each address for (uint i = 0; i < address_list.length; i++) { address user = address_list[i]; uint256 amount = amount_list[i]; userRewards[user][reward_id] = amount; // Record the reward amount for the user and rewardId } } //For user to check how much rewards in their account of exact reward id function getRewardAmount( address user, uint rewardId ) external view returns (uint256) { return userRewards[user][rewardId]; } //New reward distribution function newRewardDistribution( uint256 reward_id, address token_address, uint256 reward_amount, uint256 claim_due_date ) external admin { // Ensure that the reward_id is unique and hasn't been used before require(rewards[reward_id].rewardId == 0, "Reward ID already exists"); // Construct a new Reward struct with the provided data Reward memory newReward = Reward({ rewardId: reward_id, rewardTokenAddress: token_address, rewardAmount: reward_amount, claimDueDate: claim_due_date }); // Store the newReward in the rewards mapping rewards[reward_id] = newReward; } //claim reward function claimReward(uint256 reward_id) external { // Ensure the reward exists require(rewards[reward_id].rewardId != 0, "Reward does not exist"); // Check the reward's due time require( rewards[reward_id].claimDueDate > block.timestamp, "Claim period has ended" ); // Get the reward amount for the user uint256 rewardAmount = userRewards[msg.sender][reward_id]; // Get the balance of the reward token in this contract uint256 contractBalance = IERC20(rewards[reward_id].rewardTokenAddress) .balanceOf(address(this)); require(rewardAmount > 0, "No reward to claim for this user"); require( rewardAmount <= contractBalance, "Contract's reward balance is not enough" ); require( rewardAmount <= rewards[reward_id].rewardAmount, "Exceed this reward's max limitation" ); require( rewards[reward_id].rewardAmount > 0, "This reward has been claimed out" ); // Reset the user's reward to 0 to prevent double claiming userRewards[msg.sender][reward_id] = 0; rewards[reward_id].rewardAmount -= rewardAmount; // Transfer the token to the user's address IERC20(rewards[reward_id].rewardTokenAddress).transfer( msg.sender, rewardAmount ); } //Release unclaimed reward function releaseUnclaimedReward(uint256 reward_id) external onlyOwner { // Ensure the reward exists require(rewards[reward_id].rewardId != 0, "Reward does not exist"); // Check that the reward's claimDueDate has passed require( rewards[reward_id].claimDueDate < block.timestamp, "Claim period not ended yet" ); // Get the balance of the reward token in this contract uint256 contractBalance = IERC20(rewards[reward_id].rewardTokenAddress) .balanceOf(address(this)); require( rewards[reward_id].rewardAmount <= contractBalance, "Contract's balance is not enough" ); // Transfer the remaining balance to the owner IERC20(rewards[reward_id].rewardTokenAddress).transfer( msg.sender, rewards[reward_id].rewardAmount ); } function withdrawTokens( address tokenAddress, uint256 amount ) external onlyOwner { IERC20 token = IERC20(tokenAddress); require( token.balanceOf(address(this)) >= amount, "Insufficient token balance" ); token.transfer(owner(), amount); } function withdraw() external onlyOwner { payable(owner()).transfer(address(this).balance); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_surexTokenAddress","type":"address"},{"internalType":"address","name":"coreTeamAddress","type":"address"},{"internalType":"address","name":"techTeamAddress","type":"address"},{"internalType":"address","name":"devFundAddress","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"stakeTime","type":"uint256"}],"name":"Staked","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"stakeTime","type":"uint256"}],"name":"Unstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"voteTime","type":"uint256"},{"indexed":true,"internalType":"bool","name":"choice","type":"bool"}],"name":"UserVoted","type":"event"},{"inputs":[{"internalType":"address","name":"adminAddr","type":"address"}],"name":"BurnAndMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward_id","type":"uint256"},{"internalType":"address[]","name":"address_list","type":"address[]"},{"internalType":"uint256[]","name":"amount_list","type":"uint256[]"}],"name":"addDistributeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposer","type":"address"}],"name":"addProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnedSureX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward_id","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"rewardId","type":"uint256"}],"name":"getRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward_id","type":"uint256"},{"internalType":"address","name":"token_address","type":"address"},{"internalType":"uint256","name":"reward_amount","type":"uint256"},{"internalType":"uint256","name":"claim_due_date","type":"uint256"}],"name":"newRewardDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint256","name":"yesCount","type":"uint256"},{"internalType":"uint256","name":"noCount","type":"uint256"},{"internalType":"uint256","name":"dueDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proposerAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward_id","type":"uint256"}],"name":"releaseUnclaimedReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposer","type":"address"}],"name":"removeProposer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"rewardId","type":"uint256"},{"internalType":"address","name":"rewardTokenAddress","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"uint256","name":"claimDueDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stakeBeat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposal_id","type":"uint256"},{"internalType":"uint256","name":"proposal_due_time","type":"uint256"}],"name":"submitProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"surexTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"amount","type":"uint256"}],"name":"transfer","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeBeat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_surexTokenAddress","type":"address"}],"name":"updateSTAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposal_id","type":"uint256"},{"internalType":"bool","name":"choice","type":"bool"}],"name":"voteProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620030dc380380620030dc833981016040819052620000349162000554565b6040518060400160405280600a8152602001692132b0ba102a37b5b2b760b11b815250604051806040016040528060048152602001631091505560e21b815250816003908162000085919062000655565b50600462000094828262000655565b505050620000b1620000ab6200015360201b60201c565b62000157565b6969e10de76676d08000006007819055620000ce903090620001a9565b600b80546001600160a01b0319166001600160a01b0386161790556007546200011790309085906064906200010590600562000737565b62000111919062000757565b6200028f565b6200013030836064600754600362000105919062000737565b6200014930826064600754600262000105919062000737565b50505050620007a6565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620002136000838362000463565b80600260008282546200022791906200077a565b90915550506001600160a01b03821660009081526020819052604081208054839290620002569084906200077a565b90915550506040518181526001600160a01b03831690600090600080516020620030bc8339815191529060200160405180910390a35050565b6001600160a01b038316620002f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401620001fc565b6001600160a01b038216620003595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401620001fc565b6200036683838362000463565b6001600160a01b03831660009081526020819052604090205481811015620003e05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401620001fc565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290620004199084906200077a565b92505081905550826001600160a01b0316846001600160a01b0316600080516020620030bc833981519152846040516200045591815260200190565b60405180910390a350505050565b6200047b8383836200053260201b62001ce51760201c565b6001600160a01b03831630148015906200049d57506001600160a01b03831615155b1562000532576001600160a01b0383166000908152600860209081526040808320549183905290912054620004d3919062000790565b811115620005325760405162461bcd60e51b815260206004820152602560248201527f596f752063616e206f6e6c79207472616e7366657220756e7374616b656420746044820152646f6b656e7360d81b6064820152608401620001fc565b505050565b80516001600160a01b03811681146200054f57600080fd5b919050565b600080600080608085870312156200056b57600080fd5b620005768562000537565b9350620005866020860162000537565b9250620005966040860162000537565b9150620005a66060860162000537565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005dc57607f821691505b602082108103620005fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053257600081815260208120601f850160051c810160208610156200062c5750805b601f850160051c820191505b818110156200064d5782815560010162000638565b505050505050565b81516001600160401b03811115620006715762000671620005b1565b6200068981620006828454620005c7565b8462000603565b602080601f831160018114620006c15760008415620006a85750858301515b600019600386901b1c1916600185901b1785556200064d565b600085815260208120601f198616915b82811015620006f257888601518255948401946001909101908401620006d1565b5085821015620007115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000751576200075162000721565b92915050565b6000826200077557634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000751576200075162000721565b8181038181111562000751576200075162000721565b61290680620007b66000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80637048027511610151578063ae169a50116100c3578063dd62ed3e11610087578063dd62ed3e146105d1578063e97282811461060a578063f2fde38b1461061d578063f301af4214610630578063f795be6414610697578063f8f109b6146106aa57600080fd5b8063ae169a501461054f578063b03cd41814610562578063b82df5ba14610575578063bcfb9b6114610588578063da4e85561461059b57600080fd5b80638da5cb5b116101155780638da5cb5b146104ea57806395d80808146104fb57806395d89b411461050e5780639b644a2314610516578063a457c2d714610529578063a9059cbb1461053c57600080fd5b8063704802751461049557806370a08231146104a8578063715018a6146104d1578063817b1cd2146104d95780638af9a206146104e257600080fd5b806326502306116101ea5780633b89614c116101ae5780633b89614c146103fe5780633ccfd60b146104115780634e7f93b214610419578063541b2adf1461042c57806363c2a20a1461043f578063698885051461046a57600080fd5b806326502306146103a75780632c62fa81146103ca578063311028af146103d3578063313ce567146103dc57806339509351146103eb57600080fd5b806309d632d31161023157806309d632d31461033857806316934fc41461034b5780631785f53c1461037957806318160ddd1461038c57806323b872dd1461039457600080fd5b8063013cf08b1461026e57806303d7e558146102c857806306b091f9146102fb57806306fdde0314610310578063095ea7b314610325575b600080fd5b6102a361027c36600461240f565b600e6020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b6102eb6102d6366004612444565b60096020526000908152604090205460ff1681565b60405190151581526020016102bf565b61030e610309366004612466565b6106b3565b005b610318610839565b6040516102bf9190612490565b6102eb610333366004612466565b6108cb565b61030e610346366004612444565b6108e5565b61036b610359366004612444565b60086020526000908152604090205481565b6040519081526020016102bf565b61030e610387366004612444565b61094f565b60025461036b565b6102eb6103a23660046124de565b61099a565b6102eb6103b5366004612444565b60066020526000908152604090205460ff1681565b61036b600c5481565b61036b60075481565b604051601281526020016102bf565b6102eb6103f9366004612466565b6109be565b61030e61040c36600461240f565b6109fd565b61030e610b26565b61030e61042736600461251a565b610b8c565b61030e61043a36600461262b565b610c97565b61036b61044d366004612466565b600f60209081526000928352604080842090915290825290205481565b600b5461047d906001600160a01b031681565b6040516001600160a01b0390911681526020016102bf565b61030e6104a3366004612444565b610dd1565b61036b6104b6366004612444565b6001600160a01b031660009081526020819052604090205490565b61030e610e1f565b61036b600a5481565b61030e610e55565b6005546001600160a01b031661047d565b61030e610509366004612444565b610f7f565b610318610fea565b61036b61052436600461240f565b610ff9565b6102eb610537366004612466565b61101a565b6102eb61054a366004612466565b6110ac565b61030e61055d36600461240f565b6110ba565b61030e610570366004612444565b6113fa565b61030e610583366004612444565b611467565b61030e610596366004612704565b6116fa565b61036b6105a9366004612466565b6001600160a01b03919091166000908152600f60209081526040808320938352929052205490565b61036b6105df366004612734565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61030e610618366004612767565b611859565b61030e61062b366004612444565b611a04565b61066f61063e36600461240f565b600d60205260009081526040902080546001820154600283015460039093015491926001600160a01b039091169184565b604080519485526001600160a01b0390931660208501529183015260608201526080016102bf565b61030e6106a536600461240f565b611a9c565b61036b60105481565b6005546001600160a01b031633146106e65760405162461bcd60e51b81526004016106dd90612789565b60405180910390fd5b6040516370a0823160e01b8152306004820152829082906001600160a01b038316906370a0823190602401602060405180830381865afa15801561072e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075291906127be565b10156107a05760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e636500000000000060448201526064016106dd565b806001600160a01b031663a9059cbb6107c16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044015b6020604051808303816000875af115801561080f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083391906127d7565b50505050565b606060038054610848906127f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906127f4565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b6000336108d9818585611cea565b60019150505b92915050565b3360009081526006602052604090205460ff1615156001148061091257506005546001600160a01b031633145b61092e5760405162461bcd60e51b81526004016106dd9061282e565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6005546001600160a01b031633146109795760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000336109a8858285611e0e565b6109b3858585611e9a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108d990829086906109f890879061287b565b611cea565b60008111610a4d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e20300060448201526064016106dd565b336000818152600860205260409020548291610a68906104b6565b610a72919061288e565b1015610ab75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016106dd565b3360009081526008602052604081208054839290610ad690849061287b565b9250508190555080600a6000828254610aef919061287b565b90915550506040514290829033907f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9090600090a450565b6005546001600160a01b03163314610b505760405162461bcd60e51b81526004016106dd90612789565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610b89573d6000803e3d6000fd5b50565b3360009081526006602052604090205460ff16151560011480610bb957506005546001600160a01b031633145b610bd55760405162461bcd60e51b81526004016106dd9061282e565b6000848152600d602052604090205415610c315760405162461bcd60e51b815260206004820152601860248201527f52657761726420494420616c726561647920657869737473000000000000000060448201526064016106dd565b604080516080810182528581526001600160a01b039485166020808301918252828401958652606083019485526000978852600d90529190952094518555516001850180546001600160a01b031916919094161790925551600283015551600390910155565b3360009081526006602052604090205460ff16151560011480610cc457506005546001600160a01b031633145b610ce05760405162461bcd60e51b81526004016106dd9061282e565b8051825114610d505760405162461bcd60e51b815260206004820152603660248201527f41646472657373206c69737420616e6420616d6f756e74206c697374206d75736044820152750e840d0c2ecca40e8d0ca40e6c2daca40d8cadccee8d60531b60648201526084016106dd565b60005b8251811015610833576000838281518110610d7057610d706128a1565b602002602001015190506000838381518110610d8e57610d8e6128a1565b6020908102919091018101516001600160a01b039093166000908152600f8252604080822089835290925220919091555080610dc9816128b7565b915050610d53565b6005546001600160a01b03163314610dfb5760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6005546001600160a01b03163314610e495760405162461bcd60e51b81526004016106dd90612789565b610e536000612073565b565b33600090815260086020526040902054610ea45760405162461bcd60e51b815260206004820152601060248201526f139bc81cdd185ad95908185b5bdd5b9d60821b60448201526064016106dd565b610ead336120c5565b15610f205760405162461bcd60e51b815260206004820152603f60248201527f596f75206861766520616e2061637469766520766f746520616e642063616e6e60448201527f6f7420756e7374616b6520756e74696c2074686520766f746520656e64732e0060648201526084016106dd565b336000908152600860205260408120805490829055600a805491928392610f4890849061288e565b90915550506040514290829033907f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e90600090a450565b3360009081526006602052604090205460ff16151560011480610fac57506005546001600160a01b031633145b610fc85760405162461bcd60e51b81526004016106dd9061282e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610848906127f4565b6011818154811061100957600080fd5b600091825260209091200154905081565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561109f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106dd565b6109b38286868403611cea565b6000336108d9818585611e9a565b6000818152600d6020526040812054900361110f5760405162461bcd60e51b815260206004820152601560248201527414995dd85c9908191bd95cc81b9bdd08195e1a5cdd605a1b60448201526064016106dd565b6000818152600d602052604090206003015442106111685760405162461bcd60e51b815260206004820152601660248201527510db185a5b481c195c9a5bd9081a185cc8195b99195960521b60448201526064016106dd565b336000908152600f60209081526040808320848452825280832054600d9092528083206001015490516370a0823160e01b81523060048201529192916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fa91906127be565b90506000821161124c5760405162461bcd60e51b815260206004820181905260248201527f4e6f2072657761726420746f20636c61696d20666f722074686973207573657260448201526064016106dd565b808211156112ac5760405162461bcd60e51b815260206004820152602760248201527f436f6e74726163742773207265776172642062616c616e6365206973206e6f74604482015266040cadcdeeaced60cb1b60648201526084016106dd565b6000838152600d60205260409020600201548211156113195760405162461bcd60e51b815260206004820152602360248201527f4578636565642074686973207265776172642773206d6178206c696d6974617460448201526234b7b760e91b60648201526084016106dd565b6000838152600d60205260409020600201546113775760405162461bcd60e51b815260206004820181905260248201527f546869732072657761726420686173206265656e20636c61696d6564206f757460448201526064016106dd565b336000908152600f602090815260408083208684528252808320839055600d909152812060020180548492906113ae90849061288e565b90915550506000838152600d60205260409081902060010154905163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016107f0565b3360009081526006602052604090205460ff1615156001148061142757506005546001600160a01b031633145b6114435760405162461bcd60e51b81526004016106dd9061282e565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b3360009081526006602052604090205460ff1615156001148061149457506005546001600160a01b031633145b6114b05760405162461bcd60e51b81526004016106dd9061282e565b600b54604051636eb1769f60e11b81526001600160a01b038381166004830152306024830181905292169190600090839063dd62ed3e90604401602060405180830381865afa158015611507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152b91906127be565b90506a52b7d2dcc80cd2e40000008110156115885760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f756768207375726578546f6b656e20617070726f766564000060448201526064016106dd565b6040516323b872dd60e01b81526001600160a01b0385811660048301523060248301526a52b7d2dcc80cd2e400000060448301528416906323b872dd906064016020604051808303816000875af11580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b91906127d7565b5030600090815260208190526040902054690a968163f0a57b4000008110156116765760405162461bcd60e51b815260206004820152601b60248201527f436f6e74726163742062616c616e6365206e6f7420656e6f756768000000000060448201526064016106dd565b60405163a9059cbb60e01b81526001600160a01b038681166004830152690a968163f0a57b400000602483015284169063a9059cbb906044016020604051808303816000875af11580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f291906127d7565b505050505050565b6000828152600e602052604090206003810154421061174e5760405162461bcd60e51b815260206004820152601060248201526f50726f706f73616c206f75746461746560801b60448201526064016106dd565b6117583382612210565b1561179b5760405162461bcd60e51b8152602060048201526013602482015272596f7527766520766f746564206265666f726560681b60448201526064016106dd565b81156117e4576001810180549060006117b3836128b7565b9091555050600481018054600181018255600091825260209091200180546001600160a01b03191633179055611823565b6002810180549060006117f6836128b7565b9091555050600581018054600181018255600091825260209091200180546001600160a01b031916331790555b60405182151590429033907f047d1f78088af0de45c6023951114b384642d837bd0eaa541521dcd844f7aa3b90600090a4505050565b3360009081526009602052604090205460ff1615156001146118ae5760405162461bcd60e51b815260206004820152600e60248201526d2737ba103090383937b837b9b2b960911b60448201526064016106dd565b6040518060c001604052808381526020016000815260200160008152602001828152602001600067ffffffffffffffff8111156118ed576118ed612555565b604051908082528060200260200182016040528015611916578160200160208202803683370190505b5081526020016000604051908082528060200260200182016040528015611947578160200160208202803683370190505b5090526000838152600e60209081526040918290208351815583820151600182015591830151600283015560608301516003830155608083015180516119939260048501920190612395565b5060a082015180516119af916005840191602090910190612395565b509050506001601060008282546119c6919061287b565b9091555050601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68019190915550565b6005546001600160a01b03163314611a2e5760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b038116611a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106dd565b610b8981612073565b6005546001600160a01b03163314611ac65760405162461bcd60e51b81526004016106dd90612789565b6000818152600d60205260408120549003611b1b5760405162461bcd60e51b815260206004820152601560248201527414995dd85c9908191bd95cc81b9bdd08195e1a5cdd605a1b60448201526064016106dd565b6000818152600d60205260409020600301544211611b7b5760405162461bcd60e51b815260206004820152601a60248201527f436c61696d20706572696f64206e6f7420656e6465642079657400000000000060448201526064016106dd565b6000818152600d60205260408082206001015490516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906127be565b6000838152600d6020526040902060020154909150811015611c5a5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637427732062616c616e6365206973206e6f7420656e6f75676860448201526064016106dd565b6000828152600d6020526040908190206001810154600290910154915163a9059cbb60e01b815233600482015260248101929092526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce591906127d7565b505050565b6001600160a01b038316611d4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106dd565b6001600160a01b038216611dad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106dd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108335781811015611e8d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106dd565b6108338484848403611cea565b6001600160a01b038316611efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106dd565b6001600160a01b038216611f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106dd565b611f6b8383836122e4565b6001600160a01b03831660009081526020819052604090205481811015611fe35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106dd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061201a90849061287b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161206691815260200190565b60405180910390a3610833565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000805b601054811015612207576000600e6000601184815481106120ec576120ec6128a1565b90600052602060002001548152602001908152602001600020905060005b600482015481101561217c57846001600160a01b0316826004018281548110612135576121356128a1565b6000918252602090912001546001600160a01b031614801561215a5750428260030154115b1561216a57506001949350505050565b80612174816128b7565b91505061210a565b5060005b60058201548110156121f257846001600160a01b03168260050182815481106121ab576121ab6128a1565b6000918252602090912001546001600160a01b03161480156121d05750428260030154115b156121e057506001949350505050565b806121ea816128b7565b915050612180565b505080806121ff906128b7565b9150506120c9565b50600092915050565b6000805b600483015481101561227557836001600160a01b031683600401828154811061223f5761223f6128a1565b6000918252602090912001546001600160a01b0316036122635760019150506108df565b8061226d816128b7565b915050612214565b5060005b60058301548110156122da57836001600160a01b03168360050182815481106122a4576122a46128a1565b6000918252602090912001546001600160a01b0316036122c85760019150506108df565b806122d2816128b7565b915050612279565b5060009392505050565b6001600160a01b038316301480159061230557506001600160a01b03831615155b15611ce5576001600160a01b0383166000908152600860209081526040808320549183905290912054612338919061288e565b811115611ce55760405162461bcd60e51b815260206004820152602560248201527f596f752063616e206f6e6c79207472616e7366657220756e7374616b656420746044820152646f6b656e7360d81b60648201526084016106dd565b8280548282559060005260206000209081019282156123ea579160200282015b828111156123ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906123b5565b506123f69291506123fa565b5090565b5b808211156123f657600081556001016123fb565b60006020828403121561242157600080fd5b5035919050565b80356001600160a01b038116811461243f57600080fd5b919050565b60006020828403121561245657600080fd5b61245f82612428565b9392505050565b6000806040838503121561247957600080fd5b61248283612428565b946020939093013593505050565b600060208083528351808285015260005b818110156124bd578581018301518582016040015282016124a1565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000606084860312156124f357600080fd5b6124fc84612428565b925061250a60208501612428565b9150604084013590509250925092565b6000806000806080858703121561253057600080fd5b8435935061254060208601612428565b93969395505050506040820135916060013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561259457612594612555565b604052919050565b600067ffffffffffffffff8211156125b6576125b6612555565b5060051b60200190565b600082601f8301126125d157600080fd5b813560206125e66125e18361259c565b61256b565b82815260059290921b8401810191818101908684111561260557600080fd5b8286015b848110156126205780358352918301918301612609565b509695505050505050565b60008060006060848603121561264057600080fd5b8335925060208085013567ffffffffffffffff8082111561266057600080fd5b818701915087601f83011261267457600080fd5b81356126826125e18261259c565b81815260059190911b8301840190848101908a8311156126a157600080fd5b938501935b828510156126c6576126b785612428565b825293850193908501906126a6565b9650505060408701359250808311156126de57600080fd5b50506126ec868287016125c0565b9150509250925092565b8015158114610b8957600080fd5b6000806040838503121561271757600080fd5b823591506020830135612729816126f6565b809150509250929050565b6000806040838503121561274757600080fd5b61275083612428565b915061275e60208401612428565b90509250929050565b6000806040838503121561277a57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156127d057600080fd5b5051919050565b6000602082840312156127e957600080fd5b815161245f816126f6565b600181811c9082168061280857607f821691505b60208210810361282857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f596f7520646f206e6f742068617665206175746820746f20646f207468697300604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156108df576108df612865565b818103818111156108df576108df612865565b634e487b7160e01b600052603260045260246000fd5b6000600182016128c9576128c9612865565b506001019056fea2646970667358221220cc319f915e9c857f773b2d5843855fd7f58e09cc3daefb2aa1563a094dc324e764736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000276138dfe8f58df0a1cb0ed8c609e5f8877734900000000000000000000000001b96126d6bffeefba682e3c04d404585122e392a0000000000000000000000001a6e4e6adef4bc0eada2f8464195a6507b41df7c000000000000000000000000de6c14a61831b39f8c683ca7701d53b9ad15b07f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102695760003560e01c80637048027511610151578063ae169a50116100c3578063dd62ed3e11610087578063dd62ed3e146105d1578063e97282811461060a578063f2fde38b1461061d578063f301af4214610630578063f795be6414610697578063f8f109b6146106aa57600080fd5b8063ae169a501461054f578063b03cd41814610562578063b82df5ba14610575578063bcfb9b6114610588578063da4e85561461059b57600080fd5b80638da5cb5b116101155780638da5cb5b146104ea57806395d80808146104fb57806395d89b411461050e5780639b644a2314610516578063a457c2d714610529578063a9059cbb1461053c57600080fd5b8063704802751461049557806370a08231146104a8578063715018a6146104d1578063817b1cd2146104d95780638af9a206146104e257600080fd5b806326502306116101ea5780633b89614c116101ae5780633b89614c146103fe5780633ccfd60b146104115780634e7f93b214610419578063541b2adf1461042c57806363c2a20a1461043f578063698885051461046a57600080fd5b806326502306146103a75780632c62fa81146103ca578063311028af146103d3578063313ce567146103dc57806339509351146103eb57600080fd5b806309d632d31161023157806309d632d31461033857806316934fc41461034b5780631785f53c1461037957806318160ddd1461038c57806323b872dd1461039457600080fd5b8063013cf08b1461026e57806303d7e558146102c857806306b091f9146102fb57806306fdde0314610310578063095ea7b314610325575b600080fd5b6102a361027c36600461240f565b600e6020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b6102eb6102d6366004612444565b60096020526000908152604090205460ff1681565b60405190151581526020016102bf565b61030e610309366004612466565b6106b3565b005b610318610839565b6040516102bf9190612490565b6102eb610333366004612466565b6108cb565b61030e610346366004612444565b6108e5565b61036b610359366004612444565b60086020526000908152604090205481565b6040519081526020016102bf565b61030e610387366004612444565b61094f565b60025461036b565b6102eb6103a23660046124de565b61099a565b6102eb6103b5366004612444565b60066020526000908152604090205460ff1681565b61036b600c5481565b61036b60075481565b604051601281526020016102bf565b6102eb6103f9366004612466565b6109be565b61030e61040c36600461240f565b6109fd565b61030e610b26565b61030e61042736600461251a565b610b8c565b61030e61043a36600461262b565b610c97565b61036b61044d366004612466565b600f60209081526000928352604080842090915290825290205481565b600b5461047d906001600160a01b031681565b6040516001600160a01b0390911681526020016102bf565b61030e6104a3366004612444565b610dd1565b61036b6104b6366004612444565b6001600160a01b031660009081526020819052604090205490565b61030e610e1f565b61036b600a5481565b61030e610e55565b6005546001600160a01b031661047d565b61030e610509366004612444565b610f7f565b610318610fea565b61036b61052436600461240f565b610ff9565b6102eb610537366004612466565b61101a565b6102eb61054a366004612466565b6110ac565b61030e61055d36600461240f565b6110ba565b61030e610570366004612444565b6113fa565b61030e610583366004612444565b611467565b61030e610596366004612704565b6116fa565b61036b6105a9366004612466565b6001600160a01b03919091166000908152600f60209081526040808320938352929052205490565b61036b6105df366004612734565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61030e610618366004612767565b611859565b61030e61062b366004612444565b611a04565b61066f61063e36600461240f565b600d60205260009081526040902080546001820154600283015460039093015491926001600160a01b039091169184565b604080519485526001600160a01b0390931660208501529183015260608201526080016102bf565b61030e6106a536600461240f565b611a9c565b61036b60105481565b6005546001600160a01b031633146106e65760405162461bcd60e51b81526004016106dd90612789565b60405180910390fd5b6040516370a0823160e01b8152306004820152829082906001600160a01b038316906370a0823190602401602060405180830381865afa15801561072e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075291906127be565b10156107a05760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e636500000000000060448201526064016106dd565b806001600160a01b031663a9059cbb6107c16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044015b6020604051808303816000875af115801561080f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083391906127d7565b50505050565b606060038054610848906127f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906127f4565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b6000336108d9818585611cea565b60019150505b92915050565b3360009081526006602052604090205460ff1615156001148061091257506005546001600160a01b031633145b61092e5760405162461bcd60e51b81526004016106dd9061282e565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6005546001600160a01b031633146109795760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000336109a8858285611e0e565b6109b3858585611e9a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108d990829086906109f890879061287b565b611cea565b60008111610a4d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e20300060448201526064016106dd565b336000818152600860205260409020548291610a68906104b6565b610a72919061288e565b1015610ab75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016106dd565b3360009081526008602052604081208054839290610ad690849061287b565b9250508190555080600a6000828254610aef919061287b565b90915550506040514290829033907f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9090600090a450565b6005546001600160a01b03163314610b505760405162461bcd60e51b81526004016106dd90612789565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610b89573d6000803e3d6000fd5b50565b3360009081526006602052604090205460ff16151560011480610bb957506005546001600160a01b031633145b610bd55760405162461bcd60e51b81526004016106dd9061282e565b6000848152600d602052604090205415610c315760405162461bcd60e51b815260206004820152601860248201527f52657761726420494420616c726561647920657869737473000000000000000060448201526064016106dd565b604080516080810182528581526001600160a01b039485166020808301918252828401958652606083019485526000978852600d90529190952094518555516001850180546001600160a01b031916919094161790925551600283015551600390910155565b3360009081526006602052604090205460ff16151560011480610cc457506005546001600160a01b031633145b610ce05760405162461bcd60e51b81526004016106dd9061282e565b8051825114610d505760405162461bcd60e51b815260206004820152603660248201527f41646472657373206c69737420616e6420616d6f756e74206c697374206d75736044820152750e840d0c2ecca40e8d0ca40e6c2daca40d8cadccee8d60531b60648201526084016106dd565b60005b8251811015610833576000838281518110610d7057610d706128a1565b602002602001015190506000838381518110610d8e57610d8e6128a1565b6020908102919091018101516001600160a01b039093166000908152600f8252604080822089835290925220919091555080610dc9816128b7565b915050610d53565b6005546001600160a01b03163314610dfb5760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6005546001600160a01b03163314610e495760405162461bcd60e51b81526004016106dd90612789565b610e536000612073565b565b33600090815260086020526040902054610ea45760405162461bcd60e51b815260206004820152601060248201526f139bc81cdd185ad95908185b5bdd5b9d60821b60448201526064016106dd565b610ead336120c5565b15610f205760405162461bcd60e51b815260206004820152603f60248201527f596f75206861766520616e2061637469766520766f746520616e642063616e6e60448201527f6f7420756e7374616b6520756e74696c2074686520766f746520656e64732e0060648201526084016106dd565b336000908152600860205260408120805490829055600a805491928392610f4890849061288e565b90915550506040514290829033907f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e90600090a450565b3360009081526006602052604090205460ff16151560011480610fac57506005546001600160a01b031633145b610fc85760405162461bcd60e51b81526004016106dd9061282e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610848906127f4565b6011818154811061100957600080fd5b600091825260209091200154905081565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561109f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106dd565b6109b38286868403611cea565b6000336108d9818585611e9a565b6000818152600d6020526040812054900361110f5760405162461bcd60e51b815260206004820152601560248201527414995dd85c9908191bd95cc81b9bdd08195e1a5cdd605a1b60448201526064016106dd565b6000818152600d602052604090206003015442106111685760405162461bcd60e51b815260206004820152601660248201527510db185a5b481c195c9a5bd9081a185cc8195b99195960521b60448201526064016106dd565b336000908152600f60209081526040808320848452825280832054600d9092528083206001015490516370a0823160e01b81523060048201529192916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fa91906127be565b90506000821161124c5760405162461bcd60e51b815260206004820181905260248201527f4e6f2072657761726420746f20636c61696d20666f722074686973207573657260448201526064016106dd565b808211156112ac5760405162461bcd60e51b815260206004820152602760248201527f436f6e74726163742773207265776172642062616c616e6365206973206e6f74604482015266040cadcdeeaced60cb1b60648201526084016106dd565b6000838152600d60205260409020600201548211156113195760405162461bcd60e51b815260206004820152602360248201527f4578636565642074686973207265776172642773206d6178206c696d6974617460448201526234b7b760e91b60648201526084016106dd565b6000838152600d60205260409020600201546113775760405162461bcd60e51b815260206004820181905260248201527f546869732072657761726420686173206265656e20636c61696d6564206f757460448201526064016106dd565b336000908152600f602090815260408083208684528252808320839055600d909152812060020180548492906113ae90849061288e565b90915550506000838152600d60205260409081902060010154905163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016107f0565b3360009081526006602052604090205460ff1615156001148061142757506005546001600160a01b031633145b6114435760405162461bcd60e51b81526004016106dd9061282e565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b3360009081526006602052604090205460ff1615156001148061149457506005546001600160a01b031633145b6114b05760405162461bcd60e51b81526004016106dd9061282e565b600b54604051636eb1769f60e11b81526001600160a01b038381166004830152306024830181905292169190600090839063dd62ed3e90604401602060405180830381865afa158015611507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152b91906127be565b90506a52b7d2dcc80cd2e40000008110156115885760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f756768207375726578546f6b656e20617070726f766564000060448201526064016106dd565b6040516323b872dd60e01b81526001600160a01b0385811660048301523060248301526a52b7d2dcc80cd2e400000060448301528416906323b872dd906064016020604051808303816000875af11580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b91906127d7565b5030600090815260208190526040902054690a968163f0a57b4000008110156116765760405162461bcd60e51b815260206004820152601b60248201527f436f6e74726163742062616c616e6365206e6f7420656e6f756768000000000060448201526064016106dd565b60405163a9059cbb60e01b81526001600160a01b038681166004830152690a968163f0a57b400000602483015284169063a9059cbb906044016020604051808303816000875af11580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f291906127d7565b505050505050565b6000828152600e602052604090206003810154421061174e5760405162461bcd60e51b815260206004820152601060248201526f50726f706f73616c206f75746461746560801b60448201526064016106dd565b6117583382612210565b1561179b5760405162461bcd60e51b8152602060048201526013602482015272596f7527766520766f746564206265666f726560681b60448201526064016106dd565b81156117e4576001810180549060006117b3836128b7565b9091555050600481018054600181018255600091825260209091200180546001600160a01b03191633179055611823565b6002810180549060006117f6836128b7565b9091555050600581018054600181018255600091825260209091200180546001600160a01b031916331790555b60405182151590429033907f047d1f78088af0de45c6023951114b384642d837bd0eaa541521dcd844f7aa3b90600090a4505050565b3360009081526009602052604090205460ff1615156001146118ae5760405162461bcd60e51b815260206004820152600e60248201526d2737ba103090383937b837b9b2b960911b60448201526064016106dd565b6040518060c001604052808381526020016000815260200160008152602001828152602001600067ffffffffffffffff8111156118ed576118ed612555565b604051908082528060200260200182016040528015611916578160200160208202803683370190505b5081526020016000604051908082528060200260200182016040528015611947578160200160208202803683370190505b5090526000838152600e60209081526040918290208351815583820151600182015591830151600283015560608301516003830155608083015180516119939260048501920190612395565b5060a082015180516119af916005840191602090910190612395565b509050506001601060008282546119c6919061287b565b9091555050601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68019190915550565b6005546001600160a01b03163314611a2e5760405162461bcd60e51b81526004016106dd90612789565b6001600160a01b038116611a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106dd565b610b8981612073565b6005546001600160a01b03163314611ac65760405162461bcd60e51b81526004016106dd90612789565b6000818152600d60205260408120549003611b1b5760405162461bcd60e51b815260206004820152601560248201527414995dd85c9908191bd95cc81b9bdd08195e1a5cdd605a1b60448201526064016106dd565b6000818152600d60205260409020600301544211611b7b5760405162461bcd60e51b815260206004820152601a60248201527f436c61696d20706572696f64206e6f7420656e6465642079657400000000000060448201526064016106dd565b6000818152600d60205260408082206001015490516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906127be565b6000838152600d6020526040902060020154909150811015611c5a5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637427732062616c616e6365206973206e6f7420656e6f75676860448201526064016106dd565b6000828152600d6020526040908190206001810154600290910154915163a9059cbb60e01b815233600482015260248101929092526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce591906127d7565b505050565b6001600160a01b038316611d4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106dd565b6001600160a01b038216611dad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106dd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108335781811015611e8d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106dd565b6108338484848403611cea565b6001600160a01b038316611efe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106dd565b6001600160a01b038216611f605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106dd565b611f6b8383836122e4565b6001600160a01b03831660009081526020819052604090205481811015611fe35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106dd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061201a90849061287b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161206691815260200190565b60405180910390a3610833565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000805b601054811015612207576000600e6000601184815481106120ec576120ec6128a1565b90600052602060002001548152602001908152602001600020905060005b600482015481101561217c57846001600160a01b0316826004018281548110612135576121356128a1565b6000918252602090912001546001600160a01b031614801561215a5750428260030154115b1561216a57506001949350505050565b80612174816128b7565b91505061210a565b5060005b60058201548110156121f257846001600160a01b03168260050182815481106121ab576121ab6128a1565b6000918252602090912001546001600160a01b03161480156121d05750428260030154115b156121e057506001949350505050565b806121ea816128b7565b915050612180565b505080806121ff906128b7565b9150506120c9565b50600092915050565b6000805b600483015481101561227557836001600160a01b031683600401828154811061223f5761223f6128a1565b6000918252602090912001546001600160a01b0316036122635760019150506108df565b8061226d816128b7565b915050612214565b5060005b60058301548110156122da57836001600160a01b03168360050182815481106122a4576122a46128a1565b6000918252602090912001546001600160a01b0316036122c85760019150506108df565b806122d2816128b7565b915050612279565b5060009392505050565b6001600160a01b038316301480159061230557506001600160a01b03831615155b15611ce5576001600160a01b0383166000908152600860209081526040808320549183905290912054612338919061288e565b811115611ce55760405162461bcd60e51b815260206004820152602560248201527f596f752063616e206f6e6c79207472616e7366657220756e7374616b656420746044820152646f6b656e7360d81b60648201526084016106dd565b8280548282559060005260206000209081019282156123ea579160200282015b828111156123ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906123b5565b506123f69291506123fa565b5090565b5b808211156123f657600081556001016123fb565b60006020828403121561242157600080fd5b5035919050565b80356001600160a01b038116811461243f57600080fd5b919050565b60006020828403121561245657600080fd5b61245f82612428565b9392505050565b6000806040838503121561247957600080fd5b61248283612428565b946020939093013593505050565b600060208083528351808285015260005b818110156124bd578581018301518582016040015282016124a1565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000606084860312156124f357600080fd5b6124fc84612428565b925061250a60208501612428565b9150604084013590509250925092565b6000806000806080858703121561253057600080fd5b8435935061254060208601612428565b93969395505050506040820135916060013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561259457612594612555565b604052919050565b600067ffffffffffffffff8211156125b6576125b6612555565b5060051b60200190565b600082601f8301126125d157600080fd5b813560206125e66125e18361259c565b61256b565b82815260059290921b8401810191818101908684111561260557600080fd5b8286015b848110156126205780358352918301918301612609565b509695505050505050565b60008060006060848603121561264057600080fd5b8335925060208085013567ffffffffffffffff8082111561266057600080fd5b818701915087601f83011261267457600080fd5b81356126826125e18261259c565b81815260059190911b8301840190848101908a8311156126a157600080fd5b938501935b828510156126c6576126b785612428565b825293850193908501906126a6565b9650505060408701359250808311156126de57600080fd5b50506126ec868287016125c0565b9150509250925092565b8015158114610b8957600080fd5b6000806040838503121561271757600080fd5b823591506020830135612729816126f6565b809150509250929050565b6000806040838503121561274757600080fd5b61275083612428565b915061275e60208401612428565b90509250929050565b6000806040838503121561277a57600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156127d057600080fd5b5051919050565b6000602082840312156127e957600080fd5b815161245f816126f6565b600181811c9082168061280857607f821691505b60208210810361282857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f596f7520646f206e6f742068617665206175746820746f20646f207468697300604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156108df576108df612865565b818103818111156108df576108df612865565b634e487b7160e01b600052603260045260246000fd5b6000600182016128c9576128c9612865565b506001019056fea2646970667358221220cc319f915e9c857f773b2d5843855fd7f58e09cc3daefb2aa1563a094dc324e764736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000276138dfe8f58df0a1cb0ed8c609e5f8877734900000000000000000000000001b96126d6bffeefba682e3c04d404585122e392a0000000000000000000000001a6e4e6adef4bc0eada2f8464195a6507b41df7c000000000000000000000000de6c14a61831b39f8c683ca7701d53b9ad15b07f
-----Decoded View---------------
Arg [0] : _surexTokenAddress (address): 0x276138Dfe8F58DF0A1Cb0ed8C609E5F887773490
Arg [1] : coreTeamAddress (address): 0x1b96126d6bFFeEFBA682E3c04D404585122E392a
Arg [2] : techTeamAddress (address): 0x1a6E4e6adef4Bc0eAdA2F8464195a6507b41DF7C
Arg [3] : devFundAddress (address): 0xDE6C14A61831b39f8C683CA7701d53b9ad15B07F
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000276138dfe8f58df0a1cb0ed8c609e5f887773490
Arg [1] : 0000000000000000000000001b96126d6bffeefba682e3c04d404585122e392a
Arg [2] : 0000000000000000000000001a6e4e6adef4bc0eada2f8464195a6507b41df7c
Arg [3] : 000000000000000000000000de6c14a61831b39f8c683ca7701d53b9ad15b07f
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.