ETH Price: $2,496.39 (-3.55%)

Token

The Seven Deadly Sins (SDS)
 

Overview

Max Total Supply

7,000,000 SDS

Holders

136

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
willurugme.eth
Balance
0.000000132498051731 SDS

Value
$0.00
0x477dc0e77fef1bc9b58de5caa641f77ba4116e14
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TheSevenDeadlySins

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-02
*/

// SPDX-License-Identifier: MIT


pragma solidity 0.8.13;


interface IERC20 {
function totalSupply() external view returns (uint256);


function balanceOf(address account) external view returns (uint256);


function transfer(address recipient, uint256 amount)
external
returns (bool);


function allowance(address owner, address spender)
external
view
returns (uint256);


function approve(address spender, uint256 amount) external returns (bool);


function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);


event Transfer(address indexed from, address indexed to, uint256 value);


event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}


interface IFactory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);


function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
}


interface IRouter {
function factory() external pure returns (address);


function WETH() external pure returns (address);


function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);


function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;


function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}


library SafeMath {


function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");


return c;
}


function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}


function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;


return c;
}


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;
}


function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by 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;
}


function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}


function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}


library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}


function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);


(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}


function functionCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return functionCall(target, data, "Address: low-level call failed");
}


function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}


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"
);
}


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"
);
require(isContract(target), "Address: call to non-contract");


(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return _verifyCallResult(success, returndata, errorMessage);
}


function functionStaticCall(address target, bytes memory data)
internal
view
returns (bytes memory)
{
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}


function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");


(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}


function functionDelegateCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}


function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");


(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}


function _verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) private pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}


abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}


function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}


contract Ownable is Context {
address private _owner;


event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}


function owner() public view returns (address) {
return _owner;
}


modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}


function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}


function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}


contract TheSevenDeadlySins is IERC20, Ownable {
using Address for address;
using SafeMath for uint256;


IRouter public uniswapV2Router;
address public immutable uniswapV2Pair;


string private constant _name = "The Seven Deadly Sins";
string private constant _symbol = "SDS";
uint8 private constant _decimals = 18;


mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;


uint256 private constant MAX = ~uint256(0);
uint256 private constant _tTotal = 7000000 * 10**18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;


bool public isTradingEnabled;


// max wallet is 1.0% of initialSupply
uint256 public maxWalletAmount = _tTotal * 100 / 10000;


// max tx is 0.33% of initialSupply
uint256 public maxTxAmount = _tTotal * 100 / 100000;


bool private _swapping;


// max wallet is 0.025% of initialSupply
uint256 public minimumTokensBeforeSwap = _tTotal * 100 / 1000000;


address private dead = 0x000000000000000000000000000000000000dEaD;


address public liquidityWallet;
address public marketingWallet;
address public buyBackWallet;
address public devWallet;


struct CustomTaxPeriod {
bytes23 periodName;
uint8 blocksInPeriod;
uint256 timeInPeriod;
uint8 liquidityFeeOnBuy;
uint8 liquidityFeeOnSell;
uint8 marketingFeeOnBuy;
uint8 marketingFeeOnSell;
uint8 devFeeOnBuy;
uint8 devFeeOnSell;
uint8 buyBackFeeOnBuy;
uint8 buyBackFeeOnSell;
uint8 holdersFeeOnBuy;
uint8 holdersFeeOnSell;
}


// Base taxes
CustomTaxPeriod private _base = CustomTaxPeriod('base',0,0,0,0,0,0,0,0,0,0,0,0);


uint256 private constant _blockedTimeLimit = 259200;
uint256 private _launchBlockNumber;
uint256 private _launchTimestamp;
mapping (address => bool) private _isBlocked;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcludedFromMaxWalletLimit;
mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
mapping (address => bool) public automatedMarketMakerPairs;
mapping (address => bool) private _isExcludedFromDividends;
mapping (address => bool) private _isAllowedToTradeWhenDisabled;
address[] private _excludedFromDividends;


uint8 private _liquidityFee;
uint8 private _marketingFee;
uint8 private _devFee;
uint8 private _buyBackFee;
uint8 private _holdersFee;
uint8 private _totalFee;


event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value);
event AllowedWhenTradingDisabledChange(address indexed account, bool isExcluded);
event BlockedAccountChange(address indexed holder, bool indexed status);
event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress);
event WalletChange(string indexed indentifier, address indexed newWallet, address indexed oldWallet);
event FeeChange(string indexed identifier, uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee);
event CustomTaxPeriodChange(uint256 indexed newValue, uint256 indexed oldValue, string indexed taxType, bytes23 period);
event MaxWalletAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
event MaxTransactionAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
event ExcludeFromDividendsChange(address indexed account, bool isExcluded);
event ExcludeFromFeesChange(address indexed account, bool isExcluded);
event ExcludeFromMaxTransferChange(address indexed account, bool isExcluded);
event ExcludeFromMaxWalletChange(address indexed account, bool isExcluded);
event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue);
event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived,uint256 tokensIntoLiqudity);
event ClaimETHOverflow(uint256 amount);
event FeesApplied(uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee, uint8 totalFee);


constructor() {
liquidityWallet = owner();
marketingWallet = owner();
buyBackWallet = owner();
devWallet = owner();


IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(
address(this),
_uniswapV2Router.WETH()
);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
_setAutomatedMarketMakerPair(_uniswapV2Pair, true);


_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;


excludeFromDividends(address(this), true);
excludeFromDividends(address(dead), true);
excludeFromDividends(address(_uniswapV2Router), true);


_isAllowedToTradeWhenDisabled[owner()] = true;
_isAllowedToTradeWhenDisabled[address(this)] = true;


_isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
_isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
_isExcludedFromMaxWalletLimit[address(this)] = true;
_isExcludedFromMaxWalletLimit[owner()] = true;


_isExcludedFromMaxTransactionLimit[address(this)] = true;
_isExcludedFromMaxTransactionLimit[address(dead)] = true;
_isExcludedFromMaxTransactionLimit[owner()] = true;


_rOwned[owner()] = _rTotal;
emit Transfer(address(0), owner(), _tTotal);
}


receive() external payable {}


