BEP-20Cross-Chain
Source Code
Overview
Max Total Supply
935,755,667.609541seven (CSupply: 935,755,666.609541)
Holders
47,665
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.1 sevenValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
SevenToken
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.24;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
abstract contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
require(initialOwner != address(0), "Owner: zero address");
_owner = initialOwner;
emit OwnershipTransferred(address(0), initialOwner);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == msg.sender, "Owner: caller is not the owner");
_;
}
function transferOwnership(address newOwner) external virtual onlyOwner {
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract SevenToken is IERC20, Ownable {
string private constant _NAME = "seven";
string private constant _SYMBOL = "seven";
uint8 private constant _DECIMALS = 18;
uint256 private constant _ADMIN_ALLOCATION = 1_000_000_000 * 10 ** uint256(_DECIMALS);
uint256 private constant _FUND_ALLOCATION = 400_000_000 * 10 ** uint256(_DECIMALS);
uint256 private constant _INITIAL_SUPPLY = _ADMIN_ALLOCATION + _FUND_ALLOCATION;
uint256 private constant _BUY_TO_JOIN_THRESHOLD = 100 * 10 ** uint256(_DECIMALS);
uint256 private constant _MIN_BALANCE_FOR_TRADING = 100 * 10 ** uint256(_DECIMALS);
uint256 private constant _BURN_CAP = 21_000_000 * 10 ** uint256(_DECIMALS);
uint256 private constant _POOL_EXTENSION = 30 minutes;
uint256 private constant _POOL_MAX_DURATION = 24 hours;
uint256 private constant _TRADING_THRESHOLD = 30_000;
address private constant _ADMIN_ADDRESS = address(0x63b3EEa5C7A9dC12AEB31eB19b8e3072BC2ae098);
address private constant _POOL_ADDRESS = address(0x8894E0a0c962CB723c1976a4421c95949bE2D4E3);
address private constant _WHITELIST_ADDRESS = address(0x04CA60f906908DBe8ac212aD5D454f3e48aeFcdb);
address private constant _FUND_ADDRESS = address(0x04CA60f906908DBe8ac212aD5D454f3e48aeFcdb);
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _swapPairs;
mapping(address => bool) private _feeWhiteList;
mapping(address => bool) private _isHolder;
mapping(address => bool) private _isQualifiedHolder;
uint256 private _totalSupply;
uint256 private _burnedAmount;
uint256 public holdersCount;
uint256 public qualifiedHoldersCount;
uint256 public poolStartTime;
uint256 public poolEndTime;
uint256 private _packedFlags;
uint256 private constant _BITMASK_TRADING_ENABLED = 1 << 0;
uint256 private constant _BITMASK_POOL_ACTIVE = 1 << 1;
address private _lastWinner;
event SwapPairUpdated(address indexed pair, bool indexed status);
event TradingEnabled();
event PoolStarted(uint256 indexed startTime, uint256 indexed endTime);
event PoolExtended(uint256 indexed newEndTime);
event WinnerJoined(address indexed account);
event PoolRewardDistributed(address indexed winner, uint256 rewardAmount);
event TransferWithMemo(address indexed from, address indexed to, uint256 value, string memo);
constructor() Ownable(_ADMIN_ADDRESS) {
_mint(_ADMIN_ADDRESS, _ADMIN_ALLOCATION);
_mint(_FUND_ADDRESS, _FUND_ALLOCATION);
_feeWhiteList[_WHITELIST_ADDRESS] = true;
_feeWhiteList[_FUND_ADDRESS] = true;
_isHolder[_ADMIN_ADDRESS] = true;
_isHolder[_FUND_ADDRESS] = true;
holdersCount = 2;
_isQualifiedHolder[_ADMIN_ADDRESS] = true;
_isQualifiedHolder[_FUND_ADDRESS] = true;
qualifiedHoldersCount = 2;
}
function name() external pure returns (string memory) {
return _NAME;
}
function symbol() external pure returns (string memory) {
return _SYMBOL;
}
function decimals() external pure returns (uint8) {
return _DECIMALS;
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function burnedAmount() external view returns (uint256) {
return _burnedAmount;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address tokenOwner, address spender) external view override returns (uint256) {
return _allowances[tokenOwner][spender];
}
function approve(address spender, uint256 amount) external override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
require(msg.sender != _POOL_ADDRESS, "Seven: pool address cannot transfer");
if (recipient == address(0)) {
_burn(msg.sender, amount);
return true;
}
_transfer(msg.sender, recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
require(sender != _POOL_ADDRESS, "Seven: pool address cannot transfer");
uint256 currentAllowance = _allowances[sender][msg.sender];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
if (recipient == address(0)) {
_burn(sender, amount);
} else {
_transfer(sender, recipient, amount);
}
unchecked {
_approve(sender, msg.sender, currentAllowance - amount);
}
return true;
}
function transferWithMemo(address recipient, uint256 amount, string memory memo) external returns (bool) {
require(msg.sender != _POOL_ADDRESS, "Seven: pool address cannot transfer");
if (recipient == address(0)) {
_burn(msg.sender, amount);
emit TransferWithMemo(msg.sender, address(0), amount, memo);
return true;
}
_transfer(msg.sender, recipient, amount);
emit TransferWithMemo(msg.sender, recipient, amount, memo);
return true;
}
function transferFromWithMemo(address sender, address recipient, uint256 amount, string memory memo) external returns (bool) {
require(sender != _POOL_ADDRESS, "Seven: pool address cannot transfer");
uint256 currentAllowance = _allowances[sender][msg.sender];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
if (recipient == address(0)) {
_burn(sender, amount);
emit TransferWithMemo(sender, address(0), amount, memo);
} else {
_transfer(sender, recipient, amount);
emit TransferWithMemo(sender, recipient, amount, memo);
}
unchecked {
_approve(sender, msg.sender, currentAllowance - amount);
}
return true;
}
function setSwapPair(address pair, bool status) external onlyOwner {
require(pair != address(0), "Seven: zero address");
_swapPairs[pair] = status;
emit SwapPairUpdated(pair, status);
}
function isSwapPair(address pair) external view returns (bool) {
return _swapPairs[pair];
}
function isFeeWhiteListed(address account) external view returns (bool) {
return _feeWhiteList[account];
}
function fundAddress() external pure returns (address) {
return _FUND_ADDRESS;
}
function burn(uint256 amount) external onlyOwner {
_burn(msg.sender, amount);
}
function getWinners() external view returns (address[] memory) {
address[] memory winners = new address[](1);
if (_lastWinner != address(0)) {
winners[0] = _lastWinner;
}
return winners;
}
function tradingEnabled() public view returns (bool) {
return (_packedFlags & _BITMASK_TRADING_ENABLED) != 0;
}
function poolActive() public view returns (bool) {
return (_packedFlags & _BITMASK_POOL_ACTIVE) != 0;
}
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
require(recipient != address(0), "ERC20: transfer to the zero address");
bool isSwap = _isSwapPairTransfer(sender, recipient);
if (isSwap) {
bool isBuy = _swapPairs[sender];
bool isSell = _swapPairs[recipient];
if (isBuy) {
_enforceTrading(recipient);
}
if (isSell) {
_enforceSellTrading(sender);
}
_handlePreTrade(isSell);
_applySwapTransfer(sender, recipient, amount, isBuy, isSell);
_handlePostTrade();
} else {
_simpleTransfer(sender, recipient, amount);
_handlePostTrade();
}
}
function _isSwapPairTransfer(address sender, address recipient) private view returns (bool) {
return _swapPairs[sender] || _swapPairs[recipient];
}
function _enforceTrading(address recipient) private view {
if ((_packedFlags & _BITMASK_TRADING_ENABLED) == 0 && recipient != _WHITELIST_ADDRESS) {
revert("Seven: trading not enabled");
}
}
function _enforceSellTrading(address /* seller */) private pure {
return;
}
function _handlePreTrade(bool isSell) private {
uint256 flags = _packedFlags;
if ((flags & _BITMASK_TRADING_ENABLED) == 0) {
return;
}
if ((flags & _BITMASK_POOL_ACTIVE) == 0) {
if (isSell) {
_startPool(true);
}
return;
}
if (!isSell) {
return;
}
if (block.timestamp >= poolEndTime) {
if (_lastWinner != address(0)) {
_distributeRewards();
}
_startPool(true);
}
}
function _handlePostTrade() private {
uint256 flags = _packedFlags;
if ((flags & _BITMASK_TRADING_ENABLED) == 0 && qualifiedHoldersCount >= _TRADING_THRESHOLD) {
flags |= _BITMASK_TRADING_ENABLED;
_packedFlags = flags;
emit TradingEnabled();
if ((flags & _BITMASK_POOL_ACTIVE) == 0) {
_startPool(true);
}
}
}
function _simpleTransfer(address sender, address recipient, uint256 amount) private {
unchecked {
_balances[sender] -= amount;
_balances[recipient] += amount;
}
_refreshHolder(sender);
_refreshHolder(recipient);
emit Transfer(sender, recipient, amount);
uint256 flags = _packedFlags;
if ((flags & _BITMASK_TRADING_ENABLED) == 0 && qualifiedHoldersCount >= _TRADING_THRESHOLD) {
flags |= _BITMASK_TRADING_ENABLED;
_packedFlags = flags;
emit TradingEnabled();
if ((flags & _BITMASK_POOL_ACTIVE) == 0) {
_startPool(true);
}
}
}
function _applySwapTransfer(
address sender,
address recipient,
uint256 amount,
bool isBuy,
bool isSell
) private {
_balances[sender] -= amount;
bool takeFee = (isBuy || isSell) && !_feeWhiteList[sender] && !_feeWhiteList[recipient];
uint256 poolFee = 0;
uint256 burnFee = 0;
uint256 fundFee = 0;
if (takeFee) {
unchecked {
poolFee = amount / 100;
burnFee = amount / 100;
fundFee = amount / 100;
}
uint256 burned = _burnedAmount;
if (burned >= _BURN_CAP) {
unchecked {
poolFee += burnFee;
}
burnFee = 0;
} else {
unchecked {
uint256 newBurned = burned + burnFee;
if (newBurned > _BURN_CAP) {
uint256 available = _BURN_CAP - burned;
poolFee += burnFee - available;
burnFee = available;
}
}
}
}
uint256 totalFees;
uint256 amountAfterFees;
unchecked {
totalFees = poolFee + burnFee + fundFee;
amountAfterFees = amount - totalFees;
}
_balances[recipient] += amountAfterFees;
emit Transfer(sender, recipient, amountAfterFees);
if (poolFee > 0) {
_balances[_POOL_ADDRESS] += poolFee;
emit Transfer(sender, _POOL_ADDRESS, poolFee);
_refreshHolder(_POOL_ADDRESS);
}
if (fundFee > 0) {
_balances[_FUND_ADDRESS] += fundFee;
emit Transfer(sender, _FUND_ADDRESS, fundFee);
_refreshHolder(_FUND_ADDRESS);
}
if (burnFee > 0) {
_burnDirect(sender, burnFee);
}
_refreshHolder(sender);
_refreshHolder(recipient);
bool isPoolActive = (_packedFlags & _BITMASK_POOL_ACTIVE) != 0;
if (isPoolActive && isBuy && amount >= _BUY_TO_JOIN_THRESHOLD) {
_addWinner(recipient);
if ((_packedFlags & _BITMASK_POOL_ACTIVE) != 0) {
_extendPool();
}
}
}
function _addWinner(address account) private {
if (account == address(0)) {
return;
}
if (account == _POOL_ADDRESS || account == _FUND_ADDRESS) {
if (_isHolder[account]) {
_isHolder[account] = false;
if (holdersCount > 0) {
unchecked {
holdersCount -= 1;
}
}
}
return;
}
_lastWinner = account;
emit WinnerJoined(account);
}
function _extendPool() private {
uint256 currentTime = block.timestamp;
uint256 cappedEnd;
unchecked {
cappedEnd = currentTime + _POOL_MAX_DURATION;
}
uint256 currentEnd = poolEndTime;
if (currentEnd < currentTime) {
currentEnd = currentTime;
}
uint256 newEnd;
unchecked {
newEnd = currentEnd + _POOL_EXTENSION;
}
if (newEnd > cappedEnd) {
newEnd = cappedEnd;
}
poolEndTime = newEnd;
emit PoolExtended(newEnd);
}
function _startPool(bool resetWinners) private {
_packedFlags |= _BITMASK_POOL_ACTIVE;
uint256 currentTime = block.timestamp;
poolStartTime = currentTime;
unchecked {
poolEndTime = currentTime + _POOL_MAX_DURATION;
}
if (resetWinners) {
_lastWinner = address(0);
}
emit PoolStarted(currentTime, poolEndTime);
}
function _distributeRewards() private {
uint256 poolBalance = _balances[_POOL_ADDRESS];
if (poolBalance == 0) {
return;
}
address winner = _lastWinner;
uint256 rewardAmount = poolBalance / 2;
if (rewardAmount == 0) {
return;
}
unchecked {
_balances[_POOL_ADDRESS] -= rewardAmount;
_balances[winner] += rewardAmount;
}
_refreshHolder(_POOL_ADDRESS);
_refreshHolder(winner);
emit Transfer(_POOL_ADDRESS, winner, rewardAmount);
emit PoolRewardDistributed(winner, rewardAmount);
}
function _burn(address account, uint256 amount) private {
require(account != address(0), "ERC20: burn from the zero address");
require(_balances[account] >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] -= amount;
}
_burnDirect(account, amount);
_refreshHolder(account);
}
function _burnDirect(address from, uint256 amount) private {
unchecked {
_totalSupply -= amount;
_burnedAmount += amount;
}
emit Transfer(from, address(0), amount);
}
function _refreshHolder(address account) private {
if (account == address(0)) {
return;
}
uint256 balance = _balances[account];
bool previouslyHolder = _isHolder[account];
bool previouslyQualified = _isQualifiedHolder[account];
bool isQualified = balance >= _MIN_BALANCE_FOR_TRADING;
// 更新持币者统计
if (balance > 0 && !previouslyHolder) {
_isHolder[account] = true;
unchecked {
holdersCount += 1;
}
} else if (balance == 0 && previouslyHolder) {
_isHolder[account] = false;
if (holdersCount > 0) {
unchecked {
holdersCount -= 1;
}
}
}
if (isQualified && !previouslyQualified) {
_isQualifiedHolder[account] = true;
unchecked {
qualifiedHoldersCount += 1;
}
} else if (!isQualified && previouslyQualified) {
_isQualifiedHolder[account] = false;
if (qualifiedHoldersCount > 0) {
unchecked {
qualifiedHoldersCount -= 1;
}
}
}
uint256 flags = _packedFlags;
if ((flags & _BITMASK_TRADING_ENABLED) == 0 && qualifiedHoldersCount >= _TRADING_THRESHOLD) {
flags |= _BITMASK_TRADING_ENABLED;
_packedFlags = flags;
emit TradingEnabled();
if ((flags & _BITMASK_POOL_ACTIVE) == 0) {
_startPool(true);
}
}
}
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
unchecked {
_totalSupply += amount;
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
function _approve(address owner_, address spender, uint256 amount) private {
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);
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"remappings": [],
"evmVersion": "london"
}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":"uint256","name":"newEndTime","type":"uint256"}],"name":"PoolExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"PoolRewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"PoolStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"SwapPairUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"memo","type":"string"}],"name":"TransferWithMemo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WinnerJoined","type":"event"},{"inputs":[{"internalType":"address","name":"tokenOwner","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"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":"pure","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isFeeWhiteListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"isSwapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"qualifiedHoldersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"memo","type":"string"}],"name":"transferFromWithMemo","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"memo","type":"string"}],"name":"transferWithMemo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b507363b3eea5c7a9dc12aeb31eb19b8e3072bc2ae098610034565b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100b47363b3eea5c7a9dc12aeb31eb19b8e3072bc2ae0986100a16012600a610399565b6100af90633b9aca006103ac565b6101e8565b6100e67304ca60f906908dbe8ac212ad5d454f3e48aefcdb6100d86012600a610399565b6100af906317d784006103ac565b7f1c74ad04475f6112ddc45d927fdaa68150dd620b4e69716beeb1413bcf27d77d8054600160ff1991821681179092557f0d55dfc8fc5ff36558bb00d67e4c28739d40f728b55fdc164d41c788cc112c7380548216831790557ff7f413f6d32764c1dc31ecec52eb8d53190065b945d508d3660eb003acfac7ba80548216831790556002600981905560066020527f0188925c235a4f8ae0ae391a3b78cd64046312fd9721403f883f141ed376eafa80548316841790557304ca60f906908dbe8ac212ad5d454f3e48aefcdb6000527f4396491b62d8990343ae00e3cece5e81c9e25025bdd9377e031b0e6549cf70d480549092169092179055600a556103c3565b6001600160a01b03821661023e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161002b565b60078054820190556001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156102eb578085048111156102cf576102cf61029a565b60018416156102dd57908102905b60019390931c9280026102b4565b935093915050565b60008261030257506001610393565b8161030f57506000610393565b8160018114610325576002811461032f5761034b565b6001915050610393565b60ff8411156103405761034061029a565b50506001821b610393565b5060208310610133831016604e8410600b841016171561036e575081810a610393565b61037b60001984846102b0565b806000190482111561038f5761038f61029a565b0290505b92915050565b60006103a583836102f3565b9392505050565b80820281158282048414176103935761039361029a565b611e8a806103d26000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b7f06c8111610097578063e796cebe11610071578063e796cebe1461037a578063e82bef29146103a6578063f2fde38b146103c0578063f7334ee2146103d357600080fd5b8063b7f06c811461031f578063dd62ed3e1461032c578063df15c37e1461036557600080fd5b806370a082311461027f5780638348a288146102a85780638da5cb5b146102bb57806395d89b41146101935780639fa279f5146102e0578063a9059cbb1461030c57600080fd5b806341017c321161014b57806350e15fdd1161012557806350e15fdd1461025c5780635f96dc11146102645780636b4ed21b1461026d5780636e271dd51461027657600080fd5b806341017c321461022757806342966c681461023a5780634ada218b1461024f57600080fd5b806306fdde0314610193578063095ea7b3146101c35780630c830d2e146101e657806318160ddd146101fd57806323b872dd14610205578063313ce56714610218575b600080fd5b604080518082018252600581526439b2bb32b760d91b602082015290516101ba91906118cf565b60405180910390f35b6101d66101d13660046118f9565b6103e6565b60405190151581526020016101ba565b6101ef600a5481565b6040519081526020016101ba565b6007546101ef565b6101d6610213366004611923565b6103fd565b604051601281526020016101ba565b6101d6610235366004611a05565b6104cb565b61024d610248366004611a6d565b610607565b005b600d5460011615156101d6565b6008546101ef565b6101ef600b5481565b6101ef60095481565b6101ef600c5481565b6101ef61028d366004611a86565b6001600160a01b031660009081526001602052604090205490565b61024d6102b6366004611aa1565b61064d565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101ba565b6101d66102ee366004611a86565b6001600160a01b031660009081526004602052604090205460ff1690565b6101d661031a3660046118f9565b610726565b600d5460021615156101d6565b6101ef61033a366004611add565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61036d610787565b6040516101ba9190611b10565b6101d6610388366004611a86565b6001600160a01b031660009081526003602052604090205460ff1690565b7304ca60f906908dbe8ac212ad5d454f3e48aefcdb6102c8565b61024d6103ce366004611a86565b610806565b6101d66103e1366004611b5c565b61089a565b60006103f333848461096d565b5060015b92915050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e2196001600160a01b038516016104455760405162461bcd60e51b815260040161043c90611bb3565b60405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104895760405162461bcd60e51b815260040161043c90611bf6565b6001600160a01b0384166104a6576104a18584610a91565b6104b1565b6104b1858585610b9a565b6104be853385840361096d565b60019150505b9392505050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e2196001600160a01b0386160161050a5760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03851660009081526002602090815260408083203384529091529020548381101561054e5760405162461bcd60e51b815260040161043c90611bf6565b6001600160a01b0385166105a7576105668685610a91565b60006001600160a01b0316866001600160a01b0316600080516020611e15833981519152868660405161059a929190611c3e565b60405180910390a36105ee565b6105b2868686610b9a565b846001600160a01b0316866001600160a01b0316600080516020611e1583398151915286866040516105e5929190611c3e565b60405180910390a35b6105fb863386840361096d565b50600195945050505050565b3361061a6000546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161043c90611c5f565b61064a3382610a91565b50565b336106606000546001600160a01b031690565b6001600160a01b0316146106865760405162461bcd60e51b815260040161043c90611c5f565b6001600160a01b0382166106d25760405162461bcd60e51b8152602060048201526013602482015272536576656e3a207a65726f206164647265737360681b604482015260640161043c565b6001600160a01b038216600081815260036020526040808220805460ff191685151590811790915590519092917fda775fe65b87d02afd6ce385afebe9e6398be213feaca101f01f0e002c6a2bf191a35050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e219330161075c5760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03831661077c576107743383610a91565b5060016103f7565b6103f3338484610b9a565b60408051600180825281830190925260609160009190602080830190803683375050600e54919250506001600160a01b03161561080157600e5481516001600160a01b039091169082906000906107e0576107e0611c96565b60200260200101906001600160a01b031690816001600160a01b0316815250505b919050565b336108196000546001600160a01b031690565b6001600160a01b03161461083f5760405162461bcd60e51b815260040161043c90611c5f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000738894e0a0c962cb723c1976a4421c95949be2d4e21933016108d05760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03841661091d576108e83384610a91565b6040516000903390600080516020611e158339815191529061090d9087908790611c3e565b60405180910390a35060016104c4565b610928338585610b9a565b836001600160a01b0316336001600160a01b0316600080516020611e15833981519152858560405161095b929190611c3e565b60405180910390a35060019392505050565b6001600160a01b0383166109cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043c565b6001600160a01b038216610a305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216610af15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161043c565b6001600160a01b038216600090815260016020526040902054811115610b645760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161043c565b6001600160a01b038216600090815260016020526040902080548290039055610b8d8282610d62565b610b9682610da6565b5050565b6001600160a01b038316610bfe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043c565b6001600160a01b038316600090815260016020526040902054811115610c755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161043c565b6001600160a01b038216610cd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043c565b6000610ce38484610f88565b90508015610d49576001600160a01b0380851660009081526003602052604080822054928616825290205460ff91821691168115610d2457610d2485610fcb565b610d2d81611048565b610d3a86868685856110aa565b610d42611428565b5050610d5c565b610d5484848461148b565b610d5c611428565b50505050565b60078054829003905560088054820190556040518181526000906001600160a01b03841690600080516020611e358339815191529060200160405180910390a35050565b6001600160a01b038116610db75750565b6001600160a01b0381166000908152600160209081526040808320546005835281842054600690935290832054909260ff9283169290911690610dfc6012600a611da9565b610e07906064611db5565b8410159050600084118015610e1a575082155b15610e53576001600160a01b0385166000908152600560205260409020805460ff19166001908117909155600980549091019055610e96565b83158015610e5e5750825b15610e96576001600160a01b0385166000908152600560205260409020805460ff1916905560095415610e9657600980546000190190555b808015610ea1575081155b15610eda576001600160a01b0385166000908152600660205260409020805460ff19166001908117909155600a80549091019055610f1d565b80158015610ee55750815b15610f1d576001600160a01b0385166000908152600660205260409020805460ff19169055600a5415610f1d57600a80546000190190555b600d5460018116158015610f355750617530600a5410155b15610f8057600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a160028116600003610f8057610f806001611564565b505050505050565b6001600160a01b03821660009081526003602052604081205460ff16806104c45750506001600160a01b031660009081526003602052604090205460ff16919050565b600d54600116158015610ffb57506001600160a01b0381167304ca60f906908dbe8ac212ad5d454f3e48aefcdb14155b1561064a5760405162461bcd60e51b815260206004820152601a60248201527f536576656e3a2074726164696e67206e6f7420656e61626c6564000000000000604482015260640161043c565b600d546001811660000361105a575050565b60028116600003611075578115610b9657610b966001611564565b8161107e575050565b600c544210610b9657600e546001600160a01b0316156110a0576110a06115c5565b610b966001611564565b6001600160a01b038516600090815260016020526040812080548592906110d2908490611dcc565b909155506000905082806110e35750815b801561110857506001600160a01b03861660009081526004602052604090205460ff16155b801561112d57506001600160a01b03851660009081526004602052604090205460ff16155b9050600080600083156111b8575050600854606486049150819081906111556012600a611da9565b611163906301406f40611db5565b8110611177578284019350600092506111b6565b8083016a115eec47f6cf7e350000008111156111b457928101939093016a115eec47f6cf7e34ffffff1901926a115eec47f6cf7e35000000819003925b505b505b6001600160a01b03881660009081526001602052604081208054858501840192838b039283929091906111ec908490611ddf565b92505081905550896001600160a01b03168b6001600160a01b0316600080516020611e358339815191528360405161122691815260200190565b60405180910390a384156112e857738894e0a0c962cb723c1976a4421c95949be2d4e3600090815260016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b48054879290611284908490611ddf565b9091555050604051858152738894e0a0c962cb723c1976a4421c95949be2d4e3906001600160a01b038d1690600080516020611e358339815191529060200160405180910390a36112e8738894e0a0c962cb723c1976a4421c95949be2d4e3610da6565b82156113a2577304ca60f906908dbe8ac212ad5d454f3e48aefcdb600090815260016020527f8b0c289592966db91ee1ab9158b5e800c83f4d1b4e11c7b49707ee66f748a63e805485929061133e908490611ddf565b90915550506040518381527304ca60f906908dbe8ac212ad5d454f3e48aefcdb906001600160a01b038d1690600080516020611e358339815191529060200160405180910390a36113a27304ca60f906908dbe8ac212ad5d454f3e48aefcdb610da6565b83156113b2576113b28b85610d62565b6113bb8b610da6565b6113c48a610da6565b600d546002161580159081906113d75750885b80156113f957506113ea6012600a611da9565b6113f5906064611db5565b8a10155b1561141a576114078b61172f565b600d546002161561141a5761141a61182c565b505050505050505050505050565b600d54600181161580156114405750617530600a5410155b1561064a57600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a16002811660000361064a5761064a6001611564565b6001600160a01b03808416600090815260016020526040808220805485900390559184168152208054820190556114c183610da6565b6114ca82610da6565b816001600160a01b0316836001600160a01b0316600080516020611e35833981519152836040516114fd91815260200190565b60405180910390a3600d546001811615801561151d5750617530600a5410155b15610d5c57600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a160028116600003610d5c57610d5c60015b600d8054600217905542600b819055620151808101600c55811561159357600e80546001600160a01b03191690555b600c5460405182907faf9b8c1676656a817bb6b978900dea30f7d87dd4af846ff666096a49ebdd1e3590600090a35050565b738894e0a0c962cb723c1976a4421c95949be2d4e3600090815260016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b454908190036116115750565b600e546001600160a01b0316600061162a600284611df2565b90508060000361163957505050565b60016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b4805482900390556001600160a01b03821660009081526040902080548201905561169c738894e0a0c962cb723c1976a4421c95949be2d4e3610da6565b6116a582610da6565b6040518181526001600160a01b03831690738894e0a0c962cb723c1976a4421c95949be2d4e390600080516020611e358339815191529060200160405180910390a3816001600160a01b03167facd6e719a637694e43c8f7497452092cd0637e1f84020b6a148f88786b2676418260405161172291815260200190565b60405180910390a2505050565b6001600160a01b0381166117405750565b6001600160a01b038116738894e0a0c962cb723c1976a4421c95949be2d4e3148061178757506001600160a01b0381167304ca60f906908dbe8ac212ad5d454f3e48aefcdb145b156117e2576001600160a01b03811660009081526005602052604090205460ff161561064a576001600160a01b0381166000908152600560205260409020805460ff191690556009541561064a576009805460001901905550565b600e80546001600160a01b0319166001600160a01b0383169081179091556040517f0561f6509a74b9569b7c1aab4ced23f82f9016a5dc5cb243d18d4059cf19b0c190600090a250565b600c54429062015180820190828110156118435750815b6107088101828111156118535750815b600c81905560405181907f7a1e74f151b82aad1ec3a982474b7267cd1c19e8002648f2517684d17793b55190600090a250505050565b6000815180845260005b818110156118af57602081850181015186830182015201611893565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104c46020830184611889565b80356001600160a01b038116811461080157600080fd5b6000806040838503121561190c57600080fd5b611915836118e2565b946020939093013593505050565b60008060006060848603121561193857600080fd5b611941846118e2565b925061194f602085016118e2565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261198757600080fd5b813567ffffffffffffffff8111156119a1576119a1611960565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156119d0576119d0611960565b6040528181528382016020018510156119e857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611a1b57600080fd5b611a24856118e2565b9350611a32602086016118e2565b925060408501359150606085013567ffffffffffffffff811115611a5557600080fd5b611a6187828801611976565b91505092959194509250565b600060208284031215611a7f57600080fd5b5035919050565b600060208284031215611a9857600080fd5b6104c4826118e2565b60008060408385031215611ab457600080fd5b611abd836118e2565b915060208301358015158114611ad257600080fd5b809150509250929050565b60008060408385031215611af057600080fd5b611af9836118e2565b9150611b07602084016118e2565b90509250929050565b602080825282518282018190526000918401906040840190835b81811015611b515783516001600160a01b0316835260209384019390920191600101611b2a565b509095945050505050565b600080600060608486031215611b7157600080fd5b611b7a846118e2565b925060208401359150604084013567ffffffffffffffff811115611b9d57600080fd5b611ba986828701611976565b9150509250925092565b60208082526023908201527f536576656e3a20706f6f6c20616464726573732063616e6e6f74207472616e736040820152623332b960e91b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b828152604060208201526000611c576040830184611889565b949350505050565b6020808252601e908201527f4f776e65723a2063616c6c6572206973206e6f7420746865206f776e65720000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611cfd57808504811115611ce157611ce1611cac565b6001841615611cef57908102905b60019390931c928002611cc6565b935093915050565b600082611d14575060016103f7565b81611d21575060006103f7565b8160018114611d375760028114611d4157611d5d565b60019150506103f7565b60ff841115611d5257611d52611cac565b50506001821b6103f7565b5060208310610133831016604e8410600b8410161715611d80575081810a6103f7565b611d8d6000198484611cc2565b8060001904821115611da157611da1611cac565b029392505050565b60006104c48383611d05565b80820281158282048414176103f7576103f7611cac565b818103818111156103f7576103f7611cac565b808201808211156103f7576103f7611cac565b600082611e0f57634e487b7160e01b600052601260045260246000fd5b50049056febd5c95affecf80a51b513bb4eddd42724421b80ef31b07cee1b5b25d8ce5a05bddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122068c388a8b6ea34b97a0203c82f420c2edcaf744dbff60c156e1ccaf90ff448df64736f6c634300081e0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b7f06c8111610097578063e796cebe11610071578063e796cebe1461037a578063e82bef29146103a6578063f2fde38b146103c0578063f7334ee2146103d357600080fd5b8063b7f06c811461031f578063dd62ed3e1461032c578063df15c37e1461036557600080fd5b806370a082311461027f5780638348a288146102a85780638da5cb5b146102bb57806395d89b41146101935780639fa279f5146102e0578063a9059cbb1461030c57600080fd5b806341017c321161014b57806350e15fdd1161012557806350e15fdd1461025c5780635f96dc11146102645780636b4ed21b1461026d5780636e271dd51461027657600080fd5b806341017c321461022757806342966c681461023a5780634ada218b1461024f57600080fd5b806306fdde0314610193578063095ea7b3146101c35780630c830d2e146101e657806318160ddd146101fd57806323b872dd14610205578063313ce56714610218575b600080fd5b604080518082018252600581526439b2bb32b760d91b602082015290516101ba91906118cf565b60405180910390f35b6101d66101d13660046118f9565b6103e6565b60405190151581526020016101ba565b6101ef600a5481565b6040519081526020016101ba565b6007546101ef565b6101d6610213366004611923565b6103fd565b604051601281526020016101ba565b6101d6610235366004611a05565b6104cb565b61024d610248366004611a6d565b610607565b005b600d5460011615156101d6565b6008546101ef565b6101ef600b5481565b6101ef60095481565b6101ef600c5481565b6101ef61028d366004611a86565b6001600160a01b031660009081526001602052604090205490565b61024d6102b6366004611aa1565b61064d565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101ba565b6101d66102ee366004611a86565b6001600160a01b031660009081526004602052604090205460ff1690565b6101d661031a3660046118f9565b610726565b600d5460021615156101d6565b6101ef61033a366004611add565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61036d610787565b6040516101ba9190611b10565b6101d6610388366004611a86565b6001600160a01b031660009081526003602052604090205460ff1690565b7304ca60f906908dbe8ac212ad5d454f3e48aefcdb6102c8565b61024d6103ce366004611a86565b610806565b6101d66103e1366004611b5c565b61089a565b60006103f333848461096d565b5060015b92915050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e2196001600160a01b038516016104455760405162461bcd60e51b815260040161043c90611bb3565b60405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104895760405162461bcd60e51b815260040161043c90611bf6565b6001600160a01b0384166104a6576104a18584610a91565b6104b1565b6104b1858585610b9a565b6104be853385840361096d565b60019150505b9392505050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e2196001600160a01b0386160161050a5760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03851660009081526002602090815260408083203384529091529020548381101561054e5760405162461bcd60e51b815260040161043c90611bf6565b6001600160a01b0385166105a7576105668685610a91565b60006001600160a01b0316866001600160a01b0316600080516020611e15833981519152868660405161059a929190611c3e565b60405180910390a36105ee565b6105b2868686610b9a565b846001600160a01b0316866001600160a01b0316600080516020611e1583398151915286866040516105e5929190611c3e565b60405180910390a35b6105fb863386840361096d565b50600195945050505050565b3361061a6000546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161043c90611c5f565b61064a3382610a91565b50565b336106606000546001600160a01b031690565b6001600160a01b0316146106865760405162461bcd60e51b815260040161043c90611c5f565b6001600160a01b0382166106d25760405162461bcd60e51b8152602060048201526013602482015272536576656e3a207a65726f206164647265737360681b604482015260640161043c565b6001600160a01b038216600081815260036020526040808220805460ff191685151590811790915590519092917fda775fe65b87d02afd6ce385afebe9e6398be213feaca101f01f0e002c6a2bf191a35050565b6000738894e0a0c962cb723c1976a4421c95949be2d4e219330161075c5760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03831661077c576107743383610a91565b5060016103f7565b6103f3338484610b9a565b60408051600180825281830190925260609160009190602080830190803683375050600e54919250506001600160a01b03161561080157600e5481516001600160a01b039091169082906000906107e0576107e0611c96565b60200260200101906001600160a01b031690816001600160a01b0316815250505b919050565b336108196000546001600160a01b031690565b6001600160a01b03161461083f5760405162461bcd60e51b815260040161043c90611c5f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000738894e0a0c962cb723c1976a4421c95949be2d4e21933016108d05760405162461bcd60e51b815260040161043c90611bb3565b6001600160a01b03841661091d576108e83384610a91565b6040516000903390600080516020611e158339815191529061090d9087908790611c3e565b60405180910390a35060016104c4565b610928338585610b9a565b836001600160a01b0316336001600160a01b0316600080516020611e15833981519152858560405161095b929190611c3e565b60405180910390a35060019392505050565b6001600160a01b0383166109cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043c565b6001600160a01b038216610a305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216610af15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161043c565b6001600160a01b038216600090815260016020526040902054811115610b645760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161043c565b6001600160a01b038216600090815260016020526040902080548290039055610b8d8282610d62565b610b9682610da6565b5050565b6001600160a01b038316610bfe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161043c565b6001600160a01b038316600090815260016020526040902054811115610c755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161043c565b6001600160a01b038216610cd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043c565b6000610ce38484610f88565b90508015610d49576001600160a01b0380851660009081526003602052604080822054928616825290205460ff91821691168115610d2457610d2485610fcb565b610d2d81611048565b610d3a86868685856110aa565b610d42611428565b5050610d5c565b610d5484848461148b565b610d5c611428565b50505050565b60078054829003905560088054820190556040518181526000906001600160a01b03841690600080516020611e358339815191529060200160405180910390a35050565b6001600160a01b038116610db75750565b6001600160a01b0381166000908152600160209081526040808320546005835281842054600690935290832054909260ff9283169290911690610dfc6012600a611da9565b610e07906064611db5565b8410159050600084118015610e1a575082155b15610e53576001600160a01b0385166000908152600560205260409020805460ff19166001908117909155600980549091019055610e96565b83158015610e5e5750825b15610e96576001600160a01b0385166000908152600560205260409020805460ff1916905560095415610e9657600980546000190190555b808015610ea1575081155b15610eda576001600160a01b0385166000908152600660205260409020805460ff19166001908117909155600a80549091019055610f1d565b80158015610ee55750815b15610f1d576001600160a01b0385166000908152600660205260409020805460ff19169055600a5415610f1d57600a80546000190190555b600d5460018116158015610f355750617530600a5410155b15610f8057600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a160028116600003610f8057610f806001611564565b505050505050565b6001600160a01b03821660009081526003602052604081205460ff16806104c45750506001600160a01b031660009081526003602052604090205460ff16919050565b600d54600116158015610ffb57506001600160a01b0381167304ca60f906908dbe8ac212ad5d454f3e48aefcdb14155b1561064a5760405162461bcd60e51b815260206004820152601a60248201527f536576656e3a2074726164696e67206e6f7420656e61626c6564000000000000604482015260640161043c565b600d546001811660000361105a575050565b60028116600003611075578115610b9657610b966001611564565b8161107e575050565b600c544210610b9657600e546001600160a01b0316156110a0576110a06115c5565b610b966001611564565b6001600160a01b038516600090815260016020526040812080548592906110d2908490611dcc565b909155506000905082806110e35750815b801561110857506001600160a01b03861660009081526004602052604090205460ff16155b801561112d57506001600160a01b03851660009081526004602052604090205460ff16155b9050600080600083156111b8575050600854606486049150819081906111556012600a611da9565b611163906301406f40611db5565b8110611177578284019350600092506111b6565b8083016a115eec47f6cf7e350000008111156111b457928101939093016a115eec47f6cf7e34ffffff1901926a115eec47f6cf7e35000000819003925b505b505b6001600160a01b03881660009081526001602052604081208054858501840192838b039283929091906111ec908490611ddf565b92505081905550896001600160a01b03168b6001600160a01b0316600080516020611e358339815191528360405161122691815260200190565b60405180910390a384156112e857738894e0a0c962cb723c1976a4421c95949be2d4e3600090815260016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b48054879290611284908490611ddf565b9091555050604051858152738894e0a0c962cb723c1976a4421c95949be2d4e3906001600160a01b038d1690600080516020611e358339815191529060200160405180910390a36112e8738894e0a0c962cb723c1976a4421c95949be2d4e3610da6565b82156113a2577304ca60f906908dbe8ac212ad5d454f3e48aefcdb600090815260016020527f8b0c289592966db91ee1ab9158b5e800c83f4d1b4e11c7b49707ee66f748a63e805485929061133e908490611ddf565b90915550506040518381527304ca60f906908dbe8ac212ad5d454f3e48aefcdb906001600160a01b038d1690600080516020611e358339815191529060200160405180910390a36113a27304ca60f906908dbe8ac212ad5d454f3e48aefcdb610da6565b83156113b2576113b28b85610d62565b6113bb8b610da6565b6113c48a610da6565b600d546002161580159081906113d75750885b80156113f957506113ea6012600a611da9565b6113f5906064611db5565b8a10155b1561141a576114078b61172f565b600d546002161561141a5761141a61182c565b505050505050505050505050565b600d54600181161580156114405750617530600a5410155b1561064a57600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a16002811660000361064a5761064a6001611564565b6001600160a01b03808416600090815260016020526040808220805485900390559184168152208054820190556114c183610da6565b6114ca82610da6565b816001600160a01b0316836001600160a01b0316600080516020611e35833981519152836040516114fd91815260200190565b60405180910390a3600d546001811615801561151d5750617530600a5410155b15610d5c57600117600d8190556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a160028116600003610d5c57610d5c60015b600d8054600217905542600b819055620151808101600c55811561159357600e80546001600160a01b03191690555b600c5460405182907faf9b8c1676656a817bb6b978900dea30f7d87dd4af846ff666096a49ebdd1e3590600090a35050565b738894e0a0c962cb723c1976a4421c95949be2d4e3600090815260016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b454908190036116115750565b600e546001600160a01b0316600061162a600284611df2565b90508060000361163957505050565b60016020527f2a1e20cfdc0a1a03b0a1a44fdd9fd5fa930358e5b8221476467d529192e1b4b4805482900390556001600160a01b03821660009081526040902080548201905561169c738894e0a0c962cb723c1976a4421c95949be2d4e3610da6565b6116a582610da6565b6040518181526001600160a01b03831690738894e0a0c962cb723c1976a4421c95949be2d4e390600080516020611e358339815191529060200160405180910390a3816001600160a01b03167facd6e719a637694e43c8f7497452092cd0637e1f84020b6a148f88786b2676418260405161172291815260200190565b60405180910390a2505050565b6001600160a01b0381166117405750565b6001600160a01b038116738894e0a0c962cb723c1976a4421c95949be2d4e3148061178757506001600160a01b0381167304ca60f906908dbe8ac212ad5d454f3e48aefcdb145b156117e2576001600160a01b03811660009081526005602052604090205460ff161561064a576001600160a01b0381166000908152600560205260409020805460ff191690556009541561064a576009805460001901905550565b600e80546001600160a01b0319166001600160a01b0383169081179091556040517f0561f6509a74b9569b7c1aab4ced23f82f9016a5dc5cb243d18d4059cf19b0c190600090a250565b600c54429062015180820190828110156118435750815b6107088101828111156118535750815b600c81905560405181907f7a1e74f151b82aad1ec3a982474b7267cd1c19e8002648f2517684d17793b55190600090a250505050565b6000815180845260005b818110156118af57602081850181015186830182015201611893565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104c46020830184611889565b80356001600160a01b038116811461080157600080fd5b6000806040838503121561190c57600080fd5b611915836118e2565b946020939093013593505050565b60008060006060848603121561193857600080fd5b611941846118e2565b925061194f602085016118e2565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261198757600080fd5b813567ffffffffffffffff8111156119a1576119a1611960565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156119d0576119d0611960565b6040528181528382016020018510156119e857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611a1b57600080fd5b611a24856118e2565b9350611a32602086016118e2565b925060408501359150606085013567ffffffffffffffff811115611a5557600080fd5b611a6187828801611976565b91505092959194509250565b600060208284031215611a7f57600080fd5b5035919050565b600060208284031215611a9857600080fd5b6104c4826118e2565b60008060408385031215611ab457600080fd5b611abd836118e2565b915060208301358015158114611ad257600080fd5b809150509250929050565b60008060408385031215611af057600080fd5b611af9836118e2565b9150611b07602084016118e2565b90509250929050565b602080825282518282018190526000918401906040840190835b81811015611b515783516001600160a01b0316835260209384019390920191600101611b2a565b509095945050505050565b600080600060608486031215611b7157600080fd5b611b7a846118e2565b925060208401359150604084013567ffffffffffffffff811115611b9d57600080fd5b611ba986828701611976565b9150509250925092565b60208082526023908201527f536576656e3a20706f6f6c20616464726573732063616e6e6f74207472616e736040820152623332b960e91b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b828152604060208201526000611c576040830184611889565b949350505050565b6020808252601e908201527f4f776e65723a2063616c6c6572206973206e6f7420746865206f776e65720000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611cfd57808504811115611ce157611ce1611cac565b6001841615611cef57908102905b60019390931c928002611cc6565b935093915050565b600082611d14575060016103f7565b81611d21575060006103f7565b8160018114611d375760028114611d4157611d5d565b60019150506103f7565b60ff841115611d5257611d52611cac565b50506001821b6103f7565b5060208310610133831016604e8410600b8410161715611d80575081810a6103f7565b611d8d6000198484611cc2565b8060001904821115611da157611da1611cac565b029392505050565b60006104c48383611d05565b80820281158282048414176103f7576103f7611cac565b818103818111156103f7576103f7611cac565b808201808211156103f7576103f7611cac565b600082611e0f57634e487b7160e01b600052601260045260246000fd5b50049056febd5c95affecf80a51b513bb4eddd42724421b80ef31b07cee1b5b25d8ce5a05bddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122068c388a8b6ea34b97a0203c82f420c2edcaf744dbff60c156e1ccaf90ff448df64736f6c634300081e0033
Deployed Bytecode Sourcemap
1459:17779:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4415:83;4486:5;;;;;;;;;;;-1:-1:-1;;;4486:5:0;;;;4415:83;;;;4486:5;4415:83;:::i;:::-;;;;;;;;5173:158;;;;;;:::i;:::-;;:::i;:::-;;;1292:14:1;;1285:22;1267:41;;1255:2;1240:18;5173:158:0;1127:187:1;3167:36:0;;;;;;;;;1465:25:1;;;1453:2;1438:18;3167:36:0;1319:177:1;4686:100:0;4767:12;;4686:100;;5705:622;;;;;;:::i;:::-;;:::i;4597:83::-;;;1631:2;2022:36:1;;2010:2;1995:18;4597:83:0;1880:184:1;6861:778:0;;;;;;:::i;:::-;;:::i;8195:91::-;;;;;;:::i;:::-;;:::i;:::-;;8534:123;8605:12;;3366:6;8605:39;8604:46;;8534:123;;4792:93;4865:13;;4792:93;;3210:28;;;;;;3134:27;;;;;;3244:26;;;;;;4891:117;;;;;;:::i;:::-;-1:-1:-1;;;;;4983:18:0;4957:7;4983:18;;;:9;:18;;;;;;;4891:117;7645:213;;;;;;:::i;:::-;;:::i;1086:85::-;1132:7;1158:6;-1:-1:-1;;;;;1158:6:0;1086:85;;;-1:-1:-1;;;;;4460:32:1;;;4442:51;;4430:2;4415:18;1086:85:0;4296:203:1;7973:118:0;;;;;;:::i;:::-;-1:-1:-1;;;;;8062:22:0;8039:4;8062:22;;;:13;:22;;;;;;;;;7973:118;5337:362;;;;;;:::i;:::-;;:::i;8663:115::-;8730:12;;3426:6;8730:35;8729:42;;8663:115;;5014:153;;;;;;:::i;:::-;-1:-1:-1;;;;;5128:23:0;;;5102:7;5128:23;;;:11;:23;;;;;;;;:32;;;;;;;;;;;;;5014:153;8292:236;;;:::i;:::-;;;;;;;:::i;7864:103::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7944:16:0;7921:4;7944:16;;;:10;:16;;;;;;;;;7864:103;8097:92;2684:42;8097:92;;1296:159;;;;;;:::i;:::-;;:::i;6333:522::-;;;;;;:::i;:::-;;:::i;5173:158::-;5250:4;5266:37;5275:10;5287:7;5296:6;5266:8;:37::i;:::-;-1:-1:-1;5320:4:0;5173:158;;;;;:::o;5705:622::-;5805:4;-1:-1:-1;;;;;;;5829:23:0;;;5821:71;;;;-1:-1:-1;;;5821:71:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5929:19:0;;5902:24;5929:19;;;:11;:19;;;;;;;;5949:10;5929:31;;;;;;;;5978:26;;;;5970:79;;;;-1:-1:-1;;;5970:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6063:23:0;;6059:142;;6102:21;6108:6;6116;6102:5;:21::i;:::-;6059:142;;;6154:36;6164:6;6172:9;6183:6;6154:9;:36::i;:::-;6234:55;6243:6;6251:10;6282:6;6263:16;:25;6234:8;:55::i;:::-;6316:4;6309:11;;;5705:622;;;;;;:::o;6861:778::-;6980:4;-1:-1:-1;;;;;;;7004:23:0;;;6996:71;;;;-1:-1:-1;;;6996:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7104:19:0;;7077:24;7104:19;;;:11;:19;;;;;;;;7124:10;7104:31;;;;;;;;7153:26;;;;7145:79;;;;-1:-1:-1;;;7145:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7238:23:0;;7234:279;;7277:21;7283:6;7291;7277:5;:21::i;:::-;7350:1;-1:-1:-1;;;;;7317:50:0;7334:6;-1:-1:-1;;;;;7317:50:0;-1:-1:-1;;;;;;;;;;;7354:6:0;7362:4;7317:50;;;;;;;:::i;:::-;;;;;;;;7234:279;;;7398:36;7408:6;7416:9;7427:6;7398:9;:36::i;:::-;7478:9;-1:-1:-1;;;;;7453:49:0;7470:6;-1:-1:-1;;;;;7453:49:0;-1:-1:-1;;;;;;;;;;;7489:6:0;7497:4;7453:49;;;;;;;:::i;:::-;;;;;;;;7234:279;7546:55;7555:6;7563:10;7594:6;7575:16;:25;7546:8;:55::i;:::-;-1:-1:-1;7628:4:0;;6861:778;-1:-1:-1;;;;;6861:778:0:o;8195:91::-;1227:10;1216:7;1132;1158:6;-1:-1:-1;;;;;1158:6:0;;1086:85;1216:7;-1:-1:-1;;;;;1216:21:0;;1208:64;;;;-1:-1:-1;;;1208:64:0;;;;;;;:::i;:::-;8254:25:::1;8260:10;8272:6;8254:5;:25::i;:::-;8195:91:::0;:::o;7645:213::-;1227:10;1216:7;1132;1158:6;-1:-1:-1;;;;;1158:6:0;;1086:85;1216:7;-1:-1:-1;;;;;1216:21:0;;1208:64;;;;-1:-1:-1;;;1208:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7730:18:0;::::1;7722:50;;;::::0;-1:-1:-1;;;7722:50:0;;7596:2:1;7722:50:0::1;::::0;::::1;7578:21:1::0;7635:2;7615:18;;;7608:30;-1:-1:-1;;;7654:18:1;;;7647:49;7713:18;;7722:50:0::1;7394:343:1::0;7722:50:0::1;-1:-1:-1::0;;;;;7782:16:0;::::1;;::::0;;;:10:::1;:16;::::0;;;;;:25;;-1:-1:-1;;7782:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;7822:29;;7782:25;;:16;7822:29:::1;::::0;::::1;7645:213:::0;;:::o;5337:362::-;5417:4;-1:-1:-1;;5441:10:0;:27;5433:75;;;;-1:-1:-1;;;5433:75:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5522:23:0;;5518:104;;5561:25;5567:10;5579:6;5561:5;:25::i;:::-;-1:-1:-1;5607:4:0;5600:11;;5518:104;5631:40;5641:10;5653:9;5664:6;5631:9;:40::i;8292:236::-;8392:16;;;8406:1;8392:16;;;;;;;;;8337;;8365:24;;8392:16;;;;;;;;;;-1:-1:-1;;8422:11:0;;8365:43;;-1:-1:-1;;;;;;;8422:11:0;:25;8418:80;;8476:11;;8463:10;;-1:-1:-1;;;;;8476:11:0;;;;8463:7;;8476:11;;8463:10;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;8463:24:0;;;-1:-1:-1;;;;;8463:24:0;;;;;8418:80;8514:7;8292:236;-1:-1:-1;8292:236:0:o;1296:159::-;1227:10;1216:7;1132;1158:6;-1:-1:-1;;;;;1158:6:0;;1086:85;1216:7;-1:-1:-1;;;;;1216:21:0;;1208:64;;;;-1:-1:-1;;;1208:64:0;;;;;;;:::i;:::-;1404:6:::1;::::0;;1383:38:::1;::::0;-1:-1:-1;;;;;1383:38:0;;::::1;::::0;1404:6;::::1;::::0;1383:38:::1;::::0;::::1;1431:6;:17:::0;;-1:-1:-1;;;;;;1431:17:0::1;-1:-1:-1::0;;;;;1431:17:0;;;::::1;::::0;;;::::1;::::0;;1296:159::o;6333:522::-;6432:4;-1:-1:-1;;6456:10:0;:27;6448:75;;;;-1:-1:-1;;;6448:75:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6537:23:0;;6533:177;;6576:25;6582:10;6594:6;6576:5;:25::i;:::-;6620:54;;6657:1;;6637:10;;-1:-1:-1;;;;;;;;;;;6620:54:0;;;6661:6;;6669:4;;6620:54;:::i;:::-;;;;;;;;-1:-1:-1;6695:4:0;6688:11;;6533:177;6719:40;6729:10;6741:9;6752:6;6719:9;:40::i;:::-;6803:9;-1:-1:-1;;;;;6774:53:0;6791:10;-1:-1:-1;;;;;6774:53:0;-1:-1:-1;;;;;;;;;;;6814:6:0;6822:4;6774:53;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6844:4:0;6333:522;;;;;:::o;18902:334::-;-1:-1:-1;;;;;18995:20:0;;18987:69;;;;-1:-1:-1;;;18987:69:0;;8076:2:1;18987:69:0;;;8058:21:1;8115:2;8095:18;;;8088:30;8154:34;8134:18;;;8127:62;-1:-1:-1;;;8205:18:1;;;8198:34;8249:19;;18987:69:0;7874:400:1;18987:69:0;-1:-1:-1;;;;;19074:21:0;;19066:68;;;;-1:-1:-1;;;19066:68:0;;8481:2:1;19066:68:0;;;8463:21:1;8520:2;8500:18;;;8493:30;8559:34;8539:18;;;8532:62;-1:-1:-1;;;8610:18:1;;;8603:32;8652:19;;19066:68:0;8279:398:1;19066:68:0;-1:-1:-1;;;;;19144:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;19196:33;;1465:25:1;;;19196:33:0;;1438:18:1;19196:33:0;;;;;;;18902:334;;;:::o;16386:369::-;-1:-1:-1;;;;;16460:21:0;;16452:67;;;;-1:-1:-1;;;16452:67:0;;8884:2:1;16452:67:0;;;8866:21:1;8923:2;8903:18;;;8896:30;8962:34;8942:18;;;8935:62;-1:-1:-1;;;9013:18:1;;;9006:31;9054:19;;16452:67:0;8682:397:1;16452:67:0;-1:-1:-1;;;;;16537:18:0;;;;;;:9;:18;;;;;;:28;-1:-1:-1;16537:28:0;16529:75;;;;-1:-1:-1;;;16529:75:0;;9286:2:1;16529:75:0;;;9268:21:1;9325:2;9305:18;;;9298:30;9364:34;9344:18;;;9337:62;-1:-1:-1;;;9415:18:1;;;9408:32;9457:19;;16529:75:0;9084:398:1;16529:75:0;-1:-1:-1;;;;;16639:18:0;;;;;;:9;:18;;;;;:28;;;;;;;16687;16649:7;16661:6;16687:11;:28::i;:::-;16725:23;16740:7;16725:14;:23::i;:::-;16386:369;;:::o;8784:943::-;-1:-1:-1;;;;;8881:20:0;;8873:70;;;;-1:-1:-1;;;8873:70:0;;9689:2:1;8873:70:0;;;9671:21:1;9728:2;9708:18;;;9701:30;9767:34;9747:18;;;9740:62;-1:-1:-1;;;9818:18:1;;;9811:35;9863:19;;8873:70:0;9487:401:1;8873:70:0;-1:-1:-1;;;;;8961:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;8961:27:0;8953:78;;;;-1:-1:-1;;;8953:78:0;;10095:2:1;8953:78:0;;;10077:21:1;10134:2;10114:18;;;10107:30;10173:34;10153:18;;;10146:62;-1:-1:-1;;;10224:18:1;;;10217:36;10270:19;;8953:78:0;9893:402:1;8953:78:0;-1:-1:-1;;;;;9049:23:0;;9041:71;;;;-1:-1:-1;;;9041:71:0;;10502:2:1;9041:71:0;;;10484:21:1;10541:2;10521:18;;;10514:30;10580:34;10560:18;;;10553:62;-1:-1:-1;;;10631:18:1;;;10624:33;10674:19;;9041:71:0;10300:399:1;9041:71:0;9123:11;9137:38;9157:6;9165:9;9137:19;:38::i;:::-;9123:52;;9190:6;9186:535;;;-1:-1:-1;;;;;9225:18:0;;;9212:10;9225:18;;;:10;:18;;;;;;;9271:21;;;;;;;;9225:18;;;;;9271:21;9307:70;;;;9336:26;9352:9;9336:15;:26::i;:::-;9476:23;9492:6;9476:15;:23::i;:::-;9513:60;9532:6;9540:9;9551:6;9559:5;9566:6;9513:18;:60::i;:::-;9587:18;:16;:18::i;:::-;9198:418;;9186:535;;;9636:42;9652:6;9660:9;9671:6;9636:15;:42::i;:::-;9692:18;:16;:18::i;:::-;8863:864;8784:943;;;:::o;16761:218::-;16854:12;:22;;;;;;;16890:13;:23;;;;;;16938:34;;1465:25:1;;;-1:-1:-1;;;;;;;16938:34:0;;;-1:-1:-1;;;;;;;;;;;16938:34:0;1453:2:1;1438:18;16938:34:0;;;;;;;16761:218;;:::o;16985:1606::-;-1:-1:-1;;;;;17048:21:0;;17044:58;;16985:1606;:::o;17044:58::-;-1:-1:-1;;;;;17130:18:0;;17112:15;17130:18;;;:9;:18;;;;;;;;;17182:9;:18;;;;;;17237;:27;;;;;;;17130:18;;17182;;;;;17237:27;;;;2047:24;1631:2;2047;:24;:::i;:::-;2041:30;;:3;:30;:::i;:::-;17293:7;:35;;17274:54;;17386:1;17376:7;:11;:32;;;;;17392:16;17391:17;17376:32;17372:391;;;-1:-1:-1;;;;;17424:18:0;;;;;;:9;:18;;;;;:25;;-1:-1:-1;;17424:25:0;17445:4;17424:25;;;;;;17491:12;:17;;;;;;;17372:391;;;17543:12;;:32;;;;;17559:16;17543:32;17539:224;;;-1:-1:-1;;;;;17591:18:0;;17612:5;17591:18;;;:9;:18;;;;;:26;;-1:-1:-1;;17591:26:0;;;17635:12;;:16;17631:122;;17703:12;:17;;-1:-1:-1;;17703:17:0;;;17631:122;17777:11;:35;;;;;17793:19;17792:20;17777:35;17773:442;;;-1:-1:-1;;;;;17828:27:0;;;;;;:18;:27;;;;;:34;;-1:-1:-1;;17828:34:0;17858:4;17828:34;;;;;;17904:21;:26;;;;;;;17773:442;;;17966:11;17965:12;:35;;;;;17981:19;17965:35;17961:254;;;-1:-1:-1;;;;;18016:27:0;;18046:5;18016:27;;;:18;:27;;;;;:35;;-1:-1:-1;;18016:35:0;;;18069:21;;:25;18065:140;;18146:21;:26;;-1:-1:-1;;18146:26:0;;;18065:140;18241:12;;3366:6;18268:32;;18267:39;:86;;;;;2322:6;18310:21;;:43;;18267:86;18263:322;;;3366:6;18369:33;18416:12;:20;;;18455:16;;;;;;;3426:6;18490:5;:28;18523:1;18489:35;18485:90;;18544:16;18555:4;18544:10;:16::i;:::-;17034:1557;;;;;16985:1606;:::o;9733:159::-;-1:-1:-1;;;;;9842:18:0;;9819:4;9842:18;;;:10;:18;;;;;;;;;:43;;-1:-1:-1;;;;;;;9864:21:0;;;;;:10;:21;;;;;;;;;9835:50;-1:-1:-1;9733:159:0:o;9898:221::-;9970:12;;3366:6;9970:39;9969:46;:81;;;;-1:-1:-1;;;;;;10019:31:0;;2586:42;10019:31;;9969:81;9965:148;;;10066:36;;-1:-1:-1;;;10066:36:0;;12634:2:1;10066:36:0;;;12616:21:1;12673:2;12653:18;;;12646:30;12712:28;12692:18;;;12685:56;12758:18;;10066:36:0;12432:350:1;10218:570:0;10290:12;;3366:6;10317:32;;10274:13;10316:39;10312:76;;10371:7;10218:570;:::o;10312:76::-;3426:6;10403:5;:28;10436:1;10402:35;10398:146;;10457:6;10453:61;;;10483:16;10494:4;10483:10;:16::i;10398:146::-;10559:6;10554:44;;10581:7;10218:570;:::o;10554:44::-;10631:11;;10612:15;:30;10608:174;;10662:11;;-1:-1:-1;;;;;10662:11:0;:25;10658:84;;10707:20;:18;:20::i;:::-;10755:16;10766:4;10755:10;:16::i;11913:2293::-;-1:-1:-1;;;;;12081:17:0;;;;;;:9;:17;;;;;:27;;12102:6;;12081:17;:27;;12102:6;;12081:27;:::i;:::-;;;;-1:-1:-1;12119:12:0;;-1:-1:-1;12135:5:0;;:15;;;12144:6;12135:15;12134:43;;;;-1:-1:-1;;;;;;12156:21:0;;;;;;:13;:21;;;;;;;;12155:22;12134:43;:72;;;;-1:-1:-1;;;;;;12182:24:0;;;;;;:13;:24;;;;;;;;12181:25;12134:72;12119:87;;12216:15;12245;12274;12308:7;12304:769;;;-1:-1:-1;;12519:13:0;;12390:3;12381:12;;;-1:-1:-1;12381:12:0;;;;2127:24;1631:2;2127;:24;:::i;:::-;2114:37;;:10;:37;:::i;:::-;12551:6;:19;12547:516;;12633:7;12622:18;;;;12686:1;12676:11;;12547:516;;;12778:16;;;2114:37;12820:21;;12816:215;;;12944:19;;;12933:30;;;;-1:-1:-1;;12933:30:0;;2114:37;12889:18;;;;12816:215;12726:323;12547:516;12317:756;12304:769;-1:-1:-1;;;;;13277:20:0;;13083:17;13277:20;;;:9;:20;;;;;:39;;13179:17;;;:27;;;13238:18;;;;;;13277:20;;13083:17;13277:39;;13238:18;;13277:39;:::i;:::-;;;;;;;;13348:9;-1:-1:-1;;;;;13331:44:0;13340:6;-1:-1:-1;;;;;13331:44:0;-1:-1:-1;;;;;;;;;;;13359:15:0;13331:44;;;;1465:25:1;;1453:2;1438:18;;1319:177;13331:44:0;;;;;;;;13390:11;;13386:179;;2483:42;13417:24;;;;:9;:24;;;:35;;13445:7;;13417:24;:35;;13445:7;;13417:35;:::i;:::-;;;;-1:-1:-1;;13471:40:0;;1465:25:1;;;2483:42:0;;-1:-1:-1;;;;;13471:40:0;;;-1:-1:-1;;;;;;;;;;;13471:40:0;1453:2:1;1438:18;13471:40:0;;;;;;;13525:29;2483:42;13525:14;:29::i;:::-;13579:11;;13575:179;;2684:42;13606:24;;;;:9;:24;;;:35;;13634:7;;13606:24;:35;;13634:7;;13606:35;:::i;:::-;;;;-1:-1:-1;;13660:40:0;;1465:25:1;;;2684:42:0;;-1:-1:-1;;;;;13660:40:0;;;-1:-1:-1;;;;;;;;;;;13660:40:0;1453:2:1;1438:18;13660:40:0;;;;;;;13714:29;2684:42;13714:14;:29::i;:::-;13768:11;;13764:70;;13795:28;13807:6;13815:7;13795:11;:28::i;:::-;13844:22;13859:6;13844:14;:22::i;:::-;13876:25;13891:9;13876:14;:25::i;:::-;13933:12;;3426:6;13933:35;13932:42;;;;;;13988:21;;;14004:5;13988:21;:57;;;;-1:-1:-1;1959:24:0;1631:2;1959;:24;:::i;:::-;1953:30;;:3;:30;:::i;:::-;14013:6;:32;;13988:57;13984:216;;;14061:21;14072:9;14061:10;:21::i;:::-;14101:12;;3426:6;14101:35;14100:42;14096:94;;14162:13;:11;:13::i;:::-;12071:2135;;;;;;;11913:2293;;;;;:::o;10794:412::-;10856:12;;3366:6;10883:32;;10882:39;:86;;;;;2322:6;10925:21;;:43;;10882:86;10878:322;;;3366:6;10984:33;11031:12;:20;;;11070:16;;;;;;;3426:6;11105:5;:28;11138:1;11104:35;11100:90;;11159:16;11170:4;11159:10;:16::i;11212:695::-;-1:-1:-1;;;;;11330:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;11371:20;;;;;;:30;;;;;;11422:22;11340:6;11422:14;:22::i;:::-;11454:25;11469:9;11454:14;:25::i;:::-;11512:9;-1:-1:-1;;;;;11495:35:0;11504:6;-1:-1:-1;;;;;11495:35:0;-1:-1:-1;;;;;;;;;;;11523:6:0;11495:35;;;;1465:25:1;;1453:2;1438:18;;1319:177;11495:35:0;;;;;;;;11557:12;;3366:6;11584:32;;11583:39;:86;;;;;2322:6;11626:21;;:43;;11583:86;11579:322;;;3366:6;11685:33;11732:12;:20;;;11771:16;;;;;;;3426:6;11806:5;:28;11839:1;11805:35;11801:90;;11860:16;11871:4;15336:402;15393:12;:36;;3426:6;15393:36;;;15461:15;15486:13;:27;;;2262:8;15561:32;;15547:11;:46;15613:67;;;;15645:11;:24;;-1:-1:-1;;;;;;15645:24:0;;;15613:67;15719:11;;15694:37;;15706:11;;15694:37;;;;;15383:355;15336:402;:::o;15744:636::-;2483:42;15792:19;15814:24;;;:9;:24;;;;;15852:16;;;15848:53;;15884:7;15744:636::o;15848:53::-;15928:11;;-1:-1:-1;;;;;15928:11:0;15911:14;15972:15;15986:1;15972:11;:15;:::i;:::-;15949:38;;16001:12;16017:1;16001:17;15997:54;;16034:7;;;15744:636::o;15997:54::-;16085:9;:24;;;:40;;;;;;;-1:-1:-1;;;;;16139:17:0;;16085:24;16139:17;;;16085:24;16139:17;;:33;;;;;;16193:29;2483:42;16193:14;:29::i;:::-;16232:22;16247:6;16232:14;:22::i;:::-;16270:45;;1465:25:1;;;-1:-1:-1;;;;;16270:45:0;;;2483:42;;-1:-1:-1;;;;;;;;;;;16270:45:0;1453:2:1;1438:18;16270:45:0;;;;;;;16352:6;-1:-1:-1;;;;;16330:43:0;;16360:12;16330:43;;;;1465:25:1;;1453:2;1438:18;;1319:177;16330:43:0;;;;;;;;15782:598;;;15744:636::o;14212:536::-;-1:-1:-1;;;;;14271:21:0;;14267:58;;14212:536;:::o;14267:58::-;-1:-1:-1;;;;;14339:24:0;;2483:42;14339:24;;:52;;-1:-1:-1;;;;;;14367:24:0;;2684:42;14367:24;14339:52;14335:340;;;-1:-1:-1;;;;;14411:18:0;;;;;;:9;:18;;;;;;;;14407:238;;;-1:-1:-1;;;;;14449:18:0;;14470:5;14449:18;;;:9;:18;;;;;:26;;-1:-1:-1;;14449:26:0;;;14497:12;;:16;14493:138;;14573:12;:17;;-1:-1:-1;;14573:17:0;;;14212:536;:::o;14335:340::-;14684:11;:21;;-1:-1:-1;;;;;;14684:21:0;-1:-1:-1;;;;;14684:21:0;;;;;;;;14720;;;;-1:-1:-1;;14720:21:0;14212:536;:::o;14754:576::-;14978:11;;14817:15;;2262:8;14905:32;;;15003:24;;;14999:79;;;-1:-1:-1;15056:11:0;14999:79;2200:10;15144:28;;15196:18;;;15192:67;;;-1:-1:-1;15239:9:0;15192:67;15268:11;:20;;;15303;;15282:6;;15303:20;;;;;14785:545;;;;14754:576::o;14:400:1:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:139;170:6;167:1;164:13;156:139;;;278:4;263:13;;;259:24;;253:31;233:11;;;229:22;;222:63;185:12;156:139;;;160:3;340:1;333:4;324:6;319:3;315:16;311:27;304:38;403:4;396:2;392:7;387:2;379:6;375:15;371:29;366:3;362:39;358:50;351:57;;;14:400;;;;:::o;419:220::-;568:2;557:9;550:21;531:4;588:45;629:2;618:9;614:18;606:6;588:45;:::i;644:173::-;712:20;;-1:-1:-1;;;;;761:31:1;;751:42;;741:70;;807:1;804;797:12;822:300;890:6;898;951:2;939:9;930:7;926:23;922:32;919:52;;;967:1;964;957:12;919:52;990:29;1009:9;990:29;:::i;:::-;980:39;1088:2;1073:18;;;;1060:32;;-1:-1:-1;;;822:300:1:o;1501:374::-;1578:6;1586;1594;1647:2;1635:9;1626:7;1622:23;1618:32;1615:52;;;1663:1;1660;1653:12;1615:52;1686:29;1705:9;1686:29;:::i;:::-;1676:39;;1734:38;1768:2;1757:9;1753:18;1734:38;:::i;:::-;1501:374;;1724:48;;-1:-1:-1;;;1841:2:1;1826:18;;;;1813:32;;1501:374::o;2069:127::-;2130:10;2125:3;2121:20;2118:1;2111:31;2161:4;2158:1;2151:15;2185:4;2182:1;2175:15;2201:726;2244:5;2297:3;2290:4;2282:6;2278:17;2274:27;2264:55;;2315:1;2312;2305:12;2264:55;2355:6;2342:20;2385:18;2377:6;2374:30;2371:56;;;2407:18;;:::i;:::-;2456:2;2450:9;2548:2;2510:17;;-1:-1:-1;;2506:31:1;;;2539:2;2502:40;2498:54;2486:67;;2583:18;2568:34;;2604:22;;;2565:62;2562:88;;;2630:18;;:::i;:::-;2666:2;2659:22;2690;;;2731:19;;;2752:4;2727:30;2724:39;-1:-1:-1;2721:59:1;;;2776:1;2773;2766:12;2721:59;2840:6;2833:4;2825:6;2821:17;2814:4;2806:6;2802:17;2789:58;2895:1;2867:19;;;2888:4;2863:30;2856:41;;;;2871:6;2201:726;-1:-1:-1;;;2201:726:1:o;2932:585::-;3028:6;3036;3044;3052;3105:3;3093:9;3084:7;3080:23;3076:33;3073:53;;;3122:1;3119;3112:12;3073:53;3145:29;3164:9;3145:29;:::i;:::-;3135:39;;3193:38;3227:2;3216:9;3212:18;3193:38;:::i;:::-;3183:48;-1:-1:-1;3300:2:1;3285:18;;3272:32;;-1:-1:-1;3379:2:1;3364:18;;3351:32;3406:18;3395:30;;3392:50;;;3438:1;3435;3428:12;3392:50;3461;3503:7;3494:6;3483:9;3479:22;3461:50;:::i;:::-;3451:60;;;2932:585;;;;;;;:::o;3522:226::-;3581:6;3634:2;3622:9;3613:7;3609:23;3605:32;3602:52;;;3650:1;3647;3640:12;3602:52;-1:-1:-1;3695:23:1;;3522:226;-1:-1:-1;3522:226:1:o;3753:186::-;3812:6;3865:2;3853:9;3844:7;3840:23;3836:32;3833:52;;;3881:1;3878;3871:12;3833:52;3904:29;3923:9;3904:29;:::i;3944:347::-;4009:6;4017;4070:2;4058:9;4049:7;4045:23;4041:32;4038:52;;;4086:1;4083;4076:12;4038:52;4109:29;4128:9;4109:29;:::i;:::-;4099:39;;4188:2;4177:9;4173:18;4160:32;4235:5;4228:13;4221:21;4214:5;4211:32;4201:60;;4257:1;4254;4247:12;4201:60;4280:5;4270:15;;;3944:347;;;;;:::o;4504:260::-;4572:6;4580;4633:2;4621:9;4612:7;4608:23;4604:32;4601:52;;;4649:1;4646;4639:12;4601:52;4672:29;4691:9;4672:29;:::i;:::-;4662:39;;4720:38;4754:2;4743:9;4739:18;4720:38;:::i;:::-;4710:48;;4504:260;;;;;:::o;4769:637::-;4959:2;4971:21;;;5041:13;;4944:18;;;5063:22;;;4911:4;;5142:15;;;5116:2;5101:18;;;4911:4;5185:195;5199:6;5196:1;5193:13;5185:195;;;5264:13;;-1:-1:-1;;;;;5260:39:1;5248:52;;5329:2;5355:15;;;;5320:12;;;;5296:1;5214:9;5185:195;;;-1:-1:-1;5397:3:1;;4769:637;-1:-1:-1;;;;;4769:637:1:o;5411:510::-;5498:6;5506;5514;5567:2;5555:9;5546:7;5542:23;5538:32;5535:52;;;5583:1;5580;5573:12;5535:52;5606:29;5625:9;5606:29;:::i;:::-;5596:39;-1:-1:-1;5704:2:1;5689:18;;5676:32;;-1:-1:-1;5783:2:1;5768:18;;5755:32;5810:18;5799:30;;5796:50;;;5842:1;5839;5832:12;5796:50;5865;5907:7;5898:6;5887:9;5883:22;5865:50;:::i;:::-;5855:60;;;5411:510;;;;;:::o;5926:399::-;6128:2;6110:21;;;6167:2;6147:18;;;6140:30;6206:34;6201:2;6186:18;;6179:62;-1:-1:-1;;;6272:2:1;6257:18;;6250:33;6315:3;6300:19;;5926:399::o;6330:404::-;6532:2;6514:21;;;6571:2;6551:18;;;6544:30;6610:34;6605:2;6590:18;;6583:62;-1:-1:-1;;;6676:2:1;6661:18;;6654:38;6724:3;6709:19;;6330:404::o;6739:291::-;6916:6;6905:9;6898:25;6959:2;6954;6943:9;6939:18;6932:30;6879:4;6979:45;7020:2;7009:9;7005:18;6997:6;6979:45;:::i;:::-;6971:53;6739:291;-1:-1:-1;;;;6739:291:1:o;7035:354::-;7237:2;7219:21;;;7276:2;7256:18;;;7249:30;7315:32;7310:2;7295:18;;7288:60;7380:2;7365:18;;7035:354::o;7742:127::-;7803:10;7798:3;7794:20;7791:1;7784:31;7834:4;7831:1;7824:15;7858:4;7855:1;7848:15;10704:127;10765:10;10760:3;10756:20;10753:1;10746:31;10796:4;10793:1;10786:15;10820:4;10817:1;10810:15;10836:375;10924:1;10942:5;10956:249;10977:1;10967:8;10964:15;10956:249;;;11027:4;11022:3;11018:14;11012:4;11009:24;11006:50;;;11036:18;;:::i;:::-;11086:1;11076:8;11072:16;11069:49;;;11100:16;;;;11069:49;11183:1;11179:16;;;;;11139:15;;10956:249;;;10836:375;;;;;;:::o;11216:902::-;11265:5;11295:8;11285:80;;-1:-1:-1;11336:1:1;11350:5;;11285:80;11384:4;11374:76;;-1:-1:-1;11421:1:1;11435:5;;11374:76;11466:4;11484:1;11479:59;;;;11552:1;11547:174;;;;11459:262;;11479:59;11509:1;11500:10;;11523:5;;;11547:174;11584:3;11574:8;11571:17;11568:43;;;11591:18;;:::i;:::-;-1:-1:-1;;11647:1:1;11633:16;;11706:5;;11459:262;;11805:2;11795:8;11792:16;11786:3;11780:4;11777:13;11773:36;11767:2;11757:8;11754:16;11749:2;11743:4;11740:12;11736:35;11733:77;11730:203;;;-1:-1:-1;11842:19:1;;;11918:5;;11730:203;11965:42;-1:-1:-1;;11990:8:1;11984:4;11965:42;:::i;:::-;12043:6;12039:1;12035:6;12031:19;12022:7;12019:32;12016:58;;;12054:18;;:::i;:::-;12092:20;;11216:902;-1:-1:-1;;;11216:902:1:o;12123:131::-;12183:5;12212:36;12239:8;12233:4;12212:36;:::i;12259:168::-;12332:9;;;12363;;12380:15;;;12374:22;;12360:37;12350:71;;12401:18;;:::i;12787:128::-;12854:9;;;12875:11;;;12872:37;;;12889:18;;:::i;13052:125::-;13117:9;;;13138:10;;;13135:36;;;13151:18;;:::i;13182:217::-;13222:1;13248;13238:132;;13292:10;13287:3;13283:20;13280:1;13273:31;13327:4;13324:1;13317:15;13355:4;13352:1;13345:15;13238:132;-1:-1:-1;13384:9:1;;13182:217::o
Swarm Source
ipfs://68c388a8b6ea34b97a0203c82f420c2edcaf744dbff60c156e1ccaf90ff448df
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)