Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 435 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 20453136 | 579 days ago | IN | 0 ETH | 0.00007174 | ||||
| Transfer | 20453124 | 579 days ago | IN | 0 ETH | 0.00007196 | ||||
| Transfer | 20446860 | 580 days ago | IN | 0 ETH | 0.00009099 | ||||
| Transfer | 20446675 | 580 days ago | IN | 0 ETH | 0.00011324 | ||||
| Transfer | 20159858 | 620 days ago | IN | 0 ETH | 0.00010324 | ||||
| Transfer | 20018933 | 640 days ago | IN | 0 ETH | 0.00036879 | ||||
| Transfer | 20007985 | 641 days ago | IN | 0 ETH | 0.00044438 | ||||
| Transfer | 20007970 | 641 days ago | IN | 0 ETH | 0.00089045 | ||||
| Transfer | 19836852 | 665 days ago | IN | 0 ETH | 0.00022259 | ||||
| Transfer | 19822925 | 667 days ago | IN | 0 ETH | 0.00025358 | ||||
| Transfer | 19715757 | 682 days ago | IN | 0 ETH | 0.00020636 | ||||
| Transfer | 19715706 | 682 days ago | IN | 0 ETH | 0.00016129 | ||||
| Transfer | 19715706 | 682 days ago | IN | 0 ETH | 0.00016129 | ||||
| Transfer | 19715706 | 682 days ago | IN | 0 ETH | 0.00016411 | ||||
| Transfer | 19715706 | 682 days ago | IN | 0 ETH | 0.00017175 | ||||
| Transfer | 19715706 | 682 days ago | IN | 0 ETH | 0.00017927 | ||||
| Transfer | 19538657 | 707 days ago | IN | 0 ETH | 0.00118436 | ||||
| Transfer | 19053526 | 775 days ago | IN | 0 ETH | 0.00026447 | ||||
| Transfer | 18975728 | 786 days ago | IN | 0 ETH | 0.00088131 | ||||
| Transfer | 18969868 | 787 days ago | IN | 0 ETH | 0.00114202 | ||||
| Transfer | 18946306 | 790 days ago | IN | 0 ETH | 0.00034559 | ||||
| Transfer | 18945784 | 790 days ago | IN | 0 ETH | 0.00067093 | ||||
| Transfer | 18940389 | 791 days ago | IN | 0 ETH | 0.00079288 | ||||
| Transfer | 18940323 | 791 days ago | IN | 0 ETH | 0.00043587 | ||||
| Transfer | 18940315 | 791 days ago | IN | 0 ETH | 0.0007812 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MCNC
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./ERC20.sol";
import "./Ownable.sol";
import "./Math.sol";
contract MCNC is ERC20, Ownable {
using Math for uint256;
address public walletOrigin = 0x046C458Bf5dFBC6B191c59ecF45c07473Fc2e6bc;
address public walletMarketProtection = 0x364F1E2781D9c7901fa5c9F3308F474c52631c8b;
address public walletFoundingPartners = 0x8ffe85249F1aDd94A0D94306A0C66B6738348dA9;
address public walletBlockedFoundingPartners = 0x770D3bef65F8Ae51869F58Bc1461f3Fe3c1150c1;
address public walletSocialPartners = 0xa199096E1dE5fCe2A0ffC4622cFf225766D19BF3;
address public walletProgrammersAndPartners = 0x7D63F43442517e07c9F06Bbe5E7Edc14e3E80704;
address public walletPrivateInvestors = 0x97beAace7f455bc1bbe7b1942A40eCa2deF06dF9;
address public walletStakingMCNC = 0xAA31Ee7988626392aC629662c0E0c65633b568fE;
address public walletUnlock = 0x8742758d47Adce4A8584aeA708102be6b492177E;
address public operatorAddress;
uint256 public MAX_BURN_AMOUNT = 0 * (10 ** decimals());
uint256 public BURN_AMOUNT = 0 * (10 ** decimals());
uint256 public lastBurnDay = block.timestamp;
uint256 public burnedAmount = 0;
uint256 private _maxStakingAmount = 20_000_000 * (10 ** decimals());
uint256 private _maxStakingAmountPerAccount = 10_000_000 * (10 ** decimals());
uint256 private _totalStakingAmount = 0;
uint256 private _stakingPeriod = block.timestamp + 29 days;
uint256 private _stakingFirstPeriod = block.timestamp + 29 days;
uint256 private _stakingSecondPeriod = block.timestamp + 29 days;
uint256 private _stakingFirstPeriodReward = 7;
uint256 private _stakingSecondPeriodReward = 7;
uint256 public deployedTime = block.timestamp;
uint256 public lastUnlockTime;
uint256 public unlockAmountPerMonth = 100_000 * (10 ** decimals());
// Mapping owner address to staked token count
mapping (address => uint) _stakedBalances;
// Mapping from owner to last reward time
mapping (address => uint) _rewardedLastTime;
event StakingSucceed(address indexed account, uint256 totalStakedAmount);
event WithdrawSucceed(address indexed account, uint256 remainedStakedAmount);
/**
* @dev modifier which requires that account must be operator
*/
modifier onlyOperator() {
require(_msgSender() == operatorAddress, "operator: wut?");
_;
}
/**
* @dev modifier which requires that walletAddress is not blocked address(walletMarketProtection),
* until blocking period.
*/
modifier onlyUnblock(address walletAddress) {
require((walletAddress != walletMarketProtection && walletAddress != walletBlockedFoundingPartners)
|| block.timestamp > deployedTime + 365 days, "This wallet address is blocked for 365 years." );
_;
}
/**
* @dev Constructor: mint pre-defined amount of tokens to special wallets.
*/
constructor() ERC20("Multi Network Connect", "MCNC") {
operatorAddress = _msgSender();
//uint totalSupply = 100_000_000 * (10 ** decimals());
// 30% of total supply to walletOrigin
_mint(walletOrigin, 30_000_000 * (10 ** decimals()));
// 1% of total supply to walletMarketProtection
_mint(walletMarketProtection, 1_000_000 * (10 ** decimals()));
// 9% of total supply to walletFoundingPartners
_mint(walletFoundingPartners, 9_000_000 * (10 ** decimals()));
// 1% of total supply to walletBlockedFoundingPartners
_mint(walletBlockedFoundingPartners, 10_000_000 * (10 ** decimals()));
// 30% of total supply to walletSocialPartners
_mint(walletSocialPartners, 30_000_000 * (10 ** decimals()));
// 9% of total supply to walletProgrammersAndPartners
_mint(walletProgrammersAndPartners, 9_000_000 * (10 ** decimals()));
// 20% of total supply to walletPrivateInvestors
_mint(walletPrivateInvestors, 20_000_000 * (10 ** decimals()));
}
/**
* @dev set operator address
* callable by owner
*/
function setOperator(address _operator) external onlyOwner {
require(_operator != address(0), "Cannot be zero address");
operatorAddress = _operator;
}
/**
* @dev Destroys `amount` tokens from `walletOrigin`, reducing the
* total supply.
*
* Requirements:
*
* - total burning amount can not exceed `_maxBurnAmount`
* - burning moment have to be 90 days later from `lastBurnDay`
*/
function burn() external onlyOperator {
require(burnedAmount + BURN_AMOUNT <= MAX_BURN_AMOUNT, "Burning too much.");
require(lastBurnDay + 90 days <= block.timestamp, "It's not time to burn. 90 days aren't passed since last burn");
lastBurnDay = block.timestamp;
_burn(walletOrigin, BURN_AMOUNT);
burnedAmount += BURN_AMOUNT;
}
/**
* @dev Stake `amount` tokens from `msg.sender` to `walletOrigin`, calculate reward upto now.
*
* Emits a {StakingSucceed} event with `account` and total staked balance of `account`
*
* Requirements:
*
* - `account` must have at least `amount` tokens
* - staking moment have to be in staking period
* - staked balance of each account can not exceed `_maxStakingAmountPerAccount`
* - total staking amount can not exceed `_totalStakingAmount`
*/
function stake(uint amount) external {
address account = _msgSender();
require(balanceOf(account) >= amount, "insufficient balance for staking.");
require(block.timestamp <= _stakingPeriod, "The time is over staking period.");
_updateReward(account);
_stakedBalances[account] += amount;
require(_stakedBalances[account] <= _maxStakingAmountPerAccount, "This account overflows staking amount");
_totalStakingAmount += amount;
require(_totalStakingAmount <= _maxStakingAmount, "Total staking amount overflows its limit.");
_transfer(account, walletStakingMCNC, amount);
emit StakingSucceed(account, _stakedBalances[account]);
}
/**
* @dev Returns the amount of tokens owned by `account`. Something different from ERC20 is
* adding reward which is not yet appended to account wallet.
*/
function balanceOf(address account) public view override returns (uint) {
return ERC20.balanceOf(account) + getAvailableReward(account);
}
/**
* @dev Get account's reward which is yielded after last rewarded time.
*
* @notice if getting moment is after stakingPeriod, the reward must be 0.
*
* First `if` statement is in case of `lastTime` is before firstPeriod.
* `lastTime` block.timestamp(if1) block.timestamp(if2)
* ||----------|---------------|------------||------------------------|-----------||
* firstPeriod secondPeriod
*
* Second `if` statement is in case of block.timestamp is in secondPeriod.
*/
function getAvailableReward(address account) public view returns (uint) {
if (_rewardedLastTime[account] > _stakingPeriod) return 0;
uint reward = 0;
if (_rewardedLastTime[account] <= _stakingFirstPeriod) {
uint rewardDays = _stakingFirstPeriod.min(block.timestamp) - _rewardedLastTime[account];
rewardDays /= 1 days;
reward = rewardDays * _stakedBalances[account] * _stakingFirstPeriodReward / 1000000;
}
if (block.timestamp > _rewardedLastTime[account]) {
uint rewardDays = _stakingPeriod.min(block.timestamp) - _rewardedLastTime[account];
rewardDays /= 1 days;
reward += 29 * _stakedBalances[account] * _stakingSecondPeriodReward / 1000000;
}
return reward;
}
/**
* @dev Withdraw `amount` tokens from stakingPool(`walletOrigin`) to `msg.sender` address, calculate reward upto now.
*
* Emits a {WithdrawSucceed} event with `account` and total staked balance of `account`
*
* Requirements:
*
* - staked balance of `msg.sender` must be at least `amount`.
*/
function withdraw(uint amount) external {
address account = _msgSender();
require (_stakedBalances[account] >= amount, "Can't withdraw more than staked balance");
_updateReward(account);
_stakedBalances[account] -= amount;
_totalStakingAmount -= amount;
_transfer(walletStakingMCNC, account, amount);
emit WithdrawSucceed(account, _stakedBalances[account]);
}
/**
* @dev Hook that is called before any transfer of tokens.
* Here, update from's balance by adding not-yet-appended reward.
*
* Requirements:
*
* - blocked wallet (walletMarketProtection) can't be tranferred or transfer any balance.
function _beforeTokenTransfer(address from, address to, uint256) internal override onlyUnblock(from) {
if (from != address(0) && from != walletOrigin) {
_updateReward(from);
}
}*/
/**
* @dev Get account's available reward which is yielded from last rewarded moment.
* And append available reward to account's balance.
*/
function _updateReward(address account) public {
uint availableReward = getAvailableReward(account);
_rewardedLastTime[account] = block.timestamp;
_transfer(walletOrigin, account, availableReward);
}
/**
* @dev Unlock `walletMarketProtection`, which means that transfer tokens from `walletMarketProtection`
* to `walletUnlock`, so that it can be traded across users.ok
*/
function unlockProtection() public onlyOperator {
require (block.timestamp > deployedTime + 5 * 31 days, "Unlock is not allowed now");
require (block.timestamp > lastUnlockTime + 31 days, "Unlock must be 31 days later from previous unlock");
lastUnlockTime = block.timestamp;
_transfer(walletMarketProtection, walletUnlock, unlockAmountPerMonth);
}
} // SPDX-License-Identifier: MIT
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
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./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.zeppelin.solutions/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}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) internal _balances; // modified from private to internal
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:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, 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}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), 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}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - 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) {
_approve(_msgSender(), spender, _allowances[_msgSender()][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) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), 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:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, 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 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
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
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 `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
address recipient,
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);
}
// SPDX-License-Identifier: MIT
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
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b - 1) / b can overflow on addition, so we distribute.
return a / b + (a % b == 0 ? 0 : 1);
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
contract Migrations {
address public owner = msg.sender;
uint public last_completed_migration;
modifier restricted() {
require(
msg.sender == owner,
"This function is restricted to the contract's owner"
);
_;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(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");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalStakedAmount","type":"uint256"}],"name":"StakingSucceed","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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"remainedStakedAmount","type":"uint256"}],"name":"WithdrawSucceed","type":"event"},{"inputs":[],"name":"BURN_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BURN_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_updateReward","outputs":[],"stateMutability":"nonpayable","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":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"deployedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAvailableReward","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":"lastBurnDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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":"unlockAmountPerMonth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletBlockedFoundingPartners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletFoundingPartners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletMarketProtection","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletOrigin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletPrivateInvestors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletProgrammersAndPartners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletSocialPartners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletStakingMCNC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletUnlock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405273046c458bf5dfbc6b191c59ecf45c07473fc2e6bc600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073364f1e2781d9c7901fa5c9f3308f474c52631c8b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ffe85249f1add94a0d94306a0c66b6738348da9600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073770d3bef65f8ae51869f58bc1461f3fe3c1150c1600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a199096e1de5fce2a0ffc4622cff225766d19bf3600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737d63f43442517e07c9f06bbe5e7edc14e3e80704600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507397beaace7f455bc1bbe7b1942a40eca2def06df9600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa31ee7988626392ac629662c0e0c65633b568fe600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738742758d47adce4a8584aea708102be6b492177e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003116200081960201b60201c565b600a6200031f919062000c63565b60006200032d919062000da0565b601055620003406200081960201b60201c565b600a6200034e919062000c63565b60006200035c919062000da0565b601155426012556000601355620003786200081960201b60201c565b600a62000386919062000c63565b6301312d0062000397919062000da0565b601455620003aa6200081960201b60201c565b600a620003b8919062000c63565b62989680620003c8919062000da0565b601555600060165562263b8042620003e1919062000bab565b60175562263b8042620003f5919062000bab565b60185562263b804262000409919062000bab565b6019556007601a556007601b5542601c556200042a6200081960201b60201c565b600a62000438919062000c63565b620186a062000448919062000da0565b601e553480156200045857600080fd5b506040518060400160405280601581526020017f4d756c7469204e6574776f726b20436f6e6e65637400000000000000000000008152506040518060400160405280600481526020017f4d434e43000000000000000000000000000000000000000000000000000000008152508160039080519060200190620004dd92919062000a73565b508060049080519060200190620004f692919062000a73565b505050620005196200050d6200082260201b60201c565b6200082a60201b60201c565b620005296200082260201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005cb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620005a06200081960201b60201c565b600a620005ae919062000c63565b6301c9c380620005bf919062000da0565b620008f060201b60201c565b6200062c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006026200081960201b60201c565b600a62000610919062000c63565b620f424062000620919062000da0565b620008f060201b60201c565b6200068d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006636200081960201b60201c565b600a62000671919062000c63565b6289544062000681919062000da0565b620008f060201b60201c565b620006ee600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006c46200081960201b60201c565b600a620006d2919062000c63565b62989680620006e2919062000da0565b620008f060201b60201c565b62000750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620007256200081960201b60201c565b600a62000733919062000c63565b6301c9c38062000744919062000da0565b620008f060201b60201c565b620007b1600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620007876200081960201b60201c565b600a62000795919062000c63565b62895440620007a5919062000da0565b620008f060201b60201c565b62000813600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620007e86200081960201b60201c565b600a620007f6919062000c63565b6301312d0062000807919062000da0565b620008f060201b60201c565b62000ee2565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000963576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095a9062000b5b565b60405180910390fd5b620009776000838362000a6960201b60201c565b80600260008282546200098b919062000bab565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e2919062000bab565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a49919062000b7d565b60405180910390a362000a656000838362000a6e60201b60201c565b5050565b505050565b505050565b82805462000a819062000e18565b90600052602060002090601f01602090048101928262000aa5576000855562000af1565b82601f1062000ac057805160ff191683800117855562000af1565b8280016001018555821562000af1579182015b8281111562000af057825182559160200191906001019062000ad3565b5b50905062000b00919062000b04565b5090565b5b8082111562000b1f57600081600090555060010162000b05565b5090565b600062000b32601f8362000b9a565b915062000b3f8262000eb9565b602082019050919050565b62000b558162000e01565b82525050565b6000602082019050818103600083015262000b768162000b23565b9050919050565b600060208201905062000b94600083018462000b4a565b92915050565b600082825260208201905092915050565b600062000bb88262000e01565b915062000bc58362000e01565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000bfd5762000bfc62000e4e565b5b828201905092915050565b6000808291508390505b600185111562000c5a5780860481111562000c325762000c3162000e4e565b5b600185161562000c425780820291505b808102905062000c528562000eac565b945062000c12565b94509492505050565b600062000c708262000e01565b915062000c7d8362000e0b565b925062000cac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb4565b905092915050565b60008262000cc6576001905062000d99565b8162000cd6576000905062000d99565b816001811462000cef576002811462000cfa5762000d30565b600191505062000d99565b60ff84111562000d0f5762000d0e62000e4e565b5b8360020a91508482111562000d295762000d2862000e4e565b5b5062000d99565b5060208310610133831016604e8410600b841016171562000d6a5782820a90508381111562000d645762000d6362000e4e565b5b62000d99565b62000d79848484600162000c08565b9250905081840481111562000d935762000d9262000e4e565b5b81810290505b9392505050565b600062000dad8262000e01565b915062000dba8362000e01565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df65762000df562000e4e565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000e3157607f821691505b6020821081141562000e485762000e4762000e7d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6133328062000ef26000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c8063667b11a511610130578063a457c2d7116100b8578063bdbc49c51161007c578063bdbc49c51461064f578063dd62ed3e1461066d578063e1bd9ccb1461069d578063e7949b82146106bb578063f2fde38b146106d957610232565b8063a457c2d714610599578063a5c38b3d146105c9578063a694fc3a146105e7578063a9059cbb14610603578063b3ab15fb1461063357610232565b8063715018a6116100ff578063715018a6146105195780637bf2d66a146105235780638cae85b31461053f5780638da5cb5b1461055d57806395d89b411461057b57610232565b8063667b11a5146104a35780636a2e1a65146104c15780636e7de4c6146104cb57806370a08231146104e957610232565b806325e25633116101be57806344df8e701161018257806344df8e701461040f578063461ac0191461041957806346a1cd081461043757806350e15fdd14610467578063636508f61461048557610232565b806325e25633146103695780632e1a7d4d14610387578063313ce567146103a357806339509351146103c157806341bcca36146103f157610232565b806313d3fb871161020557806313d3fb87146102c157806317528b79146102df57806318160ddd146102fd57806320ad6ae31461031b57806323b872dd1461033957610232565b80630195428a1461023757806306fdde0314610255578063095ea7b314610273578063127effb2146102a3575b600080fd5b61023f6106f5565b60405161024c919061270c565b60405180910390f35b61025d61071b565b60405161026a9190612742565b60405180910390f35b61028d60048036038101906102889190612328565b6107ad565b60405161029a9190612727565b60405180910390f35b6102ab6107cb565b6040516102b8919061270c565b60405180910390f35b6102c96107f1565b6040516102d6919061270c565b60405180910390f35b6102e7610817565b6040516102f4919061270c565b60405180910390f35b61030561083d565b6040516103129190612a24565b60405180910390f35b610323610847565b6040516103309190612a24565b60405180910390f35b610353600480360381019061034e91906122d5565b61084d565b6040516103609190612727565b60405180910390f35b610371610945565b60405161037e9190612a24565b60405180910390f35b6103a1600480360381019061039c9190612368565b61094b565b005b6103ab610b0f565b6040516103b89190612a3f565b60405180910390f35b6103db60048036038101906103d69190612328565b610b18565b6040516103e89190612727565b60405180910390f35b6103f9610bc4565b604051610406919061270c565b60405180910390f35b610417610bea565b005b610421610d7a565b60405161042e9190612a24565b60405180910390f35b610451600480360381019061044c9190612268565b610d80565b60405161045e9190612a24565b60405180910390f35b61046f611037565b60405161047c9190612a24565b60405180910390f35b61048d61103d565b60405161049a919061270c565b60405180910390f35b6104ab611063565b6040516104b8919061270c565b60405180910390f35b6104c9611089565b005b6104d361121e565b6040516104e09190612a24565b60405180910390f35b61050360048036038101906104fe9190612268565b611224565b6040516105109190612a24565b60405180910390f35b610521611249565b005b61053d60048036038101906105389190612268565b6112d1565b005b610547611353565b604051610554919061270c565b60405180910390f35b610565611379565b604051610572919061270c565b60405180910390f35b6105836113a3565b6040516105909190612742565b60405180910390f35b6105b360048036038101906105ae9190612328565b611435565b6040516105c09190612727565b60405180910390f35b6105d1611520565b6040516105de9190612a24565b60405180910390f35b61060160048036038101906105fc9190612368565b611526565b005b61061d60048036038101906106189190612328565b6117c3565b60405161062a9190612727565b60405180910390f35b61064d60048036038101906106489190612268565b6117e1565b005b610657611911565b604051610664919061270c565b60405180910390f35b61068760048036038101906106829190612295565b611937565b6040516106949190612a24565b60405180910390f35b6106a56119be565b6040516106b29190612a24565b60405180910390f35b6106c36119c4565b6040516106d0919061270c565b60405180910390f35b6106f360048036038101906106ee9190612268565b6119ea565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461072a90612c13565b80601f016020809104026020016040519081016040528092919081815260200182805461075690612c13565b80156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b5050505050905090565b60006107c16107ba611ae2565b8484611aea565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60115481565b600061085a848484611cb5565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a5611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c906128e4565b60405180910390fd5b61093985610931611ae2565b858403611aea565b60019150509392505050565b601e5481565b6000610955611ae2565b905081601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d0906129e4565b60405180910390fd5b6109e2816112d1565b81601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a319190612b57565b925050819055508160166000828254610a4a9190612b57565b92505081905550610a7e600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284611cb5565b8073ffffffffffffffffffffffffffffffffffffffff167f4093febcf3c9d9fdb3b1e41430f7c99d1cfe9414ecf2dfd477412197b94c298e601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610b039190612a24565b60405180910390a25050565b60006012905090565b6000610bba610b25611ae2565b848460016000610b33611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bb59190612a76565b611aea565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2b611ae2565b73ffffffffffffffffffffffffffffffffffffffff1614610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c78906129a4565b60405180910390fd5b601054601154601354610c949190612a76565b1115610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc906128c4565b60405180910390fd5b426276a700601254610ce79190612a76565b1115610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90612924565b60405180910390fd5b42601281905550610d5d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601154611f36565b60115460136000828254610d719190612a76565b92505081905550565b601c5481565b6000601754602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610dd45760009050611032565b6000601854602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610efc576000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e754260185461210d90919063ffffffff16565b610e7f9190612b57565b90506201518081610e909190612acc565b9050620f4240601a54601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ee49190612afd565b610eee9190612afd565b610ef89190612acc565b9150505b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111561102d576000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9a4260175461210d90919063ffffffff16565b610fa49190612b57565b90506201518081610fb59190612acc565b9050620f4240601b54601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d61100a9190612afd565b6110149190612afd565b61101e9190612acc565b826110299190612a76565b9150505b809150505b919050565b60135481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ca611ae2565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906129a4565b60405180910390fd5b62cc5880601c546111319190612a76565b4211611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990612824565b60405180910390fd5b6228de80601d546111839190612a76565b42116111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612844565b60405180910390fd5b42601d8190555061121c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e54611cb5565b565b60105481565b600061122f82610d80565b61123883612126565b6112429190612a76565b9050919050565b611251611ae2565b73ffffffffffffffffffffffffffffffffffffffff1661126f611379565b73ffffffffffffffffffffffffffffffffffffffff16146112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90612904565b60405180910390fd5b6112cf600061216e565b565b60006112dc82610d80565b905042602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061134f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383611cb5565b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113b290612c13565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612c13565b801561142b5780601f106114005761010080835404028352916020019161142b565b820191906000526020600020905b81548152906001019060200180831161140e57829003601f168201915b5050505050905090565b60008060016000611444611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f890612a04565b60405180910390fd5b61151561150c611ae2565b85858403611aea565b600191505092915050565b601d5481565b6000611530611ae2565b90508161153c82611224565b101561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612984565b60405180910390fd5b6017544211156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906127a4565b60405180910390fd5b6115cb816112d1565b81601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461161a9190612a76565b92505081905550601554601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612864565b60405180910390fd5b81601660008282546116b79190612a76565b925050819055506014546016541115611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90612784565b60405180910390fd5b61173281600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb5565b8073ffffffffffffffffffffffffffffffffffffffff167ff347cac857cf3719ebc8125da30c6ff32a10bc7c0a171ba8c95c43a10d3a4b82601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516117b79190612a24565b60405180910390a25050565b60006117d76117d0611ae2565b8484611cb5565b6001905092915050565b6117e9611ae2565b73ffffffffffffffffffffffffffffffffffffffff16611807611379565b73ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490612904565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906128a4565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119f2611ae2565b73ffffffffffffffffffffffffffffffffffffffff16611a10611379565b73ffffffffffffffffffffffffffffffffffffffff1614611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612904565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd906127e4565b60405180910390fd5b611adf8161216e565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906129c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190612804565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca89190612a24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90612964565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90612764565b60405180910390fd5b611da0838383612234565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d90612884565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb99190612a76565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f1d9190612a24565b60405180910390a3611f30848484612239565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90612944565b60405180910390fd5b611fb282600083612234565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f906127c4565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461208f9190612b57565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f49190612a24565b60405180910390a361210883600084612239565b505050565b600081831061211c578161211e565b825b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b60008135905061224d816132ce565b92915050565b600081359050612262816132e5565b92915050565b60006020828403121561227e5761227d612cd2565b5b600061228c8482850161223e565b91505092915050565b600080604083850312156122ac576122ab612cd2565b5b60006122ba8582860161223e565b92505060206122cb8582860161223e565b9150509250929050565b6000806000606084860312156122ee576122ed612cd2565b5b60006122fc8682870161223e565b935050602061230d8682870161223e565b925050604061231e86828701612253565b9150509250925092565b6000806040838503121561233f5761233e612cd2565b5b600061234d8582860161223e565b925050602061235e85828601612253565b9150509250929050565b60006020828403121561237e5761237d612cd2565b5b600061238c84828501612253565b91505092915050565b61239e81612b8b565b82525050565b6123ad81612b9d565b82525050565b60006123be82612a5a565b6123c88185612a65565b93506123d8818560208601612be0565b6123e181612cd7565b840191505092915050565b60006123f9602383612a65565b915061240482612ce8565b604082019050919050565b600061241c602983612a65565b915061242782612d37565b604082019050919050565b600061243f602083612a65565b915061244a82612d86565b602082019050919050565b6000612462602283612a65565b915061246d82612daf565b604082019050919050565b6000612485602683612a65565b915061249082612dfe565b604082019050919050565b60006124a8602283612a65565b91506124b382612e4d565b604082019050919050565b60006124cb601983612a65565b91506124d682612e9c565b602082019050919050565b60006124ee603183612a65565b91506124f982612ec5565b604082019050919050565b6000612511602583612a65565b915061251c82612f14565b604082019050919050565b6000612534602683612a65565b915061253f82612f63565b604082019050919050565b6000612557601683612a65565b915061256282612fb2565b602082019050919050565b600061257a601183612a65565b915061258582612fdb565b602082019050919050565b600061259d602883612a65565b91506125a882613004565b604082019050919050565b60006125c0602083612a65565b91506125cb82613053565b602082019050919050565b60006125e3603c83612a65565b91506125ee8261307c565b604082019050919050565b6000612606602183612a65565b9150612611826130cb565b604082019050919050565b6000612629602583612a65565b91506126348261311a565b604082019050919050565b600061264c602183612a65565b915061265782613169565b604082019050919050565b600061266f600e83612a65565b915061267a826131b8565b602082019050919050565b6000612692602483612a65565b915061269d826131e1565b604082019050919050565b60006126b5602783612a65565b91506126c082613230565b604082019050919050565b60006126d8602583612a65565b91506126e38261327f565b604082019050919050565b6126f781612bc9565b82525050565b61270681612bd3565b82525050565b60006020820190506127216000830184612395565b92915050565b600060208201905061273c60008301846123a4565b92915050565b6000602082019050818103600083015261275c81846123b3565b905092915050565b6000602082019050818103600083015261277d816123ec565b9050919050565b6000602082019050818103600083015261279d8161240f565b9050919050565b600060208201905081810360008301526127bd81612432565b9050919050565b600060208201905081810360008301526127dd81612455565b9050919050565b600060208201905081810360008301526127fd81612478565b9050919050565b6000602082019050818103600083015261281d8161249b565b9050919050565b6000602082019050818103600083015261283d816124be565b9050919050565b6000602082019050818103600083015261285d816124e1565b9050919050565b6000602082019050818103600083015261287d81612504565b9050919050565b6000602082019050818103600083015261289d81612527565b9050919050565b600060208201905081810360008301526128bd8161254a565b9050919050565b600060208201905081810360008301526128dd8161256d565b9050919050565b600060208201905081810360008301526128fd81612590565b9050919050565b6000602082019050818103600083015261291d816125b3565b9050919050565b6000602082019050818103600083015261293d816125d6565b9050919050565b6000602082019050818103600083015261295d816125f9565b9050919050565b6000602082019050818103600083015261297d8161261c565b9050919050565b6000602082019050818103600083015261299d8161263f565b9050919050565b600060208201905081810360008301526129bd81612662565b9050919050565b600060208201905081810360008301526129dd81612685565b9050919050565b600060208201905081810360008301526129fd816126a8565b9050919050565b60006020820190508181036000830152612a1d816126cb565b9050919050565b6000602082019050612a3960008301846126ee565b92915050565b6000602082019050612a5460008301846126fd565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612a8182612bc9565b9150612a8c83612bc9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ac157612ac0612c45565b5b828201905092915050565b6000612ad782612bc9565b9150612ae283612bc9565b925082612af257612af1612c74565b5b828204905092915050565b6000612b0882612bc9565b9150612b1383612bc9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b4c57612b4b612c45565b5b828202905092915050565b6000612b6282612bc9565b9150612b6d83612bc9565b925082821015612b8057612b7f612c45565b5b828203905092915050565b6000612b9682612ba9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612bfe578082015181840152602081019050612be3565b83811115612c0d576000848401525b50505050565b60006002820490506001821680612c2b57607f821691505b60208210811415612c3f57612c3e612ca3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f546f74616c207374616b696e6720616d6f756e74206f766572666c6f7773206960008201527f7473206c696d69742e0000000000000000000000000000000000000000000000602082015250565b7f5468652074696d65206973206f766572207374616b696e6720706572696f642e600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f556e6c6f636b206973206e6f7420616c6c6f776564206e6f7700000000000000600082015250565b7f556e6c6f636b206d7573742062652033312064617973206c617465722066726f60008201527f6d2070726576696f757320756e6c6f636b000000000000000000000000000000602082015250565b7f54686973206163636f756e74206f766572666c6f7773207374616b696e67206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206265207a65726f206164647265737300000000000000000000600082015250565b7f4275726e696e6720746f6f206d7563682e000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f49742773206e6f742074696d6520746f206275726e2e2039302064617973206160008201527f72656e2774207061737365642073696e6365206c617374206275726e00000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f696e73756666696369656e742062616c616e636520666f72207374616b696e6760008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f6f70657261746f723a207775743f000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f43616e2774207769746864726177206d6f7265207468616e207374616b65642060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6132d781612b8b565b81146132e257600080fd5b50565b6132ee81612bc9565b81146132f957600080fd5b5056fea264697066735822122058500e7d783d7d7fb847130be5198af27f397b50379a1778a332052043423fee64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c8063667b11a511610130578063a457c2d7116100b8578063bdbc49c51161007c578063bdbc49c51461064f578063dd62ed3e1461066d578063e1bd9ccb1461069d578063e7949b82146106bb578063f2fde38b146106d957610232565b8063a457c2d714610599578063a5c38b3d146105c9578063a694fc3a146105e7578063a9059cbb14610603578063b3ab15fb1461063357610232565b8063715018a6116100ff578063715018a6146105195780637bf2d66a146105235780638cae85b31461053f5780638da5cb5b1461055d57806395d89b411461057b57610232565b8063667b11a5146104a35780636a2e1a65146104c15780636e7de4c6146104cb57806370a08231146104e957610232565b806325e25633116101be57806344df8e701161018257806344df8e701461040f578063461ac0191461041957806346a1cd081461043757806350e15fdd14610467578063636508f61461048557610232565b806325e25633146103695780632e1a7d4d14610387578063313ce567146103a357806339509351146103c157806341bcca36146103f157610232565b806313d3fb871161020557806313d3fb87146102c157806317528b79146102df57806318160ddd146102fd57806320ad6ae31461031b57806323b872dd1461033957610232565b80630195428a1461023757806306fdde0314610255578063095ea7b314610273578063127effb2146102a3575b600080fd5b61023f6106f5565b60405161024c919061270c565b60405180910390f35b61025d61071b565b60405161026a9190612742565b60405180910390f35b61028d60048036038101906102889190612328565b6107ad565b60405161029a9190612727565b60405180910390f35b6102ab6107cb565b6040516102b8919061270c565b60405180910390f35b6102c96107f1565b6040516102d6919061270c565b60405180910390f35b6102e7610817565b6040516102f4919061270c565b60405180910390f35b61030561083d565b6040516103129190612a24565b60405180910390f35b610323610847565b6040516103309190612a24565b60405180910390f35b610353600480360381019061034e91906122d5565b61084d565b6040516103609190612727565b60405180910390f35b610371610945565b60405161037e9190612a24565b60405180910390f35b6103a1600480360381019061039c9190612368565b61094b565b005b6103ab610b0f565b6040516103b89190612a3f565b60405180910390f35b6103db60048036038101906103d69190612328565b610b18565b6040516103e89190612727565b60405180910390f35b6103f9610bc4565b604051610406919061270c565b60405180910390f35b610417610bea565b005b610421610d7a565b60405161042e9190612a24565b60405180910390f35b610451600480360381019061044c9190612268565b610d80565b60405161045e9190612a24565b60405180910390f35b61046f611037565b60405161047c9190612a24565b60405180910390f35b61048d61103d565b60405161049a919061270c565b60405180910390f35b6104ab611063565b6040516104b8919061270c565b60405180910390f35b6104c9611089565b005b6104d361121e565b6040516104e09190612a24565b60405180910390f35b61050360048036038101906104fe9190612268565b611224565b6040516105109190612a24565b60405180910390f35b610521611249565b005b61053d60048036038101906105389190612268565b6112d1565b005b610547611353565b604051610554919061270c565b60405180910390f35b610565611379565b604051610572919061270c565b60405180910390f35b6105836113a3565b6040516105909190612742565b60405180910390f35b6105b360048036038101906105ae9190612328565b611435565b6040516105c09190612727565b60405180910390f35b6105d1611520565b6040516105de9190612a24565b60405180910390f35b61060160048036038101906105fc9190612368565b611526565b005b61061d60048036038101906106189190612328565b6117c3565b60405161062a9190612727565b60405180910390f35b61064d60048036038101906106489190612268565b6117e1565b005b610657611911565b604051610664919061270c565b60405180910390f35b61068760048036038101906106829190612295565b611937565b6040516106949190612a24565b60405180910390f35b6106a56119be565b6040516106b29190612a24565b60405180910390f35b6106c36119c4565b6040516106d0919061270c565b60405180910390f35b6106f360048036038101906106ee9190612268565b6119ea565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461072a90612c13565b80601f016020809104026020016040519081016040528092919081815260200182805461075690612c13565b80156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b5050505050905090565b60006107c16107ba611ae2565b8484611aea565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60115481565b600061085a848484611cb5565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a5611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c906128e4565b60405180910390fd5b61093985610931611ae2565b858403611aea565b60019150509392505050565b601e5481565b6000610955611ae2565b905081601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d0906129e4565b60405180910390fd5b6109e2816112d1565b81601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a319190612b57565b925050819055508160166000828254610a4a9190612b57565b92505081905550610a7e600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284611cb5565b8073ffffffffffffffffffffffffffffffffffffffff167f4093febcf3c9d9fdb3b1e41430f7c99d1cfe9414ecf2dfd477412197b94c298e601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610b039190612a24565b60405180910390a25050565b60006012905090565b6000610bba610b25611ae2565b848460016000610b33611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bb59190612a76565b611aea565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2b611ae2565b73ffffffffffffffffffffffffffffffffffffffff1614610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c78906129a4565b60405180910390fd5b601054601154601354610c949190612a76565b1115610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc906128c4565b60405180910390fd5b426276a700601254610ce79190612a76565b1115610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90612924565b60405180910390fd5b42601281905550610d5d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601154611f36565b60115460136000828254610d719190612a76565b92505081905550565b601c5481565b6000601754602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610dd45760009050611032565b6000601854602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610efc576000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e754260185461210d90919063ffffffff16565b610e7f9190612b57565b90506201518081610e909190612acc565b9050620f4240601a54601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ee49190612afd565b610eee9190612afd565b610ef89190612acc565b9150505b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111561102d576000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9a4260175461210d90919063ffffffff16565b610fa49190612b57565b90506201518081610fb59190612acc565b9050620f4240601b54601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d61100a9190612afd565b6110149190612afd565b61101e9190612acc565b826110299190612a76565b9150505b809150505b919050565b60135481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ca611ae2565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906129a4565b60405180910390fd5b62cc5880601c546111319190612a76565b4211611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990612824565b60405180910390fd5b6228de80601d546111839190612a76565b42116111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612844565b60405180910390fd5b42601d8190555061121c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e54611cb5565b565b60105481565b600061122f82610d80565b61123883612126565b6112429190612a76565b9050919050565b611251611ae2565b73ffffffffffffffffffffffffffffffffffffffff1661126f611379565b73ffffffffffffffffffffffffffffffffffffffff16146112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90612904565b60405180910390fd5b6112cf600061216e565b565b60006112dc82610d80565b905042602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061134f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383611cb5565b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113b290612c13565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612c13565b801561142b5780601f106114005761010080835404028352916020019161142b565b820191906000526020600020905b81548152906001019060200180831161140e57829003601f168201915b5050505050905090565b60008060016000611444611ae2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f890612a04565b60405180910390fd5b61151561150c611ae2565b85858403611aea565b600191505092915050565b601d5481565b6000611530611ae2565b90508161153c82611224565b101561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612984565b60405180910390fd5b6017544211156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906127a4565b60405180910390fd5b6115cb816112d1565b81601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461161a9190612a76565b92505081905550601554601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612864565b60405180910390fd5b81601660008282546116b79190612a76565b925050819055506014546016541115611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90612784565b60405180910390fd5b61173281600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb5565b8073ffffffffffffffffffffffffffffffffffffffff167ff347cac857cf3719ebc8125da30c6ff32a10bc7c0a171ba8c95c43a10d3a4b82601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516117b79190612a24565b60405180910390a25050565b60006117d76117d0611ae2565b8484611cb5565b6001905092915050565b6117e9611ae2565b73ffffffffffffffffffffffffffffffffffffffff16611807611379565b73ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490612904565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906128a4565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119f2611ae2565b73ffffffffffffffffffffffffffffffffffffffff16611a10611379565b73ffffffffffffffffffffffffffffffffffffffff1614611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612904565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd906127e4565b60405180910390fd5b611adf8161216e565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906129c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190612804565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca89190612a24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90612964565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90612764565b60405180910390fd5b611da0838383612234565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d90612884565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb99190612a76565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f1d9190612a24565b60405180910390a3611f30848484612239565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90612944565b60405180910390fd5b611fb282600083612234565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f906127c4565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461208f9190612b57565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120f49190612a24565b60405180910390a361210883600084612239565b505050565b600081831061211c578161211e565b825b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b60008135905061224d816132ce565b92915050565b600081359050612262816132e5565b92915050565b60006020828403121561227e5761227d612cd2565b5b600061228c8482850161223e565b91505092915050565b600080604083850312156122ac576122ab612cd2565b5b60006122ba8582860161223e565b92505060206122cb8582860161223e565b9150509250929050565b6000806000606084860312156122ee576122ed612cd2565b5b60006122fc8682870161223e565b935050602061230d8682870161223e565b925050604061231e86828701612253565b9150509250925092565b6000806040838503121561233f5761233e612cd2565b5b600061234d8582860161223e565b925050602061235e85828601612253565b9150509250929050565b60006020828403121561237e5761237d612cd2565b5b600061238c84828501612253565b91505092915050565b61239e81612b8b565b82525050565b6123ad81612b9d565b82525050565b60006123be82612a5a565b6123c88185612a65565b93506123d8818560208601612be0565b6123e181612cd7565b840191505092915050565b60006123f9602383612a65565b915061240482612ce8565b604082019050919050565b600061241c602983612a65565b915061242782612d37565b604082019050919050565b600061243f602083612a65565b915061244a82612d86565b602082019050919050565b6000612462602283612a65565b915061246d82612daf565b604082019050919050565b6000612485602683612a65565b915061249082612dfe565b604082019050919050565b60006124a8602283612a65565b91506124b382612e4d565b604082019050919050565b60006124cb601983612a65565b91506124d682612e9c565b602082019050919050565b60006124ee603183612a65565b91506124f982612ec5565b604082019050919050565b6000612511602583612a65565b915061251c82612f14565b604082019050919050565b6000612534602683612a65565b915061253f82612f63565b604082019050919050565b6000612557601683612a65565b915061256282612fb2565b602082019050919050565b600061257a601183612a65565b915061258582612fdb565b602082019050919050565b600061259d602883612a65565b91506125a882613004565b604082019050919050565b60006125c0602083612a65565b91506125cb82613053565b602082019050919050565b60006125e3603c83612a65565b91506125ee8261307c565b604082019050919050565b6000612606602183612a65565b9150612611826130cb565b604082019050919050565b6000612629602583612a65565b91506126348261311a565b604082019050919050565b600061264c602183612a65565b915061265782613169565b604082019050919050565b600061266f600e83612a65565b915061267a826131b8565b602082019050919050565b6000612692602483612a65565b915061269d826131e1565b604082019050919050565b60006126b5602783612a65565b91506126c082613230565b604082019050919050565b60006126d8602583612a65565b91506126e38261327f565b604082019050919050565b6126f781612bc9565b82525050565b61270681612bd3565b82525050565b60006020820190506127216000830184612395565b92915050565b600060208201905061273c60008301846123a4565b92915050565b6000602082019050818103600083015261275c81846123b3565b905092915050565b6000602082019050818103600083015261277d816123ec565b9050919050565b6000602082019050818103600083015261279d8161240f565b9050919050565b600060208201905081810360008301526127bd81612432565b9050919050565b600060208201905081810360008301526127dd81612455565b9050919050565b600060208201905081810360008301526127fd81612478565b9050919050565b6000602082019050818103600083015261281d8161249b565b9050919050565b6000602082019050818103600083015261283d816124be565b9050919050565b6000602082019050818103600083015261285d816124e1565b9050919050565b6000602082019050818103600083015261287d81612504565b9050919050565b6000602082019050818103600083015261289d81612527565b9050919050565b600060208201905081810360008301526128bd8161254a565b9050919050565b600060208201905081810360008301526128dd8161256d565b9050919050565b600060208201905081810360008301526128fd81612590565b9050919050565b6000602082019050818103600083015261291d816125b3565b9050919050565b6000602082019050818103600083015261293d816125d6565b9050919050565b6000602082019050818103600083015261295d816125f9565b9050919050565b6000602082019050818103600083015261297d8161261c565b9050919050565b6000602082019050818103600083015261299d8161263f565b9050919050565b600060208201905081810360008301526129bd81612662565b9050919050565b600060208201905081810360008301526129dd81612685565b9050919050565b600060208201905081810360008301526129fd816126a8565b9050919050565b60006020820190508181036000830152612a1d816126cb565b9050919050565b6000602082019050612a3960008301846126ee565b92915050565b6000602082019050612a5460008301846126fd565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612a8182612bc9565b9150612a8c83612bc9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ac157612ac0612c45565b5b828201905092915050565b6000612ad782612bc9565b9150612ae283612bc9565b925082612af257612af1612c74565b5b828204905092915050565b6000612b0882612bc9565b9150612b1383612bc9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b4c57612b4b612c45565b5b828202905092915050565b6000612b6282612bc9565b9150612b6d83612bc9565b925082821015612b8057612b7f612c45565b5b828203905092915050565b6000612b9682612ba9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612bfe578082015181840152602081019050612be3565b83811115612c0d576000848401525b50505050565b60006002820490506001821680612c2b57607f821691505b60208210811415612c3f57612c3e612ca3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f546f74616c207374616b696e6720616d6f756e74206f766572666c6f7773206960008201527f7473206c696d69742e0000000000000000000000000000000000000000000000602082015250565b7f5468652074696d65206973206f766572207374616b696e6720706572696f642e600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f556e6c6f636b206973206e6f7420616c6c6f776564206e6f7700000000000000600082015250565b7f556e6c6f636b206d7573742062652033312064617973206c617465722066726f60008201527f6d2070726576696f757320756e6c6f636b000000000000000000000000000000602082015250565b7f54686973206163636f756e74206f766572666c6f7773207374616b696e67206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206265207a65726f206164647265737300000000000000000000600082015250565b7f4275726e696e6720746f6f206d7563682e000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f49742773206e6f742074696d6520746f206275726e2e2039302064617973206160008201527f72656e2774207061737365642073696e6365206c617374206275726e00000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f696e73756666696369656e742062616c616e636520666f72207374616b696e6760008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f6f70657261746f723a207775743f000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f43616e2774207769746864726177206d6f7265207468616e207374616b65642060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6132d781612b8b565b81146132e257600080fd5b50565b6132ee81612bc9565b81146132f957600080fd5b5056fea264697066735822122058500e7d783d7d7fb847130be5198af27f397b50379a1778a332052043423fee64736f6c63430008070033
Deployed Bytecode Sourcemap
134:10321:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;285:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2161:100:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4328:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;995:30:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;206:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;374:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3281:108:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1096:51:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4979:492:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1858:66:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8522:433;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3123:93:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5880:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;741:82:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4695:389;;;:::i;:::-;;1768:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7334:832;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1205:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;830:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;463:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10063:389;;;:::i;:::-;;1034:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6565:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1650:94:7;;;:::i;:::-;;9629:231:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;646:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;999:87:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2380:104:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6598:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1822:29:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5610:766;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3792:175:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4231:174:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;559:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4030:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1154:44:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;914:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1899:192:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;285:82:4;;;;;;;;;;;;;:::o;2161:100:1:-;2215:13;2248:5;2241:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:100;:::o;4328:169::-;4411:4;4428:39;4437:12;:10;:12::i;:::-;4451:7;4460:6;4428:8;:39::i;:::-;4485:4;4478:11;;4328:169;;;;:::o;995:30:4:-;;;;;;;;;;;;;:::o;206:72::-;;;;;;;;;;;;;:::o;374:82::-;;;;;;;;;;;;;:::o;3281:108:1:-;3342:7;3369:12;;3362:19;;3281:108;:::o;1096:51:4:-;;;;:::o;4979:492:1:-;5119:4;5136:36;5146:6;5154:9;5165:6;5136:9;:36::i;:::-;5185:24;5212:11;:19;5224:6;5212:19;;;;;;;;;;;;;;;:33;5232:12;:10;:12::i;:::-;5212:33;;;;;;;;;;;;;;;;5185:60;;5284:6;5264:16;:26;;5256:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5371:57;5380:6;5388:12;:10;:12::i;:::-;5421:6;5402:16;:25;5371:8;:57::i;:::-;5459:4;5452:11;;;4979:492;;;;;:::o;1858:66:4:-;;;;:::o;8522:433::-;8573:15;8591:12;:10;:12::i;:::-;8573:30;;8651:6;8623:15;:24;8639:7;8623:24;;;;;;;;;;;;;;;;:34;;8614:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8714:22;8728:7;8714:13;:22::i;:::-;8777:6;8749:15;:24;8765:7;8749:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;8817:6;8794:19;;:29;;;;;;;:::i;:::-;;;;;;;;8834:45;8844:17;;;;;;;;;;;8863:7;8872:6;8834:9;:45::i;:::-;8913:7;8897:50;;;8922:15;:24;8938:7;8922:24;;;;;;;;;;;;;;;;8897:50;;;;;;:::i;:::-;;;;;;;;8562:393;8522:433;:::o;3123:93:1:-;3181:5;3206:2;3199:9;;3123:93;:::o;5880:215::-;5968:4;5985:80;5994:12;:10;:12::i;:::-;6008:7;6054:10;6017:11;:25;6029:12;:10;:12::i;:::-;6017:25;;;;;;;;;;;;;;;:34;6043:7;6017:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5985:8;:80::i;:::-;6083:4;6076:11;;5880:215;;;;:::o;741:82:4:-;;;;;;;;;;;;;:::o;4695:389::-;2448:15;;;;;;;;;;;2432:31;;:12;:10;:12::i;:::-;:31;;;2424:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4792:15:::1;;4777:11;;4762:12;;:26;;;;:::i;:::-;:45;;4754:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;4873:15;4862:7;4848:11;;:21;;;;:::i;:::-;:40;;4840:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;4978:15;4964:11;:29;;;;5006:32;5012:12;;;;;;;;;;;5026:11;;5006:5;:32::i;:::-;5065:11;;5049:12;;:27;;;;;;;:::i;:::-;;;;;;;;4695:389::o:0;1768:45::-;;;;:::o;7334:832::-;7400:4;7452:14;;7423:17;:26;7441:7;7423:26;;;;;;;;;;;;;;;;:43;7419:57;;;7475:1;7468:8;;;;7419:57;7497:11;7557:19;;7527:17;:26;7545:7;7527:26;;;;;;;;;;;;;;;;:49;7523:303;;7593:15;7654:17;:26;7672:7;7654:26;;;;;;;;;;;;;;;;7611:40;7635:15;7611:19;;:23;;:40;;;;:::i;:::-;:69;;;;:::i;:::-;7593:87;;7709:6;7695:20;;;;;:::i;:::-;;;7807:7;7779:25;;7752:15;:24;7768:7;7752:24;;;;;;;;;;;;;;;;7739:10;:37;;;;:::i;:::-;:65;;;;:::i;:::-;:75;;;;:::i;:::-;7730:84;;7578:248;7523:303;7860:17;:26;7878:7;7860:26;;;;;;;;;;;;;;;;7842:15;:44;7838:287;;;7903:15;7959:17;:26;7977:7;7959:26;;;;;;;;;;;;;;;;7921:35;7940:15;7921:14;;:18;;:35;;;;:::i;:::-;:64;;;;:::i;:::-;7903:82;;8014:6;8000:20;;;;;:::i;:::-;;;8106:7;8077:26;;8050:15;:24;8066:7;8050:24;;;;;;;;;;;;;;;;8045:2;:29;;;;:::i;:::-;:58;;;;:::i;:::-;:68;;;;:::i;:::-;8035:78;;;;;:::i;:::-;;;7888:237;7838:287;8152:6;8145:13;;;7334:832;;;;:::o;1205:31::-;;;;:::o;830:77::-;;;;;;;;;;;;;:::o;463:89::-;;;;;;;;;;;;;:::o;10063:389::-;2448:15;;;;;;;;;;;2432:31;;:12;:10;:12::i;:::-;:31;;;2424:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10164:11:::1;10149:12;;:26;;;;:::i;:::-;10131:15;:44;10122:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10260:7;10243:14;;:24;;;;:::i;:::-;10225:15;:42;10216:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;10349:15;10332:14;:32;;;;10375:69;10385:22;;;;;;;;;;;10409:12;;;;;;;;;;;10423:20;;10375:9;:69::i;:::-;10063:389::o:0;1034:55::-;;;;:::o;6565:152::-;6631:4;6682:27;6701:7;6682:18;:27::i;:::-;6655:24;6671:7;6655:15;:24::i;:::-;:54;;;;:::i;:::-;6648:61;;6565:152;;;:::o;1650:94:7:-;1230:12;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1715:21:::1;1733:1;1715:9;:21::i;:::-;1650:94::o:0;9629:231:4:-;9687:20;9710:27;9729:7;9710:18;:27::i;:::-;9687:50;;9777:15;9748:17;:26;9766:7;9748:26;;;;;;;;;;;;;;;:44;;;;9803:49;9813:12;;;;;;;;;;;9827:7;9836:15;9803:9;:49::i;:::-;9676:184;9629:231;:::o;646:88::-;;;;;;;;;;;;;:::o;999:87:7:-;1045:7;1072:6;;;;;;;;;;;1065:13;;999:87;:::o;2380:104:1:-;2436:13;2469:7;2462:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:104;:::o;6598:413::-;6691:4;6708:24;6735:11;:25;6747:12;:10;:12::i;:::-;6735:25;;;;;;;;;;;;;;;:34;6761:7;6735:34;;;;;;;;;;;;;;;;6708:61;;6808:15;6788:16;:35;;6780:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6901:67;6910:12;:10;:12::i;:::-;6924:7;6952:15;6933:16;:34;6901:8;:67::i;:::-;6999:4;6992:11;;;6598:413;;;;:::o;1822:29:4:-;;;;:::o;5610:766::-;5668:15;5686:12;:10;:12::i;:::-;5668:30;;5741:6;5719:18;5729:7;5719:9;:18::i;:::-;:28;;5711:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5823:14;;5804:15;:33;;5796:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5887:22;5901:7;5887:13;:22::i;:::-;5950:6;5922:15;:24;5938:7;5922:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;6003:27;;5975:15;:24;5991:7;5975:24;;;;;;;;;;;;;;;;:55;;5967:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6116:6;6093:19;;:29;;;;;;;:::i;:::-;;;;;;;;6164:17;;6141:19;;:40;;6133:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;6248:45;6258:7;6267:17;;;;;;;;;;;6286:6;6248:9;:45::i;:::-;6334:7;6319:49;;;6343:15;:24;6359:7;6343:24;;;;;;;;;;;;;;;;6319:49;;;;;;:::i;:::-;;;;;;;;5647:729;5610:766;:::o;3792:175:1:-;3878:4;3895:42;3905:12;:10;:12::i;:::-;3919:9;3930:6;3895:9;:42::i;:::-;3955:4;3948:11;;3792:175;;;;:::o;4231:174:4:-;1230:12:7;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4330:1:4::1;4309:23;;:9;:23;;;;4301:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4388:9;4370:15;;:27;;;;;;;;;;;;;;;;;;4231:174:::0;:::o;559:80::-;;;;;;;;;;;;;:::o;4030:151:1:-;4119:7;4146:11;:18;4158:5;4146:18;;;;;;;;;;;;;;;:27;4165:7;4146:27;;;;;;;;;;;;;;;;4139:34;;4030:151;;;;:::o;1154:44:4:-;;;;:::o;914:72::-;;;;;;;;;;;;;:::o;1899:192:7:-;1230:12;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2008:1:::1;1988:22;;:8;:22;;;;1980:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2064:19;2074:8;2064:9;:19::i;:::-;1899:192:::0;:::o;602:98:0:-;655:7;682:10;675:17;;602:98;:::o;10282:380:1:-;10435:1;10418:19;;:5;:19;;;;10410:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10516:1;10497:21;;:7;:21;;;;10489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10600:6;10570:11;:18;10582:5;10570:18;;;;;;;;;;;;;;;:27;10589:7;10570:27;;;;;;;;;;;;;;;:36;;;;10638:7;10622:32;;10631:5;10622:32;;;10647:6;10622:32;;;;;;:::i;:::-;;;;;;;;10282:380;;;:::o;7501:733::-;7659:1;7641:20;;:6;:20;;;;7633:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7743:1;7722:23;;:9;:23;;;;7714:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7798:47;7819:6;7827:9;7838:6;7798:20;:47::i;:::-;7858:21;7882:9;:17;7892:6;7882:17;;;;;;;;;;;;;;;;7858:41;;7935:6;7918:13;:23;;7910:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8056:6;8040:13;:22;8020:9;:17;8030:6;8020:17;;;;;;;;;;;;;;;:42;;;;8108:6;8084:9;:20;8094:9;8084:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8149:9;8132:35;;8141:6;8132:35;;;8160:6;8132:35;;;;;;:::i;:::-;;;;;;;;8180:46;8200:6;8208:9;8219:6;8180:19;:46::i;:::-;7622:612;7501:733;;;:::o;9253:591::-;9356:1;9337:21;;:7;:21;;;;9329:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9409:49;9430:7;9447:1;9451:6;9409:20;:49::i;:::-;9471:22;9496:9;:18;9506:7;9496:18;;;;;;;;;;;;;;;;9471:43;;9551:6;9533:14;:24;;9525:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9670:6;9653:14;:23;9632:9;:18;9642:7;9632:18;;;;;;;;;;;;;;;:44;;;;9714:6;9698:12;;:22;;;;;;;:::i;:::-;;;;;;;;9764:1;9738:37;;9747:7;9738:37;;;9768:6;9738:37;;;;;;:::i;:::-;;;;;;;;9788:48;9808:7;9825:1;9829:6;9788:19;:48::i;:::-;9318:526;9253:591;;:::o;409:106:5:-;467:7;498:1;494;:5;:13;;506:1;494:13;;;502:1;494:13;487:20;;409:106;;;;:::o;3452:127:1:-;3526:7;3553:9;:18;3563:7;3553:18;;;;;;;;;;;;;;;;3546:25;;3452:127;;;:::o;2099:173:7:-;2155:16;2174:6;;;;;;;;;;;2155:25;;2200:8;2191:6;;:17;;;;;;;;;;;;;;;;;;2255:8;2224:40;;2245:8;2224:40;;;;;;;;;;;;2144:128;2099:173;:::o;11262:125:1:-;;;;:::o;11991:124::-;;;;:::o;7:139:8:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:329::-;2276:6;2325:2;2313:9;2304:7;2300:23;2296:32;2293:119;;;2331:79;;:::i;:::-;2293:119;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2217:329;;;;:::o;2552:118::-;2639:24;2657:5;2639:24;:::i;:::-;2634:3;2627:37;2552:118;;:::o;2676:109::-;2757:21;2772:5;2757:21;:::i;:::-;2752:3;2745:34;2676:109;;:::o;2791:364::-;2879:3;2907:39;2940:5;2907:39;:::i;:::-;2962:71;3026:6;3021:3;2962:71;:::i;:::-;2955:78;;3042:52;3087:6;3082:3;3075:4;3068:5;3064:16;3042:52;:::i;:::-;3119:29;3141:6;3119:29;:::i;:::-;3114:3;3110:39;3103:46;;2883:272;2791:364;;;;:::o;3161:366::-;3303:3;3324:67;3388:2;3383:3;3324:67;:::i;:::-;3317:74;;3400:93;3489:3;3400:93;:::i;:::-;3518:2;3513:3;3509:12;3502:19;;3161:366;;;:::o;3533:::-;3675:3;3696:67;3760:2;3755:3;3696:67;:::i;:::-;3689:74;;3772:93;3861:3;3772:93;:::i;:::-;3890:2;3885:3;3881:12;3874:19;;3533:366;;;:::o;3905:::-;4047:3;4068:67;4132:2;4127:3;4068:67;:::i;:::-;4061:74;;4144:93;4233:3;4144:93;:::i;:::-;4262:2;4257:3;4253:12;4246:19;;3905:366;;;:::o;4277:::-;4419:3;4440:67;4504:2;4499:3;4440:67;:::i;:::-;4433:74;;4516:93;4605:3;4516:93;:::i;:::-;4634:2;4629:3;4625:12;4618:19;;4277:366;;;:::o;4649:::-;4791:3;4812:67;4876:2;4871:3;4812:67;:::i;:::-;4805:74;;4888:93;4977:3;4888:93;:::i;:::-;5006:2;5001:3;4997:12;4990:19;;4649:366;;;:::o;5021:::-;5163:3;5184:67;5248:2;5243:3;5184:67;:::i;:::-;5177:74;;5260:93;5349:3;5260:93;:::i;:::-;5378:2;5373:3;5369:12;5362:19;;5021:366;;;:::o;5393:::-;5535:3;5556:67;5620:2;5615:3;5556:67;:::i;:::-;5549:74;;5632:93;5721:3;5632:93;:::i;:::-;5750:2;5745:3;5741:12;5734:19;;5393:366;;;:::o;5765:::-;5907:3;5928:67;5992:2;5987:3;5928:67;:::i;:::-;5921:74;;6004:93;6093:3;6004:93;:::i;:::-;6122:2;6117:3;6113:12;6106:19;;5765:366;;;:::o;6137:::-;6279:3;6300:67;6364:2;6359:3;6300:67;:::i;:::-;6293:74;;6376:93;6465:3;6376:93;:::i;:::-;6494:2;6489:3;6485:12;6478:19;;6137:366;;;:::o;6509:::-;6651:3;6672:67;6736:2;6731:3;6672:67;:::i;:::-;6665:74;;6748:93;6837:3;6748:93;:::i;:::-;6866:2;6861:3;6857:12;6850:19;;6509:366;;;:::o;6881:::-;7023:3;7044:67;7108:2;7103:3;7044:67;:::i;:::-;7037:74;;7120:93;7209:3;7120:93;:::i;:::-;7238:2;7233:3;7229:12;7222:19;;6881:366;;;:::o;7253:::-;7395:3;7416:67;7480:2;7475:3;7416:67;:::i;:::-;7409:74;;7492:93;7581:3;7492:93;:::i;:::-;7610:2;7605:3;7601:12;7594:19;;7253:366;;;:::o;7625:::-;7767:3;7788:67;7852:2;7847:3;7788:67;:::i;:::-;7781:74;;7864:93;7953:3;7864:93;:::i;:::-;7982:2;7977:3;7973:12;7966:19;;7625:366;;;:::o;7997:::-;8139:3;8160:67;8224:2;8219:3;8160:67;:::i;:::-;8153:74;;8236:93;8325:3;8236:93;:::i;:::-;8354:2;8349:3;8345:12;8338:19;;7997:366;;;:::o;8369:::-;8511:3;8532:67;8596:2;8591:3;8532:67;:::i;:::-;8525:74;;8608:93;8697:3;8608:93;:::i;:::-;8726:2;8721:3;8717:12;8710:19;;8369:366;;;:::o;8741:::-;8883:3;8904:67;8968:2;8963:3;8904:67;:::i;:::-;8897:74;;8980:93;9069:3;8980:93;:::i;:::-;9098:2;9093:3;9089:12;9082:19;;8741:366;;;:::o;9113:::-;9255:3;9276:67;9340:2;9335:3;9276:67;:::i;:::-;9269:74;;9352:93;9441:3;9352:93;:::i;:::-;9470:2;9465:3;9461:12;9454:19;;9113:366;;;:::o;9485:::-;9627:3;9648:67;9712:2;9707:3;9648:67;:::i;:::-;9641:74;;9724:93;9813:3;9724:93;:::i;:::-;9842:2;9837:3;9833:12;9826:19;;9485:366;;;:::o;9857:::-;9999:3;10020:67;10084:2;10079:3;10020:67;:::i;:::-;10013:74;;10096:93;10185:3;10096:93;:::i;:::-;10214:2;10209:3;10205:12;10198:19;;9857:366;;;:::o;10229:::-;10371:3;10392:67;10456:2;10451:3;10392:67;:::i;:::-;10385:74;;10468:93;10557:3;10468:93;:::i;:::-;10586:2;10581:3;10577:12;10570:19;;10229:366;;;:::o;10601:::-;10743:3;10764:67;10828:2;10823:3;10764:67;:::i;:::-;10757:74;;10840:93;10929:3;10840:93;:::i;:::-;10958:2;10953:3;10949:12;10942:19;;10601:366;;;:::o;10973:::-;11115:3;11136:67;11200:2;11195:3;11136:67;:::i;:::-;11129:74;;11212:93;11301:3;11212:93;:::i;:::-;11330:2;11325:3;11321:12;11314:19;;10973:366;;;:::o;11345:118::-;11432:24;11450:5;11432:24;:::i;:::-;11427:3;11420:37;11345:118;;:::o;11469:112::-;11552:22;11568:5;11552:22;:::i;:::-;11547:3;11540:35;11469:112;;:::o;11587:222::-;11680:4;11718:2;11707:9;11703:18;11695:26;;11731:71;11799:1;11788:9;11784:17;11775:6;11731:71;:::i;:::-;11587:222;;;;:::o;11815:210::-;11902:4;11940:2;11929:9;11925:18;11917:26;;11953:65;12015:1;12004:9;12000:17;11991:6;11953:65;:::i;:::-;11815:210;;;;:::o;12031:313::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:78;12332:4;12323:6;12259:78;:::i;:::-;12251:86;;12031:313;;;;:::o;12350:419::-;12516:4;12554:2;12543:9;12539:18;12531:26;;12603:9;12597:4;12593:20;12589:1;12578:9;12574:17;12567:47;12631:131;12757:4;12631:131;:::i;:::-;12623:139;;12350:419;;;:::o;12775:::-;12941:4;12979:2;12968:9;12964:18;12956:26;;13028:9;13022:4;13018:20;13014:1;13003:9;12999:17;12992:47;13056:131;13182:4;13056:131;:::i;:::-;13048:139;;12775:419;;;:::o;13200:::-;13366:4;13404:2;13393:9;13389:18;13381:26;;13453:9;13447:4;13443:20;13439:1;13428:9;13424:17;13417:47;13481:131;13607:4;13481:131;:::i;:::-;13473:139;;13200:419;;;:::o;13625:::-;13791:4;13829:2;13818:9;13814:18;13806:26;;13878:9;13872:4;13868:20;13864:1;13853:9;13849:17;13842:47;13906:131;14032:4;13906:131;:::i;:::-;13898:139;;13625:419;;;:::o;14050:::-;14216:4;14254:2;14243:9;14239:18;14231:26;;14303:9;14297:4;14293:20;14289:1;14278:9;14274:17;14267:47;14331:131;14457:4;14331:131;:::i;:::-;14323:139;;14050:419;;;:::o;14475:::-;14641:4;14679:2;14668:9;14664:18;14656:26;;14728:9;14722:4;14718:20;14714:1;14703:9;14699:17;14692:47;14756:131;14882:4;14756:131;:::i;:::-;14748:139;;14475:419;;;:::o;14900:::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:::-;15491:4;15529:2;15518:9;15514:18;15506:26;;15578:9;15572:4;15568:20;15564:1;15553:9;15549:17;15542:47;15606:131;15732:4;15606:131;:::i;:::-;15598:139;;15325:419;;;:::o;15750:::-;15916:4;15954:2;15943:9;15939:18;15931:26;;16003:9;15997:4;15993:20;15989:1;15978:9;15974:17;15967:47;16031:131;16157:4;16031:131;:::i;:::-;16023:139;;15750:419;;;:::o;16175:::-;16341:4;16379:2;16368:9;16364:18;16356:26;;16428:9;16422:4;16418:20;16414:1;16403:9;16399:17;16392:47;16456:131;16582:4;16456:131;:::i;:::-;16448:139;;16175:419;;;:::o;16600:::-;16766:4;16804:2;16793:9;16789:18;16781:26;;16853:9;16847:4;16843:20;16839:1;16828:9;16824:17;16817:47;16881:131;17007:4;16881:131;:::i;:::-;16873:139;;16600:419;;;:::o;17025:::-;17191:4;17229:2;17218:9;17214:18;17206:26;;17278:9;17272:4;17268:20;17264:1;17253:9;17249:17;17242:47;17306:131;17432:4;17306:131;:::i;:::-;17298:139;;17025:419;;;:::o;17450:::-;17616:4;17654:2;17643:9;17639:18;17631:26;;17703:9;17697:4;17693:20;17689:1;17678:9;17674:17;17667:47;17731:131;17857:4;17731:131;:::i;:::-;17723:139;;17450:419;;;:::o;17875:::-;18041:4;18079:2;18068:9;18064:18;18056:26;;18128:9;18122:4;18118:20;18114:1;18103:9;18099:17;18092:47;18156:131;18282:4;18156:131;:::i;:::-;18148:139;;17875:419;;;:::o;18300:::-;18466:4;18504:2;18493:9;18489:18;18481:26;;18553:9;18547:4;18543:20;18539:1;18528:9;18524:17;18517:47;18581:131;18707:4;18581:131;:::i;:::-;18573:139;;18300:419;;;:::o;18725:::-;18891:4;18929:2;18918:9;18914:18;18906:26;;18978:9;18972:4;18968:20;18964:1;18953:9;18949:17;18942:47;19006:131;19132:4;19006:131;:::i;:::-;18998:139;;18725:419;;;:::o;19150:::-;19316:4;19354:2;19343:9;19339:18;19331:26;;19403:9;19397:4;19393:20;19389:1;19378:9;19374:17;19367:47;19431:131;19557:4;19431:131;:::i;:::-;19423:139;;19150:419;;;:::o;19575:::-;19741:4;19779:2;19768:9;19764:18;19756:26;;19828:9;19822:4;19818:20;19814:1;19803:9;19799:17;19792:47;19856:131;19982:4;19856:131;:::i;:::-;19848:139;;19575:419;;;:::o;20000:::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:::-;20591:4;20629:2;20618:9;20614:18;20606:26;;20678:9;20672:4;20668:20;20664:1;20653:9;20649:17;20642:47;20706:131;20832:4;20706:131;:::i;:::-;20698:139;;20425:419;;;:::o;20850:::-;21016:4;21054:2;21043:9;21039:18;21031:26;;21103:9;21097:4;21093:20;21089:1;21078:9;21074:17;21067:47;21131:131;21257:4;21131:131;:::i;:::-;21123:139;;20850:419;;;:::o;21275:::-;21441:4;21479:2;21468:9;21464:18;21456:26;;21528:9;21522:4;21518:20;21514:1;21503:9;21499:17;21492:47;21556:131;21682:4;21556:131;:::i;:::-;21548:139;;21275:419;;;:::o;21700:222::-;21793:4;21831:2;21820:9;21816:18;21808:26;;21844:71;21912:1;21901:9;21897:17;21888:6;21844:71;:::i;:::-;21700:222;;;;:::o;21928:214::-;22017:4;22055:2;22044:9;22040:18;22032:26;;22068:67;22132:1;22121:9;22117:17;22108:6;22068:67;:::i;:::-;21928:214;;;;:::o;22229:99::-;22281:6;22315:5;22309:12;22299:22;;22229:99;;;:::o;22334:169::-;22418:11;22452:6;22447:3;22440:19;22492:4;22487:3;22483:14;22468:29;;22334:169;;;;:::o;22509:305::-;22549:3;22568:20;22586:1;22568:20;:::i;:::-;22563:25;;22602:20;22620:1;22602:20;:::i;:::-;22597:25;;22756:1;22688:66;22684:74;22681:1;22678:81;22675:107;;;22762:18;;:::i;:::-;22675:107;22806:1;22803;22799:9;22792:16;;22509:305;;;;:::o;22820:185::-;22860:1;22877:20;22895:1;22877:20;:::i;:::-;22872:25;;22911:20;22929:1;22911:20;:::i;:::-;22906:25;;22950:1;22940:35;;22955:18;;:::i;:::-;22940:35;22997:1;22994;22990:9;22985:14;;22820:185;;;;:::o;23011:348::-;23051:7;23074:20;23092:1;23074:20;:::i;:::-;23069:25;;23108:20;23126:1;23108:20;:::i;:::-;23103:25;;23296:1;23228:66;23224:74;23221:1;23218:81;23213:1;23206:9;23199:17;23195:105;23192:131;;;23303:18;;:::i;:::-;23192:131;23351:1;23348;23344:9;23333:20;;23011:348;;;;:::o;23365:191::-;23405:4;23425:20;23443:1;23425:20;:::i;:::-;23420:25;;23459:20;23477:1;23459:20;:::i;:::-;23454:25;;23498:1;23495;23492:8;23489:34;;;23503:18;;:::i;:::-;23489:34;23548:1;23545;23541:9;23533:17;;23365:191;;;;:::o;23562:96::-;23599:7;23628:24;23646:5;23628:24;:::i;:::-;23617:35;;23562:96;;;:::o;23664:90::-;23698:7;23741:5;23734:13;23727:21;23716:32;;23664:90;;;:::o;23760:126::-;23797:7;23837:42;23830:5;23826:54;23815:65;;23760:126;;;:::o;23892:77::-;23929:7;23958:5;23947:16;;23892:77;;;:::o;23975:86::-;24010:7;24050:4;24043:5;24039:16;24028:27;;23975:86;;;:::o;24067:307::-;24135:1;24145:113;24159:6;24156:1;24153:13;24145:113;;;24244:1;24239:3;24235:11;24229:18;24225:1;24220:3;24216:11;24209:39;24181:2;24178:1;24174:10;24169:15;;24145:113;;;24276:6;24273:1;24270:13;24267:101;;;24356:1;24347:6;24342:3;24338:16;24331:27;24267:101;24116:258;24067:307;;;:::o;24380:320::-;24424:6;24461:1;24455:4;24451:12;24441:22;;24508:1;24502:4;24498:12;24529:18;24519:81;;24585:4;24577:6;24573:17;24563:27;;24519:81;24647:2;24639:6;24636:14;24616:18;24613:38;24610:84;;;24666:18;;:::i;:::-;24610:84;24431:269;24380:320;;;:::o;24706:180::-;24754:77;24751:1;24744:88;24851:4;24848:1;24841:15;24875:4;24872:1;24865:15;24892:180;24940:77;24937:1;24930:88;25037:4;25034:1;25027:15;25061:4;25058:1;25051:15;25078:180;25126:77;25123:1;25116:88;25223:4;25220:1;25213:15;25247:4;25244:1;25237:15;25387:117;25496:1;25493;25486:12;25510:102;25551:6;25602:2;25598:7;25593:2;25586:5;25582:14;25578:28;25568:38;;25510:102;;;:::o;25618:222::-;25758:34;25754:1;25746:6;25742:14;25735:58;25827:5;25822:2;25814:6;25810:15;25803:30;25618:222;:::o;25846:228::-;25986:34;25982:1;25974:6;25970:14;25963:58;26055:11;26050:2;26042:6;26038:15;26031:36;25846:228;:::o;26080:182::-;26220:34;26216:1;26208:6;26204:14;26197:58;26080:182;:::o;26268:221::-;26408:34;26404:1;26396:6;26392:14;26385:58;26477:4;26472:2;26464:6;26460:15;26453:29;26268:221;:::o;26495:225::-;26635:34;26631:1;26623:6;26619:14;26612:58;26704:8;26699:2;26691:6;26687:15;26680:33;26495:225;:::o;26726:221::-;26866:34;26862:1;26854:6;26850:14;26843:58;26935:4;26930:2;26922:6;26918:15;26911:29;26726:221;:::o;26953:175::-;27093:27;27089:1;27081:6;27077:14;27070:51;26953:175;:::o;27134:236::-;27274:34;27270:1;27262:6;27258:14;27251:58;27343:19;27338:2;27330:6;27326:15;27319:44;27134:236;:::o;27376:224::-;27516:34;27512:1;27504:6;27500:14;27493:58;27585:7;27580:2;27572:6;27568:15;27561:32;27376:224;:::o;27606:225::-;27746:34;27742:1;27734:6;27730:14;27723:58;27815:8;27810:2;27802:6;27798:15;27791:33;27606:225;:::o;27837:172::-;27977:24;27973:1;27965:6;27961:14;27954:48;27837:172;:::o;28015:167::-;28155:19;28151:1;28143:6;28139:14;28132:43;28015:167;:::o;28188:227::-;28328:34;28324:1;28316:6;28312:14;28305:58;28397:10;28392:2;28384:6;28380:15;28373:35;28188:227;:::o;28421:182::-;28561:34;28557:1;28549:6;28545:14;28538:58;28421:182;:::o;28609:247::-;28749:34;28745:1;28737:6;28733:14;28726:58;28818:30;28813:2;28805:6;28801:15;28794:55;28609:247;:::o;28862:220::-;29002:34;28998:1;28990:6;28986:14;28979:58;29071:3;29066:2;29058:6;29054:15;29047:28;28862:220;:::o;29088:224::-;29228:34;29224:1;29216:6;29212:14;29205:58;29297:7;29292:2;29284:6;29280:15;29273:32;29088:224;:::o;29318:220::-;29458:34;29454:1;29446:6;29442:14;29435:58;29527:3;29522:2;29514:6;29510:15;29503:28;29318:220;:::o;29544:164::-;29684:16;29680:1;29672:6;29668:14;29661:40;29544:164;:::o;29714:223::-;29854:34;29850:1;29842:6;29838:14;29831:58;29923:6;29918:2;29910:6;29906:15;29899:31;29714:223;:::o;29943:226::-;30083:34;30079:1;30071:6;30067:14;30060:58;30152:9;30147:2;30139:6;30135:15;30128:34;29943:226;:::o;30175:224::-;30315:34;30311:1;30303:6;30299:14;30292:58;30384:7;30379:2;30371:6;30367:15;30360:32;30175:224;:::o;30405:122::-;30478:24;30496:5;30478:24;:::i;:::-;30471:5;30468:35;30458:63;;30517:1;30514;30507:12;30458:63;30405:122;:::o;30533:::-;30606:24;30624:5;30606:24;:::i;:::-;30599:5;30596:35;30586:63;;30645:1;30642;30635:12;30586:63;30533:122;:::o
Swarm Source
ipfs://58500e7d783d7d7fb847130be5198af27f397b50379a1778a332052043423fee
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.