// Setters
function transfer(address recipient, uint256 amount) external override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom( address sender,address recipient,uint256 amount) external 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) external virtual returns (bool){
_approve(_msgSender(),spender,_allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
_approve(_msgSender(),spender,_allowances[_msgSender()][spender].sub(subtractedValue,"ERC20: decreased allowance below zero"));
return true;
}
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 activateTrading() external onlyOwner {
isTradingEnabled = true;
if (_launchTimestamp == 0) {
_launchTimestamp = block.timestamp;
_launchBlockNumber = block.number;
}
}
function deactivateTrading() external onlyOwner {
isTradingEnabled = false;
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
require(automatedMarketMakerPairs[pair] != value, "Seven Deadly Sins: Automated market maker pair is already set to that value");
automatedMarketMakerPairs[pair] = value;
emit AutomatedMarketMakerPairChange(pair, value);
}
function blockAccount(address account) external onlyOwner {
require(!_isBlocked[account], "Seven Deadly Sins: Account is already blocked");
require((block.timestamp - _launchTimestamp) < _blockedTimeLimit, "Seven Deadly Sins: Time to block accounts has expired");
_isBlocked[account] = true;
emit BlockedAccountChange(account, true);
}
function unblockAccount(address account) external onlyOwner {
require(_isBlocked[account], "Seven Deadly Sins: Account is not blcoked");
_isBlocked[account] = false;
emit BlockedAccountChange(account, false);
}
function allowTradingWhenDisabled(address account, bool allowed) external onlyOwner {
_isAllowedToTradeWhenDisabled[account] = allowed;
emit AllowedWhenTradingDisabledChange(account, allowed);
}
function excludeFromFees(address account, bool excluded) external onlyOwner {
require(_isExcludedFromFee[account] != excluded, "Seven Deadly Sins: Account is already the value of 'excluded'");
_isExcludedFromFee[account] = excluded;
emit ExcludeFromFeesChange(account, excluded);
}
function excludeFromMaxWalletLimit(address account, bool excluded) external onlyOwner {
require(_isExcludedFromMaxWalletLimit[account] != excluded, "Seven Deadly Sins: Account is already the value of 'excluded'");
_isExcludedFromMaxWalletLimit[account] = excluded;
emit ExcludeFromMaxWalletChange(account, excluded);
}
function excludeFromMaxTransactionLimit(address account, bool excluded) external onlyOwner {
require(_isExcludedFromMaxTransactionLimit[account] != excluded, "Seven Deadly Sins: Account is already the value of 'excluded'");
_isExcludedFromMaxTransactionLimit[account] = excluded;
emit ExcludeFromMaxTransferChange(account, excluded);
}
function setWallets(address newLiquidityWallet, address newMarketingWallet, address newDevWallet, address newBuyBackWallet) external onlyOwner {
if(liquidityWallet != newLiquidityWallet) {
require(newLiquidityWallet != address(0), "Seven Deadly Sins: The liquidityWallet cannot be 0");
emit WalletChange('liquidityWallet', newLiquidityWallet, liquidityWallet);
liquidityWallet = newLiquidityWallet;
}
if(marketingWallet != newMarketingWallet) {
require(newMarketingWallet != address(0), "Seven Deadly Sins: The marketingWallet cannot be 0");
emit WalletChange('marketingWallet', newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
if(devWallet != newDevWallet) {
require(newDevWallet != address(0), "Seven Deadly Sins: The devWallet cannot be 0");
emit WalletChange('devWallet', newDevWallet, devWallet);
devWallet = newDevWallet;
}
if(buyBackWallet != newBuyBackWallet) {
require(newBuyBackWallet != address(0), "Seven Deadly Sins: The buyBackWallet cannot be 0");
emit WalletChange('buyBackWallet', newBuyBackWallet, buyBackWallet);
buyBackWallet = newBuyBackWallet;
}
}
// Base fees
function setBaseFeesOnBuy(uint8 _liquidityFeeOnBuy, uint8 _marketingFeeOnBuy, uint8 _devFeeOnBuy, uint8 _buyBackFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
_setCustomBuyTaxPeriod(_base, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
emit FeeChange('baseFees-Buy', _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
}
function setBaseFeesOnSell(uint8 _liquidityFeeOnSell, uint8 _marketingFeeOnSell, uint8 _devFeeOnSell, uint8 _buyBackFeeOnSell, uint8 _holdersFeeOnSell) external onlyOwner {
_setCustomSellTaxPeriod(_base, _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
emit FeeChange('baseFees-Sell', _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
}
function setMaxWalletAmount(uint256 newValue) external onlyOwner {
require(newValue != maxWalletAmount, "Seven Deadly Sins: Cannot update maxWalletAmount to same value");
emit MaxWalletAmountChange(newValue, maxWalletAmount);
maxWalletAmount = newValue;
}
function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
require(newValue != maxTxAmount, "Seven Deadly Sins: Cannot update maxTxAmount to same value");
emit MaxTransactionAmountChange(newValue, maxTxAmount);
maxTxAmount = newValue;
}
function excludeFromDividends(address account, bool excluded) public onlyOwner {
require(_isExcludedFromDividends[account] != excluded, "Seven Deadly Sins: Account is already the value of 'excluded'");
if(excluded) {
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcludedFromDividends[account] = excluded;
_excludedFromDividends.push(account);
} else {
for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
if (_excludedFromDividends[i] == account) {
_excludedFromDividends[i] = _excludedFromDividends[_excludedFromDividends.length - 1];
_tOwned[account] = 0;
_isExcludedFromDividends[account] = false;
_excludedFromDividends.pop();
break;
}
}
}
emit ExcludeFromDividendsChange(account, excluded);
}
function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
require(newValue != minimumTokensBeforeSwap, "Seven Deadly Sins: Cannot update minimumTokensBeforeSwap to same value");
emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
minimumTokensBeforeSwap = newValue;
}
function claimETHOverflow() external onlyOwner {
require(address(this).balance > 0, "Seven Deadly Sins: Cannot send more than contract balance");
uint256 amount = address(this).balance;
(bool success,) = address(owner()).call{value : amount}("");
if (success){
emit ClaimETHOverflow(amount);
}
}


// Getters
function name() external pure returns (string memory) {
return _name;
}
function symbol() external pure returns (string memory) {
return _symbol;
}
function decimals() external view virtual returns (uint8) {
return _decimals;
}
function totalSupply() external pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcludedFromDividends[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function totalFees() external view returns (uint256) {
return _tFeeTotal;
}
function allowance(address owner, address spender) external view override returns (uint256) {
return _allowances[owner][spender];
}
function getBaseBuyFees() external view returns (uint8, uint8, uint8, uint8, uint8){
return (_base.liquidityFeeOnBuy, _base.marketingFeeOnBuy, _base.devFeeOnBuy, _base.buyBackFeeOnBuy, _base.holdersFeeOnBuy);
}
function getBaseSellFees() external view returns (uint8, uint8, uint8, uint8, uint8){
return (_base.liquidityFeeOnSell, _base.marketingFeeOnSell, _base.devFeeOnSell, _base.buyBackFeeOnSell, _base.holdersFeeOnSell);
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Seven Deadly Sins: Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount / currentRate;
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns (uint256) {
require(tAmount <= _tTotal, "Seven Deadly Sins: Amount must be less than supply");
uint256 currentRate = _getRate();
uint256 rAmount = tAmount * currentRate;
if (!deductTransferFee) {
return rAmount;
}
else {
uint256 rTotalFee = tAmount * _totalFee / 100 * currentRate;
uint256 rTransferAmount = rAmount - rTotalFee;
return rTransferAmount;
}
}


// Main
function _transfer(
address from,
address to,
uint256 amount
) internal {
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(amount <= balanceOf(from), "Seven Deadly Sins: Cannot transfer more than balance");


bool isBuyFromLp = automatedMarketMakerPairs[from];
bool isSelltoLp = automatedMarketMakerPairs[to];


if(!_isAllowedToTradeWhenDisabled[from] && !_isAllowedToTradeWhenDisabled[to]) {
require(isTradingEnabled, "Seven Deadly Sins: Trading is currently disabled.");
require(!_isBlocked[to], "Seven Deadly Sins: Account is blocked");
require(!_isBlocked[from], "Seven Deadly Sins: Account is blocked");
if (!_isExcludedFromMaxTransactionLimit[to] && !_isExcludedFromMaxTransactionLimit[from]) {
require(amount <= maxTxAmount, "Seven Deadly Sins: Transfer amount exceeds the maxTxAmount.");
}
if (!_isExcludedFromMaxWalletLimit[to]) {
require((balanceOf(to) + amount) <= maxWalletAmount, "Seven Deadly Sins: Expected wallet amount exceeds the maxWalletAmount.");
}
}


_adjustTaxes(isBuyFromLp, isSelltoLp);
bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;


if (
isTradingEnabled &&
canSwap &&
!_swapping &&
_totalFee > 0 &&
automatedMarketMakerPairs[to]
) {
_swapping = true;
_swapAndLiquify();
_swapping = false;
}


bool takeFee = !_swapping && isTradingEnabled;


if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
takeFee = false;
}
_tokenTransfer(from, to, amount, takeFee);
}
function _tokenTransfer(address sender,address recipient, uint256 tAmount, bool takeFee) private {
(uint256 tTransferAmount,uint256 tFee, uint256 tOther) = _getTValues(tAmount, takeFee);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rOther) = _getRValues(tAmount, tFee, tOther, _getRate());


if (_isExcludedFromDividends[sender]) {
_tOwned[sender] = _tOwned[sender] - tAmount;
}
if (_isExcludedFromDividends[recipient]) {
_tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
}
_rOwned[sender] = _rOwned[sender] - rAmount;
_rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
_takeContractFees(rOther, tOther);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal -= rFee;
_tFeeTotal += tFee;
}
function _getTValues(uint256 tAmount, bool takeFee) private view returns (uint256,uint256,uint256){
if (!takeFee) {
return (tAmount, 0, 0);
}
else {
uint256 tFee = tAmount * _holdersFee / 100;
uint256 tOther = tAmount * (_liquidityFee + _devFee + _marketingFee + _buyBackFee) / 100;
uint256 tTransferAmount = tAmount - (tFee + tOther);
return (tTransferAmount, tFee, tOther);
}
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tOther,
uint256 currentRate
) private pure returns ( uint256, uint256, uint256, uint256) {
uint256 rAmount = tAmount * currentRate;
uint256 rFee = tFee * currentRate;
uint256 rOther = tOther * currentRate;
uint256 rTransferAmount = rAmount - (rFee + rOther);
return (rAmount, rTransferAmount, rFee, rOther);
}
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 < _excludedFromDividends.length; i++) {
if (
_rOwned[_excludedFromDividends[i]] > rSupply ||
_tOwned[_excludedFromDividends[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply - _rOwned[_excludedFromDividends[i]];
tSupply = tSupply - _tOwned[_excludedFromDividends[i]];
}
if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeContractFees(uint256 rOther, uint256 tOther) private {
if (_isExcludedFromDividends[address(this)]) {
_tOwned[address(this)] += tOther;
}
_rOwned[address(this)] += rOther;
}
function _adjustTaxes(bool isBuyFromLp, bool isSelltoLp) private {
_liquidityFee = 0;
_devFee = 0;
_marketingFee = 0;
_buyBackFee = 0;
_holdersFee = 0;


if (isBuyFromLp) {
if ((block.number - _launchBlockNumber) <= 5) {
_liquidityFee = 100;
} else {
_liquidityFee = _base.liquidityFeeOnBuy;
_devFee = _base.devFeeOnBuy;
_marketingFee = _base.marketingFeeOnBuy;
_buyBackFee = _base.buyBackFeeOnBuy;
_holdersFee = _base.holdersFeeOnBuy;
}
}
if (isSelltoLp) {
_liquidityFee = _base.liquidityFeeOnSell;
_devFee = _base.devFeeOnSell;
_marketingFee = _base.marketingFeeOnSell;
_buyBackFee = _base.buyBackFeeOnSell;
_holdersFee = _base.holdersFeeOnSell;


if (block.timestamp - _launchTimestamp <= 259200) {
_liquidityFee = 2;
_devFee = 3;
_marketingFee = 10;
_buyBackFee = 8;
_holdersFee = 2;
}
}
_totalFee = _liquidityFee + _marketingFee + _devFee + _buyBackFee + _holdersFee;
emit FeesApplied(_liquidityFee, _marketingFee, _devFee, _buyBackFee, _holdersFee, _totalFee);
}
function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,
uint8 _liquidityFeeOnSell,
uint8 _marketingFeeOnSell,
uint8 _devFeeOnSell,
uint8 _buyBackFeeOnSell,
uint8 _holdersFeeOnSell
) private {
if (map.liquidityFeeOnSell != _liquidityFeeOnSell) {
emit CustomTaxPeriodChange(_liquidityFeeOnSell, map.liquidityFeeOnSell, 'liquidityFeeOnSell', map.periodName);
map.liquidityFeeOnSell = _liquidityFeeOnSell;
}
if (map.marketingFeeOnSell != _marketingFeeOnSell) {
emit CustomTaxPeriodChange(_marketingFeeOnSell, map.marketingFeeOnSell, 'marketingFeeOnSell', map.periodName);
map.marketingFeeOnSell = _marketingFeeOnSell;
}
if (map.devFeeOnSell != _devFeeOnSell) {
emit CustomTaxPeriodChange(_devFeeOnSell, map.devFeeOnSell, 'devFeeOnSell', map.periodName);
map.devFeeOnSell = _devFeeOnSell;
}
if (map.buyBackFeeOnSell != _buyBackFeeOnSell) {
emit CustomTaxPeriodChange(_buyBackFeeOnSell, map.buyBackFeeOnSell, 'buyBackFeeOnSell', map.periodName);
map.buyBackFeeOnSell = _buyBackFeeOnSell;
}
if (map.holdersFeeOnSell != _holdersFeeOnSell) {
emit CustomTaxPeriodChange(_holdersFeeOnSell, map.holdersFeeOnSell, 'holdersFeeOnSell', map.periodName);
map.holdersFeeOnSell = _holdersFeeOnSell;
}
}
function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,
uint8 _liquidityFeeOnBuy,
uint8 _marketingFeeOnBuy,
uint8 _devFeeOnBuy,
uint8 _buyBackFeeOnBuy,
uint8 _holdersFeeOnBuy
) private {
if (map.liquidityFeeOnBuy != _liquidityFeeOnBuy) {
emit CustomTaxPeriodChange(_liquidityFeeOnBuy, map.liquidityFeeOnBuy, 'liquidityFeeOnBuy', map.periodName);
map.liquidityFeeOnBuy = _liquidityFeeOnBuy;
}
if (map.marketingFeeOnBuy != _marketingFeeOnBuy) {
emit CustomTaxPeriodChange(_marketingFeeOnBuy, map.marketingFeeOnBuy, 'marketingFeeOnBuy', map.periodName);
map.marketingFeeOnBuy = _marketingFeeOnBuy;
}
if (map.devFeeOnBuy != _devFeeOnBuy) {
emit CustomTaxPeriodChange(_devFeeOnBuy, map.devFeeOnBuy, 'devFeeOnBuy', map.periodName);
map.devFeeOnBuy = _devFeeOnBuy;
}
if (map.buyBackFeeOnBuy != _buyBackFeeOnBuy) {
emit CustomTaxPeriodChange(_buyBackFeeOnBuy, map.buyBackFeeOnBuy, 'buyBackFeeOnBuy', map.periodName);
map.buyBackFeeOnBuy = _buyBackFeeOnBuy;
}
if (map.holdersFeeOnBuy != _holdersFeeOnBuy) {
emit CustomTaxPeriodChange(_holdersFeeOnBuy, map.holdersFeeOnBuy, 'holdersFeeOnBuy', map.periodName);
map.holdersFeeOnBuy = _holdersFeeOnBuy;
}
}
function _swapAndLiquify() private {
uint256 contractBalance = balanceOf(address(this));
uint256 initialETHBalance = address(this).balance;


uint8 totalFeePrior = _totalFee;
uint8 liquidityFeePrior = _liquidityFee;
uint8 marketingFeePrior = _marketingFee;
uint8 devFeePrior = _devFee;
uint8 buyBackFeePrior = _buyBackFee;
uint8 holdersFeePrior = _holdersFee;


uint256 amountToLiquify = contractBalance * _liquidityFee / _totalFee / 2;
uint256 amountToSwapForETH = contractBalance - amountToLiquify;


_swapTokensForETH(amountToSwapForETH);


uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
uint256 totalETHFee = totalFeePrior - (liquidityFeePrior / 2) - (holdersFeePrior);
uint256 amountETHLiquidity = ETHBalanceAfterSwap * liquidityFeePrior / totalETHFee / 2;
uint256 amountETHDev = ETHBalanceAfterSwap * devFeePrior / totalETHFee;
uint256 amountETHBuyBack = ETHBalanceAfterSwap * buyBackFeePrior / totalETHFee;
uint256 amountETHMarketing = ETHBalanceAfterSwap - (amountETHLiquidity + amountETHDev + amountETHBuyBack);


payable(marketingWallet).transfer(amountETHMarketing);
payable(devWallet).transfer(amountETHDev);
payable(buyBackWallet).transfer(amountETHBuyBack);


if (amountToLiquify > 0) {
_addLiquidity(amountToLiquify, amountETHLiquidity);
emit SwapAndLiquify(amountToSwapForETH, amountETHLiquidity, amountToLiquify);
}
_totalFee = totalFeePrior;
_liquidityFee = liquidityFeePrior;
_marketingFee = marketingFeePrior;
_devFee = devFeePrior;
_buyBackFee = buyBackFeePrior;
_holdersFee = holdersFeePrior;
}
function _swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
liquidityWallet,
block.timestamp
);
}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"BlockedAccountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimETHOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromDividendsChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxWalletAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","type":"event"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowTradingWhenDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"account","type":"address"}],"name":"blockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setBaseFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setBaseFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"},{"internalType":"address","name":"newBuyBackWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"pure","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":[{"internalType":"address","name":"account","type":"address"}],"name":"unblockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526200001d6a05ca4ec2a79a7f6700000060001962000d6a565b6200002b9060001962000d97565b600555612710620000496a05ca4ec2a79a7f67000000606462000db1565b62000055919062000dd3565b600855620186a0620000746a05ca4ec2a79a7f67000000606462000db1565b62000080919062000dd3565b600955620f42406200009f6a05ca4ec2a79a7f67000000606462000db1565b620000ab919062000dd3565b600b55600c80546001600160a01b03191661dead179055604080516101a081018252636261736560e01b8152600060208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018001819052601180546001600160c01b031916636261736560981b179055601255601380546001600160501b03191690553480156200016957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060008054600d80546001600160a01b039092166001600160a01b03199283168117909155600e8054831682179055600f8054831682179055601080549092161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000268919062000dea565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc919062000dea565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000350919062000dea565b600180546001600160a01b0319166001600160a01b03858116919091178255821660805290915062000384908290620005fa565b6001601760006200039d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553080825260179093522080549092166001908117909255620003eb91620006fe565b600c5462000404906001600160a01b03166001620006fe565b62000411826001620006fe565b6001601c60006200042a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530808252601c855283822080548716600190811790915587841683526018958690528483208054881682179055805490931682528382208054871684179055815291822080549094168117909355620004b96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601993849052828120805486166001908117909155600c54909216815291822080549094168117909355620005276000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600554906002906200056c6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620005996000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a05ca4ec2a79a7f67000000604051620005ea91815260200190565b60405180910390a3505062000eb5565b6001600160a01b0382166000908152601a602052604090205481151560ff909116151503620006aa5760405162461bcd60e51b815260206004820152604b60248201527f536576656e20446561646c792053696e733a204175746f6d61746564206d617260448201527f6b6574206d616b6572207061697220697320616c72656164792073657420746f60648201526a20746861742076616c756560a81b608482015260a4015b60405180910390fd5b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6000546001600160a01b031633146200075a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006a1565b6001600160a01b0382166000908152601b602052604090205481151560ff909116151503620007f25760405162461bcd60e51b815260206004820152603d60248201527f536576656e20446561646c792053696e733a204163636f756e7420697320616c60448201527f7265616479207468652076616c7565206f6620276578636c75646564270000006064820152608401620006a1565b8015620008bf576001600160a01b0382166000908152600260205260409020541562000856576001600160a01b0382166000908152600260205260409020546200083c9062000a40565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055620009f6565b60005b601d54811015620009f457826001600160a01b0316601d8281548110620008ed57620008ed62000e15565b6000918252602090912001546001600160a01b031603620009df57601d80546200091a9060019062000d97565b815481106200092d576200092d62000e15565b600091825260209091200154601d80546001600160a01b0390921691839081106200095c576200095c62000e15565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d805480620009b757620009b762000e2b565b600082815260209020810160001990810180546001600160a01b0319169055019055620009f4565b80620009eb8162000e41565b915050620008c2565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa98260405162000a34911515815260200190565b60405180910390a25050565b600060055482111562000abc5760405162461bcd60e51b815260206004820152603d60248201527f536576656e20446561646c792053696e733a20416d6f756e74206d757374206260448201527f65206c657373207468616e20746f74616c207265666c656374696f6e730000006064820152608401620006a1565b600062000ac862000add565b905062000ad6818462000dd3565b9392505050565b6000808062000aeb62000b10565b9150915062000b09818362000cce60201b62001e781790919060201c565b9250505090565b60055460009081906a05ca4ec2a79a7f67000000825b601d5481101562000c89578260026000601d848154811062000b4c5762000b4c62000e15565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000bbb57508160036000601d848154811062000b945762000b9462000e15565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000bda575050600554936a05ca4ec2a79a7f670000009350915050565b60026000601d838154811062000bf45762000bf462000e15565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000c25908462000d97565b925060036000601d838154811062000c415762000c4162000e15565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000c72908362000d97565b91508062000c808162000e41565b91505062000b26565b506a05ca4ec2a79a7f6700000060055462000ca5919062000dd3565b82101562000cc5575050600554926a05ca4ec2a79a7f6700000092509050565b90939092509050565b600062000ad683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d1860201b60201c565b6000818362000d3c5760405162461bcd60e51b8152600401620006a1919062000e5d565b50600062000d4b848662000dd3565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000d7c5762000d7c62000d54565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000dac5762000dac62000d81565b500390565b600081600019048311821515161562000dce5762000dce62000d81565b500290565b60008262000de55762000de562000d54565b500490565b60006020828403121562000dfd57600080fd5b81516001600160a01b038116811462000ad657600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820162000e565762000e5662000d81565b5060010190565b600060208083528351808285015260005b8181101562000e8c5785810183015185820160400152820162000e6e565b8181111562000e9f576000604083870101525b50601f01601f1916929092016040019392505050565b608051613eb562000ed160003960006104f20152613eb56000f3fe6080604052600436106102815760003560e01c8063781edb3c1161014f578063aa4bde28116100c1578063d2d7ad831161007a578063d2d7ad8314610815578063d32215761461082b578063d46980161461084b578063dd62ed3e1461086b578063f2fde38b146108b1578063fe017535146108d157600080fd5b8063aa4bde28146106fe578063aee50b1e14610714578063b1ba39ea14610734578063b62496f514610754578063c024666814610784578063cd43e228146107a457600080fd5b80638da5cb5b116101135780638da5cb5b146106345780638ea5220f1461065257806395d89b41146106725780639fad96831461069e578063a457c2d7146106be578063a9059cbb146106de57600080fd5b8063781edb3c1461059e5780637c0a893d146105be57806383672f3e146105de578063880bcbc1146105fe5780638c0b5e221461061e57600080fd5b806327a14fc2116101f357806349bd5a5e116101ac57806349bd5a5e146104e05780634d78fdc61461051457806366164f6f1461053457806370a0823114610549578063715018a61461056957806375f0a8741461057e57600080fd5b806327a14fc21461042f5780632d8381191461044f578063313ce5671461046f57806334cf1fea1461048b57806339509351146104a05780634549b039146104c057600080fd5b806313114a9d1161024557806313114a9d1461035a5780631694505e1461037957806318160ddd146103b15780631cd348c0146103cf5780631e293c10146103ef57806323b872dd1461040f57600080fd5b80630483f7a01461028d578063064a59d0146102af57806306fdde03146102de578063095ea7b3146103255780630bd05b691461034557600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a83660046138b0565b610917565b005b3480156102bb57600080fd5b506007546102c99060ff1681565b60405190151581526020015b60405180910390f35b3480156102ea57600080fd5b5060408051808201909152601581527454686520536576656e20446561646c792053696e7360581b60208201525b6040516102d591906138e5565b34801561033157600080fd5b506102c961034036600461393a565b610bbe565b34801561035157600080fd5b506102ad610bd5565b34801561036657600080fd5b506006545b6040519081526020016102d5565b34801561038557600080fd5b50600154610399906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b3480156103bd57600080fd5b506a05ca4ec2a79a7f6700000061036b565b3480156103db57600080fd5b50600f54610399906001600160a01b031681565b3480156103fb57600080fd5b506102ad61040a366004613966565b610c21565b34801561041b57600080fd5b506102c961042a36600461397f565b610cf5565b34801561043b57600080fd5b506102ad61044a366004613966565b610d5e565b34801561045b57600080fd5b5061036b61046a366004613966565b610e32565b34801561047b57600080fd5b50604051601281526020016102d5565b34801561049757600080fd5b506102ad610ec9565b3480156104ac57600080fd5b506102c96104bb36600461393a565b610eff565b3480156104cc57600080fd5b5061036b6104db3660046139c0565b610f35565b3480156104ec57600080fd5b506103997f000000000000000000000000000000000000000000000000000000000000000081565b34801561052057600080fd5b506102ad61052f3660046139e3565b611022565b34801561054057600080fd5b506102ad611113565b34801561055557600080fd5b5061036b6105643660046139e3565b61125a565b34801561057557600080fd5b506102ad6112b9565b34801561058a57600080fd5b50600e54610399906001600160a01b031681565b3480156105aa57600080fd5b506102ad6105b93660046138b0565b61132d565b3480156105ca57600080fd5b506102ad6105d93660046139e3565b6113ef565b3480156105ea57600080fd5b506102ad6105f9366004613a00565b611567565b34801561060a57600080fd5b506102ad6106193660046138b0565b61193b565b34801561062a57600080fd5b5061036b60095481565b34801561064057600080fd5b506000546001600160a01b0316610399565b34801561065e57600080fd5b50601054610399906001600160a01b031681565b34801561067e57600080fd5b5060408051808201909152600381526253445360e81b6020820152610318565b3480156106aa57600080fd5b506102ad6106b9366004613a6d565b6119fd565b3480156106ca57600080fd5b506102c96106d936600461393a565b611ab4565b3480156106ea57600080fd5b506102c96106f936600461393a565b611b03565b34801561070a57600080fd5b5061036b60085481565b34801561072057600080fd5b506102ad61072f366004613966565b611b10565b34801561074057600080fd5b506102ad61074f366004613a6d565b611bf3565b34801561076057600080fd5b506102c961076f3660046139e3565b601a6020526000908152604090205460ff1681565b34801561079057600080fd5b506102ad61079f3660046138b0565b611c4a565b3480156107b057600080fd5b5060135460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016102d5565b34801561082157600080fd5b5061036b600b5481565b34801561083757600080fd5b506102ad6108463660046138b0565b611d0c565b34801561085757600080fd5b50600d54610399906001600160a01b031681565b34801561087757600080fd5b5061036b610886366004613ad2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108bd57600080fd5b506102ad6108cc3660046139e3565b611d8e565b3480156108dd57600080fd5b5060135460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166107e1565b6000546001600160a01b0316331461094a5760405162461bcd60e51b815260040161094190613b0b565b60405180910390fd5b6001600160a01b0382166000908152601b602052604090205481151560ff90911615150361098a5760405162461bcd60e51b815260040161094190613b40565b8015610a52576001600160a01b038216600090815260026020526040902054156109ea576001600160a01b0382166000908152600260205260409020546109d090610e32565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055610b75565b60005b601d54811015610b7357826001600160a01b0316601d8281548110610a7c57610a7c613b9d565b6000918252602090912001546001600160a01b031603610b6157601d8054610aa690600190613bc9565b81548110610ab657610ab6613b9d565b600091825260209091200154601d80546001600160a01b039092169183908110610ae257610ae2613b9d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d805480610b3a57610b3a613be0565b600082815260209020810160001990810180546001600160a01b0319169055019055610b73565b80610b6b81613bf6565b915050610a55565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610bb2911515815260200190565b60405180910390a25050565b6000610bcb338484611eba565b5060015b92915050565b6000546001600160a01b03163314610bff5760405162461bcd60e51b815260040161094190613b0b565b6007805460ff19166001179055601554600003610c1f5742601555436014555b565b6000546001600160a01b03163314610c4b5760405162461bcd60e51b815260040161094190613b0b565b6009548103610cc25760405162461bcd60e51b815260206004820152603a60248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d61785478416d6f756e7420746f2073616d652076616c75650000000000006064820152608401610941565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610d02848484611fde565b610d548433610d4f85604051806060016040528060288152602001613e13602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061254c565b611eba565b5060019392505050565b6000546001600160a01b03163314610d885760405162461bcd60e51b815260040161094190613b0b565b6008548103610dff5760405162461bcd60e51b815260206004820152603e60248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d617857616c6c6574416d6f756e7420746f2073616d652076616c756500006064820152608401610941565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b6000600554821115610eac5760405162461bcd60e51b815260206004820152603d60248201527f536576656e20446561646c792053696e733a20416d6f756e74206d757374206260448201527f65206c657373207468616e20746f74616c207265666c656374696f6e730000006064820152608401610941565b6000610eb6612586565b9050610ec28184613c25565b9392505050565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161094190613b0b565b6007805460ff19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bcb918590610d4f90866125a9565b60006a05ca4ec2a79a7f67000000831115610fad5760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20416d6f756e74206d757374206260448201527165206c657373207468616e20737570706c7960701b6064820152608401610941565b6000610fb7612586565b90506000610fc58286613c39565b905083610fd5579150610bcf9050565b601e546000908390606490610ff490600160281b900460ff1689613c39565b610ffe9190613c25565b6110089190613c39565b905060006110168284613bc9565b9450610bcf9350505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03811660009081526016602052604090205460ff166110c65760405162461bcd60e51b815260206004820152602960248201527f536576656e20446561646c792053696e733a204163636f756e74206973206e6f6044820152681d08189b18dbdad95960ba1b6064820152608401610941565b6001600160a01b038116600081815260166020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b0316331461113d5760405162461bcd60e51b815260040161094190613b0b565b600047116111b35760405162461bcd60e51b815260206004820152603960248201527f536576656e20446561646c792053696e733a2043616e6e6f742073656e64206d60448201527f6f7265207468616e20636f6e74726163742062616c616e6365000000000000006064820152608401610941565b4760006111c86000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508015611256576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b0381166000908152601b602052604081205460ff161561129757506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610bcf90610e32565b6000546001600160a01b031633146112e35760405162461bcd60e51b815260040161094190613b0b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113575760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526018602052604090205481151560ff9091161515036113975760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610bb2565b6000546001600160a01b031633146114195760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03811660009081526016602052604090205460ff16156114985760405162461bcd60e51b815260206004820152602d60248201527f536576656e20446561646c792053696e733a204163636f756e7420697320616c60448201526c1c9958591e48189b1bd8dad959609a1b6064820152608401610941565b6203f480601554426114aa9190613bc9565b106115155760405162461bcd60e51b815260206004820152603560248201527f536576656e20446561646c792053696e733a2054696d6520746f20626c6f636b604482015274081858d8dbdd5b9d1cc81a185cc8195e1c1a5c9959605a1b6064820152608401610941565b6001600160a01b038116600081815260166020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b031633146115915760405162461bcd60e51b815260040161094190613b0b565b600d546001600160a01b0385811691161461167e576001600160a01b0384166116175760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20546865206c6971756964697479604482015271057616c6c65742063616e6e6f7420626520360741b6064820152608401610941565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f0160405190819003812090600080516020613df383398151915290600090a4600d80546001600160a01b0319166001600160a01b0386161790555b600e546001600160a01b0384811691161461176b576001600160a01b0383166117045760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20546865206d61726b6574696e67604482015271057616c6c65742063616e6e6f7420626520360741b6064820152608401610941565b600e546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691851690600f0160405190819003812090600080516020613df383398151915290600090a4600e80546001600160a01b0319166001600160a01b0385161790555b6010546001600160a01b0383811691161461184c576001600160a01b0382166117eb5760405162461bcd60e51b815260206004820152602c60248201527f536576656e20446561646c792053696e733a205468652064657657616c6c657460448201526b02063616e6e6f7420626520360a41b6064820152608401610941565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b039182169184169060090160405190819003812090600080516020613df383398151915290600090a4601080546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b03828116911614611935576001600160a01b0381166118d05760405162461bcd60e51b815260206004820152603060248201527f536576656e20446561646c792053696e733a20546865206275794261636b576160448201526f06c6c65742063616e6e6f7420626520360841b6064820152608401610941565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d0160405190819003812090600080516020613df383398151915290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b031633146119655760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526019602052604090205481151560ff9091161515036119a55760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610bb2565b6000546001600160a01b03163314611a275760405162461bcd60e51b815260040161094190613b0b565b611a3660118686868686612608565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610bcb3384610d4f85604051806060016040528060258152602001613e5b602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061254c565b6000610bcb338484611fde565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161094190613b0b565b600b548103611bc05760405162461bcd60e51b815260206004820152604660248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d696e696d756d546f6b656e734265666f72655377617020746f2073616d656064820152652076616c756560d01b608482015260a401610941565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611c1d5760405162461bcd60e51b815260040161094190613b0b565b611c2c601186868686866128ec565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01611a4f565b6000546001600160a01b03163314611c745760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611cb45760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610bb2565b6000546001600160a01b03163314611d365760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610bb2565b6000546001600160a01b03163314611db85760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b038116611e1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610941565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ec283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bec565b6001600160a01b038316611f1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610941565b6001600160a01b038216611f7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610941565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610941565b6001600160a01b0382166120a45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610941565b600081116121065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610941565b61210f8361125a565b81111561217b5760405162461bcd60e51b815260206004820152603460248201527f536576656e20446561646c792053696e733a2043616e6e6f74207472616e73666044820152736572206d6f7265207468616e2062616c616e636560601b6064820152608401610941565b6001600160a01b038084166000818152601a6020908152604080832054948716835280832054938352601c90915290205460ff9283169291821691161580156121dd57506001600160a01b0384166000908152601c602052604090205460ff16155b156124395760075460ff1661224e5760405162461bcd60e51b815260206004820152603160248201527f536576656e20446561646c792053696e733a2054726164696e67206973206375604482015270393932b73a363c903234b9b0b13632b21760791b6064820152608401610941565b6001600160a01b03841660009081526016602052604090205460ff16156122875760405162461bcd60e51b815260040161094190613c58565b6001600160a01b03851660009081526016602052604090205460ff16156122c05760405162461bcd60e51b815260040161094190613c58565b6001600160a01b03841660009081526019602052604090205460ff1615801561230257506001600160a01b03851660009081526019602052604090205460ff16155b1561237f5760095483111561237f5760405162461bcd60e51b815260206004820152603b60248201527f536576656e20446561646c792053696e733a205472616e7366657220616d6f7560448201527f6e74206578636565647320746865206d61785478416d6f756e742e00000000006064820152608401610941565b6001600160a01b03841660009081526018602052604090205460ff1661243957600854836123ac8661125a565b6123b69190613c9d565b11156124395760405162461bcd60e51b815260206004820152604660248201527f536576656e20446561646c792053696e733a2045787065637465642077616c6c60448201527f657420616d6f756e74206578636565647320746865206d617857616c6c65744160648201526536b7bab73a1760d11b608482015260a401610941565b6124438282612c1a565b6000600b546124513061125a565b600754911115915060ff1680156124655750805b80156124745750600a5460ff16155b801561248b5750601e54600160281b900460ff1615155b80156124af57506001600160a01b0385166000908152601a602052604090205460ff165b156124d457600a805460ff191660011790556124c9612e63565b600a805460ff191690555b600a5460009060ff161580156124ec575060075460ff165b6001600160a01b03881660009081526017602052604090205490915060ff168061252e57506001600160a01b03861660009081526017602052604090205460ff165b15612537575060005b61254387878784613155565b50505050505050565b600081848411156125705760405162461bcd60e51b815260040161094191906138e5565b50600061257d8486613bc9565b95945050505050565b6000806000612593613326565b90925090506125a28282611e78565b9250505090565b6000806125b68385613c9d565b905083811015610ec25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610941565b600286015460ff86811691161461268957604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff9182169291891691600080516020613e3b8339815191529161266f9160481b90613cb5565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461271d57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff6201000090920482169291881691600080516020613e3b833981519152916126fc9160481b90613cb5565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b90920416146127b0576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b90920482169291871691600080516020613e3b8339815191529161278c9160481b90613cb5565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b9092041614612849576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b90920482169291861691600080516020613e3b833981519152916128239160481b90613cb5565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b90920416146128e4576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b90920482169291851691600080516020613e3b833981519152916128bc9160481b90613cb5565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff868116610100909204161461297d57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff61010090920482169291891691600080516020613e3b8339815191529161295e9160481b90613cb5565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612a1657604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff630100000090920482169291881691600080516020613e3b833981519152916129f39160481b90613cb5565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612aab576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b90920482169291871691600080516020613e3b83398151915291612a869160481b90613cb5565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612b46576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b90920482169291861691600080516020613e3b83398151915291612b1f9160481b90613cb5565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b90920416146128e4576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b90920482169291851691600080516020613e3b83398151915291612bba9160481b90613cb5565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b60008183612c0d5760405162461bcd60e51b815260040161094191906138e5565b50600061257d8486613c25565b601e805464ffffffffff191690558115612ccc57600560145443612c3e9190613bc9565b11612c5557601e805460ff19166064179055612ccc565b601354601e805460ff80841662ff00ff1990921691909117600160201b8085048316620100009081029290921763ff00ff00191661010092860484169290920263ff000000191691909117600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b8015612d7457601354601e805461010080840460ff90811662ff00ff1990931692909217600160281b8504831662010000021763ff00ff001916630100000080860484169290920263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790556015546203f48090612d599042613bc9565b11612d7457601e805464ffffffffff1916640208030a021790555b601e5460ff600160201b820481169163010000008104821691620100008204811691612da891610100820481169116613ccc565b612db29190613ccc565b612dbc9190613ccc565b612dc69190613ccc565b601e805465ff0000000000198116600160281b60ff948516810291821793849055604080519386169286169290921783526101008404851660208401526201000084048516918301919091526301000000830484166060830152600160201b83048416608083015290910490911660a08201527f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29060c00161124d565b6000612e6e3061125a565b601e54909150479060ff600160281b820481169181811691610100820481169162010000810482169163010000008204811691600160201b9004166000600287612eb8888c613c39565b612ec29190613c25565b612ecc9190613c25565b90506000612eda828b613bc9565b9050612ee5816134cb565b6000612ef18a47613bc9565b9050600084612f0160028b613cf1565b612f0b908c613d13565b612f159190613d13565b60ff16905060006002828b60ff1685612f2e9190613c39565b612f389190613c25565b612f429190613c25565b9050600082612f5460ff8b1686613c39565b612f5e9190613c25565b9050600083612f7060ff8b1687613c39565b612f7a9190613c25565b9050600081612f898486613c9d565b612f939190613c9d565b612f9d9087613bc9565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612fd8573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613013573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561304e573d6000803e3d6000fd5b5087156130a15761305f888561361d565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b8d601e60056101000a81548160ff021916908360ff1602179055508c601e60006101000a81548160ff021916908360ff1602179055508b601e60016101000a81548160ff021916908360ff1602179055508a601e60026101000a81548160ff021916908360ff16021790555089601e60036101000a81548160ff021916908360ff16021790555088601e60046101000a81548160ff021916908360ff16021790555050505050505050505050505050505050565b600080600061316485856136d1565b92509250925060008060008061318389878761317e612586565b61379b565b6001600160a01b038f166000908152601b60205260409020549397509195509350915060ff16156131ec576001600160a01b038b166000908152600360205260409020546131d2908a90613bc9565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a166000908152601b602052604090205460ff161561324b576001600160a01b038a16600090815260036020526040902054613231908890613c9d565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b1660009081526002602052604090205461326f908590613bc9565b6001600160a01b03808d1660009081526002602052604080822093909355908c168152205461329f908490613c9d565b6001600160a01b038b166000908152600260205260409020556132c281866137f3565b6132cc8287613858565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161331191815260200190565b60405180910390a35050505050505050505050565b60055460009081906a05ca4ec2a79a7f67000000825b601d54811015613489578260026000601d848154811061335e5761335e613b9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806133c957508160036000601d84815481106133a2576133a2613b9d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156133e7575050600554936a05ca4ec2a79a7f670000009350915050565b60026000601d83815481106133fe576133fe613b9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461342d9084613bc9565b925060036000601d838154811061344657613446613b9d565b60009182526020808320909101546001600160a01b031683528201929092526040019020546134759083613bc9565b91508061348181613bf6565b91505061333c565b506a05ca4ec2a79a7f670000006005546134a39190613c25565b8210156134c2575050600554926a05ca4ec2a79a7f6700000092509050565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061350057613500613b9d565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357d9190613d36565b8160018151811061359057613590613b9d565b6001600160a01b0392831660209182029290920101526001546135b69130911684611eba565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906135ef908590600090869030904290600401613d53565b600060405180830381600087803b15801561360957600080fd5b505af11580156128e4573d6000803e3d6000fd5b6001546136359030906001600160a01b031684611eba565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156136a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136ca9190613dc4565b5050505050565b6000806000836136e957508391506000905080613794565b601e5460009060649061370690600160201b900460ff1688613c39565b6137109190613c25565b601e5490915060009060649060ff6301000000820481169161010081048216916137439162010000810482169116613ccc565b61374d9190613ccc565b6137579190613ccc565b6137649060ff1689613c39565b61376e9190613c25565b9050600061377c8284613c9d565b6137869089613bc9565b955091935091506137949050565b9250925092565b6000808080806137ab868a613c39565b905060006137b9878a613c39565b905060006137c7888a613c39565b905060006137d58284613c9d565b6137df9085613bc9565b939c939b5091995097509095505050505050565b306000908152601b602052604090205460ff161561383057306000908152600360205260408120805483929061382a908490613c9d565b90915550505b306000908152600260205260408120805484929061384f908490613c9d565b90915550505050565b816005600082825461386a9190613bc9565b92505081905550806006600082825461384f9190613c9d565b6001600160a01b038116811461389857600080fd5b50565b803580151581146138ab57600080fd5b919050565b600080604083850312156138c357600080fd5b82356138ce81613883565b91506138dc6020840161389b565b90509250929050565b600060208083528351808285015260005b81811015613912578581018301518582016040015282016138f6565b81811115613924576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561394d57600080fd5b823561395881613883565b946020939093013593505050565b60006020828403121561397857600080fd5b5035919050565b60008060006060848603121561399457600080fd5b833561399f81613883565b925060208401356139af81613883565b929592945050506040919091013590565b600080604083850312156139d357600080fd5b823591506138dc6020840161389b565b6000602082840312156139f557600080fd5b8135610ec281613883565b60008060008060808587031215613a1657600080fd5b8435613a2181613883565b93506020850135613a3181613883565b92506040850135613a4181613883565b91506060850135613a5181613883565b939692955090935050565b803560ff811681146138ab57600080fd5b600080600080600060a08688031215613a8557600080fd5b613a8e86613a5c565b9450613a9c60208701613a5c565b9350613aaa60408701613a5c565b9250613ab860608701613a5c565b9150613ac660808701613a5c565b90509295509295909350565b60008060408385031215613ae557600080fd5b8235613af081613883565b91506020830135613b0081613883565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f536576656e20446561646c792053696e733a204163636f756e7420697320616c60408201527f7265616479207468652076616c7565206f6620276578636c7564656427000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613bdb57613bdb613bb3565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201613c0857613c08613bb3565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613c3457613c34613c0f565b500490565b6000816000190483118215151615613c5357613c53613bb3565b500290565b60208082526025908201527f536576656e20446561646c792053696e733a204163636f756e7420697320626c6040820152641bd8dad95960da1b606082015260800190565b60008219821115613cb057613cb0613bb3565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff03821115613ce957613ce9613bb3565b019392505050565b600060ff831680613d0457613d04613c0f565b8060ff84160491505092915050565b600060ff821660ff841680821015613d2d57613d2d613bb3565b90039392505050565b600060208284031215613d4857600080fd5b8151610ec281613883565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613da35784516001600160a01b031683529383019391830191600101613d7e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613dd957600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201779630db5889baaa1c50bd954c983d4bee7bb54f01e27d16ac3033f9f0a249164736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063781edb3c1161014f578063aa4bde28116100c1578063d2d7ad831161007a578063d2d7ad8314610815578063d32215761461082b578063d46980161461084b578063dd62ed3e1461086b578063f2fde38b146108b1578063fe017535146108d157600080fd5b8063aa4bde28146106fe578063aee50b1e14610714578063b1ba39ea14610734578063b62496f514610754578063c024666814610784578063cd43e228146107a457600080fd5b80638da5cb5b116101135780638da5cb5b146106345780638ea5220f1461065257806395d89b41146106725780639fad96831461069e578063a457c2d7146106be578063a9059cbb146106de57600080fd5b8063781edb3c1461059e5780637c0a893d146105be57806383672f3e146105de578063880bcbc1146105fe5780638c0b5e221461061e57600080fd5b806327a14fc2116101f357806349bd5a5e116101ac57806349bd5a5e146104e05780634d78fdc61461051457806366164f6f1461053457806370a0823114610549578063715018a61461056957806375f0a8741461057e57600080fd5b806327a14fc21461042f5780632d8381191461044f578063313ce5671461046f57806334cf1fea1461048b57806339509351146104a05780634549b039146104c057600080fd5b806313114a9d1161024557806313114a9d1461035a5780631694505e1461037957806318160ddd146103b15780631cd348c0146103cf5780631e293c10146103ef57806323b872dd1461040f57600080fd5b80630483f7a01461028d578063064a59d0146102af57806306fdde03146102de578063095ea7b3146103255780630bd05b691461034557600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a83660046138b0565b610917565b005b3480156102bb57600080fd5b506007546102c99060ff1681565b60405190151581526020015b60405180910390f35b3480156102ea57600080fd5b5060408051808201909152601581527454686520536576656e20446561646c792053696e7360581b60208201525b6040516102d591906138e5565b34801561033157600080fd5b506102c961034036600461393a565b610bbe565b34801561035157600080fd5b506102ad610bd5565b34801561036657600080fd5b506006545b6040519081526020016102d5565b34801561038557600080fd5b50600154610399906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b3480156103bd57600080fd5b506a05ca4ec2a79a7f6700000061036b565b3480156103db57600080fd5b50600f54610399906001600160a01b031681565b3480156103fb57600080fd5b506102ad61040a366004613966565b610c21565b34801561041b57600080fd5b506102c961042a36600461397f565b610cf5565b34801561043b57600080fd5b506102ad61044a366004613966565b610d5e565b34801561045b57600080fd5b5061036b61046a366004613966565b610e32565b34801561047b57600080fd5b50604051601281526020016102d5565b34801561049757600080fd5b506102ad610ec9565b3480156104ac57600080fd5b506102c96104bb36600461393a565b610eff565b3480156104cc57600080fd5b5061036b6104db3660046139c0565b610f35565b3480156104ec57600080fd5b506103997f00000000000000000000000066be246a996dd92ba6077d51f50d0c525174aead81565b34801561052057600080fd5b506102ad61052f3660046139e3565b611022565b34801561054057600080fd5b506102ad611113565b34801561055557600080fd5b5061036b6105643660046139e3565b61125a565b34801561057557600080fd5b506102ad6112b9565b34801561058a57600080fd5b50600e54610399906001600160a01b031681565b3480156105aa57600080fd5b506102ad6105b93660046138b0565b61132d565b3480156105ca57600080fd5b506102ad6105d93660046139e3565b6113ef565b3480156105ea57600080fd5b506102ad6105f9366004613a00565b611567565b34801561060a57600080fd5b506102ad6106193660046138b0565b61193b565b34801561062a57600080fd5b5061036b60095481565b34801561064057600080fd5b506000546001600160a01b0316610399565b34801561065e57600080fd5b50601054610399906001600160a01b031681565b34801561067e57600080fd5b5060408051808201909152600381526253445360e81b6020820152610318565b3480156106aa57600080fd5b506102ad6106b9366004613a6d565b6119fd565b3480156106ca57600080fd5b506102c96106d936600461393a565b611ab4565b3480156106ea57600080fd5b506102c96106f936600461393a565b611b03565b34801561070a57600080fd5b5061036b60085481565b34801561072057600080fd5b506102ad61072f366004613966565b611b10565b34801561074057600080fd5b506102ad61074f366004613a6d565b611bf3565b34801561076057600080fd5b506102c961076f3660046139e3565b601a6020526000908152604090205460ff1681565b34801561079057600080fd5b506102ad61079f3660046138b0565b611c4a565b3480156107b057600080fd5b5060135460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016102d5565b34801561082157600080fd5b5061036b600b5481565b34801561083757600080fd5b506102ad6108463660046138b0565b611d0c565b34801561085757600080fd5b50600d54610399906001600160a01b031681565b34801561087757600080fd5b5061036b610886366004613ad2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108bd57600080fd5b506102ad6108cc3660046139e3565b611d8e565b3480156108dd57600080fd5b5060135460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166107e1565b6000546001600160a01b0316331461094a5760405162461bcd60e51b815260040161094190613b0b565b60405180910390fd5b6001600160a01b0382166000908152601b602052604090205481151560ff90911615150361098a5760405162461bcd60e51b815260040161094190613b40565b8015610a52576001600160a01b038216600090815260026020526040902054156109ea576001600160a01b0382166000908152600260205260409020546109d090610e32565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055610b75565b60005b601d54811015610b7357826001600160a01b0316601d8281548110610a7c57610a7c613b9d565b6000918252602090912001546001600160a01b031603610b6157601d8054610aa690600190613bc9565b81548110610ab657610ab6613b9d565b600091825260209091200154601d80546001600160a01b039092169183908110610ae257610ae2613b9d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d805480610b3a57610b3a613be0565b600082815260209020810160001990810180546001600160a01b0319169055019055610b73565b80610b6b81613bf6565b915050610a55565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610bb2911515815260200190565b60405180910390a25050565b6000610bcb338484611eba565b5060015b92915050565b6000546001600160a01b03163314610bff5760405162461bcd60e51b815260040161094190613b0b565b6007805460ff19166001179055601554600003610c1f5742601555436014555b565b6000546001600160a01b03163314610c4b5760405162461bcd60e51b815260040161094190613b0b565b6009548103610cc25760405162461bcd60e51b815260206004820152603a60248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d61785478416d6f756e7420746f2073616d652076616c75650000000000006064820152608401610941565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610d02848484611fde565b610d548433610d4f85604051806060016040528060288152602001613e13602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061254c565b611eba565b5060019392505050565b6000546001600160a01b03163314610d885760405162461bcd60e51b815260040161094190613b0b565b6008548103610dff5760405162461bcd60e51b815260206004820152603e60248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d617857616c6c6574416d6f756e7420746f2073616d652076616c756500006064820152608401610941565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b6000600554821115610eac5760405162461bcd60e51b815260206004820152603d60248201527f536576656e20446561646c792053696e733a20416d6f756e74206d757374206260448201527f65206c657373207468616e20746f74616c207265666c656374696f6e730000006064820152608401610941565b6000610eb6612586565b9050610ec28184613c25565b9392505050565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161094190613b0b565b6007805460ff19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bcb918590610d4f90866125a9565b60006a05ca4ec2a79a7f67000000831115610fad5760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20416d6f756e74206d757374206260448201527165206c657373207468616e20737570706c7960701b6064820152608401610941565b6000610fb7612586565b90506000610fc58286613c39565b905083610fd5579150610bcf9050565b601e546000908390606490610ff490600160281b900460ff1689613c39565b610ffe9190613c25565b6110089190613c39565b905060006110168284613bc9565b9450610bcf9350505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03811660009081526016602052604090205460ff166110c65760405162461bcd60e51b815260206004820152602960248201527f536576656e20446561646c792053696e733a204163636f756e74206973206e6f6044820152681d08189b18dbdad95960ba1b6064820152608401610941565b6001600160a01b038116600081815260166020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b0316331461113d5760405162461bcd60e51b815260040161094190613b0b565b600047116111b35760405162461bcd60e51b815260206004820152603960248201527f536576656e20446561646c792053696e733a2043616e6e6f742073656e64206d60448201527f6f7265207468616e20636f6e74726163742062616c616e6365000000000000006064820152608401610941565b4760006111c86000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611212576040519150601f19603f3d011682016040523d82523d6000602084013e611217565b606091505b505090508015611256576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b0381166000908152601b602052604081205460ff161561129757506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610bcf90610e32565b6000546001600160a01b031633146112e35760405162461bcd60e51b815260040161094190613b0b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113575760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526018602052604090205481151560ff9091161515036113975760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610bb2565b6000546001600160a01b031633146114195760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03811660009081526016602052604090205460ff16156114985760405162461bcd60e51b815260206004820152602d60248201527f536576656e20446561646c792053696e733a204163636f756e7420697320616c60448201526c1c9958591e48189b1bd8dad959609a1b6064820152608401610941565b6203f480601554426114aa9190613bc9565b106115155760405162461bcd60e51b815260206004820152603560248201527f536576656e20446561646c792053696e733a2054696d6520746f20626c6f636b604482015274081858d8dbdd5b9d1cc81a185cc8195e1c1a5c9959605a1b6064820152608401610941565b6001600160a01b038116600081815260166020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b031633146115915760405162461bcd60e51b815260040161094190613b0b565b600d546001600160a01b0385811691161461167e576001600160a01b0384166116175760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20546865206c6971756964697479604482015271057616c6c65742063616e6e6f7420626520360741b6064820152608401610941565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f0160405190819003812090600080516020613df383398151915290600090a4600d80546001600160a01b0319166001600160a01b0386161790555b600e546001600160a01b0384811691161461176b576001600160a01b0383166117045760405162461bcd60e51b815260206004820152603260248201527f536576656e20446561646c792053696e733a20546865206d61726b6574696e67604482015271057616c6c65742063616e6e6f7420626520360741b6064820152608401610941565b600e546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691851690600f0160405190819003812090600080516020613df383398151915290600090a4600e80546001600160a01b0319166001600160a01b0385161790555b6010546001600160a01b0383811691161461184c576001600160a01b0382166117eb5760405162461bcd60e51b815260206004820152602c60248201527f536576656e20446561646c792053696e733a205468652064657657616c6c657460448201526b02063616e6e6f7420626520360a41b6064820152608401610941565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b039182169184169060090160405190819003812090600080516020613df383398151915290600090a4601080546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b03828116911614611935576001600160a01b0381166118d05760405162461bcd60e51b815260206004820152603060248201527f536576656e20446561646c792053696e733a20546865206275794261636b576160448201526f06c6c65742063616e6e6f7420626520360841b6064820152608401610941565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d0160405190819003812090600080516020613df383398151915290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b031633146119655760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526019602052604090205481151560ff9091161515036119a55760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610bb2565b6000546001600160a01b03163314611a275760405162461bcd60e51b815260040161094190613b0b565b611a3660118686868686612608565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610bcb3384610d4f85604051806060016040528060258152602001613e5b602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061254c565b6000610bcb338484611fde565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161094190613b0b565b600b548103611bc05760405162461bcd60e51b815260206004820152604660248201527f536576656e20446561646c792053696e733a2043616e6e6f742075706461746560448201527f206d696e696d756d546f6b656e734265666f72655377617020746f2073616d656064820152652076616c756560d01b608482015260a401610941565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611c1d5760405162461bcd60e51b815260040161094190613b0b565b611c2c601186868686866128ec565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01611a4f565b6000546001600160a01b03163314611c745760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611cb45760405162461bcd60e51b815260040161094190613b40565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610bb2565b6000546001600160a01b03163314611d365760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610bb2565b6000546001600160a01b03163314611db85760405162461bcd60e51b815260040161094190613b0b565b6001600160a01b038116611e1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610941565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ec283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bec565b6001600160a01b038316611f1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610941565b6001600160a01b038216611f7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610941565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610941565b6001600160a01b0382166120a45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610941565b600081116121065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610941565b61210f8361125a565b81111561217b5760405162461bcd60e51b815260206004820152603460248201527f536576656e20446561646c792053696e733a2043616e6e6f74207472616e73666044820152736572206d6f7265207468616e2062616c616e636560601b6064820152608401610941565b6001600160a01b038084166000818152601a6020908152604080832054948716835280832054938352601c90915290205460ff9283169291821691161580156121dd57506001600160a01b0384166000908152601c602052604090205460ff16155b156124395760075460ff1661224e5760405162461bcd60e51b815260206004820152603160248201527f536576656e20446561646c792053696e733a2054726164696e67206973206375604482015270393932b73a363c903234b9b0b13632b21760791b6064820152608401610941565b6001600160a01b03841660009081526016602052604090205460ff16156122875760405162461bcd60e51b815260040161094190613c58565b6001600160a01b03851660009081526016602052604090205460ff16156122c05760405162461bcd60e51b815260040161094190613c58565b6001600160a01b03841660009081526019602052604090205460ff1615801561230257506001600160a01b03851660009081526019602052604090205460ff16155b1561237f5760095483111561237f5760405162461bcd60e51b815260206004820152603b60248201527f536576656e20446561646c792053696e733a205472616e7366657220616d6f7560448201527f6e74206578636565647320746865206d61785478416d6f756e742e00000000006064820152608401610941565b6001600160a01b03841660009081526018602052604090205460ff1661243957600854836123ac8661125a565b6123b69190613c9d565b11156124395760405162461bcd60e51b815260206004820152604660248201527f536576656e20446561646c792053696e733a2045787065637465642077616c6c60448201527f657420616d6f756e74206578636565647320746865206d617857616c6c65744160648201526536b7bab73a1760d11b608482015260a401610941565b6124438282612c1a565b6000600b546124513061125a565b600754911115915060ff1680156124655750805b80156124745750600a5460ff16155b801561248b5750601e54600160281b900460ff1615155b80156124af57506001600160a01b0385166000908152601a602052604090205460ff165b156124d457600a805460ff191660011790556124c9612e63565b600a805460ff191690555b600a5460009060ff161580156124ec575060075460ff165b6001600160a01b03881660009081526017602052604090205490915060ff168061252e57506001600160a01b03861660009081526017602052604090205460ff165b15612537575060005b61254387878784613155565b50505050505050565b600081848411156125705760405162461bcd60e51b815260040161094191906138e5565b50600061257d8486613bc9565b95945050505050565b6000806000612593613326565b90925090506125a28282611e78565b9250505090565b6000806125b68385613c9d565b905083811015610ec25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610941565b600286015460ff86811691161461268957604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff9182169291891691600080516020613e3b8339815191529161266f9160481b90613cb5565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461271d57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff6201000090920482169291881691600080516020613e3b833981519152916126fc9160481b90613cb5565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b90920416146127b0576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b90920482169291871691600080516020613e3b8339815191529161278c9160481b90613cb5565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b9092041614612849576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b90920482169291861691600080516020613e3b833981519152916128239160481b90613cb5565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b90920416146128e4576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b90920482169291851691600080516020613e3b833981519152916128bc9160481b90613cb5565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff868116610100909204161461297d57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff61010090920482169291891691600080516020613e3b8339815191529161295e9160481b90613cb5565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612a1657604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff630100000090920482169291881691600080516020613e3b833981519152916129f39160481b90613cb5565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612aab576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b90920482169291871691600080516020613e3b83398151915291612a869160481b90613cb5565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612b46576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b90920482169291861691600080516020613e3b83398151915291612b1f9160481b90613cb5565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b90920416146128e4576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b90920482169291851691600080516020613e3b83398151915291612bba9160481b90613cb5565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b60008183612c0d5760405162461bcd60e51b815260040161094191906138e5565b50600061257d8486613c25565b601e805464ffffffffff191690558115612ccc57600560145443612c3e9190613bc9565b11612c5557601e805460ff19166064179055612ccc565b601354601e805460ff80841662ff00ff1990921691909117600160201b8085048316620100009081029290921763ff00ff00191661010092860484169290920263ff000000191691909117600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b8015612d7457601354601e805461010080840460ff90811662ff00ff1990931692909217600160281b8504831662010000021763ff00ff001916630100000080860484169290920263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790556015546203f48090612d599042613bc9565b11612d7457601e805464ffffffffff1916640208030a021790555b601e5460ff600160201b820481169163010000008104821691620100008204811691612da891610100820481169116613ccc565b612db29190613ccc565b612dbc9190613ccc565b612dc69190613ccc565b601e805465ff0000000000198116600160281b60ff948516810291821793849055604080519386169286169290921783526101008404851660208401526201000084048516918301919091526301000000830484166060830152600160201b83048416608083015290910490911660a08201527f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29060c00161124d565b6000612e6e3061125a565b601e54909150479060ff600160281b820481169181811691610100820481169162010000810482169163010000008204811691600160201b9004166000600287612eb8888c613c39565b612ec29190613c25565b612ecc9190613c25565b90506000612eda828b613bc9565b9050612ee5816134cb565b6000612ef18a47613bc9565b9050600084612f0160028b613cf1565b612f0b908c613d13565b612f159190613d13565b60ff16905060006002828b60ff1685612f2e9190613c39565b612f389190613c25565b612f429190613c25565b9050600082612f5460ff8b1686613c39565b612f5e9190613c25565b9050600083612f7060ff8b1687613c39565b612f7a9190613c25565b9050600081612f898486613c9d565b612f939190613c9d565b612f9d9087613bc9565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612fd8573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613013573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561304e573d6000803e3d6000fd5b5087156130a15761305f888561361d565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b8d601e60056101000a81548160ff021916908360ff1602179055508c601e60006101000a81548160ff021916908360ff1602179055508b601e60016101000a81548160ff021916908360ff1602179055508a601e60026101000a81548160ff021916908360ff16021790555089601e60036101000a81548160ff021916908360ff16021790555088601e60046101000a81548160ff021916908360ff16021790555050505050505050505050505050505050565b600080600061316485856136d1565b92509250925060008060008061318389878761317e612586565b61379b565b6001600160a01b038f166000908152601b60205260409020549397509195509350915060ff16156131ec576001600160a01b038b166000908152600360205260409020546131d2908a90613bc9565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a166000908152601b602052604090205460ff161561324b576001600160a01b038a16600090815260036020526040902054613231908890613c9d565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b1660009081526002602052604090205461326f908590613bc9565b6001600160a01b03808d1660009081526002602052604080822093909355908c168152205461329f908490613c9d565b6001600160a01b038b166000908152600260205260409020556132c281866137f3565b6132cc8287613858565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161331191815260200190565b60405180910390a35050505050505050505050565b60055460009081906a05ca4ec2a79a7f67000000825b601d54811015613489578260026000601d848154811061335e5761335e613b9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806133c957508160036000601d84815481106133a2576133a2613b9d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156133e7575050600554936a05ca4ec2a79a7f670000009350915050565b60026000601d83815481106133fe576133fe613b9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461342d9084613bc9565b925060036000601d838154811061344657613446613b9d565b60009182526020808320909101546001600160a01b031683528201929092526040019020546134759083613bc9565b91508061348181613bf6565b91505061333c565b506a05ca4ec2a79a7f670000006005546134a39190613c25565b8210156134c2575050600554926a05ca4ec2a79a7f6700000092509050565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061350057613500613b9d565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357d9190613d36565b8160018151811061359057613590613b9d565b6001600160a01b0392831660209182029290920101526001546135b69130911684611eba565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906135ef908590600090869030904290600401613d53565b600060405180830381600087803b15801561360957600080fd5b505af11580156128e4573d6000803e3d6000fd5b6001546136359030906001600160a01b031684611eba565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156136a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136ca9190613dc4565b5050505050565b6000806000836136e957508391506000905080613794565b601e5460009060649061370690600160201b900460ff1688613c39565b6137109190613c25565b601e5490915060009060649060ff6301000000820481169161010081048216916137439162010000810482169116613ccc565b61374d9190613ccc565b6137579190613ccc565b6137649060ff1689613c39565b61376e9190613c25565b9050600061377c8284613c9d565b6137869089613bc9565b955091935091506137949050565b9250925092565b6000808080806137ab868a613c39565b905060006137b9878a613c39565b905060006137c7888a613c39565b905060006137d58284613c9d565b6137df9085613bc9565b939c939b5091995097509095505050505050565b306000908152601b602052604090205460ff161561383057306000908152600360205260408120805483929061382a908490613c9d565b90915550505b306000908152600260205260408120805484929061384f908490613c9d565b90915550505050565b816005600082825461386a9190613bc9565b92505081905550806006600082825461384f9190613c9d565b6001600160a01b038116811461389857600080fd5b50565b803580151581146138ab57600080fd5b919050565b600080604083850312156138c357600080fd5b82356138ce81613883565b91506138dc6020840161389b565b90509250929050565b600060208083528351808285015260005b81811015613912578581018301518582016040015282016138f6565b81811115613924576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561394d57600080fd5b823561395881613883565b946020939093013593505050565b60006020828403121561397857600080fd5b5035919050565b60008060006060848603121561399457600080fd5b833561399f81613883565b925060208401356139af81613883565b929592945050506040919091013590565b600080604083850312156139d357600080fd5b823591506138dc6020840161389b565b6000602082840312156139f557600080fd5b8135610ec281613883565b60008060008060808587031215613a1657600080fd5b8435613a2181613883565b93506020850135613a3181613883565b92506040850135613a4181613883565b91506060850135613a5181613883565b939692955090935050565b803560ff811681146138ab57600080fd5b600080600080600060a08688031215613a8557600080fd5b613a8e86613a5c565b9450613a9c60208701613a5c565b9350613aaa60408701613a5c565b9250613ab860608701613a5c565b9150613ac660808701613a5c565b90509295509295909350565b60008060408385031215613ae557600080fd5b8235613af081613883565b91506020830135613b0081613883565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f536576656e20446561646c792053696e733a204163636f756e7420697320616c60408201527f7265616479207468652076616c7565206f6620276578636c7564656427000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613bdb57613bdb613bb3565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201613c0857613c08613bb3565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613c3457613c34613c0f565b500490565b6000816000190483118215151615613c5357613c53613bb3565b500290565b60208082526025908201527f536576656e20446561646c792053696e733a204163636f756e7420697320626c6040820152641bd8dad95960da1b606082015260800190565b60008219821115613cb057613cb0613bb3565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff03821115613ce957613ce9613bb3565b019392505050565b600060ff831680613d0457613d04613c0f565b8060ff84160491505092915050565b600060ff821660ff841680821015613d2d57613d2d613bb3565b90039392505050565b600060208284031215613d4857600080fd5b8151610ec281613883565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613da35784516001600160a01b031683529383019391830191600101613d7e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613dd957600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201779630db5889baaa1c50bd954c983d4bee7bb54f01e27d16ac3033f9f0a249164736f6c634300080d0033

Deployed Bytecode Sourcemap

7419:24518:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18836:771;;;;;;;;;;-1:-1:-1;18836:771:0;;;;;:::i;:::-;;:::i;:::-;;8106:28;;;;;;;;;;-1:-1:-1;8106:28:0;;;;;;;;;;;800:14:1;;793:22;775:41;;763:2;748:18;8106:28:0;;;;;;;;20239:73;;;;;;;;;;-1:-1:-1;20303:5:0;;;;;;;;;;;;-1:-1:-1;;;20303:5:0;;;;20239:73;;;;;;;:::i;12881:141::-;;;;;;;;;;-1:-1:-1;12881:141:0;;;;;:::i;:::-;;:::i;14059:182::-;;;;;;;;;;;;;:::i;20756:77::-;;;;;;;;;;-1:-1:-1;20819:10:0;;20756:77;;;1895:25:1;;;1883:2;1868:18;20756:77:0;1749:177:1;7530:30:0;;;;;;;;;;-1:-1:-1;7530:30:0;;;;-1:-1:-1;;;;;7530:30:0;;;;;;-1:-1:-1;;;;;2110:32:1;;;2092:51;;2080:2;2065:18;7530:30:0;1931:218:1;20476:85:0;;;;;;;;;;-1:-1:-1;8002:16:0;20476:85;;8617:28;;;;;;;;;;-1:-1:-1;8617:28:0;;;;-1:-1:-1;;;;;8617:28:0;;;18581:253;;;;;;;;;;-1:-1:-1;18581:253:0;;;;;:::i;:::-;;:::i;13024:285::-;;;;;;;;;;-1:-1:-1;13024:285:0;;;;;:::i;:::-;;:::i;18320:259::-;;;;;;;;;;-1:-1:-1;18320:259:0;;;;;:::i;:::-;;:::i;21404:240::-;;;;;;;;;;-1:-1:-1;21404:240:0;;;;;:::i;:::-;;:::i;20393:81::-;;;;;;;;;;-1:-1:-1;20393:81:0;;7743:2;3150:36:1;;3138:2;3123:18;20393:81:0;3008:184:1;14243:79:0;;;;;;;;;;;;;:::i;13311:197::-;;;;;;;;;;-1:-1:-1;13311:197:0;;;;;:::i;:::-;;:::i;21646:460::-;;;;;;;;;;-1:-1:-1;21646:460:0;;;;;:::i;:::-;;:::i;7563:38::-;;;;;;;;;;;;;;;14968:214;;;;;;;;;;-1:-1:-1;14968:214:0;;;;;:::i;:::-;;:::i;19919:302::-;;;;;;;;;;;;;:::i;20563:191::-;;;;;;;;;;-1:-1:-1;20563:191:0;;;;;:::i;:::-;;:::i;7060:128::-;;;;;;;;;;;;;:::i;8584:30::-;;;;;;;;;;-1:-1:-1;8584:30:0;;;;-1:-1:-1;;;;;8584:30:0;;;15670:322;;;;;;;;;;-1:-1:-1;15670:322:0;;;;;:::i;:::-;;:::i;14626:340::-;;;;;;;;;;-1:-1:-1;14626:340:0;;;;;:::i;:::-;;:::i;16335:1119::-;;;;;;;;;;-1:-1:-1;16335:1119:0;;;;;:::i;:::-;;:::i;15994:339::-;;;;;;;;;;-1:-1:-1;15994:339:0;;;;;:::i;:::-;;:::i;8279:51::-;;;;;;;;;;;;;;;;6882:67;;;;;;;;;;-1:-1:-1;6920:7:0;6939:6;-1:-1:-1;;;;;6939:6:0;6882:67;;8648:24;;;;;;;;;;-1:-1:-1;8648:24:0;;;;-1:-1:-1;;;;;8648:24:0;;;20314:77;;;;;;;;;;-1:-1:-1;20380:7:0;;;;;;;;;;;;-1:-1:-1;;;20380:7:0;;;;20314:77;;17470:414;;;;;;;;;;-1:-1:-1;17470:414:0;;;;;:::i;:::-;;:::i;13510:248::-;;;;;;;;;;-1:-1:-1;13510:248:0;;;;;:::i;:::-;;:::i;12730:149::-;;;;;;;;;;-1:-1:-1;12730:149:0;;;;;:::i;:::-;;:::i;8181:54::-;;;;;;;;;;;;;;;;19609:308;;;;;;;;;;-1:-1:-1;19609:308:0;;;;;:::i;:::-;;:::i;17886:432::-;;;;;;;;;;-1:-1:-1;17886:432:0;;;;;:::i;:::-;;:::i;9490:58::-;;;;;;;;;;-1:-1:-1;9490:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15383:285;;;;;;;;;;-1:-1:-1;15383:285:0;;;;;:::i;:::-;;:::i;20970:212::-;;;;;;;;;;-1:-1:-1;21064:23:0;;;;;;;21089;;;;;;-1:-1:-1;;;21114:17:0;;;;;-1:-1:-1;;;21133:21:0;;;;;-1:-1:-1;;;21156:21:0;;;;20970:212;;;;5277:4:1;5265:17;;;5247:36;;5319:17;;;5314:2;5299:18;;5292:45;5373:17;;;5353:18;;;5346:45;;;;5427:17;;5422:2;5407:18;;5400:45;5482:17;;;5476:3;5461:19;;5454:46;5234:3;5219:19;20970:212:0;5008:498:1;8408:64:0;;;;;;;;;;;;;;;;15184:197;;;;;;;;;;-1:-1:-1;15184:197:0;;;;;:::i;:::-;;:::i;8551:30::-;;;;;;;;;;-1:-1:-1;8551:30:0;;;;-1:-1:-1;;;;;8551:30:0;;;20835:133;;;;;;;;;;-1:-1:-1;20835:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;20937:18:0;;;20918:7;20937:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20835:133;7194:216;;;;;;;;;;-1:-1:-1;7194:216:0;;;;;:::i;:::-;;:::i;21184:218::-;;;;;;;;;;-1:-1:-1;21279:24:0;;;;;;;;;21305;;;;;;-1:-1:-1;;;21331:18:0;;;;;-1:-1:-1;;;21351:22:0;;;;;-1:-1:-1;;;21375:22:0;;;;21184:218;;18836:771;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18926:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;:45;::::1;;:33;::::0;;::::1;:45;;::::0;18918:119:::1;;;;-1:-1:-1::0;;;18918:119:0::1;;;;;;;:::i;:::-;19043:8;19040:511;;;-1:-1:-1::0;;;;;19059:16:0;::::1;19078:1;19059:16:::0;;;:7:::1;:16;::::0;;;;;:20;19056:88:::1;;-1:-1:-1::0;;;;;19123:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;19103:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;19084:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;19056:88:::1;-1:-1:-1::0;;;;;19146:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:44;;-1:-1:-1;;19146:44:0::1;::::0;::::1;;;::::0;;19193:22:::1;:36:::0;;-1:-1:-1;19193:36:0;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;19193:36:0::1;::::0;;::::1;::::0;;19040:511:::1;;;19247:9;19242:306;19266:22;:29:::0;19262:33;::::1;19242:306;;;19338:7;-1:-1:-1::0;;;;;19309:36:0::1;:22;19332:1;19309:25;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19309:25:0::1;:36:::0;19305:240:::1;;19378:22;19401:29:::0;;:33:::1;::::0;19433:1:::1;::::0;19401:33:::1;:::i;:::-;19378:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;19350:22:::1;:25:::0;;-1:-1:-1;;;;;19378:57:0;;::::1;::::0;19373:1;;19350:25;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:85:::0;;-1:-1:-1;;;;;;19350:85:0::1;-1:-1:-1::0;;;;;19350:85:0;;::::1;;::::0;;19438:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;19461:24:::1;:33:::0;;;;:41;;-1:-1:-1;;19461:41:0::1;::::0;;19505:22:::1;:28:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;19505:28:0;;;;;-1:-1:-1;;;;;;19505:28:0::1;::::0;;;;;19536:5:::1;;19305:240;19297:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19242:306;;;;19040:511;19585:7;-1:-1:-1::0;;;;;19558:45:0::1;;19594:8;19558:45;;;;800:14:1::0;793:22;775:41;;763:2;748:18;;635:187;19558:45:0::1;;;;;;;;18836:771:::0;;:::o;12881:141::-;12956:4;12965:39;6356:10;12988:7;12997:6;12965:8;:39::i;:::-;-1:-1:-1;13014:4:0;12881:141;;;;;:::o;14059:182::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;14108:16:::1;:23:::0;;-1:-1:-1;;14108:23:0::1;14127:4;14108:23;::::0;;14138:16:::1;::::0;14108::::1;14138:21:::0;14134:104:::1;;14183:15;14164:16;:34:::0;14222:12:::1;14201:18;:33:::0;14134:104:::1;14059:182::o:0;18581:253::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;18674:11:::1;;18662:8;:23:::0;18654:94:::1;;;::::0;-1:-1:-1;;;18654:94:0;;7563:2:1;18654:94:0::1;::::0;::::1;7545:21:1::0;7602:2;7582:18;;;7575:30;7641:34;7621:18;;;7614:62;7712:28;7692:18;;;7685:56;7758:19;;18654:94:0::1;7361:422:1::0;18654:94:0::1;18793:11;::::0;18756:49:::1;::::0;18783:8;;18756:49:::1;::::0;;;::::1;18808:11;:22:::0;18581:253::o;13024:285::-;13123:4;13132:36;13142:6;13150:9;13161:6;13132:9;:36::i;:::-;13171:120;13180:6;6356:10;13202:88;13240:6;13202:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13202:19:0;;;;;;:11;:19;;;;;;;;6356:10;13202:33;;;;;;;;;;:37;:88::i;:::-;13171:8;:120::i;:::-;-1:-1:-1;13301:4:0;13024:285;;;;;:::o;18320:259::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;18408:15:::1;;18396:8;:27:::0;18388:102:::1;;;::::0;-1:-1:-1;;;18388:102:0;;7990:2:1;18388:102:0::1;::::0;::::1;7972:21:1::0;8029:2;8009:18;;;8002:30;8068:34;8048:18;;;8041:62;8139:32;8119:18;;;8112:60;8189:19;;18388:102:0::1;7788:426:1::0;18388:102:0::1;18530:15;::::0;18498:48:::1;::::0;18520:8;;18498:48:::1;::::0;;;::::1;18549:15;:26:::0;18320:259::o;21404:240::-;21470:7;21501;;21490;:18;;21482:92;;;;-1:-1:-1;;;21482:92:0;;8421:2:1;21482:92:0;;;8403:21:1;8460:2;8440:18;;;8433:30;8499:34;8479:18;;;8472:62;8570:31;8550:18;;;8543:59;8619:19;;21482:92:0;8219:425:1;21482:92:0;21577:19;21599:10;:8;:10::i;:::-;21577:32;-1:-1:-1;21619:21:0;21577:32;21619:7;:21;:::i;:::-;21612:28;21404:240;-1:-1:-1;;;21404:240:0:o;14243:79::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;14294:16:::1;:24:::0;;-1:-1:-1;;14294:24:0::1;::::0;;14243:79::o;13311:197::-;6356:10;13401:4;13439:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13439:34:0;;;;;;;;;;13401:4;;13409:81;;13431:7;;13439:50;;13478:10;13439:38;:50::i;21646:460::-;21739:7;8002:16;21759:7;:18;;21751:81;;;;-1:-1:-1;;;21751:81:0;;9108:2:1;21751:81:0;;;9090:21:1;9147:2;9127:18;;;9120:30;9186:34;9166:18;;;9159:62;-1:-1:-1;;;9237:18:1;;;9230:48;9295:19;;21751:81:0;8906:414:1;21751:81:0;21835:19;21857:10;:8;:10::i;:::-;21835:32;-1:-1:-1;21870:15:0;21888:21;21835:32;21888:7;:21;:::i;:::-;21870:39;;21917:17;21912:191;;21946:7;-1:-1:-1;21939:14:0;;-1:-1:-1;21939:14:0;21912:191;21997:9;;21967:17;;22015:11;;22009:3;;21987:19;;-1:-1:-1;;;21997:9:0;;;;21987:7;:19;:::i;:::-;:25;;;;:::i;:::-;:39;;;;:::i;:::-;21967:59;-1:-1:-1;22029:23:0;22055:19;21967:59;22055:7;:19;:::i;:::-;22029:45;-1:-1:-1;22077:22:0;;-1:-1:-1;;;;22077:22:0;14968:214;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15039:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;15031:73;;;::::0;-1:-1:-1;;;15031:73:0;;9700:2:1;15031:73:0::1;::::0;::::1;9682:21:1::0;9739:2;9719:18;;;9712:30;9778:34;9758:18;;;9751:62;-1:-1:-1;;;9829:18:1;;;9822:39;9878:19;;15031:73:0::1;9498:405:1::0;15031:73:0::1;-1:-1:-1::0;;;;;15107:19:0;::::1;15129:5;15107:19:::0;;;:10:::1;:19;::::0;;;;;:27;;-1:-1:-1;;15107:27:0::1;::::0;;15142:36;15129:5;;15107:19;15142:36:::1;::::0;15129:5;;15142:36:::1;14968:214:::0;:::o;19919:302::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;20001:1:::1;19977:21;:25;19969:95;;;::::0;-1:-1:-1;;;19969:95:0;;10110:2:1;19969:95:0::1;::::0;::::1;10092:21:1::0;10149:2;10129:18;;;10122:30;10188:34;10168:18;;;10161:62;10259:27;10239:18;;;10232:55;10304:19;;19969:95:0::1;9908:421:1::0;19969:95:0::1;20084:21;20067:14;20134:7;6920::::0;6939:6;-1:-1:-1;;;;;6939:6:0;;6882:67;20134:7:::1;-1:-1:-1::0;;;;;20126:21:0::1;20156:6;20126:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20108:59;;;20174:7;20170:48;;;20190:24;::::0;1895:25:1;;;20190:24:0::1;::::0;1883:2:1;1868:18;20190:24:0::1;;;;;;;;20170:48;19966:255;;19919:302::o:0;20563:191::-;-1:-1:-1;;;;;20645:33:0;;20629:7;20645:33;;;:24;:33;;;;;;;;20641:62;;;-1:-1:-1;;;;;;20687:16:0;;;;;:7;:16;;;;;;;20563:191::o;20641:62::-;-1:-1:-1;;;;;20733:16:0;;;;;;:7;:16;;;;;;20713:37;;:19;:37::i;7060:128::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;7159:1:::1;7143:6:::0;;7122:40:::1;::::0;-1:-1:-1;;;;;7143:6:0;;::::1;::::0;7122:40:::1;::::0;7159:1;;7122:40:::1;7182:1;7165:19:::0;;-1:-1:-1;;;;;;7165:19:0::1;::::0;;7060:128::o;15670:322::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15767:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:50;::::1;;:38;::::0;;::::1;:50;;::::0;15759:124:::1;;;;-1:-1:-1::0;;;15759:124:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15886:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:49;;-1:-1:-1;;15886:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15943:45;;775:41:1;;;15943:45:0::1;::::0;748:18:1;15943:45:0::1;635:187:1::0;14626:340:0;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14696:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;14695:20;14687:78;;;::::0;-1:-1:-1;;;14687:78:0;;10746:2:1;14687:78:0::1;::::0;::::1;10728:21:1::0;10785:2;10765:18;;;10758:30;10824:34;10804:18;;;10797:62;-1:-1:-1;;;10875:18:1;;;10868:43;10928:19;;14687:78:0::1;10544:409:1::0;14687:78:0::1;9170:6;14795:16;;14777:15;:34;;;;:::i;:::-;14776:56;14768:122;;;::::0;-1:-1:-1;;;14768:122:0;;11160:2:1;14768:122:0::1;::::0;::::1;11142:21:1::0;11199:2;11179:18;;;11172:30;11238:34;11218:18;;;11211:62;-1:-1:-1;;;11289:18:1;;;11282:51;11350:19;;14768:122:0::1;10958:417:1::0;14768:122:0::1;-1:-1:-1::0;;;;;14893:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:26;;-1:-1:-1;;14893:26:0::1;14915:4;14893:26:::0;;::::1;::::0;;;14927:35;;14915:4;;14893:19;14927:35:::1;::::0;::::1;14626:340:::0;:::o;16335:1119::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;16484:15:::1;::::0;-1:-1:-1;;;;;16484:37:0;;::::1;:15:::0;::::1;:37;16481:259;;-1:-1:-1::0;;;;;16534:32:0;::::1;16526:95;;;::::0;-1:-1:-1;;;16526:95:0;;11582:2:1;16526:95:0::1;::::0;::::1;11564:21:1::0;11621:2;11601:18;;;11594:30;11660:34;11640:18;;;11633:62;-1:-1:-1;;;11711:18:1;;;11704:48;11769:19;;16526:95:0::1;11380:414:1::0;16526:95:0::1;16681:15;::::0;16629:68:::1;::::0;-1:-1:-1;;;12001:30:1;;-1:-1:-1;;;;;16681:15:0;;::::1;::::0;16629:68;::::1;::::0;12056:2:1;12047:12;16629:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;16629:68:0;;;::::1;16700:15;:36:::0;;-1:-1:-1;;;;;;16700:36:0::1;-1:-1:-1::0;;;;;16700:36:0;::::1;;::::0;;16481:259:::1;16745:15;::::0;-1:-1:-1;;;;;16745:37:0;;::::1;:15:::0;::::1;:37;16742:259;;-1:-1:-1::0;;;;;16795:32:0;::::1;16787:95;;;::::0;-1:-1:-1;;;16787:95:0;;12272:2:1;16787:95:0::1;::::0;::::1;12254:21:1::0;12311:2;12291:18;;;12284:30;12350:34;12330:18;;;12323:62;-1:-1:-1;;;12401:18:1;;;12394:48;12459:19;;16787:95:0::1;12070:414:1::0;16787:95:0::1;16942:15;::::0;16890:68:::1;::::0;-1:-1:-1;;;12691:30:1;;-1:-1:-1;;;;;16942:15:0;;::::1;::::0;16890:68;::::1;::::0;12746:2:1;12737:12;16890:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;16890:68:0;;;::::1;16961:15;:36:::0;;-1:-1:-1;;;;;;16961:36:0::1;-1:-1:-1::0;;;;;16961:36:0;::::1;;::::0;;16742:259:::1;17006:9;::::0;-1:-1:-1;;;;;17006:25:0;;::::1;:9:::0;::::1;:25;17003:205;;-1:-1:-1::0;;;;;17044:26:0;::::1;17036:83;;;::::0;-1:-1:-1;;;17036:83:0;;12962:2:1;17036:83:0::1;::::0;::::1;12944:21:1::0;13001:2;12981:18;;;12974:30;13040:34;13020:18;;;13013:62;-1:-1:-1;;;13091:18:1;;;13084:42;13143:19;;17036:83:0::1;12760:408:1::0;17036:83:0::1;17167:9;::::0;17127:50:::1;::::0;-1:-1:-1;;;13375:24:1;;-1:-1:-1;;;;;17167:9:0;;::::1;::::0;17127:50;::::1;::::0;13424:1:1;13415:11;17127:50:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17127:50:0;;;::::1;17180:9;:24:::0;;-1:-1:-1;;;;;;17180:24:0::1;-1:-1:-1::0;;;;;17180:24:0;::::1;;::::0;;17003:205:::1;17213:13;::::0;-1:-1:-1;;;;;17213:33:0;;::::1;:13:::0;::::1;:33;17210:241;;-1:-1:-1::0;;;;;17259:30:0;::::1;17251:91;;;::::0;-1:-1:-1;;;17251:91:0;;13639:2:1;17251:91:0::1;::::0;::::1;13621:21:1::0;13678:2;13658:18;;;13651:30;13717:34;13697:18;;;13690:62;-1:-1:-1;;;13768:18:1;;;13761:46;13824:19;;17251:91:0::1;13437:412:1::0;17251:91:0::1;17398:13;::::0;17350:62:::1;::::0;-1:-1:-1;;;14056:28:1;;-1:-1:-1;;;;;17398:13:0;;::::1;::::0;17350:62;::::1;::::0;14109:2:1;14100:12;17350:62:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17350:62:0;;;::::1;17415:13;:32:::0;;-1:-1:-1;;;;;;17415:32:0::1;-1:-1:-1::0;;;;;17415:32:0;::::1;;::::0;;17210:241:::1;16335:1119:::0;;;;:::o;15994:339::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16096:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:55;::::1;;:43;::::0;;::::1;:55;;::::0;16088:129:::1;;;;-1:-1:-1::0;;;16088:129:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16220:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:54;;-1:-1:-1;;16220:54:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16282:47;;775:41:1;;;16282:47:0::1;::::0;748:18:1;16282:47:0::1;635:187:1::0;17470:414:0;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;17638:119:::1;17661:5;17668:18;17688;17708:12;17722:16;17740;17638:22;:119::i;:::-;17765:115;::::0;-1:-1:-1;;;14325:27:1;;14377:2;14368:12;17765:115:0::1;;::::0;;;;;::::1;::::0;;5277:4:1;5265:17;;;5247:36;;5319:17;;;5314:2;5299:18;;5292:45;5373:17;;;5353:18;;;5346:45;5427:17;;;5422:2;5407:18;;5400:45;5482:17;;5476:3;5461:19;;5454:46;17765:115:0;;;;::::1;::::0;;;;;5234:3:1;17765:115:0;;::::1;17470:414:::0;;;;;:::o;13510:248::-;13605:4;13614:126;6356:10;13636:7;13644:95;13683:15;13644:95;;;;;;;;;;;;;;;;;6356:10;13644:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13644:34:0;;;;;;;;;;;;:38;:95::i;12730:149::-;12810:4;12819:42;6356:10;12843:9;12854:6;12819:9;:42::i;19609:308::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;19705:23:::1;;19693:8;:35:::0;19685:118:::1;;;::::0;-1:-1:-1;;;19685:118:0;;14593:2:1;19685:118:0::1;::::0;::::1;14575:21:1::0;14632:2;14612:18;;;14605:30;14671:34;14651:18;;;14644:62;14742:34;14722:18;;;14715:62;-1:-1:-1;;;14793:19:1;;;14786:37;14840:19;;19685:118:0::1;14391:474:1::0;19685:118:0::1;19852:23;::::0;19811:65:::1;::::0;19842:8;;19811:65:::1;::::0;;;::::1;19879:23;:34:::0;19609:308::o;17886:432::-;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;18060:125:::1;18084:5;18091:19;18112;18133:13;18148:17;18167;18060:23;:125::i;:::-;18193:121;::::0;-1:-1:-1;;;15072:28:1;;15125:2;15116:12;18193:121:0::1;14870:264:1::0;15383:285:0;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15470:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;15462:113:::1;;;;-1:-1:-1::0;;;15462:113:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15578:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;15578:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15624:40;;775:41:1;;;15624:40:0::1;::::0;748:18:1;15624:40:0::1;635:187:1::0;15184:197:0;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15271:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;15271:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15327:50;;775:41:1;;;15327:50:0::1;::::0;748:18:1;15327:50:0::1;635:187:1::0;7194:216:0;6987:6;;-1:-1:-1;;;;;6987:6:0;6356:10;6987:22;6979:67;;;;-1:-1:-1;;;6979:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7275:22:0;::::1;7267:73;;;::::0;-1:-1:-1;;;7267:73:0;;15341:2:1;7267:73:0::1;::::0;::::1;15323:21:1::0;15380:2;15360:18;;;15353:30;15419:34;15399:18;;;15392:62;-1:-1:-1;;;15470:18:1;;;15463:36;15516:19;;7267:73:0::1;15139:402:1::0;7267:73:0::1;7369:6;::::0;;7348:38:::1;::::0;-1:-1:-1;;;;;7348:38:0;;::::1;::::0;7369:6;::::1;::::0;7348:38:::1;::::0;::::1;7389:6;:17:::0;;-1:-1:-1;;;;;;7389:17:0::1;-1:-1:-1::0;;;;;7389:17:0;;;::::1;::::0;;;::::1;::::0;;7194:216::o;2591:120::-;2649:7;2668:39;2672:1;2675;2668:39;;;;;;;;;;;;;;;;;:3;:39::i;13760:297::-;-1:-1:-1;;;;;13843:19:0;;13835:68;;;;-1:-1:-1;;;13835:68:0;;15748:2:1;13835:68:0;;;15730:21:1;15787:2;15767:18;;;15760:30;15826:34;15806:18;;;15799:62;-1:-1:-1;;;15877:18:1;;;15870:34;15921:19;;13835:68:0;15546:400:1;13835:68:0;-1:-1:-1;;;;;13914:21:0;;13906:68;;;;-1:-1:-1;;;13906:68:0;;16153:2:1;13906:68:0;;;16135:21:1;16192:2;16172:18;;;16165:30;16231:34;16211:18;;;16204:62;-1:-1:-1;;;16282:18:1;;;16275:32;16324:19;;13906:68:0;15951:398:1;13906:68:0;-1:-1:-1;;;;;13977:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14021:32;;1895:25:1;;;14021:32:0;;1868:18:1;14021:32:0;;;;;;;13760:297;;;:::o;22121:1625::-;-1:-1:-1;;;;;22208:18:0;;22200:68;;;;-1:-1:-1;;;22200:68:0;;16556:2:1;22200:68:0;;;16538:21:1;16595:2;16575:18;;;16568:30;16634:34;16614:18;;;16607:62;-1:-1:-1;;;16685:18:1;;;16678:35;16730:19;;22200:68:0;16354:401:1;22200:68:0;-1:-1:-1;;;;;22279:16:0;;22271:64;;;;-1:-1:-1;;;22271:64:0;;16962:2:1;22271:64:0;;;16944:21:1;17001:2;16981:18;;;16974:30;17040:34;17020:18;;;17013:62;-1:-1:-1;;;17091:18:1;;;17084:33;17134:19;;22271:64:0;16760:399:1;22271:64:0;22355:1;22346:6;:10;22338:64;;;;-1:-1:-1;;;22338:64:0;;17366:2:1;22338:64:0;;;17348:21:1;17405:2;17385:18;;;17378:30;17444:34;17424:18;;;17417:62;-1:-1:-1;;;17495:18:1;;;17488:39;17544:19;;22338:64:0;17164:405:1;22338:64:0;22423:15;22433:4;22423:9;:15::i;:::-;22413:6;:25;;22405:90;;;;-1:-1:-1;;;22405:90:0;;17776:2:1;22405:90:0;;;17758:21:1;17815:2;17795:18;;;17788:30;17854:34;17834:18;;;17827:62;-1:-1:-1;;;17905:18:1;;;17898:50;17965:19;;22405:90:0;17574:416:1;22405:90:0;-1:-1:-1;;;;;22521:31:0;;;22502:16;22521:31;;;:25;:31;;;;;;;;;22573:29;;;;;;;;;22613:35;;;:29;:35;;;;;;22521:31;;;;;22573:29;;;;22613:35;22612:36;:74;;;;-1:-1:-1;;;;;;22653:33:0;;;;;;:29;:33;;;;;;;;22652:34;22612:74;22609:669;;;22699:16;;;;22691:78;;;;-1:-1:-1;;;22691:78:0;;18197:2:1;22691:78:0;;;18179:21:1;18236:2;18216:18;;;18209:30;18275:34;18255:18;;;18248:62;-1:-1:-1;;;18326:18:1;;;18319:47;18383:19;;22691:78:0;17995:413:1;22691:78:0;-1:-1:-1;;;;;22781:14:0;;;;;;:10;:14;;;;;;;;22780:15;22772:65;;;;-1:-1:-1;;;22772:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22849:16:0;;;;;;:10;:16;;;;;;;;22848:17;22840:67;;;;-1:-1:-1;;;22840:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22915:38:0;;;;;;:34;:38;;;;;;;;22914:39;:84;;;;-1:-1:-1;;;;;;22958:40:0;;;;;;:34;:40;;;;;;;;22957:41;22914:84;22910:190;;;23021:11;;23011:6;:21;;23003:93;;;;-1:-1:-1;;;23003:93:0;;19021:2:1;23003:93:0;;;19003:21:1;19060:2;19040:18;;;19033:30;19099:34;19079:18;;;19072:62;19170:29;19150:18;;;19143:57;19217:19;;23003:93:0;18819:423:1;23003:93:0;-1:-1:-1;;;;;23107:33:0;;;;;;:29;:33;;;;;;;;23102:173;;23181:15;;23170:6;23154:13;23164:2;23154:9;:13::i;:::-;:22;;;;:::i;:::-;23153:43;;23145:126;;;;-1:-1:-1;;;23145:126:0;;19582:2:1;23145:126:0;;;19564:21:1;19621:2;19601:18;;;19594:30;19660:34;19640:18;;;19633:62;19731:34;19711:18;;;19704:62;-1:-1:-1;;;19782:19:1;;;19775:37;19829:19;;23145:126:0;19380:474:1;23145:126:0;23284:37;23297:11;23310:10;23284:12;:37::i;:::-;23324:12;23367:23;;23339:24;23357:4;23339:9;:24::i;:::-;23403:16;;23339:51;-1:-1:-1;23339:51:0;;-1:-1:-1;23403:16:0;;:28;;;;;23424:7;23403:28;:43;;;;-1:-1:-1;23437:9:0;;;;23436:10;23403:43;:61;;;;-1:-1:-1;23451:9:0;;-1:-1:-1;;;23451:9:0;;;;:13;;23403:61;:95;;;;-1:-1:-1;;;;;;23469:29:0;;;;;;:25;:29;;;;;;;;23403:95;23397:168;;;23505:9;:16;;-1:-1:-1;;23505:16:0;23517:4;23505:16;;;23524:17;:15;:17::i;:::-;23544:9;:17;;-1:-1:-1;;23544:17:0;;;23397:168;23587:9;;23571:12;;23587:9;;23586:10;:30;;;;-1:-1:-1;23600:16:0;;;;23586:30;-1:-1:-1;;;;;23626:24:0;;;;;;:18;:24;;;;;;23571:45;;-1:-1:-1;23626:24:0;;;:50;;-1:-1:-1;;;;;;23654:22:0;;;;;;:18;:22;;;;;;;;23626:50;23623:76;;;-1:-1:-1;23690:5:0;23623:76;23701:41;23716:4;23722:2;23726:6;23734:7;23701:14;:41::i;:::-;22197:1549;;;;22121:1625;;;:::o;2018:166::-;2104:7;2132:12;2124:6;;;;2116:29;;;;-1:-1:-1;;;2116:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2148:9:0;2160:5;2164:1;2160;:5;:::i;:::-;2148:17;2018:166;-1:-1:-1;;;;;2018:166:0:o;25361:144::-;25403:7;25416:15;25433;25452:19;:17;:19::i;:::-;25415:56;;-1:-1:-1;25415:56:0;-1:-1:-1;25481:20:0;25415:56;;25481:11;:20::i;:::-;25474:27;;;;25361:144;:::o;1727:155::-;1785:7;;1809:5;1813:1;1809;:5;:::i;:::-;1797:17;;1830:1;1825;:6;;1817:46;;;;-1:-1:-1;;;1817:46:0;;20061:2:1;1817:46:0;;;20043:21:1;20100:2;20080:18;;;20073:30;20139:29;20119:18;;;20112:57;20186:18;;1817:46:0;19859:351:1;28457:1175:0;28660:21;;;;:43;;;;:21;;:43;28656:207;;28713:101;;-1:-1:-1;;;20417:32:1;;20474:2;20465:12;28713:101:0;;;;;;;;28755:21;;;;28799:14;;28713:101;;28755:21;;;;;28713:101;;;;-1:-1:-1;;;;;;;;;;;28713:101:0;;;28799:14;;;28713:101;:::i;:::-;;;;;;;;28817:21;;;:42;;-1:-1:-1;;28817:42:0;;;;;;;28656:207;28869:21;;;;:43;;;;:21;;;;;:43;28865:207;;28922:101;;-1:-1:-1;;;20904:32:1;;20961:2;20952:12;28922:101:0;;;;;;;;28964:21;;;;29008:14;;28922:101;;28964:21;;;;;;;;28922:101;;;;-1:-1:-1;;;;;;;;;;;28922:101:0;;;29008:14;;;28922:101;:::i;:::-;;;;;;;;29026:21;;;:42;;-1:-1:-1;;29026:42:0;;;;;;;;;28865:207;29078:15;;;;:31;;;;-1:-1:-1;;;29078:15:0;;;;:31;29074:165;;29119:83;;-1:-1:-1;;;21177:26:1;;21228:2;21219:12;29119:83:0;;;;;;;;29155:15;;;;29187:14;;29119:83;;29155:15;-1:-1:-1;;;29155:15:0;;;;;;29119:83;;;;-1:-1:-1;;;;;;;;;;;29119:83:0;;;29187:14;;;29119:83;:::i;:::-;;;;;;;;29205:15;;;:30;;-1:-1:-1;;29205:30:0;-1:-1:-1;;;29205:30:0;;;;;;;29074:165;29245:19;;;;:39;;;;-1:-1:-1;;;29245:19:0;;;;:39;29241:193;;29294:95;;-1:-1:-1;;;21444:30:1;;21499:2;21490:12;29294:95:0;;;;;;;;29334:19;;;;29374:14;;29294:95;;29334:19;-1:-1:-1;;;29334:19:0;;;;;;29294:95;;;;-1:-1:-1;;;;;;;;;;;29294:95:0;;;29374:14;;;29294:95;:::i;:::-;;;;;;;;29392:19;;;:38;;-1:-1:-1;;29392:38:0;-1:-1:-1;;;29392:38:0;;;;;;;29241:193;29440:19;;;;:39;;;;-1:-1:-1;;;29440:19:0;;;;:39;29436:193;;29489:95;;-1:-1:-1;;;21715:30:1;;21770:2;21761:12;29489:95:0;;;;;;;;29529:19;;;;29569:14;;29489:95;;29529:19;-1:-1:-1;;;29529:19:0;;;;;;29489:95;;;;-1:-1:-1;;;;;;;;;;;29489:95:0;;;29569:14;;;29489:95;:::i;:::-;;;;;;;;29587:19;;;:38;;-1:-1:-1;;29587:38:0;-1:-1:-1;;;29587:38:0;;;;;;;29436:193;28457:1175;;;;;;:::o;27239:1216::-;27448:22;;;;:45;;;;:22;;;;;:45;27444:214;;27503:104;;-1:-1:-1;;;21986:33:1;;22044:2;22035:12;27503:104:0;;;;;;;;27546:22;;;;27592:14;;27503:104;;27546:22;;;;;;;;27503:104;;;;-1:-1:-1;;;;;;;;;;;27503:104:0;;;27592:14;;;27503:104;:::i;:::-;;;;;;;;27610:22;;;:44;;-1:-1:-1;;27610:44:0;;;;;;;;;27444:214;27664:22;;;;:45;;;;:22;;;;;:45;27660:214;;27719:104;;-1:-1:-1;;;22260:33:1;;22318:2;22309:12;27719:104:0;;;;;;;;27762:22;;;;27808:14;;27719:104;;27762:22;;;;;;;;27719:104;;;;-1:-1:-1;;;;;;;;;;;27719:104:0;;;27808:14;;;27719:104;:::i;:::-;;;;;;;;27826:22;;;:44;;-1:-1:-1;;27826:44:0;;;;;;;;;27660:214;27880:16;;;;:33;;;;-1:-1:-1;;;27880:16:0;;;;:33;27876:172;;27923:86;;-1:-1:-1;;;22534:27:1;;22586:2;22577:12;27923:86:0;;;;;;;;27960:16;;;;27994:14;;27923:86;;27960:16;-1:-1:-1;;;27960:16:0;;;;;;27923:86;;;;-1:-1:-1;;;;;;;;;;;27923:86:0;;;27994:14;;;27923:86;:::i;:::-;;;;;;;;28012:16;;;:32;;-1:-1:-1;;28012:32:0;-1:-1:-1;;;28012:32:0;;;;;;;27876:172;28054:20;;;;:41;;;;-1:-1:-1;;;28054:20:0;;;;:41;28050:200;;28105:98;;-1:-1:-1;;;22802:31:1;;22858:2;22849:12;28105:98:0;;;;;;;;28146:20;;;;28188:14;;28105:98;;28146:20;-1:-1:-1;;;28146:20:0;;;;;;28105:98;;;;-1:-1:-1;;;;;;;;;;;28105:98:0;;;28188:14;;;28105:98;:::i;:::-;;;;;;;;28206:20;;;:40;;-1:-1:-1;;28206:40:0;-1:-1:-1;;;28206:40:0;;;;;;;28050:200;28256:20;;;;:41;;;;-1:-1:-1;;;28256:20:0;;;;:41;28252:200;;28307:98;;-1:-1:-1;;;23074:31:1;;23130:2;23121:12;28307:98:0;;;;;;;;28348:20;;;;28390:14;;28307:98;;28348:20;-1:-1:-1;;;28348:20:0;;;;;;28307:98;;;;-1:-1:-1;;;;;;;;;;;28307:98:0;;;28390:14;;;28307:98;:::i;:::-;;;;;;;;28408:20;;;:40;;;;;-1:-1:-1;;;28408:40:0;-1:-1:-1;;28408:40:0;;;;;;27239:1216;;;;;;:::o;2717:244::-;2803:7;2830:12;2823:5;2815:28;;;;-1:-1:-1;;;2815:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2846:9:0;2858:5;2862:1;2858;:5;:::i;26232:1005::-;26300:13;:17;;-1:-1:-1;;26372:15:0;;;26394:295;;;;26457:1;26434:18;;26419:12;:33;;;;:::i;:::-;26418:40;26414:272;;26463:13;:19;;-1:-1:-1;;26463:19:0;26479:3;26463:19;;;26414:272;;;26511:23;;26495:13;:39;;26511:23;;;;-1:-1:-1;;26537:27:0;;;;;;;-1:-1:-1;;;26547:17:0;;;;;26537:27;;;;;;;;-1:-1:-1;;26609:35:0;26511:23;26583;;;;;26567:39;;;;-1:-1:-1;;26609:35:0;;;;;-1:-1:-1;;;26623:21:0;;;;26609:35;;;-1:-1:-1;;26647:35:0;-1:-1:-1;;;26661:21:0;;;;;;;26647:35;;;;;;;26414:272;26695:10;26691:366;;;26726:24;;26710:13;:40;;26726:24;;;;;;;;-1:-1:-1;;26753:28:0;;;;;;;-1:-1:-1;;;26763:18:0;;;;26753:28;;;-1:-1:-1;;26827:36:0;26800:24;;;;;;26784:40;;;;-1:-1:-1;;26827:36:0;;-1:-1:-1;;;26841:22:0;;;;26827:36;;;;;-1:-1:-1;;26866:36:0;-1:-1:-1;;;26880:22:0;;;;-1:-1:-1;;;26866:36:0;;;;;;;26931:16;;26951:6;;26913:34;;:15;:34;:::i;:::-;:44;26909:145;;26962:13;:17;;-1:-1:-1;;27035:15:0;;;;;26909:145;27127:11;;;-1:-1:-1;;;27127:11:0;;;;;27113;;;;;;27103:7;;;;;;27071:29;;27127:11;27087:13;;;;;27071;:29;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;27059:9;:79;;-1:-1:-1;;27059:79:0;;-1:-1:-1;;;27059:79:0;;;;;;;;;;;;;27146:87;;;27158:13;;;;;;;;;;23639:34:1;;27059:79:0;27173:13;;;;23704:2:1;23689:18;;23682:43;27188:7:0;;;;;23741:18:1;;;23734:43;;;;27197:11:0;;;;;23808:2:1;23793:18;;23786:43;-1:-1:-1;;;27210:11:0;;;;23860:3:1;23845:19;;23838:44;27223:9:0;;;;;;23913:3:1;23898:19;;23891:44;27146:87:0;;23603:3:1;23588:19;27146:87:0;23353:588:1;29634:1585:0;29672:23;29698:24;29716:4;29698:9;:24::i;:::-;29803:9;;29672:50;;-1:-1:-1;29753:21:0;;29803:9;-1:-1:-1;;;29803:9:0;;;;;29841:13;;;;29803:9;29883:13;;;;;29919:7;;;;;;29953:11;;;;;;-1:-1:-1;;;29991:11:0;;;29725:25;29919:7;29803:9;30035:31;29841:13;29672:50;30035:31;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;30009:73;-1:-1:-1;30085:26:0;30114:33;30009:73;30114:15;:33;:::i;:::-;30085:62;;30154:37;30172:18;30154:17;:37::i;:::-;30198:27;30228:41;30252:17;30228:21;:41;:::i;:::-;30198:71;-1:-1:-1;30272:19:0;30337:15;30311:21;30331:1;30311:17;:21;:::i;:::-;30294:39;;:13;:39;:::i;:::-;:59;;;;:::i;:::-;30272:81;;;;30356:26;30441:1;30427:11;30407:17;30385:39;;:19;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;30356:86;-1:-1:-1;30445:20:0;30504:11;30468:33;;;;:19;:33;:::i;:::-;:47;;;;:::i;:::-;30445:70;-1:-1:-1;30518:24:0;30585:11;30545:37;;;;:19;:37;:::i;:::-;:51;;;;:::i;:::-;30518:78;-1:-1:-1;30599:26:0;30518:78;30651:33;30672:12;30651:18;:33;:::i;:::-;:52;;;;:::i;:::-;30628:76;;:19;:76;:::i;:::-;30719:15;;30711:53;;30599:105;;-1:-1:-1;;;;;;30719:15:0;;30711:53;;;;;30599:105;;30719:15;30711:53;30719:15;30711:53;30599:105;30719:15;30711:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30775:9:0;;30767:41;;-1:-1:-1;;;;;30775:9:0;;;;30767:41;;;;;30795:12;;30775:9;30767:41;30775:9;30767:41;30795:12;30775:9;30767:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30819:13:0;;30811:49;;-1:-1:-1;;;;;30819:13:0;;;;30811:49;;;;;30843:16;;30819:13;30811:49;30819:13;30811:49;30843:16;30819:13;30811:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30871:19:0;;30867:161;;30895:50;30909:15;30926:18;30895:13;:50::i;:::-;30953:71;;;24518:25:1;;;24574:2;24559:18;;24552:34;;;24602:18;;;24595:34;;;30953:71:0;;24506:2:1;24491:18;30953:71:0;;;;;;;30867:161;31042:13;31030:9;;:25;;;;;;;;;;;;;;;;;;31074:17;31058:13;;:33;;;;;;;;;;;;;;;;;;31110:17;31094:13;;:33;;;;;;;;;;;;;;;;;;31140:11;31130:7;;:21;;;;;;;;;;;;;;;;;;31168:15;31154:11;;:29;;;;;;;;;;;;;;;;;;31200:15;31186:11;;:29;;;;;;;;;;;;;;;;;;29669:1550;;;;;;;;;;;;;;;;29634:1585::o;23748:735::-;23849:23;23873:12;23887:14;23905:29;23917:7;23926;23905:11;:29::i;:::-;23848:86;;;;;;23938:15;23955:23;23980:12;23994:14;24012:46;24024:7;24033:4;24039:6;24047:10;:8;:10::i;:::-;24012:11;:46::i;:::-;-1:-1:-1;;;;;24069:32:0;;;;;;:24;:32;;;;;;23937:121;;-1:-1:-1;23937:121:0;;-1:-1:-1;23937:121:0;-1:-1:-1;23937:121:0;-1:-1:-1;24069:32:0;;24065:88;;;-1:-1:-1;;;;;24124:15:0;;;;;;:7;:15;;;;;;:25;;24142:7;;24124:25;:::i;:::-;-1:-1:-1;;;;;24106:15:0;;;;;;:7;:15;;;;;:43;24065:88;-1:-1:-1;;;;;24159:35:0;;;;;;:24;:35;;;;;;;;24155:105;;;-1:-1:-1;;;;;24220:18:0;;;;;;:7;:18;;;;;;:36;;24241:15;;24220:36;:::i;:::-;-1:-1:-1;;;;;24199:18:0;;;;;;:7;:18;;;;;:57;24155:105;-1:-1:-1;;;;;24280:15:0;;;;;;:7;:15;;;;;;:25;;24298:7;;24280:25;:::i;:::-;-1:-1:-1;;;;;24262:15:0;;;;;;;:7;:15;;;;;;:43;;;;24329:18;;;;;;;:36;;24350:15;;24329:36;:::i;:::-;-1:-1:-1;;;;;24308:18:0;;;;;;:7;:18;;;;;:57;24368:33;24386:6;24394;24368:17;:33::i;:::-;24404:23;24416:4;24422;24404:11;:23::i;:::-;24452:9;-1:-1:-1;;;;;24435:44:0;24444:6;-1:-1:-1;;;;;24435:44:0;;24463:15;24435:44;;;;1895:25:1;;1883:2;1868:18;;1749:177;24435:44:0;;;;;;;;23845:638;;;;;;;23748:735;;;;:::o;25507:529::-;25597:7;;25558;;;;8002:16;25558:7;25635:309;25659:22;:29;25655:33;;25635:309;;;25741:7;25704;:34;25712:22;25735:1;25712:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25712:25:0;25704:34;;;;;;;;;;;;;:44;;:93;;;25790:7;25753;:34;25761:22;25784:1;25761:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25761:25:0;25753:34;;;;;;;;;;;;;:44;25704:93;25698:128;;;-1:-1:-1;;25809:7:0;;;8002:16;;-1:-1:-1;25507:529:0;-1:-1:-1;;25507:529:0:o;25698:128::-;25849:7;:34;25857:22;25880:1;25857:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25857:25:0;25849:34;;;;;;;;;;;;;25839:44;;:7;:44;:::i;:::-;25829:54;;25906:7;:34;25914:22;25937:1;25914:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25914:25:0;25906:34;;;;;;;;;;;;;25896:44;;:7;:44;:::i;:::-;25886:54;-1:-1:-1;25690:3:0;;;;:::i;:::-;;;;25635:309;;;;8002:16;25960:7;;:17;;;;:::i;:::-;25950:7;:27;25946:58;;;-1:-1:-1;;25987:7:0;;;8002:16;;-1:-1:-1;25507:529:0;-1:-1:-1;25507:529:0:o;25946:58::-;26015:7;;26024;;-1:-1:-1;25507:529:0;-1:-1:-1;25507:529:0:o;31221:388::-;31304:16;;;31318:1;31304:16;;;;;;;;31280:21;;31304:16;;;;;;;;;;-1:-1:-1;31304:16:0;31280:40;;31341:4;31323;31328:1;31323:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31323:23:0;;;:7;;;;;;;;;;:23;;;;31359:15;;:22;;;-1:-1:-1;;;31359:22:0;;;;:15;;;;;:20;;:22;;;;;31323:7;;31359:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31349:4;31354:1;31349:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31349:32:0;;;:7;;;;;;;;;:32;31416:15;;31384:62;;31401:4;;31416:15;31434:11;31384:8;:62::i;:::-;31449:15;;:156;;-1:-1:-1;;;31449:156:0;;-1:-1:-1;;;;;31449:15:0;;;;:66;;:156;;31518:11;;31449:15;;31564:4;;31579;;31587:15;;31449:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31611:323;31717:15;;31685:62;;31702:4;;-1:-1:-1;;;;;31717:15:0;31735:11;31685:8;:62::i;:::-;31750:15;;31894;;31750:180;;-1:-1:-1;;;31750:180:0;;31810:4;31750:180;;;26354:34:1;26404:18;;;26397:34;;;31750:15:0;26447:18:1;;;26440:34;;;26490:18;;;26483:34;-1:-1:-1;;;;;31894:15:0;;;26533:19:1;;;26526:44;31912:15:0;26586:19:1;;;26579:35;31750:15:0;;;:31;;31789:9;;26288:19:1;;31750:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31611:323;;:::o;24587:389::-;24661:7;24669;24677;24693;24688:285;;-1:-1:-1;24713:7:0;;-1:-1:-1;24722:1:0;;-1:-1:-1;24722:1:0;24705:22;;24688:285;24766:11;;24741:12;;24780:3;;24756:21;;-1:-1:-1;;;24766:11:0;;;;24756:7;:21;:::i;:::-;:27;;;;:::i;:::-;24856:11;;24741:42;;-1:-1:-1;24786:14:0;;24871:3;;24856:11;;;;;;;;24840:13;;;;;24814:23;;24830:7;;;;;;24814:13;:23;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;24803:65;;;;:7;:65;:::i;:::-;:71;;;;:::i;:::-;24786:88;-1:-1:-1;24877:23:0;24914:13;24786:88;24914:4;:13;:::i;:::-;24903:25;;:7;:25;:::i;:::-;24877:51;-1:-1:-1;24956:4:0;;-1:-1:-1;24962:6:0;-1:-1:-1;24931:38:0;;-1:-1:-1;24931:38:0;24688:285;24587:389;;;;;:::o;24978:381::-;25097:7;;;;;25154:21;25164:11;25154:7;:21;:::i;:::-;25136:39;-1:-1:-1;25178:12:0;25193:18;25200:11;25193:4;:18;:::i;:::-;25178:33;-1:-1:-1;25214:14:0;25231:20;25240:11;25231:6;:20;:::i;:::-;25214:37;-1:-1:-1;25254:23:0;25291:13;25214:37;25291:4;:13;:::i;:::-;25280:25;;:7;:25;:::i;:::-;25316:7;;;;-1:-1:-1;25342:4:0;;-1:-1:-1;25342:4:0;-1:-1:-1;24978:381:0;;-1:-1:-1;;;;;;24978:381:0:o;26038:192::-;26145:4;26112:39;;;;:24;:39;;;;;;;;26108:84;;;26172:4;26156:22;;;;:7;:22;;;;;:32;;26182:6;;26156:22;:32;;26182:6;;26156:32;:::i;:::-;;;;-1:-1:-1;;26108:84:0;26210:4;26194:22;;;;:7;:22;;;;;:32;;26220:6;;26194:22;:32;;26220:6;;26194:32;:::i;:::-;;;;-1:-1:-1;;;;26038:192:0:o;24485:100::-;24556:4;24545:7;;:15;;;;;;;:::i;:::-;;;;;;;;24577:4;24563:10;;:18;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:160::-;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:315::-;380:6;388;441:2;429:9;420:7;416:23;412:32;409:52;;;457:1;454;447:12;409:52;496:9;483:23;515:31;540:5;515:31;:::i;:::-;565:5;-1:-1:-1;589:35:1;620:2;605:18;;589:35;:::i;:::-;579:45;;315:315;;;;;:::o;827:597::-;939:4;968:2;997;986:9;979:21;1029:6;1023:13;1072:6;1067:2;1056:9;1052:18;1045:34;1097:1;1107:140;1121:6;1118:1;1115:13;1107:140;;;1216:14;;;1212:23;;1206:30;1182:17;;;1201:2;1178:26;1171:66;1136:10;;1107:140;;;1265:6;1262:1;1259:13;1256:91;;;1335:1;1330:2;1321:6;1310:9;1306:22;1302:31;1295:42;1256:91;-1:-1:-1;1408:2:1;1387:15;-1:-1:-1;;1383:29:1;1368:45;;;;1415:2;1364:54;;827:597;-1:-1:-1;;;827:597:1:o;1429:315::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;:::-;1682:5;1734:2;1719:18;;;;1706:32;;-1:-1:-1;;;1429:315:1:o;2362:180::-;2421:6;2474:2;2462:9;2453:7;2449:23;2445:32;2442:52;;;2490:1;2487;2480:12;2442:52;-1:-1:-1;2513:23:1;;2362:180;-1:-1:-1;2362:180:1:o;2547:456::-;2624:6;2632;2640;2693:2;2681:9;2672:7;2668:23;2664:32;2661:52;;;2709:1;2706;2699:12;2661:52;2748:9;2735:23;2767:31;2792:5;2767:31;:::i;:::-;2817:5;-1:-1:-1;2874:2:1;2859:18;;2846:32;2887:33;2846:32;2887:33;:::i;:::-;2547:456;;2939:7;;-1:-1:-1;;;2993:2:1;2978:18;;;;2965:32;;2547:456::o;3197:248::-;3262:6;3270;3323:2;3311:9;3302:7;3298:23;3294:32;3291:52;;;3339:1;3336;3329:12;3291:52;3375:9;3362:23;3352:33;;3404:35;3435:2;3424:9;3420:18;3404:35;:::i;3450:247::-;3509:6;3562:2;3550:9;3541:7;3537:23;3533:32;3530:52;;;3578:1;3575;3568:12;3530:52;3617:9;3604:23;3636:31;3661:5;3636:31;:::i;3702:671::-;3788:6;3796;3804;3812;3865:3;3853:9;3844:7;3840:23;3836:33;3833:53;;;3882:1;3879;3872:12;3833:53;3921:9;3908:23;3940:31;3965:5;3940:31;:::i;:::-;3990:5;-1:-1:-1;4047:2:1;4032:18;;4019:32;4060:33;4019:32;4060:33;:::i;:::-;4112:7;-1:-1:-1;4171:2:1;4156:18;;4143:32;4184:33;4143:32;4184:33;:::i;:::-;4236:7;-1:-1:-1;4295:2:1;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;:::-;3702:671;;;;-1:-1:-1;3702:671:1;;-1:-1:-1;;3702:671:1:o;4378:156::-;4444:20;;4504:4;4493:16;;4483:27;;4473:55;;4524:1;4521;4514:12;4539:464;4624:6;4632;4640;4648;4656;4709:3;4697:9;4688:7;4684:23;4680:33;4677:53;;;4726:1;4723;4716:12;4677:53;4749:27;4766:9;4749:27;:::i;:::-;4739:37;;4795:36;4827:2;4816:9;4812:18;4795:36;:::i;:::-;4785:46;;4850:36;4882:2;4871:9;4867:18;4850:36;:::i;:::-;4840:46;;4905:36;4937:2;4926:9;4922:18;4905:36;:::i;:::-;4895:46;;4960:37;4992:3;4981:9;4977:19;4960:37;:::i;:::-;4950:47;;4539:464;;;;;;;;:::o;5511:388::-;5579:6;5587;5640:2;5628:9;5619:7;5615:23;5611:32;5608:52;;;5656:1;5653;5646:12;5608:52;5695:9;5682:23;5714:31;5739:5;5714:31;:::i;:::-;5764:5;-1:-1:-1;5821:2:1;5806:18;;5793:32;5834:33;5793:32;5834:33;:::i;:::-;5886:7;5876:17;;;5511:388;;;;;:::o;5904:356::-;6106:2;6088:21;;;6125:18;;;6118:30;6184:34;6179:2;6164:18;;6157:62;6251:2;6236:18;;5904:356::o;6265:425::-;6467:2;6449:21;;;6506:2;6486:18;;;6479:30;6545:34;6540:2;6525:18;;6518:62;6616:31;6611:2;6596:18;;6589:59;6680:3;6665:19;;6265:425::o;6695:127::-;6756:10;6751:3;6747:20;6744:1;6737:31;6787:4;6784:1;6777:15;6811:4;6808:1;6801:15;6827:127;6888:10;6883:3;6879:20;6876:1;6869:31;6919:4;6916:1;6909:15;6943:4;6940:1;6933:15;6959:125;6999:4;7027:1;7024;7021:8;7018:34;;;7032:18;;:::i;:::-;-1:-1:-1;7069:9:1;;6959:125::o;7089:127::-;7150:10;7145:3;7141:20;7138:1;7131:31;7181:4;7178:1;7171:15;7205:4;7202:1;7195:15;7221:135;7260:3;7281:17;;;7278:43;;7301:18;;:::i;:::-;-1:-1:-1;7348:1:1;7337:13;;7221:135::o;8649:127::-;8710:10;8705:3;8701:20;8698:1;8691:31;8741:4;8738:1;8731:15;8765:4;8762:1;8755:15;8781:120;8821:1;8847;8837:35;;8852:18;;:::i;:::-;-1:-1:-1;8886:9:1;;8781:120::o;9325:168::-;9365:7;9431:1;9427;9423:6;9419:14;9416:1;9413:21;9408:1;9401:9;9394:17;9390:45;9387:71;;;9438:18;;:::i;:::-;-1:-1:-1;9478:9:1;;9325:168::o;18413:401::-;18615:2;18597:21;;;18654:2;18634:18;;;18627:30;18693:34;18688:2;18673:18;;18666:62;-1:-1:-1;;;18759:2:1;18744:18;;18737:35;18804:3;18789:19;;18413:401::o;19247:128::-;19287:3;19318:1;19314:6;19311:1;19308:13;19305:39;;;19324:18;;:::i;:::-;-1:-1:-1;19360:9:1;;19247:128::o;20488:209::-;-1:-1:-1;;20652:38:1;;;;20634:57;;20622:2;20607:18;;20488:209::o;23144:204::-;23182:3;23218:4;23215:1;23211:12;23250:4;23247:1;23243:12;23285:3;23279:4;23275:14;23270:3;23267:23;23264:49;;;23293:18;;:::i;:::-;23329:13;;23144:204;-1:-1:-1;;;23144:204:1:o;23946:165::-;23984:1;24018:4;24015:1;24011:12;24042:3;24032:37;;24049:18;;:::i;:::-;24101:3;24094:4;24091:1;24087:12;24083:22;24078:27;;;23946:165;;;;:::o;24116:195::-;24154:4;24191;24188:1;24184:12;24223:4;24220:1;24216:12;24248:3;24243;24240:12;24237:38;;;24255:18;;:::i;:::-;24292:13;;;24116:195;-1:-1:-1;;;24116:195:1:o;24772:251::-;24842:6;24895:2;24883:9;24874:7;24870:23;24866:32;24863:52;;;24911:1;24908;24901:12;24863:52;24943:9;24937:16;24962:31;24987:5;24962:31;:::i;25028:980::-;25290:4;25338:3;25327:9;25323:19;25369:6;25358:9;25351:25;25395:2;25433:6;25428:2;25417:9;25413:18;25406:34;25476:3;25471:2;25460:9;25456:18;25449:31;25500:6;25535;25529:13;25566:6;25558;25551:22;25604:3;25593:9;25589:19;25582:26;;25643:2;25635:6;25631:15;25617:29;;25664:1;25674:195;25688:6;25685:1;25682:13;25674:195;;;25753:13;;-1:-1:-1;;;;;25749:39:1;25737:52;;25844:15;;;;25809:12;;;;25785:1;25703:9;25674:195;;;-1:-1:-1;;;;;;;25925:32:1;;;;25920:2;25905:18;;25898:60;-1:-1:-1;;;25989:3:1;25974:19;25967:35;25886:3;25028:980;-1:-1:-1;;;25028:980:1:o;26625:306::-;26713:6;26721;26729;26782:2;26770:9;26761:7;26757:23;26753:32;26750:52;;;26798:1;26795;26788:12;26750:52;26827:9;26821:16;26811:26;;26877:2;26866:9;26862:18;26856:25;26846:35;;26921:2;26910:9;26906:18;26900:25;26890:35;;26625:306;;;;;:::o

Swarm Source

ipfs://1779630db5889baaa1c50bd954c983d4bee7bb54f01e27d16ac3033f9f0a2491
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.