ETH Price: $2,493.55 (-0.73%)

Token

AI BRIDGE CHAIN BOT ($ABC)
 

Overview

Max Total Supply

100,000,000,000 $ABC

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.507126887554496693 $ABC

Value
$0.00
0x3be614e3718d035266464094cc054302df5dec69
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:
Aibridgechainbot

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-02-13
*/

/**
/*
Ai Bridge Chain Bot


$ABC


https://t.me/Aibridgechainbot


*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
  return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
  return msg.data;
}
}
interface IERC20 {
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);
}
library Address {
function isContract(address account) internal view returns (bool) {
  // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
  // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
  // for accounts without code, i.e. `keccak256('')`
  bytes32 codehash;
  bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
  // solhint-disable-next-line no-inline-assembly
  assembly { codehash := extcodehash(account) }
  return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
  require(address(this).balance >= amount, "Address: insufficient balance");
  // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
  (bool success, ) = recipient.call{ value: amount }("");
  require(success, "Address: unable to send value, recipient may have reverted");
}
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");
  return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
  require(isContract(target), "Address: call to non-contract");
  (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
  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 Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
  _setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
  return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
  require(owner() == _msgSender(), "Ownable: caller is not the owner");
  _;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
  _setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
  require(newOwner != address(0), "Ownable: new owner is the zero address");
  _setOwner(newOwner);
}
function _setOwner(address newOwner) private {
  address oldOwner = _owner;
  _owner = newOwner;
  emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract Aibridgechainbot is Context,IERC20, Ownable{
using Address for address;
string private _name = "AI BRIDGE CHAIN BOT";
string private _symbol = "$ABC";
uint8 private _decimals = 18;
uint256 totalFeeFortx = 0;
uint256 maxWalletTreshold = 2;
uint256 maxTxTreshold = 2;
uint256 private swapTreshold =1;
uint256 private currentThreshold = 10; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
uint256 private _totalSupply = (10000000 * 10**4) * 10**_decimals; //
uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
mapping (address => uint256) private _balances;
mapping (address => bool) private _excludedFromFees;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public automatedMarketMakerPairs;
address _owner;
address payable public marketingAddress = payable(0xFc52Ff5DC557aA4B8073B39FE4ab21D716Ea2778


);
uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/200; // starting 2%
uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
mapping (address => bool) botWallets;
bool botTradeEnabled = false;
bool checkWalletSize = true;
mapping (address => bool) private _liquidityHolders;
mapping (address => bool) private presaleAddresses;
//Aibridgechainbot Taxes
uint256 private buyliqFee = 4; //0
uint256 private buyprevLiqFee = 0;
uint256 private buymktFee = 11;//0
uint256 private buyPrevmktFee = 0;
uint256 AibridgechainbotCOINDaycooldown = 0;
bool private tradeEnabled = true;
uint256 private sellliqFee = 5;
uint256 private sellprevLiqFee = 0;
uint256 private sellmktFee = 40;
uint256 private sellPrevmktFee = 0;
bool public inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
uint256 private mktTokens = 0;
uint256 private liqTokens = 0;
event SwapAndLiquify(uint256 tokensSwapped,
  uint256 ethReceived,
  uint256 tokensIntoLiquidity
);
event tokensSwappedDuringTokenomics(uint256 amount);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
// 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
IUniswapV2Router02 _router;
address public uniswapV2Pair;
//Balances tracker
modifier lockTheSwap{
  inSwapAndLiquify = true;
  _;
  inSwapAndLiquify = false;
}
constructor(){
  _balances[_msgSender()] = _totalSupply;
  //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
  IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
   uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
      .createPair(address(this), _uniRouter.WETH());
   _excludedFromFees[owner()] = true;   
  _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
  _router = _uniRouter;
  _liquidityHolders[address(_router)] = true;
  _liquidityHolders[owner()] = true;
  _liquidityHolders[address(this)] = true;
  _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
  emit Transfer(address(0),_msgSender(),_totalSupply);
}
receive() external payable{}
//general token data and tracking of balances to be swapped.
function getOwner()external view returns(address){
      return owner();
}
function currentmktTokens() external view returns (uint256){
      return mktTokens;
}
function currentLiqTokens() external view returns (uint256){
      return liqTokens;
}
function totalSupply() external view override returns (uint256){
      return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256){
  return _balances[account];
}
function transfer(address recipient, uint256 amount) external override returns (bool){
      _transfer(_msgSender(),recipient,amount);
      return true;
}
function allowance(address owner, address spender) external view override returns (uint256){
      return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) external override returns (bool){
      _approve(_msgSender(),spender,amount);
      return true;
}
function decimals()external view returns(uint256){
  return _decimals;
}
function name() external view returns (string memory) {
  return _name;
}
function symbol() external view returns (string memory){
  return _symbol;
}
  function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
  maxTxTreshold = newVal;
  maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%
}
function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
  maxWalletTreshold = newVal;
  maxWalletAmount = _totalSupply*maxWalletTreshold/100;
}
function transferFrom(
  address sender,
  address recipient,
  uint256 amount
) public override returns (bool){
  require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance");
  _transfer(sender, recipient, amount);
  _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
  return true;
}
//Tokenomics related functions
function COINDay() public onlyOwner{
   require(block.timestamp > AibridgechainbotCOINDaycooldown, "You cant call AibridgechainbotCOINCoinDay more than once a day");
   buyPrevmktFee = buymktFee;
   buyprevLiqFee = buyliqFee;
   buyliqFee = 0;
   buymktFee = 0;
}
function AibridgechainbotCOINCoinDayOver() public onlyOwner{
   buyliqFee = buyprevLiqFee;
   buymktFee = buyPrevmktFee;
   AibridgechainbotCOINDaycooldown = block.timestamp + 86400;
}
function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
  botWallets[detectedBot] = isBot;
}
function currentbuyliqFee() public view returns (uint256){
      return buyliqFee;
}
function currentbuymktfee() public view returns (uint256){
      return buymktFee;
}
function currentsellLiqFee() public view returns (uint256){
      return sellliqFee;
}
function currentsellmktfee() public view returns (uint256){
      return sellmktFee;
}
function currentThresholdInt()public view returns (uint256){
  return currentThreshold;
}
function isExcluded(address toCheck)public view returns (bool){
      return _excludedFromFees[toCheck];
}
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,"ERC20: transfered amount must be greater than zero");
  uint256 senderBalance = _balances[from];
  require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
  if(tradeEnabled == false){
      require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
  }
  if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
  require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
   if(from == uniswapV2Pair){
          require(balanceOf(to)+amount <= maxWalletAmount);
      }
  }
  uint256 inContractBalance = balanceOf(address(this));
  if(inContractBalance >=requiredTokensToSwap &&
      !inSwapAndLiquify &&
      from != uniswapV2Pair &&
      swapAndLiquifyEnabled){
          if(inContractBalance >= requiredTokensToSwap ){
              inContractBalance = requiredTokensToSwap;
              swapForTokenomics(inContractBalance);
          }
      }
      bool takeFees = true;
 
      if(_excludedFromFees[from] || _excludedFromFees[to]) {
          totalFeeFortx = 0;
          takeFees = false;
   
      }
      uint256 mktAmount = 0;
      uint256 liqAmount = 0;  // Amount to be added to liquidity.
      if(takeFees){
    
    
          //bot fees
          if(botWallets[from] == true||botWallets[to]==true){
              revert("No bots can trade");
          }
          //Selling fees
          if (automatedMarketMakerPairs[to] && to != address(_router) ){
                  totalFeeFortx = 0;
                  mktAmount = amount * sellmktFee/100;
                  liqAmount = amount * sellliqFee/100;
                  totalFeeFortx = mktAmount + liqAmount;
          }
          //Buy Fees
          else if(automatedMarketMakerPairs[from] && from != address(_router)) {
    
              totalFeeFortx = 0;
              mktAmount = amount * buymktFee/100;
              liqAmount = amount * buyliqFee/100;
              totalFeeFortx = mktAmount + liqAmount ;
          }
    
      }
      _balances[from] = senderBalance - amount;
      _balances[to] += amount - mktAmount - liqAmount;
    if(liqAmount != 0) {
      _balances[address(this)] += totalFeeFortx;
      //tLiqTotal += liqAmount;
      liqTokens += liqAmount;
      mktTokens += mktAmount;
      emit Transfer(from, address(this), totalFeeFortx);
       }
      emit Transfer(from, to,amount-totalFeeFortx);
 }
function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
  swapAndLiquify(liqTokens);
  swapTokensForETHmkt(mktTokens);
  emit tokensSwappedDuringTokenomics(balanceToswap);
  mktTokens = 0;
  liqTokens = 0;
}
function addLimitExempt(address newAddress)external onlyOwner{
  _liquidityHolders[newAddress] = true;
}
function swapTokensForETHmkt(uint256 amount)private {
  address[] memory path = new address[](2);
  path[0] = address(this);
  path[1] = _router.WETH();
  _approve(address(this), address(_router), amount);
   _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      amount,
      0, // Accept any amount of ETH.
      path,
      marketingAddress,
      block.timestamp
  );
}
function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
  //uint256 contractBalance = tokenToClear.balanceOf(address(this));
  tokenToClear.transfer(destination, amount);
}
function unstuckETH(address payable destination) public onlyOwner{
  uint256 ethBalance = address(this).balance;
  payable(destination).transfer(ethBalance);
}
function tradeStatus(bool status) public onlyOwner{
  tradeEnabled = status;
}
function swapAndLiquify(uint256 liqTokensPassed) private {
  uint256 half = liqTokensPassed / 2;
  uint256 otherHalf = liqTokensPassed - half;
  uint256 initialBalance = address(this).balance;
  swapTokensForETH(half);
  uint256 newBalance = address(this).balance - (initialBalance);
  addLiquidity(otherHalf, newBalance);
  emit SwapAndLiquify(half,newBalance,otherHalf);
}
function swapTokensForETH(uint256 tokenAmount) private{
  address[] memory path = new address[](2);
  path[0] = address(this);
  path[1] = _router.WETH();
  _approve(address(this), address(_router), tokenAmount);
   _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      tokenAmount,
      0, // Accept any amount of ETH.
      path,
      address(this),
      block.timestamp
  );
}
function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
  _approve(address(this), address(_router), tokenAmount);
  _router.addLiquidityETH{value:ethAmount}(
      address(this),
      tokenAmount,
      0,
      0,
      deadAddress,// tr
      block.timestamp
  );
}
function _approve(address owner,address spender, uint256 amount) internal{
  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);
}
//Fees related functions
function addToExcluded(address toExclude) public onlyOwner{
  _excludedFromFees[toExclude] = true;
}
function removeFromExcluded(address toRemove) public onlyOwner{
  _excludedFromFees[toRemove] = false;
}
function excludePresaleAddresses(address router, address presale) external onlyOwner {
   _liquidityHolders[address(router)] = true;
  _liquidityHolders[presale] = true;
  presaleAddresses[address(router)] = true;
  presaleAddresses[presale] = true;
}
function endPresaleStatus() public onlyOwner{
  buymktFee = 4;
  buyliqFee = 2;
  sellmktFee = 4;
  sellliqFee = 2;
  setSwapAndLiquify(true);
}
function updateThreshold(uint newThreshold) public onlyOwner{
  currentThreshold = newThreshold;
}
function setSwapAndLiquify(bool _enabled) public onlyOwner{
      swapAndLiquifyEnabled = _enabled;
}
//Marketing related
function setMktAddress(address newAddress) external onlyOwner{
  marketingAddress = payable(newAddress);
}
function transferAssetsETH(address payable to, uint256 amount) internal{
      to.transfer(amount);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
  require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
  _setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
  automatedMarketMakerPairs[pair] = value;
  emit SetAutomatedMarketMakerPair(pair, value);
}
function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
      buyliqFee = newAmount;
}
function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
       buymktFee= newAmount;
}
function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
       sellliqFee= newAmount;
}
function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
       sellmktFee= newAmount;
}
function currentMaxWallet() public view returns(uint256){
  return maxWalletAmount;
}
function currentMaxTx() public view returns(uint256){
  return maxTxAmount;
}
function updateSwapTreshold(uint256 newVal) public onlyOwner{
  swapTreshold = newVal;
  requiredTokensToSwap = _totalSupply*swapTreshold/1000;
}
function currentTradeStatus() public view returns (bool){
  return tradeEnabled;
}
function currentSwapTreshold() public view returns(uint256){
  return swapTreshold;
}
function currentTokensToSwap() public view returns(uint256){
  return requiredTokensToSwap;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
  address indexed sender,
  uint amount0In,
  uint amount1In,
  uint amount0Out,
  uint amount1Out,
  address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
  address tokenA,
  address tokenB,
  uint amountADesired,
  uint amountBDesired,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
  address token,
  uint amountTokenDesired,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
  uint amountOut,
  uint amountInMax,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"AibridgechainbotCOINCoinDayOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"COINDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","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":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052601360a08190527f41492042524944474520434841494e20424f540000000000000000000000000060c0908152620000409160019190620005bc565b50604080518082019091526004808252632441424360e01b60209092019182526200006e91600291620005bc565b506003805460ff1916601217908190556000600455600260058190556006556001600755600a6008819055620000a89160ff169062000723565b620000b99064174876e8006200080e565b6009556103e8600754600954620000d191906200080e565b620000dd9190620006b5565b600a55601080546001600160a01b03191673fc52ff5dc557aa4b8073b39fe4ab21d716ea277817905560055460095460c8916200011a916200080e565b620001269190620006b5565b60115560646006546009546200013d91906200080e565b620001499190620006b5565b6012556014805461ffff1916610100908117909155600460175560006018819055600b601955601a819055601b819055601c805460ff191660011790556005601d55601e8190556028601f5560208190556021805461ff0019169092179091556ddead0000000000000000000000006080526022819055602355348015620001d057600080fd5b50620001e5620001df62000505565b62000509565b600954600b6000620001f662000505565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026d57600080fd5b505afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000662565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f157600080fd5b505afa15801562000306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032c919062000662565b6040518363ffffffff1660e01b81526004016200034b92919062000692565b602060405180830381600087803b1580156200036657600080fd5b505af11580156200037b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a1919062000662565b602580546001600160a01b0319166001600160a01b03929092169190911790556001600c6000620003d162000559565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c8452828120805486166001908117909155602480548885166001600160a01b031990911617908190559092168152601593849052918220805490941681179093556200044f62000559565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526015909352912080549092166001908117909255602554620004a59291169062000568565b620004af62000505565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620004f69190620006ac565b60405180910390a35062000883565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031690565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b828054620005ca9062000830565b90600052602060002090601f016020900481019282620005ee576000855562000639565b82601f106200060957805160ff191683800117855562000639565b8280016001018555821562000639579182015b82811115620006395782518255916020019190600101906200061c565b50620006479291506200064b565b5090565b5b808211156200064757600081556001016200064c565b60006020828403121562000674578081fd5b81516001600160a01b03811681146200068b578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082620006d157634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620006ea57506200071a565b818704821115620006ff57620006ff6200086d565b808616156200070d57918102915b9490941c938002620006d9565b94509492505050565b60006200068b60001960ff85168460008262000742575060016200068b565b8162000751575060006200068b565b81600181146200076a57600281146200077557620007a9565b60019150506200068b565b60ff8411156200078957620007896200086d565b6001841b915084821115620007a257620007a26200086d565b506200068b565b5060208310610133831016604e8410600b8410161715620007e1575081810a83811115620007db57620007db6200086d565b6200068b565b620007f08484846001620006d6565b8086048211156200080557620008056200086d565b02949350505050565b60008160001904831182151516156200082b576200082b6200086d565b500290565b6002810460018216806200084557607f821691505b602082108114156200086757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6128f7620008a960003960008181610bd1015261207901526128f76000f3fe6080604052600436106103545760003560e01c80638da5cb5b116101c6578063bf9eb540116100f7578063ddcf9b9811610095578063edcf19b21161006f578063edcf19b2146108d6578063f2fde38b146108f6578063f7da678514610916578063f953cf3a146109365761035b565b8063ddcf9b9814610897578063e1370dd3146108ac578063e1aea320146108c15761035b565b8063d1294d4c116100d1578063d1294d4c14610822578063d15bcf0f14610842578063d7d7442f14610857578063dd62ed3e146108775761035b565b8063bf9eb540146107c2578063cb664534146107e2578063cba0e996146108025761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461074d578063b4d95a931461076d578063b62496f51461078d578063bf9b0159146107ad5761035b565b8063a5ece941146106f8578063a6c38f591461070d578063a7a074521461072d5761035b565b80639a7a23d6116101a05780639a7a23d6146106995780639b136da4146106b95780639c5c3d0d146106ce578063a04bdc81146106e35761035b565b80638da5cb5b1461065a57806390f502831461066f57806395d89b41146106845761035b565b80634a0e963c116102a05780636df3333a1161023e578063801527ce11610218578063801527ce146105e55780638628c23f14610605578063893d20e8146106255780638cd0260c1461063a5761035b565b80636df3333a1461059b57806370a08231146105b0578063715018a6146105d05761035b565b80635297defd1161027a5780635297defd146105315780635be76f111461054657806364c16163146105665780636573c4df1461057b5761035b565b80634a0e963c146104e75780634a74bb02146105075780634bd7ace51461051c5761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610488578063313ce567146104a8578063487a6905146104bd57806349bd5a5e146104d25761035b565b806322788f861461043157806323b872dd1461044657806327c8f835146104665761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103da57806318160ddd146103fa578063220f66961461041c5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b5061037561094b565b6040516103829190612364565b60405180910390f35b34801561039757600080fd5b506103ab6103a6366004612269565b6109dd565b005b3480156103b957600080fd5b506103cd6103c83660046121f2565b610a2a565b6040516103829190612359565b3480156103e657600080fd5b506103ab6103f5366004612173565b610a47565b34801561040657600080fd5b5061040f610ae6565b6040516103829190612784565b34801561042857600080fd5b506103cd610aec565b34801561043d57600080fd5b5061040f610af5565b34801561045257600080fd5b506103cd6104613660046121a0565b610afb565b34801561047257600080fd5b5061047b610bcf565b60405161038291906122f1565b34801561049457600080fd5b506103ab6104a336600461221d565b610bf3565b3480156104b457600080fd5b5061040f610c45565b3480156104c957600080fd5b5061040f610c4e565b3480156104de57600080fd5b5061047b610c54565b3480156104f357600080fd5b506103ab6105023660046120fc565b610c63565b34801561051357600080fd5b506103cd610cc6565b34801561052857600080fd5b5061040f610cd4565b34801561053d57600080fd5b5061040f610cda565b34801561055257600080fd5b506103ab6105613660046120fc565b610ce0565b34801561057257600080fd5b5061040f610d5c565b34801561058757600080fd5b506103ab610596366004612269565b610d62565b3480156105a757600080fd5b5061040f610dc7565b3480156105bc57600080fd5b5061040f6105cb3660046120fc565b610dcd565b3480156105dc57600080fd5b506103ab610de8565b3480156105f157600080fd5b506103ab61060036600461221d565b610e33565b34801561061157600080fd5b506103ab610620366004612269565b610e8c565b34801561063157600080fd5b5061047b610ed0565b34801561064657600080fd5b506103ab610655366004612269565b610edf565b34801561066657600080fd5b5061047b610f23565b34801561067b57600080fd5b5061040f610f32565b34801561069057600080fd5b50610375610f38565b3480156106a557600080fd5b506103ab6106b43660046121e0565b610f47565b3480156106c557600080fd5b5061040f610fc2565b3480156106da57600080fd5b506103ab610fc8565b3480156106ef57600080fd5b5061040f611040565b34801561070457600080fd5b5061047b611046565b34801561071957600080fd5b506103ab61072836600461213b565b611055565b34801561073957600080fd5b506103ab610748366004612269565b6110bf565b34801561075957600080fd5b506103cd6107683660046121f2565b611124565b34801561077957600080fd5b506103ab6107883660046120fc565b611138565b34801561079957600080fd5b506103cd6107a83660046120fc565b611198565b3480156107b957600080fd5b5061040f6111ad565b3480156107ce57600080fd5b506103ab6107dd3660046120fc565b6111b3565b3480156107ee57600080fd5b506103ab6107fd3660046120fc565b611214565b34801561080e57600080fd5b506103cd61081d3660046120fc565b611277565b34801561082e57600080fd5b506103ab61083d366004612269565b611295565b34801561084e57600080fd5b506103cd6112fb565b34801561086357600080fd5b506103ab610872366004612269565b611304565b34801561088357600080fd5b5061040f610892366004612173565b611348565b3480156108a357600080fd5b5061040f611373565b3480156108b857600080fd5b5061040f611379565b3480156108cd57600080fd5b506103ab61137f565b3480156108e257600080fd5b506103ab6108f1366004612269565b6113dc565b34801561090257600080fd5b506103ab6109113660046120fc565b611420565b34801561092257600080fd5b506103ab610931366004612255565b611491565b34801561094257600080fd5b506103ab611556565b60606001805461095a9061284d565b80601f01602080910402602001604051908101604052809291908181526020018280546109869061284d565b80156109d35780601f106109a8576101008083540402835291602001916109d3565b820191906000526020600020905b8154815290600101906020018083116109b657829003601f168201915b5050505050905090565b6109e56115b6565b6001600160a01b03166109f6610f23565b6001600160a01b031614610a255760405162461bcd60e51b8152600401610a1c9061263e565b60405180910390fd5b601755565b6000610a3e610a376115b6565b84846115ba565b50600192915050565b610a4f6115b6565b6001600160a01b0316610a60610f23565b6001600160a01b031614610a865760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b60095490565b60215460ff1681565b60085490565b6001600160a01b0383166000908152600d6020526040812081610b1c6115b6565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610b5c5760405162461bcd60e51b8152600401610a1c906125f6565b610b6784848461166e565b610bc584610b736115b6565b6001600160a01b0387166000908152600d602052604081208691610b956115b6565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610bc09190612836565b6115ba565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bfb6115b6565b6001600160a01b0316610c0c610f23565b6001600160a01b031614610c325760405162461bcd60e51b8152600401610a1c9061263e565b601c805460ff1916911515919091179055565b60035460ff1690565b600a5490565b6025546001600160a01b031681565b610c6b6115b6565b6001600160a01b0316610c7c610f23565b6001600160a01b031614610ca25760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602154610100900460ff1681565b60175490565b601f5490565b610ce86115b6565b6001600160a01b0316610cf9610f23565b6001600160a01b031614610d1f5760405162461bcd60e51b8152600401610a1c9061263e565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d57573d6000803e3d6000fd5b505050565b60235490565b610d6a6115b6565b6001600160a01b0316610d7b610f23565b6001600160a01b031614610da15760405162461bcd60e51b8152600401610a1c9061263e565b6005819055600954606490610db7908390612817565b610dc191906127f7565b60115550565b60075490565b6001600160a01b03166000908152600b602052604090205490565b610df06115b6565b6001600160a01b0316610e01610f23565b6001600160a01b031614610e275760405162461bcd60e51b8152600401610a1c9061263e565b610e316000611bbf565b565b610e3b6115b6565b6001600160a01b0316610e4c610f23565b6001600160a01b031614610e725760405162461bcd60e51b8152600401610a1c9061263e565b602180549115156101000261ff0019909216919091179055565b610e946115b6565b6001600160a01b0316610ea5610f23565b6001600160a01b031614610ecb5760405162461bcd60e51b8152600401610a1c9061263e565b601f55565b6000610eda610f23565b905090565b610ee76115b6565b6001600160a01b0316610ef8610f23565b6001600160a01b031614610f1e5760405162461bcd60e51b8152600401610a1c9061263e565b601d55565b6000546001600160a01b031690565b601d5490565b60606002805461095a9061284d565b610f4f6115b6565b6001600160a01b0316610f60610f23565b6001600160a01b031614610f865760405162461bcd60e51b8152600401610a1c9061263e565b6025546001600160a01b0383811691161415610fb45760405162461bcd60e51b8152600401610a1c90612482565b610fbe8282611c0f565b5050565b60195490565b610fd06115b6565b6001600160a01b0316610fe1610f23565b6001600160a01b0316146110075760405162461bcd60e51b8152600401610a1c9061263e565b601b5442116110285760405162461bcd60e51b8152600401610a1c90612727565b60198054601a55601780546018556000908190559055565b600a5481565b6010546001600160a01b031681565b61105d6115b6565b6001600160a01b031661106e610f23565b6001600160a01b0316146110945760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6110c76115b6565b6001600160a01b03166110d8610f23565b6001600160a01b0316146110fe5760405162461bcd60e51b8152600401610a1c9061263e565b6006819055600954606490611114908390612817565b61111e91906127f7565b60125550565b6000610a3e6111316115b6565b848461166e565b6111406115b6565b6001600160a01b0316611151610f23565b6001600160a01b0316146111775760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b60125490565b6111bb6115b6565b6001600160a01b03166111cc610f23565b6001600160a01b0316146111f25760405162461bcd60e51b8152600401610a1c9061263e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b61121c6115b6565b6001600160a01b031661122d610f23565b6001600160a01b0316146112535760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b61129d6115b6565b6001600160a01b03166112ae610f23565b6001600160a01b0316146112d45760405162461bcd60e51b8152600401610a1c9061263e565b60078190556009546103e8906112eb908390612817565b6112f591906127f7565b600a5550565b601c5460ff1690565b61130c6115b6565b6001600160a01b031661131d610f23565b6001600160a01b0316146113435760405162461bcd60e51b8152600401610a1c9061263e565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b60225490565b60115490565b6113876115b6565b6001600160a01b0316611398610f23565b6001600160a01b0316146113be5760405162461bcd60e51b8152600401610a1c9061263e565b601854601755601a546019556113d742620151806127df565b601b55565b6113e46115b6565b6001600160a01b03166113f5610f23565b6001600160a01b03161461141b5760405162461bcd60e51b8152600401610a1c9061263e565b601955565b6114286115b6565b6001600160a01b0316611439610f23565b6001600160a01b03161461145f5760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b0381166114855760405162461bcd60e51b8152600401610a1c906123fa565b61148e81611bbf565b50565b6114996115b6565b6001600160a01b03166114aa610f23565b6001600160a01b0316146114d05760405162461bcd60e51b8152600401610a1c9061263e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114fe9085908590600401612305565b602060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115509190612239565b50505050565b61155e6115b6565b6001600160a01b031661156f610f23565b6001600160a01b0316146115955760405162461bcd60e51b8152600401610a1c9061263e565b6004601981905560026017819055601f91909155601d55610e316001610e33565b3390565b6001600160a01b0383166115e05760405162461bcd60e51b8152600401610a1c906126b8565b6001600160a01b0382166116065760405162461bcd60e51b8152600401610a1c90612440565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611661908590612784565b60405180910390a3505050565b6001600160a01b0383166116945760405162461bcd60e51b8152600401610a1c90612673565b6001600160a01b0382166116ba5760405162461bcd60e51b8152600401610a1c906123b7565b600081116116da5760405162461bcd60e51b8152600401610a1c9061256d565b6001600160a01b0383166000908152600b6020526040902054818110156117135760405162461bcd60e51b8152600401610a1c906124df565b601c5460ff16611778576001600160a01b03831660009081526015602052604090205460ff168061175c57506001600160a01b03841660009081526015602052604090205460ff165b6117785760405162461bcd60e51b8152600401610a1c906125bf565b6001600160a01b03831660009081526015602052604090205460ff161580156117ba57506001600160a01b03841660009081526015602052604090205460ff16155b15611819576012548211156117e15760405162461bcd60e51b8152600401610a1c90612525565b6025546001600160a01b0385811691161415611819576011548261180485610dcd565b61180e91906127df565b111561181957600080fd5b600061182430610dcd565b9050600a54811015801561183b575060215460ff16155b801561185557506025546001600160a01b03868116911614155b80156118685750602154610100900460ff165b1561188357600a5481106118835750600a5461188381611c63565b6001600160a01b0385166000908152600c602052604090205460019060ff16806118c557506001600160a01b0385166000908152600c602052604090205460ff165b156118d35750600060048190555b6000808215611a52576001600160a01b03881660009081526013602052604090205460ff1615156001148061192557506001600160a01b03871660009081526013602052604090205460ff1615156001145b156119425760405162461bcd60e51b8152600401610a1c906126fc565b6001600160a01b0387166000908152600e602052604090205460ff16801561197857506024546001600160a01b03888116911614155b156119cc576000600455601f546064906119929088612817565b61199c91906127f7565b91506064601d54876119ae9190612817565b6119b891906127f7565b90506119c481836127df565b600455611a52565b6001600160a01b0388166000908152600e602052604090205460ff168015611a0257506024546001600160a01b03898116911614155b15611a52576000600455601954606490611a1c9088612817565b611a2691906127f7565b9150606460175487611a389190612817565b611a4291906127f7565b9050611a4e81836127df565b6004555b611a5c8686612836565b6001600160a01b0389166000908152600b602052604090205580611a808388612836565b611a8a9190612836565b6001600160a01b0388166000908152600b602052604081208054909190611ab29084906127df565b90915550508015611b5d57600454306000908152600b602052604081208054909190611adf9084906127df565b925050819055508060236000828254611af891906127df565b925050819055508160226000828254611b1191906127df565b909155505060045460405130916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611b5491612784565b60405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611ba09190612836565b604051611bad9190612784565b60405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6021805460ff19166001179055602354611c7c90611cd5565b611c87602254611d56565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611cb69190612784565b60405180910390a150600060228190556023556021805460ff19169055565b6000611ce26002836127f7565b90506000611cf08284612836565b905047611cfc83611edf565b6000611d088247612836565b9050611d14838261202e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611d47939291906127c9565b60405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611ded57600080fd5b505afa158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e25919061211f565b81600181518110611e4657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602454611e6c91309116846115ba565b60245460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611ea99287926000928892911690429060040161278d565b600060405180830381600087803b158015611ec357600080fd5b505af1158015611ed7573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f2257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f7657600080fd5b505afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae919061211f565b81600181518110611fcf57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602454611ff591309116846115ba565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea990859060009086903090429060040161278d565b6024546120469030906001600160a01b0316846115ba565b60245460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906120a3903090879060009081907f000000000000000000000000000000000000000000000000000000000000000090429060040161231e565b6060604051808303818588803b1580156120bc57600080fd5b505af11580156120d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f59190612281565b5050505050565b60006020828403121561210d578081fd5b81356121188161289e565b9392505050565b600060208284031215612130578081fd5b81516121188161289e565b6000806040838503121561214d578081fd5b82356121588161289e565b91506020830135612168816128b3565b809150509250929050565b60008060408385031215612185578182fd5b82356121908161289e565b915060208301356121688161289e565b6000806000606084860312156121b4578081fd5b83356121bf8161289e565b925060208401356121cf8161289e565b929592945050506040919091013590565b6000806040838503121561214d578182fd5b60008060408385031215612204578182fd5b823561220f8161289e565b946020939093013593505050565b60006020828403121561222e578081fd5b8135612118816128b3565b60006020828403121561224a578081fd5b8151612118816128b3565b6000806000606084860312156121b4578283fd5b60006020828403121561227a578081fd5b5035919050565b600080600060608486031215612295578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156122e65781516001600160a01b0316875295820195908201906001016122c1565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561239057858101830151858201604001528201612374565b818111156123a15783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601190820152704e6f20626f74732063616e20747261646560781b604082015260600190565b6020808252603e908201527f596f752063616e742063616c6c204169627269646765636861696e626f74434f60408201527f494e436f696e446179206d6f7265207468616e206f6e63652061206461790000606082015260800190565b90815260200190565b600086825285602083015260a060408301526127ac60a08301866122ae565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b600082198211156127f2576127f2612888565b500190565b60008261281257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561283157612831612888565b500290565b60008282101561284857612848612888565b500390565b60028104600182168061286157607f821691505b6020821081141561288257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461148e57600080fd5b801515811461148e57600080fdfea2646970667358221220991d85ac0a65aabbdc554f8e3476bf338b4c5061fb188e6d75d28e2a96790b9764736f6c63430008000033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638da5cb5b116101c6578063bf9eb540116100f7578063ddcf9b9811610095578063edcf19b21161006f578063edcf19b2146108d6578063f2fde38b146108f6578063f7da678514610916578063f953cf3a146109365761035b565b8063ddcf9b9814610897578063e1370dd3146108ac578063e1aea320146108c15761035b565b8063d1294d4c116100d1578063d1294d4c14610822578063d15bcf0f14610842578063d7d7442f14610857578063dd62ed3e146108775761035b565b8063bf9eb540146107c2578063cb664534146107e2578063cba0e996146108025761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461074d578063b4d95a931461076d578063b62496f51461078d578063bf9b0159146107ad5761035b565b8063a5ece941146106f8578063a6c38f591461070d578063a7a074521461072d5761035b565b80639a7a23d6116101a05780639a7a23d6146106995780639b136da4146106b95780639c5c3d0d146106ce578063a04bdc81146106e35761035b565b80638da5cb5b1461065a57806390f502831461066f57806395d89b41146106845761035b565b80634a0e963c116102a05780636df3333a1161023e578063801527ce11610218578063801527ce146105e55780638628c23f14610605578063893d20e8146106255780638cd0260c1461063a5761035b565b80636df3333a1461059b57806370a08231146105b0578063715018a6146105d05761035b565b80635297defd1161027a5780635297defd146105315780635be76f111461054657806364c16163146105665780636573c4df1461057b5761035b565b80634a0e963c146104e75780634a74bb02146105075780634bd7ace51461051c5761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610488578063313ce567146104a8578063487a6905146104bd57806349bd5a5e146104d25761035b565b806322788f861461043157806323b872dd1461044657806327c8f835146104665761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103da57806318160ddd146103fa578063220f66961461041c5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b5061037561094b565b6040516103829190612364565b60405180910390f35b34801561039757600080fd5b506103ab6103a6366004612269565b6109dd565b005b3480156103b957600080fd5b506103cd6103c83660046121f2565b610a2a565b6040516103829190612359565b3480156103e657600080fd5b506103ab6103f5366004612173565b610a47565b34801561040657600080fd5b5061040f610ae6565b6040516103829190612784565b34801561042857600080fd5b506103cd610aec565b34801561043d57600080fd5b5061040f610af5565b34801561045257600080fd5b506103cd6104613660046121a0565b610afb565b34801561047257600080fd5b5061047b610bcf565b60405161038291906122f1565b34801561049457600080fd5b506103ab6104a336600461221d565b610bf3565b3480156104b457600080fd5b5061040f610c45565b3480156104c957600080fd5b5061040f610c4e565b3480156104de57600080fd5b5061047b610c54565b3480156104f357600080fd5b506103ab6105023660046120fc565b610c63565b34801561051357600080fd5b506103cd610cc6565b34801561052857600080fd5b5061040f610cd4565b34801561053d57600080fd5b5061040f610cda565b34801561055257600080fd5b506103ab6105613660046120fc565b610ce0565b34801561057257600080fd5b5061040f610d5c565b34801561058757600080fd5b506103ab610596366004612269565b610d62565b3480156105a757600080fd5b5061040f610dc7565b3480156105bc57600080fd5b5061040f6105cb3660046120fc565b610dcd565b3480156105dc57600080fd5b506103ab610de8565b3480156105f157600080fd5b506103ab61060036600461221d565b610e33565b34801561061157600080fd5b506103ab610620366004612269565b610e8c565b34801561063157600080fd5b5061047b610ed0565b34801561064657600080fd5b506103ab610655366004612269565b610edf565b34801561066657600080fd5b5061047b610f23565b34801561067b57600080fd5b5061040f610f32565b34801561069057600080fd5b50610375610f38565b3480156106a557600080fd5b506103ab6106b43660046121e0565b610f47565b3480156106c557600080fd5b5061040f610fc2565b3480156106da57600080fd5b506103ab610fc8565b3480156106ef57600080fd5b5061040f611040565b34801561070457600080fd5b5061047b611046565b34801561071957600080fd5b506103ab61072836600461213b565b611055565b34801561073957600080fd5b506103ab610748366004612269565b6110bf565b34801561075957600080fd5b506103cd6107683660046121f2565b611124565b34801561077957600080fd5b506103ab6107883660046120fc565b611138565b34801561079957600080fd5b506103cd6107a83660046120fc565b611198565b3480156107b957600080fd5b5061040f6111ad565b3480156107ce57600080fd5b506103ab6107dd3660046120fc565b6111b3565b3480156107ee57600080fd5b506103ab6107fd3660046120fc565b611214565b34801561080e57600080fd5b506103cd61081d3660046120fc565b611277565b34801561082e57600080fd5b506103ab61083d366004612269565b611295565b34801561084e57600080fd5b506103cd6112fb565b34801561086357600080fd5b506103ab610872366004612269565b611304565b34801561088357600080fd5b5061040f610892366004612173565b611348565b3480156108a357600080fd5b5061040f611373565b3480156108b857600080fd5b5061040f611379565b3480156108cd57600080fd5b506103ab61137f565b3480156108e257600080fd5b506103ab6108f1366004612269565b6113dc565b34801561090257600080fd5b506103ab6109113660046120fc565b611420565b34801561092257600080fd5b506103ab610931366004612255565b611491565b34801561094257600080fd5b506103ab611556565b60606001805461095a9061284d565b80601f01602080910402602001604051908101604052809291908181526020018280546109869061284d565b80156109d35780601f106109a8576101008083540402835291602001916109d3565b820191906000526020600020905b8154815290600101906020018083116109b657829003601f168201915b5050505050905090565b6109e56115b6565b6001600160a01b03166109f6610f23565b6001600160a01b031614610a255760405162461bcd60e51b8152600401610a1c9061263e565b60405180910390fd5b601755565b6000610a3e610a376115b6565b84846115ba565b50600192915050565b610a4f6115b6565b6001600160a01b0316610a60610f23565b6001600160a01b031614610a865760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b60095490565b60215460ff1681565b60085490565b6001600160a01b0383166000908152600d6020526040812081610b1c6115b6565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610b5c5760405162461bcd60e51b8152600401610a1c906125f6565b610b6784848461166e565b610bc584610b736115b6565b6001600160a01b0387166000908152600d602052604081208691610b956115b6565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610bc09190612836565b6115ba565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b610bfb6115b6565b6001600160a01b0316610c0c610f23565b6001600160a01b031614610c325760405162461bcd60e51b8152600401610a1c9061263e565b601c805460ff1916911515919091179055565b60035460ff1690565b600a5490565b6025546001600160a01b031681565b610c6b6115b6565b6001600160a01b0316610c7c610f23565b6001600160a01b031614610ca25760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602154610100900460ff1681565b60175490565b601f5490565b610ce86115b6565b6001600160a01b0316610cf9610f23565b6001600160a01b031614610d1f5760405162461bcd60e51b8152600401610a1c9061263e565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d57573d6000803e3d6000fd5b505050565b60235490565b610d6a6115b6565b6001600160a01b0316610d7b610f23565b6001600160a01b031614610da15760405162461bcd60e51b8152600401610a1c9061263e565b6005819055600954606490610db7908390612817565b610dc191906127f7565b60115550565b60075490565b6001600160a01b03166000908152600b602052604090205490565b610df06115b6565b6001600160a01b0316610e01610f23565b6001600160a01b031614610e275760405162461bcd60e51b8152600401610a1c9061263e565b610e316000611bbf565b565b610e3b6115b6565b6001600160a01b0316610e4c610f23565b6001600160a01b031614610e725760405162461bcd60e51b8152600401610a1c9061263e565b602180549115156101000261ff0019909216919091179055565b610e946115b6565b6001600160a01b0316610ea5610f23565b6001600160a01b031614610ecb5760405162461bcd60e51b8152600401610a1c9061263e565b601f55565b6000610eda610f23565b905090565b610ee76115b6565b6001600160a01b0316610ef8610f23565b6001600160a01b031614610f1e5760405162461bcd60e51b8152600401610a1c9061263e565b601d55565b6000546001600160a01b031690565b601d5490565b60606002805461095a9061284d565b610f4f6115b6565b6001600160a01b0316610f60610f23565b6001600160a01b031614610f865760405162461bcd60e51b8152600401610a1c9061263e565b6025546001600160a01b0383811691161415610fb45760405162461bcd60e51b8152600401610a1c90612482565b610fbe8282611c0f565b5050565b60195490565b610fd06115b6565b6001600160a01b0316610fe1610f23565b6001600160a01b0316146110075760405162461bcd60e51b8152600401610a1c9061263e565b601b5442116110285760405162461bcd60e51b8152600401610a1c90612727565b60198054601a55601780546018556000908190559055565b600a5481565b6010546001600160a01b031681565b61105d6115b6565b6001600160a01b031661106e610f23565b6001600160a01b0316146110945760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6110c76115b6565b6001600160a01b03166110d8610f23565b6001600160a01b0316146110fe5760405162461bcd60e51b8152600401610a1c9061263e565b6006819055600954606490611114908390612817565b61111e91906127f7565b60125550565b6000610a3e6111316115b6565b848461166e565b6111406115b6565b6001600160a01b0316611151610f23565b6001600160a01b0316146111775760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b60125490565b6111bb6115b6565b6001600160a01b03166111cc610f23565b6001600160a01b0316146111f25760405162461bcd60e51b8152600401610a1c9061263e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b61121c6115b6565b6001600160a01b031661122d610f23565b6001600160a01b0316146112535760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b61129d6115b6565b6001600160a01b03166112ae610f23565b6001600160a01b0316146112d45760405162461bcd60e51b8152600401610a1c9061263e565b60078190556009546103e8906112eb908390612817565b6112f591906127f7565b600a5550565b601c5460ff1690565b61130c6115b6565b6001600160a01b031661131d610f23565b6001600160a01b0316146113435760405162461bcd60e51b8152600401610a1c9061263e565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b60225490565b60115490565b6113876115b6565b6001600160a01b0316611398610f23565b6001600160a01b0316146113be5760405162461bcd60e51b8152600401610a1c9061263e565b601854601755601a546019556113d742620151806127df565b601b55565b6113e46115b6565b6001600160a01b03166113f5610f23565b6001600160a01b03161461141b5760405162461bcd60e51b8152600401610a1c9061263e565b601955565b6114286115b6565b6001600160a01b0316611439610f23565b6001600160a01b03161461145f5760405162461bcd60e51b8152600401610a1c9061263e565b6001600160a01b0381166114855760405162461bcd60e51b8152600401610a1c906123fa565b61148e81611bbf565b50565b6114996115b6565b6001600160a01b03166114aa610f23565b6001600160a01b0316146114d05760405162461bcd60e51b8152600401610a1c9061263e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114fe9085908590600401612305565b602060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115509190612239565b50505050565b61155e6115b6565b6001600160a01b031661156f610f23565b6001600160a01b0316146115955760405162461bcd60e51b8152600401610a1c9061263e565b6004601981905560026017819055601f91909155601d55610e316001610e33565b3390565b6001600160a01b0383166115e05760405162461bcd60e51b8152600401610a1c906126b8565b6001600160a01b0382166116065760405162461bcd60e51b8152600401610a1c90612440565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611661908590612784565b60405180910390a3505050565b6001600160a01b0383166116945760405162461bcd60e51b8152600401610a1c90612673565b6001600160a01b0382166116ba5760405162461bcd60e51b8152600401610a1c906123b7565b600081116116da5760405162461bcd60e51b8152600401610a1c9061256d565b6001600160a01b0383166000908152600b6020526040902054818110156117135760405162461bcd60e51b8152600401610a1c906124df565b601c5460ff16611778576001600160a01b03831660009081526015602052604090205460ff168061175c57506001600160a01b03841660009081526015602052604090205460ff165b6117785760405162461bcd60e51b8152600401610a1c906125bf565b6001600160a01b03831660009081526015602052604090205460ff161580156117ba57506001600160a01b03841660009081526015602052604090205460ff16155b15611819576012548211156117e15760405162461bcd60e51b8152600401610a1c90612525565b6025546001600160a01b0385811691161415611819576011548261180485610dcd565b61180e91906127df565b111561181957600080fd5b600061182430610dcd565b9050600a54811015801561183b575060215460ff16155b801561185557506025546001600160a01b03868116911614155b80156118685750602154610100900460ff165b1561188357600a5481106118835750600a5461188381611c63565b6001600160a01b0385166000908152600c602052604090205460019060ff16806118c557506001600160a01b0385166000908152600c602052604090205460ff165b156118d35750600060048190555b6000808215611a52576001600160a01b03881660009081526013602052604090205460ff1615156001148061192557506001600160a01b03871660009081526013602052604090205460ff1615156001145b156119425760405162461bcd60e51b8152600401610a1c906126fc565b6001600160a01b0387166000908152600e602052604090205460ff16801561197857506024546001600160a01b03888116911614155b156119cc576000600455601f546064906119929088612817565b61199c91906127f7565b91506064601d54876119ae9190612817565b6119b891906127f7565b90506119c481836127df565b600455611a52565b6001600160a01b0388166000908152600e602052604090205460ff168015611a0257506024546001600160a01b03898116911614155b15611a52576000600455601954606490611a1c9088612817565b611a2691906127f7565b9150606460175487611a389190612817565b611a4291906127f7565b9050611a4e81836127df565b6004555b611a5c8686612836565b6001600160a01b0389166000908152600b602052604090205580611a808388612836565b611a8a9190612836565b6001600160a01b0388166000908152600b602052604081208054909190611ab29084906127df565b90915550508015611b5d57600454306000908152600b602052604081208054909190611adf9084906127df565b925050819055508060236000828254611af891906127df565b925050819055508160226000828254611b1191906127df565b909155505060045460405130916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611b5491612784565b60405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611ba09190612836565b604051611bad9190612784565b60405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6021805460ff19166001179055602354611c7c90611cd5565b611c87602254611d56565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611cb69190612784565b60405180910390a150600060228190556023556021805460ff19169055565b6000611ce26002836127f7565b90506000611cf08284612836565b905047611cfc83611edf565b6000611d088247612836565b9050611d14838261202e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611d47939291906127c9565b60405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611ded57600080fd5b505afa158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e25919061211f565b81600181518110611e4657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602454611e6c91309116846115ba565b60245460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611ea99287926000928892911690429060040161278d565b600060405180830381600087803b158015611ec357600080fd5b505af1158015611ed7573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f2257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f7657600080fd5b505afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae919061211f565b81600181518110611fcf57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602454611ff591309116846115ba565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea990859060009086903090429060040161278d565b6024546120469030906001600160a01b0316846115ba565b60245460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906120a3903090879060009081907f000000000000000000000000000000000000000000000000000000000000dead90429060040161231e565b6060604051808303818588803b1580156120bc57600080fd5b505af11580156120d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f59190612281565b5050505050565b60006020828403121561210d578081fd5b81356121188161289e565b9392505050565b600060208284031215612130578081fd5b81516121188161289e565b6000806040838503121561214d578081fd5b82356121588161289e565b91506020830135612168816128b3565b809150509250929050565b60008060408385031215612185578182fd5b82356121908161289e565b915060208301356121688161289e565b6000806000606084860312156121b4578081fd5b83356121bf8161289e565b925060208401356121cf8161289e565b929592945050506040919091013590565b6000806040838503121561214d578182fd5b60008060408385031215612204578182fd5b823561220f8161289e565b946020939093013593505050565b60006020828403121561222e578081fd5b8135612118816128b3565b60006020828403121561224a578081fd5b8151612118816128b3565b6000806000606084860312156121b4578283fd5b60006020828403121561227a578081fd5b5035919050565b600080600060608486031215612295578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156122e65781516001600160a01b0316875295820195908201906001016122c1565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561239057858101830151858201604001528201612374565b818111156123a15783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601190820152704e6f20626f74732063616e20747261646560781b604082015260600190565b6020808252603e908201527f596f752063616e742063616c6c204169627269646765636861696e626f74434f60408201527f494e436f696e446179206d6f7265207468616e206f6e63652061206461790000606082015260800190565b90815260200190565b600086825285602083015260a060408301526127ac60a08301866122ae565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b600082198211156127f2576127f2612888565b500190565b60008261281257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561283157612831612888565b500290565b60008282101561284857612848612888565b500390565b60028104600182168061286157607f821691505b6020821081141561288257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461148e57600080fd5b801515811461148e57600080fdfea2646970667358221220991d85ac0a65aabbdc554f8e3476bf338b4c5061fb188e6d75d28e2a96790b9764736f6c63430008000033

Deployed Bytecode Sourcemap

4891:13985:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17868:101;;;;;;;;;;-1:-1:-1;17868:101:0;;;;;:::i;:::-;;:::i;:::-;;8860:152;;;;;;;;;;-1:-1:-1;8860:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16615:256::-;;;;;;;;;;-1:-1:-1;16615:256:0;;;;;:::i;:::-;;:::i;8353:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6574:28::-;;;;;;;;;;;;;:::i;10885:91::-;;;;;;;;;;;;;:::i;9556:356::-;;;;;;;;;;-1:-1:-1;9556:356:0;;;;;:::i;:::-;;:::i;6648:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14901:80::-;;;;;;;;;;-1:-1:-1;14901:80:0;;;;;:::i;:::-;;:::i;9014:74::-;;;;;;;;;;;;;:::i;18778:95::-;;;;;;;;;;;;;:::i;7108:28::-;;;;;;;;;;;;;:::i;16403:102::-;;;;;;;;;;-1:-1:-1;16403:102:0;;;;;:::i;:::-;;:::i;6605:40::-;;;;;;;;;;;;;:::i;10529:86::-;;;;;;;;;;;;;:::i;10795:88::-;;;;;;;;;;;;;:::i;14737:162::-;;;;;;;;;;-1:-1:-1;14737:162:0;;;;;:::i;:::-;;:::i;8263:88::-;;;;;;;;;;;;;:::i;9397:157::-;;;;;;;;;;-1:-1:-1;9397:157:0;;;;;:::i;:::-;;:::i;18689:87::-;;;;;;;;;;;;;:::i;8450:108::-;;;;;;;;;;-1:-1:-1;8450:108:0;;;;;:::i;:::-;;:::i;4343:84::-;;;;;;;;;;;;;:::i;17127:103::-;;;;;;;;;;-1:-1:-1;17127:103:0;;;;;:::i;:::-;;:::i;18179:102::-;;;;;;;;;;-1:-1:-1;18179:102:0;;;;;:::i;:::-;;:::i;8095:76::-;;;;;;;;;;;;;:::i;18074:103::-;;;;;;;;;;-1:-1:-1;18074:103:0;;;;;:::i;:::-;;:::i;3778:77::-;;;;;;;;;;;;;:::i;10705:88::-;;;;;;;;;;;;;:::i;9167:78::-;;;;;;;;;;;;;:::i;17468:226::-;;;;;;;;;;-1:-1:-1;17468:226:0;;;;;:::i;:::-;;:::i;10617:86::-;;;;;;;;;;;;;:::i;9946:269::-;;;;;;;;;;;;;:::i;5413:71::-;;;;;;;;;;;;;:::i;5740:99::-;;;;;;;;;;;;;:::i;10407:120::-;;;;;;;;;;-1:-1:-1;10407:120:0;;;;;:::i;:::-;;:::i;9249:146::-;;;;;;;;;;-1:-1:-1;9249:146:0;;;;;:::i;:::-;;:::i;8560:158::-;;;;;;;;;;-1:-1:-1;8560:158:0;;;;;:::i;:::-;;:::i;16507:106::-;;;;;;;;;;-1:-1:-1;16507:106:0;;;;;:::i;:::-;;:::i;5662:58::-;;;;;;;;;;-1:-1:-1;5662:58:0;;;;;:::i;:::-;;:::i;18372:79::-;;;;;;;;;;;;;:::i;17253:108::-;;;;;;;;;;-1:-1:-1;17253:108:0;;;;;:::i;:::-;;:::i;14001:106::-;;;;;;;;;;-1:-1:-1;14001:106:0;;;;;:::i;:::-;;:::i;10978:108::-;;;;;;;;;;-1:-1:-1;10978:108:0;;;;;:::i;:::-;;:::i;18453:148::-;;;;;;;;;;-1:-1:-1;18453:148:0;;;;;:::i;:::-;;:::i;18603:84::-;;;;;;;;;;;;;:::i;17025:100::-;;;;;;;;;;-1:-1:-1;17025:100:0;;;;;:::i;:::-;;:::i;8720:138::-;;;;;;;;;;-1:-1:-1;8720:138:0;;;;;:::i;:::-;;:::i;8173:88::-;;;;;;;;;;;;;:::i;18283:87::-;;;;;;;;;;;;;:::i;10217:188::-;;;;;;;;;;;;;:::i;17971:101::-;;;;;;;;;;-1:-1:-1;17971:101:0;;;;;:::i;:::-;;:::i;4557:176::-;;;;;;;;;;-1:-1:-1;4557:176:0;;;;;:::i;:::-;;:::i;14508:227::-;;;;;;;;;;-1:-1:-1;14508:227:0;;;;;:::i;:::-;;:::i;16873:150::-;;;;;;;;;;;;;:::i;9090:75::-;9129:13;9156:5;9149:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:75;:::o;17868:101::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;;;;;;;;;17944:9:::1;:21:::0;17868:101::o;8860:152::-;8937:4;8951:37;8960:12;:10;:12::i;:::-;8973:7;8981:6;8951:8;:37::i;:::-;-1:-1:-1;9004:4:0;8860:152;;;;:::o;16615:256::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16706:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;16743:4:::1;-1:-1:-1::0;;16706:41:0;;::::1;::::0;::::1;::::0;;;16752:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16790;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;16835:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;16615:256::o;8353:95::-;8432:12;;8353:95;:::o;6574:28::-;;;;;;:::o;10885:91::-;10956:16;;10885:91;:::o;9556:356::-;-1:-1:-1;;;;;9694:19:0;;9666:4;9694:19;;;:11;:19;;;;;9666:4;9714:12;:10;:12::i;:::-;-1:-1:-1;;;;;9694:33:0;-1:-1:-1;;;;;9694:33:0;;;;;;;;;;;;;9684:6;:43;;9676:96;;;;-1:-1:-1;;;9676:96:0;;;;;;;:::i;:::-;9777:36;9787:6;9795:9;9806:6;9777:9;:36::i;:::-;9818:74;9827:6;9835:12;:10;:12::i;:::-;-1:-1:-1;;;;;9849:19:0;;;;;;:11;:19;;;;;9885:6;;9869:12;:10;:12::i;:::-;-1:-1:-1;;;;;9849:33:0;-1:-1:-1;;;;;9849:33:0;;;;;;;;;;;;;:42;;;;:::i;:::-;9818:8;:74::i;:::-;-1:-1:-1;9904:4:0;9556:356;;;;;:::o;6648:81::-;;;:::o;14901:80::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;14956:12:::1;:21:::0;;-1:-1:-1;;14956:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14901:80::o;9014:74::-;9075:9;;;;9014:74;:::o;18778:95::-;18849:20;;18778:95;:::o;7108:28::-;;;-1:-1:-1;;;;;7108:28:0;;:::o;16403:102::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16466:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;16466:35:0::1;16497:4;16466:35;::::0;;16403:102::o;6605:40::-;;;;;;;;;:::o;10529:86::-;10602:9;;10529:86;:::o;10795:88::-;10869:10;;10795:88;:::o;14737:162::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;14854:41:::1;::::0;14828:21:::1;::::0;-1:-1:-1;;;;;14854:29:0;::::1;::::0;:41;::::1;;;::::0;14828:21;;14807:18:::1;14854:41:::0;14807:18;14854:41;14828:21;14854:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4027:1;14737:162:::0;:::o;8263:88::-;8338:9;;8263:88;:::o;9397:157::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;9467:17:::1;:26:::0;;;9516:12:::1;::::0;9547:3:::1;::::0;9516:30:::1;::::0;9487:6;;9516:30:::1;:::i;:::-;:34;;;;:::i;:::-;9498:15;:52:::0;-1:-1:-1;9397:157:0:o;18689:87::-;18760:12;;18689:87;:::o;8450:108::-;-1:-1:-1;;;;;8536:18:0;8516:7;8536:18;;;:9;:18;;;;;;;8450:108::o;4343:84::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;4402:21:::1;4420:1;4402:9;:21::i;:::-;4343:84::o:0;17127:103::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;17194:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;17194:32:0;;::::1;::::0;;;::::1;::::0;;17127:103::o;18179:102::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;18256:10:::1;:21:::0;18179:102::o;8095:76::-;8136:7;8160;:5;:7::i;:::-;8153:14;;8095:76;:::o;18074:103::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;18152:10:::1;:21:::0;18074:103::o;3778:77::-;3824:7;3845:6;-1:-1:-1;;;;;3845:6:0;3778:77;:::o;10705:88::-;10779:10;;10705:88;:::o;9167:78::-;9208:13;9234:7;9227:14;;;;;:::i;17468:226::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;17569:13:::1;::::0;-1:-1:-1;;;;;17561:21:0;;::::1;17569:13:::0;::::1;17561:21;;17553:91;;;;-1:-1:-1::0;;;17553:91:0::1;;;;;;;:::i;:::-;17649:41;17678:4;17684:5;17649:28;:41::i;:::-;17468:226:::0;;:::o;10617:86::-;10690:9;;10617:86;:::o;9946:269::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;10013:31:::1;;9995:15;:49;9987:124;;;;-1:-1:-1::0;;;9987:124:0::1;;;;;;;:::i;:::-;10133:9;::::0;;10117:13:::1;:25:::0;10164:9:::1;::::0;;10148:13:::1;:25:::0;-1:-1:-1;10179:13:0;;;;10198;;9946:269::o;5413:71::-;;;;:::o;5740:99::-;;;-1:-1:-1;;;;;5740:99:0;;:::o;10407:120::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10492:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;10492:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10407:120::o;9249:146::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;9315:13:::1;:22:::0;;;9356:12:::1;::::0;9383:3:::1;::::0;9356:26:::1;::::0;9331:6;;9356:26:::1;:::i;:::-;:30;;;;:::i;:::-;9342:11;:44:::0;-1:-1:-1;9249:146:0:o;8560:158::-;8640:4;8654:40;8664:12;:10;:12::i;:::-;8677:9;8687:6;8654:9;:40::i;16507:106::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16574:27:0::1;16604:5;16574:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;16574:35:0::1;::::0;;16507:106::o;5662:58::-;;;;;;;;;;;;;;;:::o;18372:79::-;18436:11;;18372:79;:::o;17253:108::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;17319:16:::1;:38:::0;;-1:-1:-1;;;;;;17319:38:0::1;-1:-1:-1::0;;;;;17319:38:0;;;::::1;::::0;;;::::1;::::0;;17253:108::o;14001:106::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14067:29:0::1;;::::0;;;:17:::1;:29;::::0;;;;:36;;-1:-1:-1;;14067:36:0::1;14099:4;14067:36;::::0;;14001:106::o;10978:108::-;-1:-1:-1;;;;;11056:26:0;11035:4;11056:26;;;:17;:26;;;;;;;;;10978:108::o;18453:148::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;18518:12:::1;:21:::0;;;18567:12:::1;::::0;18593:4:::1;::::0;18567:25:::1;::::0;18533:6;;18567:25:::1;:::i;:::-;:30;;;;:::i;:::-;18544:20;:53:::0;-1:-1:-1;18453:148:0:o;18603:84::-;18671:12;;;;18603:84;:::o;17025:100::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;17090:16:::1;:31:::0;17025:100::o;8720:138::-;-1:-1:-1;;;;;8827:18:0;;;8803:7;8827:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8720:138::o;8173:88::-;8248:9;;8173:88;:::o;18283:87::-;18351:15;;18283:87;:::o;10217:188::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;10294:13:::1;::::0;10282:9:::1;:25:::0;10325:13:::1;::::0;10313:9:::1;:25:::0;10378:23:::1;:15;10396:5;10378:23;:::i;:::-;10344:31;:57:::0;10217:188::o;17971:101::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;18048:9:::1;:20:::0;17971:101::o;4557:176::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4640:22:0;::::1;4632:73;;;;-1:-1:-1::0;;;4632:73:0::1;;;;;;;:::i;:::-;4710:19;4720:8;4710:9;:19::i;:::-;4557:176:::0;:::o;14508:227::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;14689:42:::1;::::0;-1:-1:-1;;;14689:42:0;;-1:-1:-1;;;;;14689:21:0;::::1;::::0;::::1;::::0;:42:::1;::::0;14711:11;;14724:6;;14689:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14508:227:::0;;;:::o;16873:150::-;3973:12;:10;:12::i;:::-;-1:-1:-1;;;;;3962:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3962:23:0;;3954:68;;;;-1:-1:-1;;;3954:68:0;;;;;;;:::i;:::-;16934:1:::1;16922:9;:13:::0;;;16952:1:::1;16940:9;:13:::0;;;16958:10:::1;:14:::0;;;;16977:10:::1;:14:::0;16996:23:::1;17014:4;16996:17;:23::i;170:88::-:0;244:10;170:88;:::o;16069:306::-;-1:-1:-1;;;;;16155:19:0;;16147:68;;;;-1:-1:-1;;;16147:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16228:21:0;;16220:68;;;;-1:-1:-1;;;16220:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16293:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;16339:32;;;;;16323:6;;16339:32;:::i;:::-;;;;;;;;16069:306;;;:::o;11088:2681::-;-1:-1:-1;;;;;11171:18:0;;11163:68;;;;-1:-1:-1;;;11163:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11244:16:0;;11236:64;;;;-1:-1:-1;;;11236:64:0;;;;;;;:::i;:::-;11322:1;11313:6;:10;11305:72;;;;-1:-1:-1;;;11305:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11406:15:0;;11382:21;11406:15;;;:9;:15;;;;;;11434:23;;;;11426:74;;;;-1:-1:-1;;;11426:74:0;;;;;;;:::i;:::-;11508:12;;;;11505:129;;-1:-1:-1;;;;;11547:21:0;;;;;;:17;:21;;;;;;;;;:48;;-1:-1:-1;;;;;;11572:23:0;;;;;;:17;:23;;;;;;;;11547:48;11539:89;;;;-1:-1:-1;;;11539:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11641:21:0;;;;;;:17;:21;;;;;;;;:28;;;:62;;-1:-1:-1;;;;;;11673:23:0;;;;;;:17;:23;;;;;;;;:30;11641:62;11638:252;;;11727:11;;11717:6;:21;;11709:74;;;;-1:-1:-1;;;11709:74:0;;;;;;;:::i;:::-;11800:13;;-1:-1:-1;;;;;11792:21:0;;;11800:13;;11792:21;11789:96;;;11859:15;;11849:6;11835:13;11845:2;11835:9;:13::i;:::-;:20;;;;:::i;:::-;:39;;11827:48;;;;;;11894:25;11922:24;11940:4;11922:9;:24::i;:::-;11894:52;;11974:20;;11954:17;:40;;:68;;;;-1:-1:-1;12006:16:0;;;;12005:17;11954:68;:100;;;;-1:-1:-1;12041:13:0;;-1:-1:-1;;;;;12033:21:0;;;12041:13;;12033:21;;11954:100;:132;;;;-1:-1:-1;12065:21:0;;;;;;;11954:132;11951:328;;;12124:20;;12103:17;:41;12100:170;;-1:-1:-1;12183:20:0;;12220:36;12183:20;12220:17;:36::i;:::-;-1:-1:-1;;;;;12322:23:0;;12287:13;12322:23;;;:17;:23;;;;;;12303:4;;12322:23;;;:48;;-1:-1:-1;;;;;;12349:21:0;;;;;;:17;:21;;;;;;;;12322:48;12319:127;;;-1:-1:-1;12401:1:0;12385:13;:17;;;12319:127;12454:17;12484;12554:8;12551:817;;;-1:-1:-1;;;;;12613:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;12639:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;12613:46;12610:108;;;12677:27;;-1:-1:-1;;;12677:27:0;;;;;;;:::i;12610:108::-;-1:-1:-1;;;;;12760:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;12807:7:0;;-1:-1:-1;;;;;12793:22:0;;;12807:7;;12793:22;;12760:55;12756:597;;;12854:1;12838:13;:17;12897:10;;12908:3;;12888:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;12876:35;;12964:3;12953:10;;12944:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;12932:35;-1:-1:-1;13004:21:0;12932:35;13004:9;:21;:::i;:::-;12988:13;:37;12756:597;;;-1:-1:-1;;;;;13081:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;13132:7:0;;-1:-1:-1;;;;;13116:24:0;;;13132:7;;13116:24;;13081:59;13078:275;;;13181:1;13165:13;:17;13220:9;;13230:3;;13211:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;13199:34;;13281:3;13271:9;;13262:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;13250:34;-1:-1:-1;13317:21:0;13250:34;13317:9;:21;:::i;:::-;13301:13;:37;13078:275;13394:22;13410:6;13394:13;:22;:::i;:::-;-1:-1:-1;;;;;13376:15:0;;;;;;:9;:15;;;;;:40;13463:9;13442:18;13451:9;13442:6;:18;:::i;:::-;:30;;;;:::i;:::-;-1:-1:-1;;;;;13425:13:0;;;;;;:9;:13;;;;;:47;;:13;;;:47;;;;;:::i;:::-;;;;-1:-1:-1;;13482:14:0;;13479:233;;13535:13;;13525:4;13507:24;;;;:9;:24;;;;;:41;;:24;;;:41;;13535:13;;13507:41;:::i;:::-;;;;;;;;13603:9;13590;;:22;;;;;;;:::i;:::-;;;;;;;;13634:9;13621;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;13687:13:0;;13657:44;;13680:4;;-1:-1:-1;;;;;13657:44:0;;;;;;;;:::i;:::-;;;;;;;;13479:233;13740:2;-1:-1:-1;;;;;13725:39:0;13734:4;-1:-1:-1;;;;;13725:39:0;;13750:13;;13743:6;:20;;;;:::i;:::-;13725:39;;;;;;:::i;:::-;;;;;;;;11088:2681;;;;;;;;:::o;4735:151::-;4785:16;4804:6;;-1:-1:-1;;;;;4815:17:0;;;-1:-1:-1;;;;;;4815:17:0;;;;;;4842:40;;4804:6;;;;;;;4842:40;;4785:16;4842:40;4735:151;;:::o;17696:170::-;-1:-1:-1;;;;;17773:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;17773:39:0;;;;;;;;;;17822:40;;17773:39;;:31;17822:40;;;17696:170;;:::o;13771:228::-;7184:16;:23;;-1:-1:-1;;7184:23:0;7203:4;7184:23;;;13860:9:::1;::::0;13845:25:::1;::::0;:14:::1;:25::i;:::-;13875:30;13895:9;;13875:19;:30::i;:::-;13915:44;13945:13;13915:44;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;13976:1:0::1;13964:9;:13:::0;;;13982:9:::1;:13:::0;7218:16;:24;;-1:-1:-1;;7218:24:0;;;13771:228::o;14983:382::-;15045:12;15060:19;15078:1;15060:15;:19;:::i;:::-;15045:34;-1:-1:-1;15084:17:0;15104:22;15045:34;15104:15;:22;:::i;:::-;15084:42;-1:-1:-1;15156:21:0;15182:22;15199:4;15182:16;:22::i;:::-;15209:18;15230:40;15255:14;15230:21;:40;:::i;:::-;15209:61;;15275:35;15288:9;15299:10;15275:12;:35::i;:::-;15320:41;15335:4;15340:10;15351:9;15320:41;;;;;;;;:::i;:::-;;;;;;;;14983:382;;;;;:::o;14109:397::-;14190:16;;;14204:1;14190:16;;;;;;;;14166:21;;14190:16;;;;;;;;;;-1:-1:-1;14190:16:0;14166:40;;14229:4;14211;14216:1;14211:7;;;;;;-1:-1:-1;;;14211:7:0;;;;;;;;;-1:-1:-1;;;;;14211:23:0;;;:7;;;;;;;;;;:23;;;;14249:7;;:14;;;-1:-1:-1;;;14249:14:0;;;;:7;;;;;:12;;:14;;;;;14211:7;;14249:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14239:4;14244:1;14239:7;;;;;;-1:-1:-1;;;14239:7:0;;;;;;;;;-1:-1:-1;;;;;14239:24:0;;;:7;;;;;;;;;:24;14300:7;;14268:49;;14285:4;;14300:7;14310:6;14268:8;:49::i;:::-;14323:7;;14457:16;;14323:179;;-1:-1:-1;;;14323:179:0;;-1:-1:-1;;;;;14323:7:0;;;;:58;;:179;;14390:6;;14323:7;;14444:4;;14457:16;;;14482:15;;14323:179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:397;;:::o;15367:406::-;15450:16;;;15464:1;15450:16;;;;;;;;15426:21;;15450:16;;;;;;;;;;-1:-1:-1;15450:16:0;15426:40;;15489:4;15471;15476:1;15471:7;;;;;;-1:-1:-1;;;15471:7:0;;;;;;;;;-1:-1:-1;;;;;15471:23:0;;;:7;;;;;;;;;;:23;;;;15509:7;;:14;;;-1:-1:-1;;;15509:14:0;;;;:7;;;;;:12;;:14;;;;;15471:7;;15509:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15499:4;15504:1;15499:7;;;;;;-1:-1:-1;;;15499:7:0;;;;;;;;;-1:-1:-1;;;;;15499:24:0;;;:7;;;;;;;;;:24;15560:7;;15528:54;;15545:4;;15560:7;15570:11;15528:8;:54::i;:::-;15588:7;;:181;;-1:-1:-1;;;15588:181:0;;-1:-1:-1;;;;;15588:7:0;;;;:58;;:181;;15655:11;;15588:7;;15714:4;;15735;;15749:15;;15588:181;;;:::i;15775:292::-;15880:7;;15848:54;;15865:4;;-1:-1:-1;;;;;15880:7:0;15890:11;15848:8;:54::i;:::-;15907:7;;:156;;-1:-1:-1;;;15907:156:0;;-1:-1:-1;;;;;15907:7:0;;;;:23;;15937:9;;15907:156;;15964:4;;15978:11;;15907:7;;;;16018:11;;16043:15;;15907:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15775:292;;:::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;:::-;262:5;84:189;-1:-1:-1;;;84:189:1:o;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;818:404::-;;;952:2;940:9;931:7;927:23;923:32;920:2;;;973:6;965;958:22;920:2;1017:9;1004:23;1036:33;1063:5;1036:33;:::i;:::-;1088:5;-1:-1:-1;1145:2:1;1130:18;;1117:32;1158;1117;1158;:::i;:::-;1209:7;1199:17;;;910:312;;;;;:::o;1227:402::-;;;1356:2;1344:9;1335:7;1331:23;1327:32;1324:2;;;1377:6;1369;1362:22;1324:2;1421:9;1408:23;1440:33;1467:5;1440:33;:::i;:::-;1492:5;-1:-1:-1;1549:2:1;1534:18;;1521:32;1562:35;1521:32;1562:35;:::i;1634:470::-;;;;1780:2;1768:9;1759:7;1755:23;1751:32;1748:2;;;1801:6;1793;1786:22;1748:2;1845:9;1832:23;1864:33;1891:5;1864:33;:::i;:::-;1916:5;-1:-1:-1;1973:2:1;1958:18;;1945:32;1986:35;1945:32;1986:35;:::i;:::-;1738:366;;2040:7;;-1:-1:-1;;;2094:2:1;2079:18;;;;2066:32;;1738:366::o;2109:396::-;;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;2256:6;2248;2241:22;2510:327;;;2639:2;2627:9;2618:7;2614:23;2610:32;2607:2;;;2660:6;2652;2645:22;2607:2;2704:9;2691:23;2723:33;2750:5;2723:33;:::i;:::-;2775:5;2827:2;2812:18;;;;2799:32;;-1:-1:-1;;;2597:240:1:o;2842:253::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2972:6;2964;2957:22;2919:2;3016:9;3003:23;3035:30;3059:5;3035:30;:::i;3100:257::-;;3220:2;3208:9;3199:7;3195:23;3191:32;3188:2;;;3241:6;3233;3226:22;3188:2;3278:9;3272:16;3297:30;3321:5;3297:30;:::i;3362:491::-;;;;3529:2;3517:9;3508:7;3504:23;3500:32;3497:2;;;3550:6;3542;3535:22;3858:190;;3970:2;3958:9;3949:7;3945:23;3941:32;3938:2;;;3991:6;3983;3976:22;3938:2;-1:-1:-1;4019:23:1;;3928:120;-1:-1:-1;3928:120:1:o;4053:316::-;;;;4210:2;4198:9;4189:7;4185:23;4181:32;4178:2;;;4231:6;4223;4216:22;4178:2;4265:9;4259:16;4249:26;;4315:2;4304:9;4300:18;4294:25;4284:35;;4359:2;4348:9;4344:18;4338:25;4328:35;;4168:201;;;;;:::o;4374:469::-;;4471:5;4465:12;4498:6;4493:3;4486:19;4524:4;4553:2;4548:3;4544:12;4537:19;;4590:2;4583:5;4579:14;4611:3;4623:195;4637:6;4634:1;4631:13;4623:195;;;4702:13;;-1:-1:-1;;;;;4698:39:1;4686:52;;4758:12;;;;4793:15;;;;4734:1;4652:9;4623:195;;;-1:-1:-1;4834:3:1;;4441:402;-1:-1:-1;;;;;4441:402:1:o;4848:203::-;-1:-1:-1;;;;;5012:32:1;;;;4994:51;;4982:2;4967:18;;4949:102::o;5280:282::-;-1:-1:-1;;;;;5480:32:1;;;;5462:51;;5544:2;5529:18;;5522:34;5450:2;5435:18;;5417:145::o;5567:607::-;-1:-1:-1;;;;;5926:15:1;;;5908:34;;5973:2;5958:18;;5951:34;;;;6016:2;6001:18;;5994:34;;;;6059:2;6044:18;;6037:34;;;;6108:15;;;6102:3;6087:19;;6080:44;5888:3;6140:19;;6133:35;;;;5857:3;5842:19;;5824:350::o;6179:187::-;6344:14;;6337:22;6319:41;;6307:2;6292:18;;6274:92::o;6371:603::-;;6512:2;6541;6530:9;6523:21;6573:6;6567:13;6616:6;6611:2;6600:9;6596:18;6589:34;6641:4;6654:140;6668:6;6665:1;6662:13;6654:140;;;6763:14;;;6759:23;;6753:30;6729:17;;;6748:2;6725:26;6718:66;6683:10;;6654:140;;;6812:6;6809:1;6806:13;6803:2;;;6882:4;6877:2;6868:6;6857:9;6853:22;6849:31;6842:45;6803:2;-1:-1:-1;6958:2:1;6937:15;-1:-1:-1;;6933:29:1;6918:45;;;;6965:2;6914:54;;6492:482;-1:-1:-1;;;6492:482:1:o;6979:399::-;7181:2;7163:21;;;7220:2;7200:18;;;7193:30;7259:34;7254:2;7239:18;;7232:62;-1:-1:-1;;;7325:2:1;7310:18;;7303:33;7368:3;7353:19;;7153:225::o;7383:402::-;7585:2;7567:21;;;7624:2;7604:18;;;7597:30;7663:34;7658:2;7643:18;;7636:62;-1:-1:-1;;;7729:2:1;7714:18;;7707:36;7775:3;7760:19;;7557:228::o;7790:398::-;7992:2;7974:21;;;8031:2;8011:18;;;8004:30;8070:34;8065:2;8050:18;;8043:62;-1:-1:-1;;;8136:2:1;8121:18;;8114:32;8178:3;8163:19;;7964:224::o;8193:421::-;8395:2;8377:21;;;8434:2;8414:18;;;8407:30;8473:34;8468:2;8453:18;;8446:62;8544:27;8539:2;8524:18;;8517:55;8604:3;8589:19;;8367:247::o;8619:402::-;8821:2;8803:21;;;8860:2;8840:18;;;8833:30;8899:34;8894:2;8879:18;;8872:62;-1:-1:-1;;;8965:2:1;8950:18;;8943:36;9011:3;8996:19;;8793:228::o;9026:404::-;9228:2;9210:21;;;9267:2;9247:18;;;9240:30;9306:34;9301:2;9286:18;;9279:62;-1:-1:-1;;;9372:2:1;9357:18;;9350:38;9420:3;9405:19;;9200:230::o;9435:414::-;9637:2;9619:21;;;9676:2;9656:18;;;9649:30;9715:34;9710:2;9695:18;;9688:62;-1:-1:-1;;;9781:2:1;9766:18;;9759:48;9839:3;9824:19;;9609:240::o;9854:353::-;10056:2;10038:21;;;10095:2;10075:18;;;10068:30;10134:31;10129:2;10114:18;;10107:59;10198:2;10183:18;;10028:179::o;10212:404::-;10414:2;10396:21;;;10453:2;10433:18;;;10426:30;10492:34;10487:2;10472:18;;10465:62;-1:-1:-1;;;10558:2:1;10543:18;;10536:38;10606:3;10591:19;;10386:230::o;10621:356::-;10823:2;10805:21;;;10842:18;;;10835:30;10901:34;10896:2;10881:18;;10874:62;10968:2;10953:18;;10795:182::o;10982:401::-;11184:2;11166:21;;;11223:2;11203:18;;;11196:30;11262:34;11257:2;11242:18;;11235:62;-1:-1:-1;;;11328:2:1;11313:18;;11306:35;11373:3;11358:19;;11156:227::o;11388:400::-;11590:2;11572:21;;;11629:2;11609:18;;;11602:30;11668:34;11663:2;11648:18;;11641:62;-1:-1:-1;;;11734:2:1;11719:18;;11712:34;11778:3;11763:19;;11562:226::o;11793:341::-;11995:2;11977:21;;;12034:2;12014:18;;;12007:30;-1:-1:-1;;;12068:2:1;12053:18;;12046:47;12125:2;12110:18;;11967:167::o;12139:426::-;12341:2;12323:21;;;12380:2;12360:18;;;12353:30;12419:34;12414:2;12399:18;;12392:62;12490:32;12485:2;12470:18;;12463:60;12555:3;12540:19;;12313:252::o;12570:177::-;12716:25;;;12704:2;12689:18;;12671:76::o;12752:596::-;;13059:6;13048:9;13041:25;13102:6;13097:2;13086:9;13082:18;13075:34;13145:3;13140:2;13129:9;13125:18;13118:31;13166:63;13224:3;13213:9;13209:19;13201:6;13166:63;:::i;:::-;-1:-1:-1;;;;;13265:32:1;;;;13260:2;13245:18;;13238:60;-1:-1:-1;13329:3:1;13314:19;13307:35;13158:71;13031:317;-1:-1:-1;;;13031:317:1:o;13946:319::-;14148:25;;;14204:2;14189:18;;14182:34;;;;14247:2;14232:18;;14225:34;14136:2;14121:18;;14103:162::o;14270:128::-;;14341:1;14337:6;14334:1;14331:13;14328:2;;;14347:18;;:::i;:::-;-1:-1:-1;14383:9:1;;14318:80::o;14403:217::-;;14469:1;14459:2;;-1:-1:-1;;;14494:31:1;;14548:4;14545:1;14538:15;14576:4;14501:1;14566:15;14459:2;-1:-1:-1;14605:9:1;;14449:171::o;14625:168::-;;14731:1;14727;14723:6;14719:14;14716:1;14713:21;14708:1;14701:9;14694:17;14690:45;14687:2;;;14738:18;;:::i;:::-;-1:-1:-1;14778:9:1;;14677:116::o;14798:125::-;;14866:1;14863;14860:8;14857:2;;;14871:18;;:::i;:::-;-1:-1:-1;14908:9:1;;14847:76::o;14928:380::-;15013:1;15003:12;;15060:1;15050:12;;;15071:2;;15125:4;15117:6;15113:17;15103:27;;15071:2;15178;15170:6;15167:14;15147:18;15144:38;15141:2;;;15224:10;15219:3;15215:20;15212:1;15205:31;15259:4;15256:1;15249:15;15287:4;15284:1;15277:15;15141:2;;14983:325;;;:::o;15313:127::-;15374:10;15369:3;15365:20;15362:1;15355:31;15405:4;15402:1;15395:15;15429:4;15426:1;15419:15;15445:133;-1:-1:-1;;;;;15522:31:1;;15512:42;;15502:2;;15568:1;15565;15558:12;15583:120;15671:5;15664:13;15657:21;15650:5;15647:32;15637:2;;15693:1;15690;15683:12

Swarm Source

ipfs://991d85ac0a65aabbdc554f8e3476bf338b4c5061fb188e6d75d28e2a96790b97
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.