Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 14 from a total of 14 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 14672371 | 1413 days ago | IN | 0 ETH | 0.00178512 | ||||
| Approve | 14672358 | 1413 days ago | IN | 0 ETH | 0.00151893 | ||||
| Approve | 14672358 | 1413 days ago | IN | 0 ETH | 0.00158351 | ||||
| Approve | 14672354 | 1413 days ago | IN | 0 ETH | 0.00152838 | ||||
| Approve | 14672353 | 1413 days ago | IN | 0 ETH | 0.00165797 | ||||
| Transfer | 14672350 | 1413 days ago | IN | 0 ETH | 0.00082905 | ||||
| Approve | 14672350 | 1413 days ago | IN | 0 ETH | 0.00127991 | ||||
| Approve | 14672343 | 1413 days ago | IN | 0 ETH | 0.00152564 | ||||
| Approve | 14672342 | 1413 days ago | IN | 0 ETH | 0.00175322 | ||||
| Approve | 14672342 | 1413 days ago | IN | 0 ETH | 0.00226172 | ||||
| Transfer | 14672340 | 1413 days ago | IN | 0 ETH | 0.00092547 | ||||
| Launch | 14672332 | 1413 days ago | IN | 0 ETH | 0.00255982 | ||||
| Approve | 14672306 | 1413 days ago | IN | 0 ETH | 0.00244881 | ||||
| Transfer | 14672303 | 1413 days ago | IN | 0 ETH | 0.00126997 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AntiSocial
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-04-28
*/
//https://t.me/AntiSocialETH
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed 0x7b527bd019E9f745497F2cB51C658cb10E2C914F
interface IERC20 {
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);
}
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
/**
* @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.
*/
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view 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 {
emit OwnershipTransferred(_owner, address(0));
_owner = 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");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function geUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Locks the contract for owner for the amount of time provided
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = now + time;
emit OwnershipTransferred(_owner, address(0));
}
//Unlocks the contract for owner when _lockTime is exceeds
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(now > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
// pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
// pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
/*
To be modified before deploying this contract for a project:
- Uniswap Router address if not on ETH
- Dev address
*/
contract AntiSocial is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcludedFromMax;
mapping (address => bool) private _isExcluded;
mapping (address => bool) isBlacklisted;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 10 * 10**9 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
address private _devAddress = 0xf14b771a273974f0A025CB3200ae59611b128e6a;
address private _burnAddress = 0x0000000000000000000000000000000000000001;
string private _name = "AntiSocial";
string private _symbol = "ANTI";
uint8 private _decimals = 9;
uint256 public _taxFee = 2;
uint256 private _previousTaxFee = _taxFee;
uint256 public _devFee = 2;
uint256 private _previousDevFee = _devFee;
uint256 public _burnFee = 1;
uint256 private _previousBurnFee = _burnFee;
uint256 private _beforeLaunchFee = 99;
uint256 private _previousBeforeLaunchFee = _beforeLaunchFee;
uint256 public launchedAt;
uint256 public launchedAtTimestamp;
IUniswapV2Router02 public immutable uniswapV2Router;
address public uniswapV2Pair;
uint256 public _maxTxAmount = _tTotal.div(100).mul(1);
uint256 public _maxWalletToken = _tTotal.div(50).mul(1);
constructor () public {
_rOwned[_msgSender()] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// Create a uniswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
// set the rest of the contract variables
uniswapV2Router = _uniswapV2Router;
// exclude owner, dev wallet, and this contract from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_devAddress] = true;
_isExcludedFromMax[owner()] = true;
_isExcludedFromMax[address(this)] = true;
_isExcludedFromMax[_devAddress] = true;
_isExcludedFromMax[uniswapV2Pair] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function setIsBlacklisted(address account, bool blacklisted) external onlyOwner() {
isBlacklisted[account] = blacklisted;
}
function blacklistMultipleAccounts(address[] calldata accounts, bool blacklisted) external onlyOwner() {
for (uint256 i = 0; i < accounts.length; i++) {
isBlacklisted[accounts[i]] = blacklisted;
}
}
function isAccountBlacklisted(address account) external view returns (bool) {
return isBlacklisted[account];
}
function isExcludedFromMax(address holder, bool exempt) external onlyOwner() {
_isExcludedFromMax[holder] = exempt;
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function burnAddress() public view returns (address) {
return _burnAddress;
}
function devAddress() public view returns (address) {
return _devAddress;
}
function launch() public onlyOwner() {
require(launchedAt == 0, "Already launched.");
launchedAt = block.number;
launchedAtTimestamp = block.timestamp;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(,uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount,,) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
(,uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount,) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
if (!deductTransferFee) {
return rAmount;
} else {
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner() {
require(!_isExcluded[account], "Account is already excluded");
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner() {
require(_isExcluded[account], "Account is not excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeDevFee(tDev);
_takeBurnFee(tBurn);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
_taxFee = taxFee;
}
function setBurnFeePercent(uint256 burnFee) external onlyOwner() {
_burnFee = burnFee;
}
function setDevFeePercent(uint256 devFee) external onlyOwner() {
_devFee = devFee;
}
function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
_maxTxAmount = _tTotal.mul(maxTxPercent).div(
10**2
);
}
function setMaxWalletPercent(uint256 maxWalletToken) external onlyOwner() {
_maxWalletToken = _tTotal.mul(maxWalletToken).div(
10**2
);
}
//to recieve ETH from uniswapV2Router when swapping
receive() external payable {}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
uint256 tFee = calculateTaxFee(tAmount);
uint256 tDev = calculateDevFee(tAmount);
uint256 tBurn = calculateBurnFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tDev);
tTransferAmount = tTransferAmount.sub(tBurn);
return (tTransferAmount, tFee, tDev, tBurn);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 tDev, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rDev = tDev.mul(currentRate);
uint256 rBurn = tBurn.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rDev).sub(rBurn);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeDevFee(uint256 tDev) private {
uint256 currentRate = _getRate();
uint256 rDev = tDev.mul(currentRate);
_rOwned[_devAddress] = _rOwned[_devAddress].add(rDev);
if(_isExcluded[_devAddress])
_tOwned[_devAddress] = _tOwned[_devAddress].add(tDev);
}
function _takeBurnFee(uint256 tBurn) private {
uint256 currentRate = _getRate();
uint256 rBurn = tBurn.mul(currentRate);
_rOwned[_burnAddress] = _rOwned[_burnAddress].add(rBurn);
if(_isExcluded[_burnAddress])
_tOwned[_burnAddress] = _tOwned[_burnAddress].add(tBurn);
}
function calculateTaxFee(uint256 _amount) private view returns (uint256) {
uint256 fee = launchedAt == 0 ? 0 : _taxFee;
return _amount.mul(fee).div(
10**2
);
}
function calculateDevFee(uint256 _amount) private view returns (uint256) {
uint256 fee = launchedAt == 0 ? 0 : _devFee;
return _amount.mul(fee).div(
10**2
);
}
function calculateBurnFee(uint256 _amount) private view returns (uint256) {
uint256 fee = launchedAt == 0 ? _beforeLaunchFee : _burnFee;
return _amount.mul(fee).div(
10**2
);
}
function removeAllFee() private {
if(_taxFee == 0 && _devFee == 0) return;
_previousTaxFee = _taxFee;
_previousDevFee = _devFee;
_previousBurnFee = _burnFee;
_previousBeforeLaunchFee = _beforeLaunchFee;
_taxFee = 0;
_devFee = 0;
_burnFee = 0;
_beforeLaunchFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_devFee = _previousDevFee;
_burnFee = _previousBurnFee;
_beforeLaunchFee = _previousBeforeLaunchFee;
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
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);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(!isBlacklisted[from], "Blacklisted address");
if(!_isExcludedFromMax[from] || !_isExcludedFromMax[to]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
if (!_isExcludedFromMax[to]) {
uint256 heldTokens = balanceOf(to);
require((heldTokens + amount) <= _maxWalletToken, "Total Holding is currently limited, you can not buy that much.");
}
//indicates if fee should be deducted from transfer
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
takeFee = false;
}
//transfer amount, it will take tax, burn fee
_tokenTransfer(from,to,amount,takeFee);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
if(!takeFee)
removeAllFee();
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if(!takeFee)
restoreAllFee();
}
function _transferStandard(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeDevFee(tDev);
_takeBurnFee(tBurn);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeDevFee(tDev);
_takeBurnFee(tBurn);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 tBurn) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tDev, tBurn, _getRate());
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeDevFee(tDev);
_takeBurnFee(tBurn);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
}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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"isExcludedFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletToken","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
678ac7230489e80000600b5567693fcf03e3d7ffff19600c55600e805473f14b771a273974f0a025cb3200ae59611b128e6a6001600160a01b031991821617909155600f8054909116600117905560e0604052600a60a081905269105b9d1a54dbd8da585b60b21b60c09081526200007b916010919062000632565b5060408051808201909152600480825263414e544960e01b6020909201918252620000a99160119162000632565b5060128054600960ff19909116179055600260138190556014819055601581905560165560016017819055601881905560636019819055601a55600b5462000119919062000105906064620004c7602090811b62001c6f17901c565b6200051a60201b62001cb11790919060201c565b601e556200013f6001620001056032600b54620004c760201b62001c6f1790919060201c565b601f553480156200014f57600080fd5b5060006200015c62000578565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c5460036000620001b762000578565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022e57600080fd5b505afa15801562000243573d6000803e3d6000fd5b505050506040513d60208110156200025a57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d6020811015620002d757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200032a57600080fd5b505af11580156200033f573d6000803e3d6000fd5b505050506040513d60208110156200035657600080fd5b5051601d80546001600160a01b0319166001600160a01b03909216919091179055606081901b6001600160601b031916608052600160066000620003996200057c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155600e54909116835290822080549093168117909255600790620004006200057c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600e54821684528284208054861682179055601d549091168352912080549092161790556200047362000578565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a350620006ce565b60006200051183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200058b60201b60201c565b90505b92915050565b6000826200052b5750600062000514565b828202828482816200053957fe5b0414620005115760405162461bcd60e51b8152600401808060200182810382526021815260200180620034906021913960400191505060405180910390fd5b3390565b6000546001600160a01b031690565b600081836200061b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005df578181015183820152602001620005c5565b50505050905090810190601f1680156200060d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200062857fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200067557805160ff1916838001178555620006a5565b82800160010185558215620006a5579182015b82811115620006a557825182559160200191906001019062000688565b50620006b3929150620006b7565b5090565b5b80821115620006b35760008155600101620006b8565b60805160601c612da4620006ec60003980610cb55250612da46000f3fe6080604052600436106102975760003560e01c8063715018a61161015a578063a9059cbb116100c1578063cea269581161007a578063cea26958146109b0578063d543dbeb146109da578063dd46706414610a04578063dd62ed3e14610a2e578063ea2f0b3714610a69578063f2fde38b14610a9c5761029e565b8063a9059cbb1461090e578063aa45026b14610947578063b6c523241461095c578063bf56b37114610971578063c0b0fda214610986578063c6d2577d1461099b5761029e565b80638da5cb5b116101135780638da5cb5b146107dc57806395d89b41146107f1578063a0e3849214610806578063a457c2d714610841578063a69df4b51461087a578063a7b97fa91461088f5761029e565b8063715018a61461070557806378109e541461071a5780637d1db4a51461072f5780637fef35941461074457806382bf293c1461077f57806388f82020146107a95761029e565b8063379e2919116101fe5780634549b039116101b75780634549b0391461061057806349bd5a5e1461064257806352390c02146106575780635342acb41461068a57806370a08231146106bd57806370d5ae05146106f05761029e565b8063379e29191461052657806339509351146105505780633ad10ef6146105895780633b124fe71461059e5780633bd5d173146105b3578063437823ec146105dd5761029e565b80631694505e116102505780631694505e1461041557806318160ddd1461044657806323b872dd1461045b5780632d8381191461049e578063313ce567146104c85780633685d419146104f35761029e565b806301339c21146102a3578063061c82d0146102ba57806306fdde03146102e4578063095ea7b31461036e5780630f1d76c1146103bb57806313114a9d146103ee5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610acf565b005b3480156102c657600080fd5b506102b8600480360360208110156102dd57600080fd5b5035610b7a565b3480156102f057600080fd5b506102f9610bd7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033357818101518382015260200161031b565b50505050905090810190601f1680156103605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037a57600080fd5b506103a76004803603604081101561039157600080fd5b506001600160a01b038135169060200135610c6d565b604080519115158252519081900360200190f35b3480156103c757600080fd5b506103a7600480360360208110156103de57600080fd5b50356001600160a01b0316610c8b565b3480156103fa57600080fd5b50610403610cad565b60408051918252519081900360200190f35b34801561042157600080fd5b5061042a610cb3565b604080516001600160a01b039092168252519081900360200190f35b34801561045257600080fd5b50610403610cd7565b34801561046757600080fd5b506103a76004803603606081101561047e57600080fd5b506001600160a01b03813581169160208101359091169060400135610cdd565b3480156104aa57600080fd5b50610403600480360360208110156104c157600080fd5b5035610d64565b3480156104d457600080fd5b506104dd610dc4565b6040805160ff9092168252519081900360200190f35b3480156104ff57600080fd5b506102b86004803603602081101561051657600080fd5b50356001600160a01b0316610dcd565b34801561053257600080fd5b506102b86004803603602081101561054957600080fd5b5035610f8e565b34801561055c57600080fd5b506103a76004803603604081101561057357600080fd5b506001600160a01b038135169060200135610feb565b34801561059557600080fd5b5061042a611039565b3480156105aa57600080fd5b50610403611048565b3480156105bf57600080fd5b506102b8600480360360208110156105d657600080fd5b503561104e565b3480156105e957600080fd5b506102b86004803603602081101561060057600080fd5b50356001600160a01b0316611147565b34801561061c57600080fd5b506104036004803603604081101561063357600080fd5b508035906020013515156111c3565b34801561064e57600080fd5b5061042a611265565b34801561066357600080fd5b506102b86004803603602081101561067a57600080fd5b50356001600160a01b0316611274565b34801561069657600080fd5b506103a7600480360360208110156106ad57600080fd5b50356001600160a01b03166113fa565b3480156106c957600080fd5b50610403600480360360208110156106e057600080fd5b50356001600160a01b0316611418565b3480156106fc57600080fd5b5061042a61147a565b34801561071157600080fd5b506102b8611489565b34801561072657600080fd5b50610403611519565b34801561073b57600080fd5b5061040361151f565b34801561075057600080fd5b506102b86004803603604081101561076757600080fd5b506001600160a01b0381351690602001351515611525565b34801561078b57600080fd5b506102b8600480360360208110156107a257600080fd5b50356115a8565b3480156107b557600080fd5b506103a7600480360360208110156107cc57600080fd5b50356001600160a01b0316611626565b3480156107e857600080fd5b5061042a611644565b3480156107fd57600080fd5b506102f9611653565b34801561081257600080fd5b506102b86004803603604081101561082957600080fd5b506001600160a01b03813516906020013515156116b4565b34801561084d57600080fd5b506103a76004803603604081101561086457600080fd5b506001600160a01b038135169060200135611737565b34801561088657600080fd5b506102b861179f565b34801561089b57600080fd5b506102b8600480360360408110156108b257600080fd5b8101906020810181356401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184602083028401116401000000008311171561090157600080fd5b919350915035151561188d565b34801561091a57600080fd5b506103a76004803603604081101561093157600080fd5b506001600160a01b038135169060200135611940565b34801561095357600080fd5b50610403611954565b34801561096857600080fd5b5061040361195a565b34801561097d57600080fd5b50610403611960565b34801561099257600080fd5b50610403611966565b3480156109a757600080fd5b5061040361196c565b3480156109bc57600080fd5b506102b8600480360360208110156109d357600080fd5b5035611972565b3480156109e657600080fd5b506102b8600480360360208110156109fd57600080fd5b50356119cf565b348015610a1057600080fd5b506102b860048036036020811015610a2757600080fd5b5035611a47565b348015610a3a57600080fd5b5061040360048036036040811015610a5157600080fd5b506001600160a01b0381358116916020013516611ae5565b348015610a7557600080fd5b506102b860048036036020811015610a8c57600080fd5b50356001600160a01b0316611b10565b348015610aa857600080fd5b506102b860048036036020811015610abf57600080fd5b50356001600160a01b0316611b89565b610ad7611d0a565b6000546001600160a01b03908116911614610b27576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601b5415610b70576040805162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903630bab731b432b21760791b604482015290519081900360640190fd5b43601b5542601c55565b610b82611d0a565b6000546001600160a01b03908116911614610bd2576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601355565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c635780601f10610c3857610100808354040283529160200191610c63565b820191906000526020600020905b815481529060010190602001808311610c4657829003601f168201915b5050505050905090565b6000610c81610c7a611d0a565b8484611d0e565b5060015b92915050565b6001600160a01b03811660009081526009602052604090205460ff165b919050565b600d5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5490565b6000610cea848484611dfa565b610d5a84610cf6611d0a565b610d5585604051806060016040528060288152602001612be3602891396001600160a01b038a16600090815260056020526040812090610d34611d0a565b6001600160a01b031681526020810191909152604001600020549190612077565b611d0e565b5060019392505050565b6000600c54821115610da75760405162461bcd60e51b815260040180806020018281038252602a815260200180612b28602a913960400191505060405180910390fd5b6000610db161210e565b9050610dbd8382611c6f565b9392505050565b60125460ff1690565b610dd5611d0a565b6000546001600160a01b03908116911614610e25576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610e92576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600a54811015610f8a57816001600160a01b0316600a8281548110610eb657fe5b6000918252602090912001546001600160a01b03161415610f8257600a80546000198101908110610ee357fe5b600091825260209091200154600a80546001600160a01b039092169183908110610f0957fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff19169055600a805480610f5b57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610f8a565b600101610e95565b5050565b610f96611d0a565b6000546001600160a01b03908116911614610fe6576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601555565b6000610c81610ff8611d0a565b84610d558560056000611009611d0a565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612131565b600e546001600160a01b031690565b60135481565b6000611058611d0a565b6001600160a01b03811660009081526008602052604090205490915060ff16156110b35760405162461bcd60e51b815260040180806020018281038252602c815260200180612cfb602c913960400191505060405180910390fd5b60008060006110c18561218b565b9350935093505060006110de868585856110d961210e565b6121ea565b50506001600160a01b038616600090815260036020526040902054909150611106908261224c565b6001600160a01b038616600090815260036020526040902055600c5461112c908261224c565b600c55600d5461113c9087612131565b600d55505050505050565b61114f611d0a565b6000546001600160a01b0390811691161461119f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600b5483111561121c576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b600080600061122a8661218b565b93509350935050600080611243888686866110d961210e565b50915091508661125957509350610c8592505050565b9450610c859350505050565b601d546001600160a01b031681565b61127c611d0a565b6000546001600160a01b039081169116146112cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff161561133a576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611394576001600160a01b03811660009081526003602052604090205461137a90610d64565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b6001600160a01b03811660009081526008602052604081205460ff161561145857506001600160a01b038116600090815260046020526040902054610ca8565b6001600160a01b038216600090815260036020526040902054610c8590610d64565b600f546001600160a01b031690565b611491611d0a565b6000546001600160a01b039081169116146114e1576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612c2b833981519152908390a3600080546001600160a01b0319169055565b601f5481565b601e5481565b61152d611d0a565b6000546001600160a01b0390811691161461157d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6115b0611d0a565b6000546001600160a01b03908116911614611600576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b611620606461161a83600b54611cb190919063ffffffff16565b90611c6f565b601f5550565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c635780601f10610c3857610100808354040283529160200191610c63565b6116bc611d0a565b6000546001600160a01b0390811691161461170c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c81611744611d0a565b84610d5585604051806060016040528060258152602001612d4a602591396005600061176e611d0a565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612077565b6001546001600160a01b031633146117e85760405162461bcd60e51b8152600401808060200182810382526023815260200180612d276023913960400191505060405180910390fd5b600254421161183e576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b039384169390911691600080516020612c2b83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b611895611d0a565b6000546001600160a01b039081169116146118e5576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b60005b8281101561193a57816009600086868581811061190157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016118e8565b50505050565b6000610c8161194d611d0a565b8484611dfa565b60155481565b60025490565b601b5481565b60175481565b601c5481565b61197a611d0a565b6000546001600160a01b039081169116146119ca576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601755565b6119d7611d0a565b6000546001600160a01b03908116911614611a27576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b611a41606461161a83600b54611cb190919063ffffffff16565b601e5550565b611a4f611d0a565b6000546001600160a01b03908116911614611a9f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020612c2b833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611b18611d0a565b6000546001600160a01b03908116911614611b68576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b611b91611d0a565b6000546001600160a01b03908116911614611be1576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b038116611c265760405162461bcd60e51b8152600401808060200182810382526026815260200180612b526026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612c2b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610dbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228e565b600082611cc057506000610c85565b82820282848281611ccd57fe5b0414610dbd5760405162461bcd60e51b8152600401808060200182810382526021815260200180612bc26021913960400191505060405180910390fd5b3390565b6001600160a01b038316611d535760405162461bcd60e51b8152600401808060200182810382526024815260200180612cd76024913960400191505060405180910390fd5b6001600160a01b038216611d985760405162461bcd60e51b8152600401808060200182810382526022815260200180612b786022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611e3f5760405162461bcd60e51b8152600401808060200182810382526025815260200180612cb26025913960400191505060405180910390fd5b6001600160a01b038216611e845760405162461bcd60e51b8152600401808060200182810382526023815260200180612b056023913960400191505060405180910390fd5b60008111611ec35760405162461bcd60e51b8152600401808060200182810382526029815260200180612c4b6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615611f27576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b6001600160a01b03831660009081526007602052604090205460ff161580611f6857506001600160a01b03821660009081526007602052604090205460ff16155b15611fae57601e54811115611fae5760405162461bcd60e51b8152600401808060200182810382526028815260200180612b9a6028913960400191505060405180910390fd5b6001600160a01b03821660009081526007602052604090205460ff16612020576000611fd983611418565b9050601f54828201111561201e5760405162461bcd60e51b815260040180806020018281038252603e815260200180612c74603e913960400191505060405180910390fd5b505b6001600160a01b03831660009081526006602052604090205460019060ff168061206257506001600160a01b03831660009081526006602052604090205460ff165b1561206b575060005b61193a848484846122f3565b600081848411156121065760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120cb5781810151838201526020016120b3565b50505050905090810190601f1680156120f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061211b612461565b909250905061212a8282611c6f565b9250505090565b600082820183811015610dbd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061219c866125c4565b905060006121a9876125ed565b905060006121b688612602565b905060006121ce836121c88b8761224c565b9061224c565b90506121da818361224c565b9993985091965094509092505050565b60008080806121f98986611cb1565b905060006122078987611cb1565b905060006122158988611cb1565b905060006122238989611cb1565b90506000612237826121c88581898961224c565b949d949c50929a509298505050505050505050565b6000610dbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612077565b600081836122dd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120cb5781810151838201526020016120b3565b5060008385816122e957fe5b0495945050505050565b806123005761230061262a565b6001600160a01b03841660009081526008602052604090205460ff16801561234157506001600160a01b03831660009081526008602052604090205460ff16155b1561235657612351848484612671565b612454565b6001600160a01b03841660009081526008602052604090205460ff1615801561239757506001600160a01b03831660009081526008602052604090205460ff165b156123a7576123518484846127b1565b6001600160a01b03841660009081526008602052604090205460ff161580156123e957506001600160a01b03831660009081526008602052604090205460ff16155b156123f95761235184848461286c565b6001600160a01b03841660009081526008602052604090205460ff16801561243957506001600160a01b03831660009081526008602052604090205460ff165b15612449576123518484846128c2565b61245484848461286c565b8061193a5761193a612947565b600c54600b546000918291825b600a54811015612592578260036000600a848154811061248a57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124ef57508160046000600a84815481106124c857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561250657600c54600b54945094505050506125c0565b61254660036000600a848154811061251a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061224c565b925061258860046000600a848154811061255c57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061224c565b915060010161246e565b50600b54600c546125a291611c6f565b8210156125ba57600c54600b549350935050506125c0565b90925090505b9091565b600080601b546000146125d9576013546125dc565b60005b9050610dbd606461161a8584611cb1565b600080601b546000146125d9576015546125dc565b600080601b54600014612617576017546125dc565b50601954610dbd606461161a8584611cb1565b60135415801561263a5750601554155b156126445761266f565b60138054601455601580546016556017805460185560198054601a5560009384905591839055829055555b565b6000806000806126808561218b565b9350935093509350600080600061269c888787876110d961210e565b6001600160a01b038d1660009081526004602052604090205492955090935091506126c7908961224c565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546126f6908461224c565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546127259083612131565b6001600160a01b038a1660009081526003602052604090205561274785612961565b61275084612a21565b61275a8187612ae0565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a350505050505050505050565b6000806000806127c08561218b565b935093509350935060008060006127dc888787876110d961210e565b6001600160a01b038d166000908152600360205260409020549295509093509150612807908461224c565b6001600160a01b03808c16600090815260036020908152604080832094909455918c1681526004909152205461283d9088612131565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127259083612131565b60008060008061287b8561218b565b93509350935093506000806000612897888787876110d961210e565b6001600160a01b038d1660009081526003602052604090205492955090935091506126f6908461224c565b6000806000806128d18561218b565b935093509350935060008060006128ed888787876110d961210e565b6001600160a01b038d166000908152600460205260409020549295509093509150612918908961224c565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054612807908461224c565b601454601355601654601555601854601755601a54601955565b600061296b61210e565b905060006129798383611cb1565b600e546001600160a01b03166000908152600360205260409020549091506129a19082612131565b600e80546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff1615612a1c57600e546001600160a01b0316600090815260046020526040902054612a009084612131565b600e546001600160a01b03166000908152600460205260409020555b505050565b6000612a2b61210e565b90506000612a398383611cb1565b600f546001600160a01b0316600090815260036020526040902054909150612a619082612131565b600f80546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff1615612a1c57600f546001600160a01b0316600090815260046020526040902054612ac09084612131565b600f546001600160a01b0316600090815260046020526040902055505050565b600c54612aed908361224c565b600c55600d54612afd9082612131565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b27a0b3ea426262a30f73b4a7ae68f1994a005fcaa262cd98f06e072a9ccde1c64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063715018a61161015a578063a9059cbb116100c1578063cea269581161007a578063cea26958146109b0578063d543dbeb146109da578063dd46706414610a04578063dd62ed3e14610a2e578063ea2f0b3714610a69578063f2fde38b14610a9c5761029e565b8063a9059cbb1461090e578063aa45026b14610947578063b6c523241461095c578063bf56b37114610971578063c0b0fda214610986578063c6d2577d1461099b5761029e565b80638da5cb5b116101135780638da5cb5b146107dc57806395d89b41146107f1578063a0e3849214610806578063a457c2d714610841578063a69df4b51461087a578063a7b97fa91461088f5761029e565b8063715018a61461070557806378109e541461071a5780637d1db4a51461072f5780637fef35941461074457806382bf293c1461077f57806388f82020146107a95761029e565b8063379e2919116101fe5780634549b039116101b75780634549b0391461061057806349bd5a5e1461064257806352390c02146106575780635342acb41461068a57806370a08231146106bd57806370d5ae05146106f05761029e565b8063379e29191461052657806339509351146105505780633ad10ef6146105895780633b124fe71461059e5780633bd5d173146105b3578063437823ec146105dd5761029e565b80631694505e116102505780631694505e1461041557806318160ddd1461044657806323b872dd1461045b5780632d8381191461049e578063313ce567146104c85780633685d419146104f35761029e565b806301339c21146102a3578063061c82d0146102ba57806306fdde03146102e4578063095ea7b31461036e5780630f1d76c1146103bb57806313114a9d146103ee5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610acf565b005b3480156102c657600080fd5b506102b8600480360360208110156102dd57600080fd5b5035610b7a565b3480156102f057600080fd5b506102f9610bd7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033357818101518382015260200161031b565b50505050905090810190601f1680156103605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037a57600080fd5b506103a76004803603604081101561039157600080fd5b506001600160a01b038135169060200135610c6d565b604080519115158252519081900360200190f35b3480156103c757600080fd5b506103a7600480360360208110156103de57600080fd5b50356001600160a01b0316610c8b565b3480156103fa57600080fd5b50610403610cad565b60408051918252519081900360200190f35b34801561042157600080fd5b5061042a610cb3565b604080516001600160a01b039092168252519081900360200190f35b34801561045257600080fd5b50610403610cd7565b34801561046757600080fd5b506103a76004803603606081101561047e57600080fd5b506001600160a01b03813581169160208101359091169060400135610cdd565b3480156104aa57600080fd5b50610403600480360360208110156104c157600080fd5b5035610d64565b3480156104d457600080fd5b506104dd610dc4565b6040805160ff9092168252519081900360200190f35b3480156104ff57600080fd5b506102b86004803603602081101561051657600080fd5b50356001600160a01b0316610dcd565b34801561053257600080fd5b506102b86004803603602081101561054957600080fd5b5035610f8e565b34801561055c57600080fd5b506103a76004803603604081101561057357600080fd5b506001600160a01b038135169060200135610feb565b34801561059557600080fd5b5061042a611039565b3480156105aa57600080fd5b50610403611048565b3480156105bf57600080fd5b506102b8600480360360208110156105d657600080fd5b503561104e565b3480156105e957600080fd5b506102b86004803603602081101561060057600080fd5b50356001600160a01b0316611147565b34801561061c57600080fd5b506104036004803603604081101561063357600080fd5b508035906020013515156111c3565b34801561064e57600080fd5b5061042a611265565b34801561066357600080fd5b506102b86004803603602081101561067a57600080fd5b50356001600160a01b0316611274565b34801561069657600080fd5b506103a7600480360360208110156106ad57600080fd5b50356001600160a01b03166113fa565b3480156106c957600080fd5b50610403600480360360208110156106e057600080fd5b50356001600160a01b0316611418565b3480156106fc57600080fd5b5061042a61147a565b34801561071157600080fd5b506102b8611489565b34801561072657600080fd5b50610403611519565b34801561073b57600080fd5b5061040361151f565b34801561075057600080fd5b506102b86004803603604081101561076757600080fd5b506001600160a01b0381351690602001351515611525565b34801561078b57600080fd5b506102b8600480360360208110156107a257600080fd5b50356115a8565b3480156107b557600080fd5b506103a7600480360360208110156107cc57600080fd5b50356001600160a01b0316611626565b3480156107e857600080fd5b5061042a611644565b3480156107fd57600080fd5b506102f9611653565b34801561081257600080fd5b506102b86004803603604081101561082957600080fd5b506001600160a01b03813516906020013515156116b4565b34801561084d57600080fd5b506103a76004803603604081101561086457600080fd5b506001600160a01b038135169060200135611737565b34801561088657600080fd5b506102b861179f565b34801561089b57600080fd5b506102b8600480360360408110156108b257600080fd5b8101906020810181356401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184602083028401116401000000008311171561090157600080fd5b919350915035151561188d565b34801561091a57600080fd5b506103a76004803603604081101561093157600080fd5b506001600160a01b038135169060200135611940565b34801561095357600080fd5b50610403611954565b34801561096857600080fd5b5061040361195a565b34801561097d57600080fd5b50610403611960565b34801561099257600080fd5b50610403611966565b3480156109a757600080fd5b5061040361196c565b3480156109bc57600080fd5b506102b8600480360360208110156109d357600080fd5b5035611972565b3480156109e657600080fd5b506102b8600480360360208110156109fd57600080fd5b50356119cf565b348015610a1057600080fd5b506102b860048036036020811015610a2757600080fd5b5035611a47565b348015610a3a57600080fd5b5061040360048036036040811015610a5157600080fd5b506001600160a01b0381358116916020013516611ae5565b348015610a7557600080fd5b506102b860048036036020811015610a8c57600080fd5b50356001600160a01b0316611b10565b348015610aa857600080fd5b506102b860048036036020811015610abf57600080fd5b50356001600160a01b0316611b89565b610ad7611d0a565b6000546001600160a01b03908116911614610b27576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601b5415610b70576040805162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903630bab731b432b21760791b604482015290519081900360640190fd5b43601b5542601c55565b610b82611d0a565b6000546001600160a01b03908116911614610bd2576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601355565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c635780601f10610c3857610100808354040283529160200191610c63565b820191906000526020600020905b815481529060010190602001808311610c4657829003601f168201915b5050505050905090565b6000610c81610c7a611d0a565b8484611d0e565b5060015b92915050565b6001600160a01b03811660009081526009602052604090205460ff165b919050565b600d5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b5490565b6000610cea848484611dfa565b610d5a84610cf6611d0a565b610d5585604051806060016040528060288152602001612be3602891396001600160a01b038a16600090815260056020526040812090610d34611d0a565b6001600160a01b031681526020810191909152604001600020549190612077565b611d0e565b5060019392505050565b6000600c54821115610da75760405162461bcd60e51b815260040180806020018281038252602a815260200180612b28602a913960400191505060405180910390fd5b6000610db161210e565b9050610dbd8382611c6f565b9392505050565b60125460ff1690565b610dd5611d0a565b6000546001600160a01b03908116911614610e25576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610e92576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600a54811015610f8a57816001600160a01b0316600a8281548110610eb657fe5b6000918252602090912001546001600160a01b03161415610f8257600a80546000198101908110610ee357fe5b600091825260209091200154600a80546001600160a01b039092169183908110610f0957fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff19169055600a805480610f5b57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610f8a565b600101610e95565b5050565b610f96611d0a565b6000546001600160a01b03908116911614610fe6576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601555565b6000610c81610ff8611d0a565b84610d558560056000611009611d0a565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612131565b600e546001600160a01b031690565b60135481565b6000611058611d0a565b6001600160a01b03811660009081526008602052604090205490915060ff16156110b35760405162461bcd60e51b815260040180806020018281038252602c815260200180612cfb602c913960400191505060405180910390fd5b60008060006110c18561218b565b9350935093505060006110de868585856110d961210e565b6121ea565b50506001600160a01b038616600090815260036020526040902054909150611106908261224c565b6001600160a01b038616600090815260036020526040902055600c5461112c908261224c565b600c55600d5461113c9087612131565b600d55505050505050565b61114f611d0a565b6000546001600160a01b0390811691161461119f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600b5483111561121c576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b600080600061122a8661218b565b93509350935050600080611243888686866110d961210e565b50915091508661125957509350610c8592505050565b9450610c859350505050565b601d546001600160a01b031681565b61127c611d0a565b6000546001600160a01b039081169116146112cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff161561133a576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611394576001600160a01b03811660009081526003602052604090205461137a90610d64565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b6001600160a01b03811660009081526008602052604081205460ff161561145857506001600160a01b038116600090815260046020526040902054610ca8565b6001600160a01b038216600090815260036020526040902054610c8590610d64565b600f546001600160a01b031690565b611491611d0a565b6000546001600160a01b039081169116146114e1576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612c2b833981519152908390a3600080546001600160a01b0319169055565b601f5481565b601e5481565b61152d611d0a565b6000546001600160a01b0390811691161461157d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6115b0611d0a565b6000546001600160a01b03908116911614611600576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b611620606461161a83600b54611cb190919063ffffffff16565b90611c6f565b601f5550565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c635780601f10610c3857610100808354040283529160200191610c63565b6116bc611d0a565b6000546001600160a01b0390811691161461170c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c81611744611d0a565b84610d5585604051806060016040528060258152602001612d4a602591396005600061176e611d0a565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612077565b6001546001600160a01b031633146117e85760405162461bcd60e51b8152600401808060200182810382526023815260200180612d276023913960400191505060405180910390fd5b600254421161183e576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b039384169390911691600080516020612c2b83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b611895611d0a565b6000546001600160a01b039081169116146118e5576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b60005b8281101561193a57816009600086868581811061190157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016118e8565b50505050565b6000610c8161194d611d0a565b8484611dfa565b60155481565b60025490565b601b5481565b60175481565b601c5481565b61197a611d0a565b6000546001600160a01b039081169116146119ca576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b601755565b6119d7611d0a565b6000546001600160a01b03908116911614611a27576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b611a41606461161a83600b54611cb190919063ffffffff16565b601e5550565b611a4f611d0a565b6000546001600160a01b03908116911614611a9f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020612c2b833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611b18611d0a565b6000546001600160a01b03908116911614611b68576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b611b91611d0a565b6000546001600160a01b03908116911614611be1576040805162461bcd60e51b81526020600482018190526024820152600080516020612c0b833981519152604482015290519081900360640190fd5b6001600160a01b038116611c265760405162461bcd60e51b8152600401808060200182810382526026815260200180612b526026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612c2b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610dbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228e565b600082611cc057506000610c85565b82820282848281611ccd57fe5b0414610dbd5760405162461bcd60e51b8152600401808060200182810382526021815260200180612bc26021913960400191505060405180910390fd5b3390565b6001600160a01b038316611d535760405162461bcd60e51b8152600401808060200182810382526024815260200180612cd76024913960400191505060405180910390fd5b6001600160a01b038216611d985760405162461bcd60e51b8152600401808060200182810382526022815260200180612b786022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611e3f5760405162461bcd60e51b8152600401808060200182810382526025815260200180612cb26025913960400191505060405180910390fd5b6001600160a01b038216611e845760405162461bcd60e51b8152600401808060200182810382526023815260200180612b056023913960400191505060405180910390fd5b60008111611ec35760405162461bcd60e51b8152600401808060200182810382526029815260200180612c4b6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615611f27576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b6001600160a01b03831660009081526007602052604090205460ff161580611f6857506001600160a01b03821660009081526007602052604090205460ff16155b15611fae57601e54811115611fae5760405162461bcd60e51b8152600401808060200182810382526028815260200180612b9a6028913960400191505060405180910390fd5b6001600160a01b03821660009081526007602052604090205460ff16612020576000611fd983611418565b9050601f54828201111561201e5760405162461bcd60e51b815260040180806020018281038252603e815260200180612c74603e913960400191505060405180910390fd5b505b6001600160a01b03831660009081526006602052604090205460019060ff168061206257506001600160a01b03831660009081526006602052604090205460ff165b1561206b575060005b61193a848484846122f3565b600081848411156121065760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120cb5781810151838201526020016120b3565b50505050905090810190601f1680156120f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061211b612461565b909250905061212a8282611c6f565b9250505090565b600082820183811015610dbd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061219c866125c4565b905060006121a9876125ed565b905060006121b688612602565b905060006121ce836121c88b8761224c565b9061224c565b90506121da818361224c565b9993985091965094509092505050565b60008080806121f98986611cb1565b905060006122078987611cb1565b905060006122158988611cb1565b905060006122238989611cb1565b90506000612237826121c88581898961224c565b949d949c50929a509298505050505050505050565b6000610dbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612077565b600081836122dd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120cb5781810151838201526020016120b3565b5060008385816122e957fe5b0495945050505050565b806123005761230061262a565b6001600160a01b03841660009081526008602052604090205460ff16801561234157506001600160a01b03831660009081526008602052604090205460ff16155b1561235657612351848484612671565b612454565b6001600160a01b03841660009081526008602052604090205460ff1615801561239757506001600160a01b03831660009081526008602052604090205460ff165b156123a7576123518484846127b1565b6001600160a01b03841660009081526008602052604090205460ff161580156123e957506001600160a01b03831660009081526008602052604090205460ff16155b156123f95761235184848461286c565b6001600160a01b03841660009081526008602052604090205460ff16801561243957506001600160a01b03831660009081526008602052604090205460ff165b15612449576123518484846128c2565b61245484848461286c565b8061193a5761193a612947565b600c54600b546000918291825b600a54811015612592578260036000600a848154811061248a57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124ef57508160046000600a84815481106124c857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561250657600c54600b54945094505050506125c0565b61254660036000600a848154811061251a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061224c565b925061258860046000600a848154811061255c57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061224c565b915060010161246e565b50600b54600c546125a291611c6f565b8210156125ba57600c54600b549350935050506125c0565b90925090505b9091565b600080601b546000146125d9576013546125dc565b60005b9050610dbd606461161a8584611cb1565b600080601b546000146125d9576015546125dc565b600080601b54600014612617576017546125dc565b50601954610dbd606461161a8584611cb1565b60135415801561263a5750601554155b156126445761266f565b60138054601455601580546016556017805460185560198054601a5560009384905591839055829055555b565b6000806000806126808561218b565b9350935093509350600080600061269c888787876110d961210e565b6001600160a01b038d1660009081526004602052604090205492955090935091506126c7908961224c565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546126f6908461224c565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546127259083612131565b6001600160a01b038a1660009081526003602052604090205561274785612961565b61275084612a21565b61275a8187612ae0565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a350505050505050505050565b6000806000806127c08561218b565b935093509350935060008060006127dc888787876110d961210e565b6001600160a01b038d166000908152600360205260409020549295509093509150612807908461224c565b6001600160a01b03808c16600090815260036020908152604080832094909455918c1681526004909152205461283d9088612131565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546127259083612131565b60008060008061287b8561218b565b93509350935093506000806000612897888787876110d961210e565b6001600160a01b038d1660009081526003602052604090205492955090935091506126f6908461224c565b6000806000806128d18561218b565b935093509350935060008060006128ed888787876110d961210e565b6001600160a01b038d166000908152600460205260409020549295509093509150612918908961224c565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054612807908461224c565b601454601355601654601555601854601755601a54601955565b600061296b61210e565b905060006129798383611cb1565b600e546001600160a01b03166000908152600360205260409020549091506129a19082612131565b600e80546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff1615612a1c57600e546001600160a01b0316600090815260046020526040902054612a009084612131565b600e546001600160a01b03166000908152600460205260409020555b505050565b6000612a2b61210e565b90506000612a398383611cb1565b600f546001600160a01b0316600090815260036020526040902054909150612a619082612131565b600f80546001600160a01b03908116600090815260036020908152604080832095909555925490911681526008909152205460ff1615612a1c57600f546001600160a01b0316600090815260046020526040902054612ac09084612131565b600f546001600160a01b0316600090815260046020526040902055505050565b600c54612aed908361224c565b600c55600d54612afd9082612131565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b27a0b3ea426262a30f73b4a7ae68f1994a005fcaa262cd98f06e072a9ccde1c64736f6c634300060c0033
Deployed Bytecode Sourcemap
25809:18645:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31458:185;;;;;;;;;;;;;:::i;:::-;;34757:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34757:98:0;;:::i;28476:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29388:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29388:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;30896:124;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30896:124:0;-1:-1:-1;;;;;30896:124:0;;:::i;31167:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27279:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27279:51:0;;;;;;;;;;;;;;28753:95;;;;;;;;;;;;;:::i;29557:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29557:313:0;;;;;;;;;;;;;;;;;:::i;32671:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32671:253:0;;:::i;28662:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33273:475;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33273:475:0;-1:-1:-1;;;;;33273:475:0;;:::i;34973:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34973:98:0;;:::i;29878:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29878:218:0;;;;;;;;:::i;31361:89::-;;;;;;;;;;;;;:::i;26838:26::-;;;;;;;;;;;;;:::i;31651:496::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31651:496:0;;:::i;34512:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34512:111:0;-1:-1:-1;;;;;34512:111:0;;:::i;32155:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32155:508:0;;;;;;;;;:::i;27337:28::-;;;;;;;;;;;;;:::i;32932:333::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32932:333:0;-1:-1:-1;;;;;32932:333:0;;:::i;39260:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39260:123:0;-1:-1:-1;;;;;39260:123:0;;:::i;28856:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28856:198:0;-1:-1:-1;;;;;28856:198:0;;:::i;31262:91::-;;;;;;;;;;;;;:::i;16283:148::-;;;;;;;;;;;;;:::i;27442:55::-;;;;;;;;;;;;;:::i;27382:53::-;;;;;;;;;;;;;:::i;31028:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31028:131:0;;;;;;;;;;:::i;35253:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35253:173:0;;:::i;30381:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30381:120:0;-1:-1:-1;;;;;30381:120:0;;:::i;15640:79::-;;;;;;;;;;;;;:::i;28567:87::-;;;;;;;;;;;;;:::i;30509:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30509:137:0;;;;;;;;;;:::i;30104:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30104:269:0;;;;;;;;:::i;17293:293::-;;;;;;;;;;;;;:::i;30654:234::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30654:234:0;-1:-1:-1;30654:234:0;;;;:::i;29062:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29062:167:0;;;;;;;;:::i;26921:26::-;;;;;;;;;;;;;:::i;16838:89::-;;;;;;;;;;;;;:::i;27204:25::-;;;;;;;;;;;;;:::i;27004:27::-;;;;;;;;;;;;;:::i;27236:34::-;;;;;;;;;;;;;:::i;34863:102::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34863:102:0;;:::i;35083:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35083:162:0;;:::i;17003:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17003:214:0;;:::i;29237:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29237:143:0;;;;;;;;;;:::i;34635:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34635:110:0;-1:-1:-1;;;;;34635:110:0;;:::i;16586:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16586:244:0;-1:-1:-1;;;;;16586:244:0;;:::i;31458:185::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;31514:10:::1;::::0;:15;31506:45:::1;;;::::0;;-1:-1:-1;;;31506:45:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31506:45:0;;;;;;;;;;;;;::::1;;31575:12;31562:10;:25:::0;31620:15:::1;31598:19;:37:::0;31458:185::o;34757:98::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;34831:7:::1;:16:::0;34757:98::o;28476:83::-;28546:5;28539:12;;;;;;;;-1:-1:-1;;28539:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28513:13;;28539:12;;28546:5;;28539:12;;28546:5;28539:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28476:83;:::o;29388:161::-;29463:4;29480:39;29489:12;:10;:12::i;:::-;29503:7;29512:6;29480:8;:39::i;:::-;-1:-1:-1;29537:4:0;29388:161;;;;;:::o;30896:124::-;-1:-1:-1;;;;;30990:22:0;;30966:4;30990:22;;;:13;:22;;;;;;;;30896:124;;;;:::o;31167:87::-;31236:10;;31167:87;:::o;27279:51::-;;;:::o;28753:95::-;28833:7;;28753:95;:::o;29557:313::-;29655:4;29672:36;29682:6;29690:9;29701:6;29672:9;:36::i;:::-;29719:121;29728:6;29736:12;:10;:12::i;:::-;29750:89;29788:6;29750:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29750:19:0;;;;;;:11;:19;;;;;;29770:12;:10;:12::i;:::-;-1:-1:-1;;;;;29750:33:0;;;;;;;;;;;;-1:-1:-1;29750:33:0;;;:89;:37;:89::i;:::-;29719:8;:121::i;:::-;-1:-1:-1;29858:4:0;29557:313;;;;;:::o;32671:253::-;32737:7;32776;;32765;:18;;32757:73;;;;-1:-1:-1;;;32757:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32841:19;32864:10;:8;:10::i;:::-;32841:33;-1:-1:-1;32892:24:0;:7;32841:33;32892:11;:24::i;:::-;32885:31;32671:253;-1:-1:-1;;;32671:253:0:o;28662:83::-;28728:9;;;;28662:83;:::o;33273:475::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33355:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33347:56;;;::::0;;-1:-1:-1;;;33347:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33419:9;33414:327;33438:9;:16:::0;33434:20;::::1;33414:327;;;33496:7;-1:-1:-1::0;;;;;33480:23:0::1;:9;33490:1;33480:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;33480:12:0::1;:23;33476:254;;;33539:9;33549:16:::0;;-1:-1:-1;;33549:20:0;;;33539:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;33524:9:::1;:12:::0;;-1:-1:-1;;;;;33539:31:0;;::::1;::::0;33534:1;;33524:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;33524:46:0::1;-1:-1:-1::0;;;;;33524:46:0;;::::1;;::::0;;33589:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;33628:11:::1;:20:::0;;;;:28;;-1:-1:-1;;33628:28:0::1;::::0;;33675:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;33675:15:0;;;;;-1:-1:-1;;;;;;33675:15:0::1;::::0;;;;;33709:5:::1;;33476:254;33456:3;;33414:327;;;;33273:475:::0;:::o;34973:98::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;35047:7:::1;:16:::0;34973:98::o;29878:218::-;29966:4;29983:83;29992:12;:10;:12::i;:::-;30006:7;30015:50;30054:10;30015:11;:25;30027:12;:10;:12::i;:::-;-1:-1:-1;;;;;30015:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30015:25:0;;;:34;;;;;;;;;;;:38;:50::i;31361:89::-;31431:11;;-1:-1:-1;;;;;31431:11:0;31361:89;:::o;26838:26::-;;;;:::o;31651:496::-;31703:14;31720:12;:10;:12::i;:::-;-1:-1:-1;;;;;31752:19:0;;;;;;:11;:19;;;;;;31703:29;;-1:-1:-1;31752:19:0;;31751:20;31743:77;;;;-1:-1:-1;;;31743:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31835:12;31849;31863:13;31880:20;31892:7;31880:11;:20::i;:::-;31833:67;;;;;;;31912:15;31933:51;31945:7;31954:4;31960;31966:5;31973:10;:8;:10::i;:::-;31933:11;:51::i;:::-;-1:-1:-1;;;;;;;32023:15:0;;;;;;:7;:15;;;;;;31911:73;;-1:-1:-1;32023:28:0;;31911:73;32023:19;:28::i;:::-;-1:-1:-1;;;;;32005:15:0;;;;;;:7;:15;;;;;:46;32072:7;;:20;;32084:7;32072:11;:20::i;:::-;32062:7;:30;32116:10;;:23;;32131:7;32116:14;:23::i;:::-;32103:10;:36;-1:-1:-1;;;;;;31651:496:0:o;34512:111::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34581:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34581:34:0::1;34611:4;34581:34;::::0;;34512:111::o;32155:508::-;32245:7;32284;;32273;:18;;32265:62;;;;;-1:-1:-1;;;32265:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32350:12;32364;32378:13;32395:20;32407:7;32395:11;:20::i;:::-;32348:67;;;;;;;32427:15;32444:23;32472:51;32484:7;32493:4;32499;32505:5;32512:10;:8;:10::i;32472:51::-;32426:97;;;;;32541:17;32536:120;;-1:-1:-1;32582:7:0;-1:-1:-1;32575:14:0;;-1:-1:-1;;;32575:14:0;32536:120;32629:15;-1:-1:-1;32622:22:0;;-1:-1:-1;;;;32622:22:0;27337:28;;;-1:-1:-1;;;;;27337:28:0;;:::o;32932:333::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33015:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33014:21;33006:61;;;::::0;;-1:-1:-1;;;33006:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;33081:16:0;::::1;33100:1;33081:16:::0;;;:7:::1;:16;::::0;;;;;:20;33078:108:::1;;-1:-1:-1::0;;;;;33157:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;33137:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;33118:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;33078:108:::1;-1:-1:-1::0;;;;;33196:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;33196:27:0::1;33219:4;33196:27:::0;;::::1;::::0;;;33234:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;33234:23:0::1;::::0;;::::1;::::0;;32932:333::o;39260:123::-;-1:-1:-1;;;;;39348:27:0;39324:4;39348:27;;;:18;:27;;;;;;;;;39260:123::o;28856:198::-;-1:-1:-1;;;;;28946:20:0;;28922:7;28946:20;;;:11;:20;;;;;;;;28942:49;;;-1:-1:-1;;;;;;28975:16:0;;;;;;:7;:16;;;;;;28968:23;;28942:49;-1:-1:-1;;;;;29029:16:0;;;;;;:7;:16;;;;;;29009:37;;:19;:37::i;31262:91::-;31333:12;;-1:-1:-1;;;;;31333:12:0;31262:91;:::o;16283:148::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;16390:1:::1;16374:6:::0;;16353:40:::1;::::0;-1:-1:-1;;;;;16374:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16353:40:0;16390:1;;16353:40:::1;16421:1;16404:19:::0;;-1:-1:-1;;;;;;16404:19:0::1;::::0;;16283:148::o;27442:55::-;;;;:::o;27382:53::-;;;;:::o;31028:131::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31116:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;31116:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31028:131::o;35253:173::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;35356:62:::1;35402:5;35356:27;35368:14;35356:7;;:11;;:27;;;;:::i;:::-;:31:::0;::::1;:62::i;:::-;35338:15;:80:::0;-1:-1:-1;35253:173:0:o;30381:120::-;-1:-1:-1;;;;;30473:20:0;30449:4;30473:20;;;:11;:20;;;;;;;;;30381:120::o;15640:79::-;15678:7;15705:6;-1:-1:-1;;;;;15705:6:0;15640:79;:::o;28567:87::-;28639:7;28632:14;;;;;;;;-1:-1:-1;;28632:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28606:13;;28632:14;;28639:7;;28632:14;;28639:7;28632:14;;;;;;;;;;;;;;;;;;;;;;;;30509:137;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30602:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:36;;-1:-1:-1;;30602:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30509:137::o;30104:269::-;30197:4;30214:129;30223:12;:10;:12::i;:::-;30237:7;30246:96;30285:15;30246:96;;;;;;;;;;;;;;;;;:11;:25;30258:12;:10;:12::i;:::-;-1:-1:-1;;;;;30246:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30246:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;17293:293::-;17345:14;;-1:-1:-1;;;;;17345:14:0;17363:10;17345:28;17337:76;;;;-1:-1:-1;;;17337:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17438:9;;17432:3;:15;17424:60;;;;;-1:-1:-1;;;17424:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17529:14;;;17521:6;;17500:44;;-1:-1:-1;;;;;17529:14:0;;;;17521:6;;;;-1:-1:-1;;;;;;;;;;;17500:44:0;;17564:14;;;17555:23;;-1:-1:-1;;;;;;17555:23:0;-1:-1:-1;;;;;17564:14:0;;;17555:23;;;;;;17293:293::o;30654:234::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;30773:9:::1;30768:113;30788:19:::0;;::::1;30768:113;;;30858:11;30829:13;:26;30843:8;;30852:1;30843:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;30843:11:0::1;30829:26:::0;;-1:-1:-1;30829:26:0;::::1;::::0;;;;;;-1:-1:-1;30829:26:0;:40;;-1:-1:-1;;30829:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;30809:3:0::1;30768:113;;;;30654:234:::0;;;:::o;29062:167::-;29140:4;29157:42;29167:12;:10;:12::i;:::-;29181:9;29192:6;29157:9;:42::i;26921:26::-;;;;:::o;16838:89::-;16910:9;;16838:89;:::o;27204:25::-;;;;:::o;27004:27::-;;;;:::o;27236:34::-;;;;:::o;34863:102::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;34939:8:::1;:18:::0;34863:102::o;35083:162::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;35177:60:::1;35221:5;35177:25;35189:12;35177:7;;:11;;:25;;;;:::i;:60::-;35162:12;:75:::0;-1:-1:-1;35083:162:0:o;17003:214::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;17084:6:::1;::::0;;;17067:23;;-1:-1:-1;;;;;;17067:23:0;;::::1;-1:-1:-1::0;;;;;17084:6:0;::::1;17067:23;::::0;;;17101:19:::1;::::0;;17143:3:::1;:10:::0;::::1;17131:9;:22:::0;17169:40:::1;::::0;17084:6;;-1:-1:-1;;;;;;;;;;;17169:40:0;17084:6;;17169:40:::1;17003:214:::0;:::o;29237:143::-;-1:-1:-1;;;;;29345:18:0;;;29318:7;29345:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;29237:143::o;34635:110::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34702:27:0::1;34732:5;34702:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34702:35:0::1;::::0;;34635:110::o;16586:244::-;15862:12;:10;:12::i;:::-;15852:6;;-1:-1:-1;;;;;15852:6:0;;;:22;;;15844:67;;;;;-1:-1:-1;;;15844:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15844:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16675:22:0;::::1;16667:73;;;;-1:-1:-1::0;;;16667:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16777:6;::::0;;16756:38:::1;::::0;-1:-1:-1;;;;;16756:38:0;;::::1;::::0;16777:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;16756:38:0;::::1;16805:6;:17:::0;;-1:-1:-1;;;;;;16805:17:0::1;-1:-1:-1::0;;;;;16805:17:0;;;::::1;::::0;;;::::1;::::0;;16586:244::o;5856:132::-;5914:7;5941:39;5945:1;5948;5941:39;;;;;;;;;;;;;;;;;:3;:39::i;4909:471::-;4967:7;5212:6;5208:47;;-1:-1:-1;5242:1:0;5235:8;;5208:47;5279:5;;;5283:1;5279;:5;:1;5303:5;;;;;:10;5295:56;;;;-1:-1:-1;;;5295:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8048:106;8136:10;8048:106;:::o;39391:337::-;-1:-1:-1;;;;;39484:19:0;;39476:68;;;;-1:-1:-1;;;39476:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39563:21:0;;39555:68;;;;-1:-1:-1;;;39555:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39636:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;39688:32;;;;;;;;;;;;;;;;;39391:337;;;:::o;39736:1223::-;-1:-1:-1;;;;;39858:18:0;;39850:68;;;;-1:-1:-1;;;39850:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39937:16:0;;39929:64;;;;-1:-1:-1;;;39929:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40021:1;40012:6;:10;40004:64;;;;-1:-1:-1;;;40004:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40088:19:0;;;;;;:13;:19;;;;;;;;40087:20;40079:52;;;;;-1:-1:-1;;;40079:52:0;;;;;;;;;;;;-1:-1:-1;;;40079:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;40148:24:0;;;;;;:18;:24;;;;;;;;40147:25;;:52;;-1:-1:-1;;;;;;40177:22:0;;;;;;:18;:22;;;;;;;;40176:23;40147:52;40144:159;;;40234:12;;40224:6;:22;;40216:75;;;;-1:-1:-1;;;40216:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40321:22:0;;;;;;:18;:22;;;;;;;;40316:221;;40360:18;40381:13;40391:2;40381:9;:13::i;:::-;40360:34;;40443:15;;40432:6;40419:10;:19;40418:40;;40410:115;;;;-1:-1:-1;;;40410:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40316:221;;-1:-1:-1;;;;;40745:24:0;;40618:12;40745:24;;;:18;:24;;;;;;40633:4;;40745:24;;;:50;;-1:-1:-1;;;;;;40773:22:0;;;;;;:18;:22;;;;;;;;40745:50;40742:96;;;-1:-1:-1;40821:5:0;40742:96;40913:38;40928:4;40933:2;40936:6;40943:7;40913:14;:38::i;4458:192::-;4544:7;4580:12;4572:6;;;;4564:29;;;;-1:-1:-1;;;4564:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4616:5:0;;;4458:192::o;36623:163::-;36664:7;36685:15;36702;36721:19;:17;:19::i;:::-;36684:56;;-1:-1:-1;36684:56:0;-1:-1:-1;36758:20:0;36684:56;;36758:11;:20::i;:::-;36751:27;;;;36623:163;:::o;3555:181::-;3613:7;3645:5;;;3669:6;;;;3661:46;;;;;-1:-1:-1;;;3661:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35688:439;35748:7;35757;35766;35775;35795:12;35810:24;35826:7;35810:15;:24::i;:::-;35795:39;;35845:12;35860:24;35876:7;35860:15;:24::i;:::-;35845:39;;35895:13;35911:25;35928:7;35911:16;:25::i;:::-;35895:41;-1:-1:-1;35947:23:0;35973:27;35995:4;35973:17;:7;35985:4;35973:11;:17::i;:::-;:21;;:27::i;:::-;35947:53;-1:-1:-1;36037:26:0;35947:53;36057:5;36037:19;:26::i;:::-;36019:44;36101:4;;-1:-1:-1;36107:4:0;;-1:-1:-1;36107:4:0;-1:-1:-1;35688:439:0;;-1:-1:-1;;;35688:439:0:o;36135:480::-;36259:7;;;;36315:24;:7;36327:11;36315;:24::i;:::-;36297:42;-1:-1:-1;36350:12:0;36365:21;:4;36374:11;36365:8;:21::i;:::-;36350:36;-1:-1:-1;36397:12:0;36412:21;:4;36421:11;36412:8;:21::i;:::-;36397:36;-1:-1:-1;36444:13:0;36460:22;:5;36470:11;36460:9;:22::i;:::-;36444:38;-1:-1:-1;36493:23:0;36519:38;36444;36519:27;36541:4;36519:27;:7;36531:4;36519:11;:17::i;:38::-;36576:7;;;;-1:-1:-1;36602:4:0;;-1:-1:-1;36135:480:0;;-1:-1:-1;;;;;;;;;36135:480:0:o;4019:136::-;4077:7;4104:43;4108:1;4111;4104:43;;;;;;;;;;;;;;;;;:3;:43::i;6484:278::-;6570:7;6605:12;6598:5;6590:28;;;;-1:-1:-1;;;6590:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6629:9;6645:1;6641;:5;;;;;;;6484:278;-1:-1:-1;;;;;6484:278:0:o;41637:834::-;41748:7;41744:40;;41770:14;:12;:14::i;:::-;-1:-1:-1;;;;;41809:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;41833:22:0;;;;;;:11;:22;;;;;;;;41832:23;41809:46;41805:597;;;41872:48;41894:6;41902:9;41913:6;41872:21;:48::i;:::-;41805:597;;;-1:-1:-1;;;;;41943:19:0;;;;;;:11;:19;;;;;;;;41942:20;:46;;;;-1:-1:-1;;;;;;41966:22:0;;;;;;:11;:22;;;;;;;;41942:46;41938:464;;;42005:46;42025:6;42033:9;42044:6;42005:19;:46::i;41938:464::-;-1:-1:-1;;;;;42074:19:0;;;;;;:11;:19;;;;;;;;42073:20;:47;;;;-1:-1:-1;;;;;;42098:22:0;;;;;;:11;:22;;;;;;;;42097:23;42073:47;42069:333;;;42137:44;42155:6;42163:9;42174:6;42137:17;:44::i;42069:333::-;-1:-1:-1;;;;;42203:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;42226:22:0;;;;;;:11;:22;;;;;;;;42203:45;42199:203;;;42265:48;42287:6;42295:9;42306:6;42265:21;:48::i;42199:203::-;42346:44;42364:6;42372:9;42383:6;42346:17;:44::i;:::-;42426:7;42422:41;;42448:15;:13;:15::i;36794:561::-;36891:7;;36927;;36844;;;;;36951:289;36975:9;:16;36971:20;;36951:289;;;37041:7;37017;:21;37025:9;37035:1;37025:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37025:12:0;37017:21;;;;;;;;;;;;;:31;;:66;;;37076:7;37052;:21;37060:9;37070:1;37060:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37060:12:0;37052:21;;;;;;;;;;;;;:31;37017:66;37013:97;;;37093:7;;37102;;37085:25;;;;;;;;;37013:97;37135:34;37147:7;:21;37155:9;37165:1;37155:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37155:12:0;37147:21;;;;;;;;;;;;;37135:7;;:11;:34::i;:::-;37125:44;;37194:34;37206:7;:21;37214:9;37224:1;37214:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37214:12:0;37206:21;;;;;;;;;;;;;37194:7;;:11;:34::i;:::-;37184:44;-1:-1:-1;36993:3:0;;36951:289;;;-1:-1:-1;37276:7:0;;37264;;:20;;:11;:20::i;:::-;37254:7;:30;37250:61;;;37294:7;;37303;;37286:25;;;;;;;;37250:61;37330:7;;-1:-1:-1;37339:7:0;-1:-1:-1;36794:561:0;;;:::o;38014:204::-;38078:7;38098:11;38112:10;;38126:1;38112:15;:29;;38134:7;;38112:29;;;38130:1;38112:29;38098:43;-1:-1:-1;38159:51:0;38194:5;38159:16;:7;38098:43;38159:11;:16::i;38226:204::-;38290:7;38310:11;38324:10;;38338:1;38324:15;:29;;38346:7;;38324:29;;38438:221;38503:7;38523:11;38537:10;;38551:1;38537:15;:45;;38574:8;;38537:45;;;-1:-1:-1;38555:16:0;;38600:51;38635:5;38600:16;:7;38555:16;38600:11;:16::i;38667:372::-;38713:7;;:12;:28;;;;-1:-1:-1;38729:7:0;;:12;38713:28;38710:40;;;38743:7;;38710:40;38788:7;;;38770:15;:25;38824:7;;;38806:15;:25;38861:8;;;38842:16;:27;38907:16;;;38880:24;:43;-1:-1:-1;38944:11:0;;;;38966;;;;38988:12;;;39011:20;38667:372;:::o;43787:664::-;43890:23;43915:12;43929;43943:13;43960:20;43972:7;43960:11;:20::i;:::-;43889:91;;;;;;;;43992:15;44009:23;44034:12;44050:51;44062:7;44071:4;44077;44083:5;44090:10;:8;:10::i;44050:51::-;-1:-1:-1;;;;;44132:15:0;;;;;;:7;:15;;;;;;43991:110;;-1:-1:-1;43991:110:0;;-1:-1:-1;43991:110:0;-1:-1:-1;44132:28:0;;44152:7;44132:19;:28::i;:::-;-1:-1:-1;;;;;44114:15:0;;;;;;:7;:15;;;;;;;;:46;;;;44189:7;:15;;;;:28;;44209:7;44189:19;:28::i;:::-;-1:-1:-1;;;;;44171:15:0;;;;;;;:7;:15;;;;;;:46;;;;44249:18;;;;;;;:39;;44272:15;44249:22;:39::i;:::-;-1:-1:-1;;;;;44228:18:0;;;;;;:7;:18;;;;;:60;44302:17;44314:4;44302:11;:17::i;:::-;44330:19;44343:5;44330:12;:19::i;:::-;44360:23;44372:4;44378;44360:11;:23::i;:::-;44416:9;-1:-1:-1;;;;;44399:44:0;44408:6;-1:-1:-1;;;;;44399:44:0;;44427:15;44399:44;;;;;;;;;;;;;;;;;;43787:664;;;;;;;;;;:::o;43095:684::-;43196:23;43221:12;43235;43249:13;43266:20;43278:7;43266:11;:20::i;:::-;43195:91;;;;;;;;43298:15;43315:23;43340:12;43356:51;43368:7;43377:4;43383;43389:5;43396:10;:8;:10::i;43356:51::-;-1:-1:-1;;;;;43438:15:0;;;;;;:7;:15;;;;;;43297:110;;-1:-1:-1;43297:110:0;;-1:-1:-1;43297:110:0;-1:-1:-1;43438:28:0;;43297:110;43438:19;:28::i;:::-;-1:-1:-1;;;;;43420:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;43498:18;;;;;:7;:18;;;;;:39;;43521:15;43498:22;:39::i;:::-;-1:-1:-1;;;;;43477:18:0;;;;;;:7;:18;;;;;;;;:60;;;;43569:7;:18;;;;:39;;43592:15;43569:22;:39::i;42479:608::-;42578:23;42603:12;42617;42631:13;42648:20;42660:7;42648:11;:20::i;:::-;42577:91;;;;;;;;42680:15;42697:23;42722:12;42738:51;42750:7;42759:4;42765;42771:5;42778:10;:8;:10::i;42738:51::-;-1:-1:-1;;;;;42828:15:0;;;;;;:7;:15;;;;;;42679:110;;-1:-1:-1;42679:110:0;;-1:-1:-1;42679:110:0;-1:-1:-1;42828:28:0;;42679:110;42828:19;:28::i;33764:732::-;33867:23;33892:12;33906;33920:13;33937:20;33949:7;33937:11;:20::i;:::-;33866:91;;;;;;;;33969:15;33986:23;34011:12;34027:51;34039:7;34048:4;34054;34060:5;34067:10;:8;:10::i;34027:51::-;-1:-1:-1;;;;;34109:15:0;;;;;;:7;:15;;;;;;33968:110;;-1:-1:-1;33968:110:0;;-1:-1:-1;33968:110:0;-1:-1:-1;34109:28:0;;34129:7;34109:19;:28::i;:::-;-1:-1:-1;;;;;34091:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34166:7;:15;;;;:28;;34186:7;34166:19;:28::i;39047:205::-;39101:15;;39091:7;:25;39137:15;;39127:7;:25;39174:16;;39163:8;:27;39220:24;;39201:16;:43;39047:205::o;37363:312::-;37417:19;37440:10;:8;:10::i;:::-;37417:33;-1:-1:-1;37461:12:0;37476:21;:4;37417:33;37476:8;:21::i;:::-;37539:11;;-1:-1:-1;;;;;37539:11:0;37531:20;;;;:7;:20;;;;;;37461:36;;-1:-1:-1;37531:30:0;;37461:36;37531:24;:30::i;:::-;37516:11;;;-1:-1:-1;;;;;37516:11:0;;;37508:20;;;;:7;:20;;;;;;;;:53;;;;37587:11;;;;;37575:24;;:11;:24;;;;;;;37572:95;;;37645:11;;-1:-1:-1;;;;;37645:11:0;37637:20;;;;:7;:20;;;;;;:30;;37662:4;37637:24;:30::i;:::-;37622:11;;-1:-1:-1;;;;;37622:11:0;37614:20;;;;:7;:20;;;;;:53;37572:95;37363:312;;;:::o;37683:323::-;37739:19;37762:10;:8;:10::i;:::-;37739:33;-1:-1:-1;37783:13:0;37799:22;:5;37739:33;37799:9;:22::i;:::-;37864:12;;-1:-1:-1;;;;;37864:12:0;37856:21;;;;:7;:21;;;;;;37783:38;;-1:-1:-1;37856:32:0;;37783:38;37856:25;:32::i;:::-;37840:12;;;-1:-1:-1;;;;;37840:12:0;;;37832:21;;;;:7;:21;;;;;;;;:56;;;;37914:12;;;;;37902:25;;:11;:25;;;;;;;37899:99;;;37974:12;;-1:-1:-1;;;;;37974:12:0;37966:21;;;;:7;:21;;;;;;:32;;37992:5;37966:25;:32::i;:::-;37950:12;;-1:-1:-1;;;;;37950:12:0;37942:21;;;;:7;:21;;;;;:56;37683:323;;;:::o;35533:147::-;35611:7;;:17;;35623:4;35611:11;:17::i;:::-;35601:7;:27;35652:10;;:20;;35667:4;35652:14;:20::i;:::-;35639:10;:33;-1:-1:-1;;35533:147:0:o
Swarm Source
ipfs://b27a0b3ea426262a30f73b4a7ae68f1994a005fcaa262cd98f06e072a9ccde1c
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.