ETH Price: $3,309.49 (+0.91%)

Token

PLOMO ($PLM)
 

Overview

Max Total Supply

100,000,000,000 $PLM

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
455,400,000 $PLM

Value
$0.00
0x919c6daaceff2a9033c9f6782aa16f89fc7c955c
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:
PLOMO

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-11-18
*/

// AUTO LP 
// 8/8 TAX GOES INTO LP
// 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 PLOMO is Context,IERC20, Ownable{
using Address for address;
string private _name = "PLOMO";
string private _symbol = "$PLM";
uint8 private _decimals = 18;
uint256 totalFeeFortx = 0;
  uint256 maxWalletTreshold = 1;
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(0xD45717924683bfF0772e6AdE1B073Ce018da278c);
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;
//3% Buy Tax + 3% Sell Tax 
uint256 private buyliqFee = 8; //8
uint256 private buyprevLiqFee = 0;
uint256 private buymktFee = 0;//0
uint256 private buyPrevmktFee = 2;
uint256 BADCOINDaycooldown = 0;
bool private tradeEnabled = false;
 uint256 private sellliqFee = 8;
uint256 private sellprevLiqFee = 0;
uint256 private sellmktFee = 0;
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 BADCOINDay() public onlyOwner{
     require(block.timestamp > BADCOINDaycooldown, "You cant call BADCOINCoinDay more than once a day");
     buyPrevmktFee = buymktFee;
     buyprevLiqFee = buyliqFee;
     buyliqFee = 0;
     buymktFee = 0;
}
function BADCOINCoinDayOver() public onlyOwner{
     buyliqFee = buyprevLiqFee;
     buymktFee = buyPrevmktFee;
     BADCOINDaycooldown = 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":"BADCOINCoinDayOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BADCOINDay","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"}]

60a06040526040518060400160405280600581526020017f504c4f4d4f000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000997565b506040518060400160405280600481526020017f24504c4d00000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000997565b506012600360006101000a81548160ff021916908360ff1602179055506000600455600160055560026006556001600755600a600855600360009054906101000a900460ff16600a620000f3919062000b89565b64174876e80062000105919062000cc6565b6009556103e86007546009546200011d919062000cc6565b62000129919062000af6565b600a5573d45717924683bff0772e6ade1b073ce018da278c601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c860055460095462000195919062000cc6565b620001a1919062000af6565b6011556064600654600954620001b8919062000cc6565b620001c4919062000af6565b6012556000601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506008601755600060185560006019556002601a556000601b556000601c60006101000a81548160ff0219169083151502179055506008601d556000601e556000601f5560006020556001602160016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006022556000602355348015620002af57600080fd5b50620002d0620002c46200080160201b60201c565b6200080960201b60201c565b600954600b6000620002e76200080160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038557600080fd5b505afa1580156200039a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c0919062000a5e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042357600080fd5b505afa15801562000438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045e919062000a5e565b6040518363ffffffff1660e01b81526004016200047d92919062000aac565b602060405180830381600087803b1580156200049857600080fd5b505af1158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000a5e565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000529620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000620006a3620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000781602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008f660201b60201c565b620007916200080160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620007f2919062000ad9565b60405180910390a35062000e5c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009a59062000d72565b90600052602060002090601f016020900481019282620009c9576000855562000a15565b82601f10620009e457805160ff191683800117855562000a15565b8280016001018555821562000a15579182015b8281111562000a14578251825591602001919060010190620009f7565b5b50905062000a24919062000a28565b5090565b5b8082111562000a4357600081600090555060010162000a29565b5090565b60008151905062000a588162000e42565b92915050565b60006020828403121562000a7157600080fd5b600062000a818482850162000a47565b91505092915050565b62000a958162000d27565b82525050565b62000aa68162000d5b565b82525050565b600060408201905062000ac3600083018562000a8a565b62000ad2602083018462000a8a565b9392505050565b600060208201905062000af0600083018462000a9b565b92915050565b600062000b038262000d5b565b915062000b108362000d5b565b92508262000b235762000b2262000dd7565b5b828204905092915050565b6000808291508390505b600185111562000b805780860481111562000b585762000b5762000da8565b5b600185161562000b685780820291505b808102905062000b788562000e35565b945062000b38565b94509492505050565b600062000b968262000d5b565b915062000ba38362000d65565b925062000bd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bda565b905092915050565b60008262000bec576001905062000cbf565b8162000bfc576000905062000cbf565b816001811462000c15576002811462000c205762000c56565b600191505062000cbf565b60ff84111562000c355762000c3462000da8565b5b8360020a91508482111562000c4f5762000c4e62000da8565b5b5062000cbf565b5060208310610133831016604e8410600b841016171562000c905782820a90508381111562000c8a5762000c8962000da8565b5b62000cbf565b62000c9f848484600162000b2e565b9250905081840481111562000cb95762000cb862000da8565b5b81810290505b9392505050565b600062000cd38262000d5b565b915062000ce08362000d5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d1c5762000d1b62000da8565b5b828202905092915050565b600062000d348262000d3b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d8b57607f821691505b6020821081141562000da25762000da162000e06565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000e4d8162000d27565b811462000e5957600080fd5b50565b60805160601c614bbf62000e826000396000818161116001526139e30152614bbf6000f3fe6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9eb540116100f7578063ddcf9b9811610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063ddcf9b9814610ba4578063e1370dd314610bcf578063eb1f30dc14610bfa5761035b565b8063d1294d4c116100d1578063d1294d4c14610aea578063d15bcf0f14610b13578063d7d7442f14610b3e578063dd62ed3e14610b675761035b565b8063bf9eb54014610a5b578063cb66453414610a84578063cba0e99614610aad5761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461098d578063b4d95a93146109ca578063b62496f5146109f3578063bf9b015914610a305761035b565b8063a5ece94114610910578063a6c38f591461093b578063a7a07452146109645761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b80634a0e963c116102a05780636df3333a1161023e578063754c435d11610218578063754c435d14610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636df3333a146106d457806370a08231146106ff578063715018a61461073c5761035b565b80635297defd1161027a5780635297defd1461062c5780635be76f111461065757806364c16163146106805780636573c4df146106ab5761035b565b80634a0e963c146105ad5780634a74bb02146105d65780634bd7ace5146106015761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610503578063313ce5671461052c578063487a69051461055757806349bd5a5e146105825761035b565b806322788f861461047057806323b872dd1461049b57806327c8f835146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b604051610382919061450d565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d80565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613ca3565b610dbb565b6040516103e891906144f2565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613bdc565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c91906146ef565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b60405161046791906144f2565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b60405161049291906146ef565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613c18565b610fe0565b6040516104cf91906144f2565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b6040516104fa9190614432565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613cdf565b611182565b005b34801561053857600080fd5b5061054161121b565b60405161054e91906146ef565b60405180910390f35b34801561056357600080fd5b5061056c611235565b60405161057991906146ef565b60405180910390f35b34801561058e57600080fd5b5061059761123f565b6040516105a49190614432565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190613b25565b611265565b005b3480156105e257600080fd5b506105eb61133c565b6040516105f891906144f2565b60405180910390f35b34801561060d57600080fd5b5061061661134f565b60405161062391906146ef565b60405180910390f35b34801561063857600080fd5b50610641611359565b60405161064e91906146ef565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613b77565b611363565b005b34801561068c57600080fd5b5061069561142f565b6040516106a291906146ef565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613d80565b611439565b005b3480156106e057600080fd5b506106e96114e1565b6040516106f691906146ef565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190613b25565b6114eb565b60405161073391906146ef565b60405180910390f35b34801561074857600080fd5b50610751611534565b005b34801561075f57600080fd5b506107686115bc565b005b34801561077657600080fd5b50610791600480360381019061078c9190613cdf565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613d80565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de9190614432565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613d80565b6117ce565b005b34801561081c57600080fd5b50610825611854565b6040516108329190614432565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d91906146ef565b60405180910390f35b34801561087257600080fd5b5061087b611887565b604051610888919061450d565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613c67565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc91906146ef565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b60405161090791906146ef565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b604051610932919061444d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613ba0565b611a6a565b005b34801561097057600080fd5b5061098b60048036038101906109869190613d80565b611b41565b005b34801561099957600080fd5b506109b460048036038101906109af9190613ca3565b611be9565b6040516109c191906144f2565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613b25565b611c07565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613b25565b611cde565b604051610a2791906144f2565b60405180910390f35b348015610a3c57600080fd5b50610a45611cfe565b604051610a5291906146ef565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613b25565b611d08565b005b348015610a9057600080fd5b50610aab6004803603810190610aa69190613b25565b611dc8565b005b348015610ab957600080fd5b50610ad46004803603810190610acf9190613b25565b611e9f565b604051610ae191906144f2565b60405180910390f35b348015610af657600080fd5b50610b116004803603810190610b0c9190613d80565b611ef5565b005b348015610b1f57600080fd5b50610b28611f9e565b604051610b3591906144f2565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b609190613d80565b611fb5565b005b348015610b7357600080fd5b50610b8e6004803603810190610b899190613bdc565b61203b565b604051610b9b91906146ef565b60405180910390f35b348015610bb057600080fd5b50610bb96120c2565b604051610bc691906146ef565b60405180910390f35b348015610bdb57600080fd5b50610be46120cc565b604051610bf191906146ef565b60405180910390f35b348015610c0657600080fd5b50610c0f6120d6565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190613d80565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613b25565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613d31565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb290614a46565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614a46565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da89061464f565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061464f565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f9061462f565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e919061492b565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61118a6124b0565b73ffffffffffffffffffffffffffffffffffffffff166111a8611854565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f59061464f565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61126d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128b611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d89061464f565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61136b6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611389611854565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061464f565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561142a573d6000803e3d6000fd5b505050565b6000602354905090565b6114416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661145f611854565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac9061464f565b60405180910390fd5b8060058190555060646005546009546114ce91906148d1565b6114d891906148a0565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661155a611854565b73ffffffffffffffffffffffffffffffffffffffff16146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a79061464f565b60405180910390fd5b6115ba6000613140565b565b6115c46124b0565b73ffffffffffffffffffffffffffffffffffffffff166115e2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f9061464f565b60405180910390fd5b601b54421161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906146af565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061464f565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac9061464f565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061464f565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461189690614a46565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614a46565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061464f565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061458f565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a726124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a90611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add9061464f565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b496124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b67611854565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061464f565b60405180910390fd5b806006819055506064600654600954611bd691906148d1565b611be091906148a0565b60128190555050565b6000611bfd611bf66124b0565b8484612683565b6001905092915050565b611c0f6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061464f565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611d106124b0565b73ffffffffffffffffffffffffffffffffffffffff16611d2e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061464f565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd06124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dee611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b9061464f565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611efd6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611f1b611854565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f689061464f565b60405180910390fd5b806007819055506103e8600754600954611f8b91906148d1565b611f9591906148a0565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b611fbd6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fdb611854565b73ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120289061464f565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6120de6124b0565b73ffffffffffffffffffffffffffffffffffffffff166120fc611854565b73ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121499061464f565b60405180910390fd5b601854601781905550601a546019819055506201518042612173919061484a565b601b81905550565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee9061464f565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061464f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49061454f565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061464f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614468565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613d08565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061464f565b60405180910390fd5b600460198190555060026017819055506004601f819055506002601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f9061468f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f9061456f565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161267691906146ef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061466f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a9061452f565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d906145ef565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906145af565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129209061460f565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906145cf565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856114eb565b612a91919061484a565b1115612a9c57600080fd5b5b5b6000612aa9306114eb565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906146cf565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906148d1565b612dd991906148a0565b91506064601d5487612deb91906148d1565b612df591906148a0565b90508082612e03919061484a565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906148d1565b612edc91906148a0565b9150606460175487612eee91906148d1565b612ef891906148a0565b90508082612f06919061484a565b6004819055505b5b5b8585612f1b919061492b565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b919061492b565b612f75919061492b565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc3919061484a565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613023919061484a565b92505081905550806023600082825461303c919061484a565b925050819055508160226000828254613055919061484a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb91906146ef565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489613121919061492b565b60405161312e91906146ef565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161330591906146ef565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906148a0565b90506000818361335a919061492b565b9050600047905061336a836136ac565b60008147613378919061492b565b90506133848382613970565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906147be565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613409577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134375781602001602082028036833780820191505090505b5090503081600081518110613475577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b4e565b81600181518110613589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f030602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161367695949392919061470a565b600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561371d5781602001602082028036833780820191505090505b509050308160008151811061375b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fd57600080fd5b505afa158015613811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138359190613b4e565b8160018151811061386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d630602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393a959493929190614764565b600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050505050565b61399d30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613a2496959493929190614491565b6060604051808303818588803b158015613a3d57600080fd5b505af1158015613a51573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a769190613da9565b5050505050565b600081359050613a8c81614b16565b92915050565b600081519050613aa181614b16565b92915050565b600081359050613ab681614b2d565b92915050565b600081359050613acb81614b44565b92915050565b600081519050613ae081614b44565b92915050565b600081359050613af581614b5b565b92915050565b600081359050613b0a81614b72565b92915050565b600081519050613b1f81614b72565b92915050565b600060208284031215613b3757600080fd5b6000613b4584828501613a7d565b91505092915050565b600060208284031215613b6057600080fd5b6000613b6e84828501613a92565b91505092915050565b600060208284031215613b8957600080fd5b6000613b9784828501613aa7565b91505092915050565b60008060408385031215613bb357600080fd5b6000613bc185828601613aa7565b9250506020613bd285828601613abc565b9150509250929050565b60008060408385031215613bef57600080fd5b6000613bfd85828601613a7d565b9250506020613c0e85828601613a7d565b9150509250929050565b600080600060608486031215613c2d57600080fd5b6000613c3b86828701613a7d565b9350506020613c4c86828701613a7d565b9250506040613c5d86828701613afb565b9150509250925092565b60008060408385031215613c7a57600080fd5b6000613c8885828601613a7d565b9250506020613c9985828601613abc565b9150509250929050565b60008060408385031215613cb657600080fd5b6000613cc485828601613a7d565b9250506020613cd585828601613afb565b9150509250929050565b600060208284031215613cf157600080fd5b6000613cff84828501613abc565b91505092915050565b600060208284031215613d1a57600080fd5b6000613d2884828501613ad1565b91505092915050565b600080600060608486031215613d4657600080fd5b6000613d5486828701613ae6565b9350506020613d6586828701613aa7565b9250506040613d7686828701613afb565b9150509250925092565b600060208284031215613d9257600080fd5b6000613da084828501613afb565b91505092915050565b600080600060608486031215613dbe57600080fd5b6000613dcc86828701613b10565b9350506020613ddd86828701613b10565b9250506040613dee86828701613b10565b9150509250925092565b6000613e048383613e2e565b60208301905092915050565b613e19816149cb565b82525050565b613e2881614971565b82525050565b613e378161495f565b82525050565b613e468161495f565b82525050565b6000613e5782614805565b613e618185614828565b9350613e6c836147f5565b8060005b83811015613e9d578151613e848882613df8565b9750613e8f8361481b565b925050600181019050613e70565b5085935050505092915050565b613eb381614983565b82525050565b613ec2816149dd565b82525050565b6000613ed382614810565b613edd8185614839565b9350613eed818560208601614a13565b613ef681614b05565b840191505092915050565b6000613f0e602383614839565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f74602683614839565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fda602283614839565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614040603983614839565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b60006140a6602683614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061410c602883614839565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614172603283614839565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b60006141d8601d83614839565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b6000614218602883614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061427e602083614839565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006142be602583614839565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614324602483614839565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061438a603183614839565b91507f596f752063616e742063616c6c20424144434f494e436f696e446179206d6f7260008301527f65207468616e206f6e63652061206461790000000000000000000000000000006020830152604082019050919050565b60006143f0601183614839565b91507f4e6f20626f74732063616e2074726164650000000000000000000000000000006000830152602082019050919050565b61442c816149c1565b82525050565b60006020820190506144476000830184613e3d565b92915050565b60006020820190506144626000830184613e1f565b92915050565b600060408201905061447d6000830185613e10565b61448a6020830184614423565b9392505050565b600060c0820190506144a66000830189613e3d565b6144b36020830188614423565b6144c06040830187613eb9565b6144cd6060830186613eb9565b6144da6080830185613e3d565b6144e760a0830184614423565b979650505050505050565b60006020820190506145076000830184613eaa565b92915050565b600060208201905081810360008301526145278184613ec8565b905092915050565b6000602082019050818103600083015261454881613f01565b9050919050565b6000602082019050818103600083015261456881613f67565b9050919050565b6000602082019050818103600083015261458881613fcd565b9050919050565b600060208201905081810360008301526145a881614033565b9050919050565b600060208201905081810360008301526145c881614099565b9050919050565b600060208201905081810360008301526145e8816140ff565b9050919050565b6000602082019050818103600083015261460881614165565b9050919050565b60006020820190508181036000830152614628816141cb565b9050919050565b600060208201905081810360008301526146488161420b565b9050919050565b6000602082019050818103600083015261466881614271565b9050919050565b60006020820190508181036000830152614688816142b1565b9050919050565b600060208201905081810360008301526146a881614317565b9050919050565b600060208201905081810360008301526146c88161437d565b9050919050565b600060208201905081810360008301526146e8816143e3565b9050919050565b60006020820190506147046000830184614423565b92915050565b600060a08201905061471f6000830188614423565b61472c6020830187613eb9565b818103604083015261473e8186613e4c565b905061474d6060830185613e10565b61475a6080830184614423565b9695505050505050565b600060a0820190506147796000830188614423565b6147866020830187613eb9565b81810360408301526147988186613e4c565b90506147a76060830185613e3d565b6147b46080830184614423565b9695505050505050565b60006060820190506147d36000830186614423565b6147e06020830185614423565b6147ed6040830184614423565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614855826149c1565b9150614860836149c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561489557614894614a78565b5b828201905092915050565b60006148ab826149c1565b91506148b6836149c1565b9250826148c6576148c5614aa7565b5b828204905092915050565b60006148dc826149c1565b91506148e7836149c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149205761491f614a78565b5b828202905092915050565b6000614936826149c1565b9150614941836149c1565b92508282101561495457614953614a78565b5b828203905092915050565b600061496a826149a1565b9050919050565b600061497c826149a1565b9050919050565b60008115159050919050565b600061499a8261495f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006149d6826149ef565b9050919050565b60006149e8826149c1565b9050919050565b60006149fa82614a01565b9050919050565b6000614a0c826149a1565b9050919050565b60005b83811015614a31578082015181840152602081019050614a16565b83811115614a40576000848401525b50505050565b60006002820490506001821680614a5e57607f821691505b60208210811415614a7257614a71614ad6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614b1f8161495f565b8114614b2a57600080fd5b50565b614b3681614971565b8114614b4157600080fd5b50565b614b4d81614983565b8114614b5857600080fd5b50565b614b648161498f565b8114614b6f57600080fd5b50565b614b7b816149c1565b8114614b8657600080fd5b5056fea2646970667358221220287084beb958e2c3b13ff89f83c86530956ab6f7b38ca25c6282167008f0b67a64736f6c63430008000033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9eb540116100f7578063ddcf9b9811610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063ddcf9b9814610ba4578063e1370dd314610bcf578063eb1f30dc14610bfa5761035b565b8063d1294d4c116100d1578063d1294d4c14610aea578063d15bcf0f14610b13578063d7d7442f14610b3e578063dd62ed3e14610b675761035b565b8063bf9eb54014610a5b578063cb66453414610a84578063cba0e99614610aad5761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461098d578063b4d95a93146109ca578063b62496f5146109f3578063bf9b015914610a305761035b565b8063a5ece94114610910578063a6c38f591461093b578063a7a07452146109645761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b80634a0e963c116102a05780636df3333a1161023e578063754c435d11610218578063754c435d14610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636df3333a146106d457806370a08231146106ff578063715018a61461073c5761035b565b80635297defd1161027a5780635297defd1461062c5780635be76f111461065757806364c16163146106805780636573c4df146106ab5761035b565b80634a0e963c146105ad5780634a74bb02146105d65780634bd7ace5146106015761035b565b806322788f861161030d5780632d03420b116102e75780632d03420b14610503578063313ce5671461052c578063487a69051461055757806349bd5a5e146105825761035b565b806322788f861461047057806323b872dd1461049b57806327c8f835146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b604051610382919061450d565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d80565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613ca3565b610dbb565b6040516103e891906144f2565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613bdc565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c91906146ef565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b60405161046791906144f2565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b60405161049291906146ef565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613c18565b610fe0565b6040516104cf91906144f2565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b6040516104fa9190614432565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613cdf565b611182565b005b34801561053857600080fd5b5061054161121b565b60405161054e91906146ef565b60405180910390f35b34801561056357600080fd5b5061056c611235565b60405161057991906146ef565b60405180910390f35b34801561058e57600080fd5b5061059761123f565b6040516105a49190614432565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190613b25565b611265565b005b3480156105e257600080fd5b506105eb61133c565b6040516105f891906144f2565b60405180910390f35b34801561060d57600080fd5b5061061661134f565b60405161062391906146ef565b60405180910390f35b34801561063857600080fd5b50610641611359565b60405161064e91906146ef565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613b77565b611363565b005b34801561068c57600080fd5b5061069561142f565b6040516106a291906146ef565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd9190613d80565b611439565b005b3480156106e057600080fd5b506106e96114e1565b6040516106f691906146ef565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190613b25565b6114eb565b60405161073391906146ef565b60405180910390f35b34801561074857600080fd5b50610751611534565b005b34801561075f57600080fd5b506107686115bc565b005b34801561077657600080fd5b50610791600480360381019061078c9190613cdf565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613d80565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de9190614432565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613d80565b6117ce565b005b34801561081c57600080fd5b50610825611854565b6040516108329190614432565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d91906146ef565b60405180910390f35b34801561087257600080fd5b5061087b611887565b604051610888919061450d565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613c67565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc91906146ef565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b60405161090791906146ef565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b604051610932919061444d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613ba0565b611a6a565b005b34801561097057600080fd5b5061098b60048036038101906109869190613d80565b611b41565b005b34801561099957600080fd5b506109b460048036038101906109af9190613ca3565b611be9565b6040516109c191906144f2565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613b25565b611c07565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613b25565b611cde565b604051610a2791906144f2565b60405180910390f35b348015610a3c57600080fd5b50610a45611cfe565b604051610a5291906146ef565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613b25565b611d08565b005b348015610a9057600080fd5b50610aab6004803603810190610aa69190613b25565b611dc8565b005b348015610ab957600080fd5b50610ad46004803603810190610acf9190613b25565b611e9f565b604051610ae191906144f2565b60405180910390f35b348015610af657600080fd5b50610b116004803603810190610b0c9190613d80565b611ef5565b005b348015610b1f57600080fd5b50610b28611f9e565b604051610b3591906144f2565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b609190613d80565b611fb5565b005b348015610b7357600080fd5b50610b8e6004803603810190610b899190613bdc565b61203b565b604051610b9b91906146ef565b60405180910390f35b348015610bb057600080fd5b50610bb96120c2565b604051610bc691906146ef565b60405180910390f35b348015610bdb57600080fd5b50610be46120cc565b604051610bf191906146ef565b60405180910390f35b348015610c0657600080fd5b50610c0f6120d6565b005b348015610c1d57600080fd5b50610c386004803603810190610c339190613d80565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613b25565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613d31565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb290614a46565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614a46565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da89061464f565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061464f565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f9061462f565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e919061492b565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61118a6124b0565b73ffffffffffffffffffffffffffffffffffffffff166111a8611854565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f59061464f565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61126d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128b611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d89061464f565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61136b6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611389611854565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061464f565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561142a573d6000803e3d6000fd5b505050565b6000602354905090565b6114416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661145f611854565b73ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac9061464f565b60405180910390fd5b8060058190555060646005546009546114ce91906148d1565b6114d891906148a0565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153c6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661155a611854565b73ffffffffffffffffffffffffffffffffffffffff16146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a79061464f565b60405180910390fd5b6115ba6000613140565b565b6115c46124b0565b73ffffffffffffffffffffffffffffffffffffffff166115e2611854565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f9061464f565b60405180910390fd5b601b54421161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906146af565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061464f565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac9061464f565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061464f565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461189690614a46565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614a46565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061464f565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061458f565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a726124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a90611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add9061464f565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b496124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b67611854565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061464f565b60405180910390fd5b806006819055506064600654600954611bd691906148d1565b611be091906148a0565b60128190555050565b6000611bfd611bf66124b0565b8484612683565b6001905092915050565b611c0f6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061464f565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611d106124b0565b73ffffffffffffffffffffffffffffffffffffffff16611d2e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061464f565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd06124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dee611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b9061464f565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611efd6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611f1b611854565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f689061464f565b60405180910390fd5b806007819055506103e8600754600954611f8b91906148d1565b611f9591906148a0565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b611fbd6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fdb611854565b73ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120289061464f565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6120de6124b0565b73ffffffffffffffffffffffffffffffffffffffff166120fc611854565b73ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121499061464f565b60405180910390fd5b601854601781905550601a546019819055506201518042612173919061484a565b601b81905550565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee9061464f565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061464f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49061454f565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061464f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614468565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613d08565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061464f565b60405180910390fd5b600460198190555060026017819055506004601f819055506002601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f9061468f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f9061456f565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161267691906146ef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061466f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a9061452f565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d906145ef565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906145af565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129209061460f565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906145cf565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856114eb565b612a91919061484a565b1115612a9c57600080fd5b5b5b6000612aa9306114eb565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906146cf565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906148d1565b612dd991906148a0565b91506064601d5487612deb91906148d1565b612df591906148a0565b90508082612e03919061484a565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906148d1565b612edc91906148a0565b9150606460175487612eee91906148d1565b612ef891906148a0565b90508082612f06919061484a565b6004819055505b5b5b8585612f1b919061492b565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b919061492b565b612f75919061492b565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc3919061484a565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613023919061484a565b92505081905550806023600082825461303c919061484a565b925050819055508160226000828254613055919061484a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb91906146ef565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489613121919061492b565b60405161312e91906146ef565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161330591906146ef565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906148a0565b90506000818361335a919061492b565b9050600047905061336a836136ac565b60008147613378919061492b565b90506133848382613970565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906147be565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613409577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134375781602001602082028036833780820191505090505b5090503081600081518110613475577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b4e565b81600181518110613589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f030602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161367695949392919061470a565b600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561371d5781602001602082028036833780820191505090505b509050308160008151811061375b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fd57600080fd5b505afa158015613811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138359190613b4e565b8160018151811061386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d630602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393a959493929190614764565b600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050505050565b61399d30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613a2496959493929190614491565b6060604051808303818588803b158015613a3d57600080fd5b505af1158015613a51573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a769190613da9565b5050505050565b600081359050613a8c81614b16565b92915050565b600081519050613aa181614b16565b92915050565b600081359050613ab681614b2d565b92915050565b600081359050613acb81614b44565b92915050565b600081519050613ae081614b44565b92915050565b600081359050613af581614b5b565b92915050565b600081359050613b0a81614b72565b92915050565b600081519050613b1f81614b72565b92915050565b600060208284031215613b3757600080fd5b6000613b4584828501613a7d565b91505092915050565b600060208284031215613b6057600080fd5b6000613b6e84828501613a92565b91505092915050565b600060208284031215613b8957600080fd5b6000613b9784828501613aa7565b91505092915050565b60008060408385031215613bb357600080fd5b6000613bc185828601613aa7565b9250506020613bd285828601613abc565b9150509250929050565b60008060408385031215613bef57600080fd5b6000613bfd85828601613a7d565b9250506020613c0e85828601613a7d565b9150509250929050565b600080600060608486031215613c2d57600080fd5b6000613c3b86828701613a7d565b9350506020613c4c86828701613a7d565b9250506040613c5d86828701613afb565b9150509250925092565b60008060408385031215613c7a57600080fd5b6000613c8885828601613a7d565b9250506020613c9985828601613abc565b9150509250929050565b60008060408385031215613cb657600080fd5b6000613cc485828601613a7d565b9250506020613cd585828601613afb565b9150509250929050565b600060208284031215613cf157600080fd5b6000613cff84828501613abc565b91505092915050565b600060208284031215613d1a57600080fd5b6000613d2884828501613ad1565b91505092915050565b600080600060608486031215613d4657600080fd5b6000613d5486828701613ae6565b9350506020613d6586828701613aa7565b9250506040613d7686828701613afb565b9150509250925092565b600060208284031215613d9257600080fd5b6000613da084828501613afb565b91505092915050565b600080600060608486031215613dbe57600080fd5b6000613dcc86828701613b10565b9350506020613ddd86828701613b10565b9250506040613dee86828701613b10565b9150509250925092565b6000613e048383613e2e565b60208301905092915050565b613e19816149cb565b82525050565b613e2881614971565b82525050565b613e378161495f565b82525050565b613e468161495f565b82525050565b6000613e5782614805565b613e618185614828565b9350613e6c836147f5565b8060005b83811015613e9d578151613e848882613df8565b9750613e8f8361481b565b925050600181019050613e70565b5085935050505092915050565b613eb381614983565b82525050565b613ec2816149dd565b82525050565b6000613ed382614810565b613edd8185614839565b9350613eed818560208601614a13565b613ef681614b05565b840191505092915050565b6000613f0e602383614839565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f74602683614839565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fda602283614839565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614040603983614839565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b60006140a6602683614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061410c602883614839565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614172603283614839565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b60006141d8601d83614839565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b6000614218602883614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061427e602083614839565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006142be602583614839565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614324602483614839565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061438a603183614839565b91507f596f752063616e742063616c6c20424144434f494e436f696e446179206d6f7260008301527f65207468616e206f6e63652061206461790000000000000000000000000000006020830152604082019050919050565b60006143f0601183614839565b91507f4e6f20626f74732063616e2074726164650000000000000000000000000000006000830152602082019050919050565b61442c816149c1565b82525050565b60006020820190506144476000830184613e3d565b92915050565b60006020820190506144626000830184613e1f565b92915050565b600060408201905061447d6000830185613e10565b61448a6020830184614423565b9392505050565b600060c0820190506144a66000830189613e3d565b6144b36020830188614423565b6144c06040830187613eb9565b6144cd6060830186613eb9565b6144da6080830185613e3d565b6144e760a0830184614423565b979650505050505050565b60006020820190506145076000830184613eaa565b92915050565b600060208201905081810360008301526145278184613ec8565b905092915050565b6000602082019050818103600083015261454881613f01565b9050919050565b6000602082019050818103600083015261456881613f67565b9050919050565b6000602082019050818103600083015261458881613fcd565b9050919050565b600060208201905081810360008301526145a881614033565b9050919050565b600060208201905081810360008301526145c881614099565b9050919050565b600060208201905081810360008301526145e8816140ff565b9050919050565b6000602082019050818103600083015261460881614165565b9050919050565b60006020820190508181036000830152614628816141cb565b9050919050565b600060208201905081810360008301526146488161420b565b9050919050565b6000602082019050818103600083015261466881614271565b9050919050565b60006020820190508181036000830152614688816142b1565b9050919050565b600060208201905081810360008301526146a881614317565b9050919050565b600060208201905081810360008301526146c88161437d565b9050919050565b600060208201905081810360008301526146e8816143e3565b9050919050565b60006020820190506147046000830184614423565b92915050565b600060a08201905061471f6000830188614423565b61472c6020830187613eb9565b818103604083015261473e8186613e4c565b905061474d6060830185613e10565b61475a6080830184614423565b9695505050505050565b600060a0820190506147796000830188614423565b6147866020830187613eb9565b81810360408301526147988186613e4c565b90506147a76060830185613e3d565b6147b46080830184614423565b9695505050505050565b60006060820190506147d36000830186614423565b6147e06020830185614423565b6147ed6040830184614423565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614855826149c1565b9150614860836149c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561489557614894614a78565b5b828201905092915050565b60006148ab826149c1565b91506148b6836149c1565b9250826148c6576148c5614aa7565b5b828204905092915050565b60006148dc826149c1565b91506148e7836149c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149205761491f614a78565b5b828202905092915050565b6000614936826149c1565b9150614941836149c1565b92508282101561495457614953614a78565b5b828203905092915050565b600061496a826149a1565b9050919050565b600061497c826149a1565b9050919050565b60008115159050919050565b600061499a8261495f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006149d6826149ef565b9050919050565b60006149e8826149c1565b9050919050565b60006149fa82614a01565b9050919050565b6000614a0c826149a1565b9050919050565b60005b83811015614a31578082015181840152602081019050614a16565b83811115614a40576000848401525b50505050565b60006002820490506001821680614a5e57607f821691505b60208210811415614a7257614a71614ad6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614b1f8161495f565b8114614b2a57600080fd5b50565b614b3681614971565b8114614b4157600080fd5b50565b614b4d81614983565b8114614b5857600080fd5b50565b614b648161498f565b8114614b6f57600080fd5b50565b614b7b816149c1565b8114614b8657600080fd5b5056fea2646970667358221220287084beb958e2c3b13ff89f83c86530956ab6f7b38ca25c6282167008f0b67a64736f6c63430008000033

Deployed Bytecode Sourcemap

4953:14364:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9182:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18284:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8946:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16997:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8428:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6598:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10987:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9664:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6672:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15212:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9104:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19217:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7138:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16779:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6629:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10621:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10895:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15044:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8334:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9500:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19126:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8528:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4390:86;;;;;;;;;;;;;:::i;:::-;;10069:256;;;;;;;;;;;;;:::i;:::-;;17529:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18603:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8160:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18496:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3811:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10803:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9261:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17876:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10711:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5452:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10497:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9347:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8640:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16885:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5701:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18800:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17657:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14280:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11082:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18883:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19038:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17425:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8804:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8240:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18709:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10327:168;;;;;;;;;;;;;:::i;:::-;;18389:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4609:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14811:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17263:160;;;;;;;;;;;;;:::i;:::-;;9182:77;9221:13;9250:5;9243:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9182:77;:::o;18284:103::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18374:9:::1;18362;:21;;;;18284:103:::0;:::o;8946:156::-;9023:4;9039:37;9048:12;:10;:12::i;:::-;9061:7;9069:6;9039:8;:37::i;:::-;9094:4;9087:11;;8946:156;;;;:::o;16997:264::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17127:4:::1;17090:17;:34;17116:6;17090:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17167:4;17138:17;:26;17156:7;17138:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17214:4;17178:16;:33;17203:6;17178:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;17253:4;17225:16;:25;17242:7;17225:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16997:264:::0;;:::o;8428:98::-;8483:7;8509:12;;8502:19;;8428:98;:::o;6598:28::-;;;;;;;;;;;;;:::o;10987:93::-;11038:7;11060:16;;11053:23;;10987:93;:::o;9664:370::-;9780:4;9810:11;:19;9822:6;9810:19;;;;;;;;;;;;;;;:33;9830:12;:10;:12::i;:::-;9810:33;;;;;;;;;;;;;;;;9800:6;:43;;9792:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;9895:36;9905:6;9913:9;9924:6;9895:9;:36::i;:::-;9938:74;9947:6;9955:12;:10;:12::i;:::-;10005:6;9969:11;:19;9981:6;9969:19;;;;;;;;;;;;;;;:33;9989:12;:10;:12::i;:::-;9969:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;9938:8;:74::i;:::-;10026:4;10019:11;;9664:370;;;;;:::o;6672:81::-;;;:::o;15212:82::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15284:6:::1;15269:12;;:21;;;;;;;;;;;;;;;;;;15212:82:::0;:::o;9104:76::-;9145:7;9167:9;;;;;;;;;;;9160:16;;;;9104:76;:::o;19217:97::-;19268:7;19290:20;;19283:27;;19217:97;:::o;7138:28::-;;;;;;;;;;;;;:::o;16779:104::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16875:4:::1;16844:17;:28;16862:9;16844:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16779:104:::0;:::o;6629:40::-;;;;;;;;;;;;;:::o;10621:88::-;10670:7;10696:9;;10689:16;;10621:88;:::o;10895:90::-;10945:7;10971:10;;10964:17;;10895:90;:::o;15044:166::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15116:18:::1;15137:21;15116:42;;15173:11;15165:29;;:41;15195:10;15165:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4068:1;15044:166:::0;:::o;8334:91::-;8385:7;8411:9;;8404:16;;8334:91;:::o;9500:161::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9592:6:::1;9572:17;:26;;;;9654:3;9636:17;;9623:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;9605:15;:52;;;;9500:161:::0;:::o;19126:89::-;19177:7;19199:12;;19192:19;;19126:89;:::o;8528:110::-;8594:7;8616:9;:18;8626:7;8616:18;;;;;;;;;;;;;;;;8609:25;;8528:110;;;:::o;4390:86::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4451:21:::1;4469:1;4451:9;:21::i;:::-;4390:86::o:0;10069:256::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:18:::1;;10123:15;:36;10115:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;10237:9;;10221:13;:25;;;;10270:9;;10254:13;:25;;;;10299:1;10287:9;:13;;;;10320:1;10308:9;:13;;;;10069:256::o:0;17529:105::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17622:8:::1;17598:21;;:32;;;;;;;;;;;;;;;;;;17529:105:::0;:::o;18603:104::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18694:9:::1;18682:10;:21;;;;18603:104:::0;:::o;8160:78::-;8201:7;8227;:5;:7::i;:::-;8220:14;;8160:78;:::o;18496:105::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18588:9:::1;18576:10;:21;;;;18496:105:::0;:::o;3811:79::-;3857:7;3880:6;;;;;;;;;;;3873:13;;3811:79;:::o;10803:90::-;10853:7;10879:10;;10872:17;;10803:90;:::o;9261:80::-;9302:13;9330:7;9323:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9261:80;:::o;17876:230::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17979:13:::1;;;;;;;;;;;17971:21;;:4;:21;;;;17963:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18061:41;18090:4;18096:5;18061:28;:41::i;:::-;17876:230:::0;;:::o;10711:88::-;10760:7;10786:9;;10779:16;;10711:88;:::o;5452:71::-;;;;:::o;5779:93::-;;;;;;;;;;;;;:::o;10497:122::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10610:5:::1;10584:10;:23;10595:11;10584:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10497:122:::0;;:::o;9347:150::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9431:6:::1;9415:13;:22;;;;9485:3;9471:13;;9458:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;9444:11;:44;;;;9347:150:::0;:::o;8640:162::-;8720:4;8736:40;8746:12;:10;:12::i;:::-;8759:9;8769:6;8736:9;:40::i;:::-;8794:4;8787:11;;8640:162;;;;:::o;16885:108::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16984:5:::1;16954:17;:27;16972:8;16954:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16885:108:::0;:::o;5701:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18800:81::-;18844:7;18866:11;;18859:18;;18800:81;:::o;17657:110::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17752:10:::1;17725:16;;:38;;;;;;;;;;;;;;;;;;17657:110:::0;:::o;14280:108::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14380:4:::1;14348:17;:29;14366:10;14348:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14280:108:::0;:::o;11082:110::-;11139:4;11162:17;:26;11180:7;11162:26;;;;;;;;;;;;;;;;;;;;;;;;;11155:33;;11082:110;;;:::o;18883:153::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18965:6:::1;18950:12;:21;;;;19027:4;19014:12;;19001;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;18978:20;:53;;;;18883:153:::0;:::o;19038:86::-;19089:4;19108:12;;;;;;;;;;;19101:19;;19038:86;:::o;17425:102::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17511:12:::1;17492:16;:31;;;;17425:102:::0;:::o;8804:140::-;8887:7;8913:11;:18;8925:5;8913:18;;;;;;;;;;;;;;;:27;8932:7;8913:27;;;;;;;;;;;;;;;;8906:34;;8804:140;;;;:::o;8240:91::-;8291:7;8317:9;;8310:16;;8240:91;:::o;18709:89::-;18757:7;18779:15;;18772:22;;18709:89;:::o;10327:168::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10393:13:::1;;10381:9;:25;;;;10426:13;;10414:9;:25;;;;10486:5;10468:15;:23;;;;:::i;:::-;10447:18;:44;;;;10327:168::o:0;18389:103::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18479:9:::1;18468;:20;;;;18389:103:::0;:::o;4609:180::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4714:1:::1;4694:22;;:8;:22;;;;4686:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4766:19;4776:8;4766:9;:19::i;:::-;4609:180:::0;:::o;14811:231::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14996:12:::1;:21;;;15018:11;15031:6;14996:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14811:231:::0;;;:::o;17263:160::-;4012:12;:10;:12::i;:::-;4001:23;;:7;:5;:7::i;:::-;:23;;;3993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17326:1:::1;17314:9;:13;;;;17346:1;17334:9;:13;;;;17367:1;17354:10;:14;;;;17388:1;17375:10;:14;;;;17396:23;17414:4;17396:17;:23::i;:::-;17263:160::o:0;125:90::-;178:7;201:10;194:17;;125:90;:::o;16437:314::-;16542:1;16525:19;;:5;:19;;;;16517:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16619:1;16600:21;;:7;:21;;;;16592:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16697:6;16667:11;:18;16679:5;16667:18;;;;;;;;;;;;;;;:27;16686:7;16667:27;;;;;;;;;;;;;;;:36;;;;16731:7;16715:32;;16724:5;16715:32;;;16740:6;16715:32;;;;;;:::i;:::-;;;;;;;;16437:314;;;:::o;11194:2843::-;11295:1;11279:18;;:4;:18;;;;11271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11368:1;11354:16;;:2;:16;;;;11346:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11434:1;11425:6;:10;11417:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11496:21;11520:9;:15;11530:4;11520:15;;;;;;;;;;;;;;;;11496:39;;11567:6;11550:13;:23;;11542:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11642:5;11626:21;;:12;;;;;;;;;;;:21;;;11623:133;;;11667:17;:21;11685:2;11667:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11692:17;:23;11710:4;11692:23;;;;;;;;;;;;;;;;;;;;;;;;;11667:48;11659:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11623:133;11788:5;11765:28;;:17;:21;11783:2;11765:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;11822:5;11797:30;;:17;:23;11815:4;11797:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;11765:62;11762:262;;;11853:11;;11843:6;:21;;11835:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11928:13;;;;;;;;;;;11920:21;;:4;:21;;;11917:100;;;11989:15;;11979:6;11965:13;11975:2;11965:9;:13::i;:::-;:20;;;;:::i;:::-;:39;;11957:48;;;;;;11917:100;11762:262;12030:25;12058:24;12076:4;12058:9;:24::i;:::-;12030:52;;12112:20;;12092:17;:40;;:70;;;;;12146:16;;;;;;;;;;;12145:17;12092:70;:104;;;;;12183:13;;;;;;;;;;;12175:21;;:4;:21;;;;12092:104;:138;;;;;12209:21;;;;;;;;;;;12092:138;12089:344;;;12270:20;;12249:17;:41;12246:176;;12331:20;;12311:40;;12370:36;12388:17;12370;:36::i;:::-;12246:176;12089:344;12443:13;12459:4;12443:20;;12489:17;:23;12507:4;12489:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12516:17;:21;12534:2;12516:21;;;;;;;;;;;;;;;;;;;;;;;;;12489:48;12486:137;;;12570:1;12554:13;:17;;;;12597:5;12586:16;;12486:137;12633:17;12665;12737:8;12734:871;;;12828:4;12808:24;;:10;:16;12819:4;12808:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;12850:4;12834:20;;:10;:14;12845:2;12834:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;12808:46;12805:112;;;12874:27;;;;;;;;;;:::i;:::-;;;;;;;;12805:112;12963:25;:29;12989:2;12963:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;13010:7;;;;;;;;;;;12996:22;;:2;:22;;;;12963:55;12959:625;;;13059:1;13043:13;:17;;;;13115:3;13104:10;;13095:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;13083:35;;13173:3;13162:10;;13153:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;13141:35;;13227:9;13215;:21;;;;:::i;:::-;13199:13;:37;;;;12959:625;;;13298:25;:31;13324:4;13298:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;13349:7;;;;;;;;;;;13333:24;;:4;:24;;;;13298:59;13295:289;;;13404:1;13388:13;:17;;;;13455:3;13445:9;;13436:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;13424:34;;13508:3;13498:9;;13489:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;13477:34;;13558:9;13546;:21;;;;:::i;:::-;13530:13;:37;;;;13295:289;12959:625;12734:871;13649:6;13633:13;:22;;;;:::i;:::-;13615:9;:15;13625:4;13615:15;;;;;;;;;;;;;;;:40;;;;13704:9;13692;13683:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;13666:9;:13;13676:2;13666:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;13738:1;13725:9;:14;13722:250;;13780:13;;13752:9;:24;13770:4;13752:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;13852:9;13839;;:22;;;;;;;:::i;:::-;;;;;;;;13885:9;13872;;:22;;;;;;;:::i;:::-;;;;;;;;13933:4;13910:44;;13919:4;13910:44;;;13940:13;;13910:44;;;;;;:::i;:::-;;;;;;;;13722:250;14002:2;13987:39;;13996:4;13987:39;;;14012:13;;14005:6;:20;;;;:::i;:::-;13987:39;;;;;;:::i;:::-;;;;;;;;11194:2843;;;;;;;;:::o;4791:157::-;4843:16;4862:6;;;;;;;;;;;4843:25;;4884:8;4875:6;;:17;;;;;;;;;;;;;;;;;;4935:8;4904:40;;4925:8;4904:40;;;;;;;;;;;;4791:157;;:::o;18108:174::-;18221:5;18187:25;:31;18213:4;18187:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18272:5;18238:40;;18266:4;18238:40;;;;;;;;;;;;18108:174;;:::o;14039:238::-;7235:4;7216:16;;:23;;;;;;;;;;;;;;;;;;14115:25:::1;14130:9;;14115:14;:25::i;:::-;14147:30;14167:9;;14147:19;:30::i;:::-;14189:44;14219:13;14189:44;;;;;;:::i;:::-;;;;;;;;14252:1;14240:9;:13;;;;14272:1;14260:9;:13;;;;7273:5:::0;7254:16;;:24;;;;;;;;;;;;;;;;;;14039:238;:::o;15296:396::-;15360:12;15393:1;15375:15;:19;;;;:::i;:::-;15360:34;;15401:17;15439:4;15421:15;:22;;;;:::i;:::-;15401:42;;15450:22;15475:21;15450:46;;15503:22;15520:4;15503:16;:22::i;:::-;15532:18;15578:14;15553:21;:40;;;;:::i;:::-;15532:61;;15600:35;15613:9;15624:10;15600:12;:35::i;:::-;15647:41;15662:4;15667:10;15678:9;15647:41;;;;;;;;:::i;:::-;;;;;;;;15296:396;;;;;:::o;14390:419::-;14449:21;14487:1;14473:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14449:40;;14514:4;14496;14501:1;14496:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14536:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14526:4;14531:1;14526:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;14557:49;14574:4;14589:7;;;;;;;;;;;14599:6;14557:8;:49::i;:::-;14614:7;;;;;;;;;;;:58;;;14683:6;14700:1;14741:4;14756:16;;;;;;;;;;;14783:15;14614:191;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14390:419;;:::o;15694:428::-;15755:21;15793:1;15779:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15755:40;;15820:4;15802;15807:1;15802:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15842:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15832:4;15837:1;15832:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;15863:54;15880:4;15895:7;;;;;;;;;;;15905:11;15863:8;:54::i;:::-;15925:7;;;;;;;;;;;:58;;;15994:11;16016:1;16057:4;16080;16096:15;15925:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15694:428;;:::o;16125:310::-;16200:54;16217:4;16232:7;;;;;;;;;;;16242:11;16200:8;:54::i;:::-;16261:7;;;;;;;;;;;:23;;;16291:9;16320:4;16336:11;16358:1;16370;16382:11;16409:15;16261:170;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16125:310;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:137::-;;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;661:77;;;;:::o;744:165::-;;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;809:100;;;;:::o;915:139::-;;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;967:87;;;;:::o;1060:143::-;;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1123:80;;;;:::o;1209:262::-;;1317:2;1305:9;1296:7;1292:23;1288:32;1285:2;;;1333:1;1330;1323:12;1285:2;1376:1;1401:53;1446:7;1437:6;1426:9;1422:22;1401:53;:::i;:::-;1391:63;;1347:117;1275:196;;;;:::o;1477:284::-;;1596:2;1584:9;1575:7;1571:23;1567:32;1564:2;;;1612:1;1609;1602:12;1564:2;1655:1;1680:64;1736:7;1727:6;1716:9;1712:22;1680:64;:::i;:::-;1670:74;;1626:128;1554:207;;;;:::o;1767:278::-;;1883:2;1871:9;1862:7;1858:23;1854:32;1851:2;;;1899:1;1896;1889:12;1851:2;1942:1;1967:61;2020:7;2011:6;2000:9;1996:22;1967:61;:::i;:::-;1957:71;;1913:125;1841:204;;;;:::o;2051:417::-;;;2181:2;2169:9;2160:7;2156:23;2152:32;2149:2;;;2197:1;2194;2187:12;2149:2;2240:1;2265:61;2318:7;2309:6;2298:9;2294:22;2265:61;:::i;:::-;2255:71;;2211:125;2375:2;2401:50;2443:7;2434:6;2423:9;2419:22;2401:50;:::i;:::-;2391:60;;2346:115;2139:329;;;;;:::o;2474:407::-;;;2599:2;2587:9;2578:7;2574:23;2570:32;2567:2;;;2615:1;2612;2605:12;2567:2;2658:1;2683:53;2728:7;2719:6;2708:9;2704:22;2683:53;:::i;:::-;2673:63;;2629:117;2785:2;2811:53;2856:7;2847:6;2836:9;2832:22;2811:53;:::i;:::-;2801:63;;2756:118;2557:324;;;;;:::o;2887:552::-;;;;3029:2;3017:9;3008:7;3004:23;3000:32;2997:2;;;3045:1;3042;3035:12;2997:2;3088:1;3113:53;3158:7;3149:6;3138:9;3134:22;3113:53;:::i;:::-;3103:63;;3059:117;3215:2;3241:53;3286:7;3277:6;3266:9;3262:22;3241:53;:::i;:::-;3231:63;;3186:118;3343:2;3369:53;3414:7;3405:6;3394:9;3390:22;3369:53;:::i;:::-;3359:63;;3314:118;2987:452;;;;;:::o;3445:401::-;;;3567:2;3555:9;3546:7;3542:23;3538:32;3535:2;;;3583:1;3580;3573:12;3535:2;3626:1;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3597:117;3753:2;3779:50;3821:7;3812:6;3801:9;3797:22;3779:50;:::i;:::-;3769:60;;3724:115;3525:321;;;;;:::o;3852:407::-;;;3977:2;3965:9;3956:7;3952:23;3948:32;3945:2;;;3993:1;3990;3983:12;3945:2;4036:1;4061:53;4106:7;4097:6;4086:9;4082:22;4061:53;:::i;:::-;4051:63;;4007:117;4163:2;4189:53;4234:7;4225:6;4214:9;4210:22;4189:53;:::i;:::-;4179:63;;4134:118;3935:324;;;;;:::o;4265:256::-;;4370:2;4358:9;4349:7;4345:23;4341:32;4338:2;;;4386:1;4383;4376:12;4338:2;4429:1;4454:50;4496:7;4487:6;4476:9;4472:22;4454:50;:::i;:::-;4444:60;;4400:114;4328:193;;;;:::o;4527:278::-;;4643:2;4631:9;4622:7;4618:23;4614:32;4611:2;;;4659:1;4656;4649:12;4611:2;4702:1;4727:61;4780:7;4771:6;4760:9;4756:22;4727:61;:::i;:::-;4717:71;;4673:125;4601:204;;;;:::o;4811:594::-;;;;4974:2;4962:9;4953:7;4949:23;4945:32;4942:2;;;4990:1;4987;4980:12;4942:2;5033:1;5058:66;5116:7;5107:6;5096:9;5092:22;5058:66;:::i;:::-;5048:76;;5004:130;5173:2;5199:61;5252:7;5243:6;5232:9;5228:22;5199:61;:::i;:::-;5189:71;;5144:126;5309:2;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5280:118;4932:473;;;;;:::o;5411:262::-;;5519:2;5507:9;5498:7;5494:23;5490:32;5487:2;;;5535:1;5532;5525:12;5487:2;5578:1;5603:53;5648:7;5639:6;5628:9;5624:22;5603:53;:::i;:::-;5593:63;;5549:117;5477:196;;;;:::o;5679:596::-;;;;5832:2;5820:9;5811:7;5807:23;5803:32;5800:2;;;5848:1;5845;5838:12;5800:2;5891:1;5916:64;5972:7;5963:6;5952:9;5948:22;5916:64;:::i;:::-;5906:74;;5862:128;6029:2;6055:64;6111:7;6102:6;6091:9;6087:22;6055:64;:::i;:::-;6045:74;;6000:129;6168:2;6194:64;6250:7;6241:6;6230:9;6226:22;6194:64;:::i;:::-;6184:74;;6139:129;5790:485;;;;;:::o;6281:179::-;;6371:46;6413:3;6405:6;6371:46;:::i;:::-;6449:4;6444:3;6440:14;6426:28;;6361:99;;;;:::o;6466:147::-;6561:45;6600:5;6561:45;:::i;:::-;6556:3;6549:58;6539:74;;:::o;6619:142::-;6722:32;6748:5;6722:32;:::i;:::-;6717:3;6710:45;6700:61;;:::o;6767:108::-;6844:24;6862:5;6844:24;:::i;:::-;6839:3;6832:37;6822:53;;:::o;6881:118::-;6968:24;6986:5;6968:24;:::i;:::-;6963:3;6956:37;6946:53;;:::o;7035:732::-;;7183:54;7231:5;7183:54;:::i;:::-;7253:86;7332:6;7327:3;7253:86;:::i;:::-;7246:93;;7363:56;7413:5;7363:56;:::i;:::-;7442:7;7473:1;7458:284;7483:6;7480:1;7477:13;7458:284;;;7559:6;7553:13;7586:63;7645:3;7630:13;7586:63;:::i;:::-;7579:70;;7672:60;7725:6;7672:60;:::i;:::-;7662:70;;7518:224;7505:1;7502;7498:9;7493:14;;7458:284;;;7462:14;7758:3;7751:10;;7159:608;;;;;;;:::o;7773:109::-;7854:21;7869:5;7854:21;:::i;:::-;7849:3;7842:34;7832:50;;:::o;7888:147::-;7983:45;8022:5;7983:45;:::i;:::-;7978:3;7971:58;7961:74;;:::o;8041:364::-;;8157:39;8190:5;8157:39;:::i;:::-;8212:71;8276:6;8271:3;8212:71;:::i;:::-;8205:78;;8292:52;8337:6;8332:3;8325:4;8318:5;8314:16;8292:52;:::i;:::-;8369:29;8391:6;8369:29;:::i;:::-;8364:3;8360:39;8353:46;;8133:272;;;;;:::o;8411:367::-;;8574:67;8638:2;8633:3;8574:67;:::i;:::-;8567:74;;8671:34;8667:1;8662:3;8658:11;8651:55;8737:5;8732:2;8727:3;8723:12;8716:27;8769:2;8764:3;8760:12;8753:19;;8557:221;;;:::o;8784:370::-;;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9044:34;9040:1;9035:3;9031:11;9024:55;9110:8;9105:2;9100:3;9096:12;9089:30;9145:2;9140:3;9136:12;9129:19;;8930:224;;;:::o;9160:366::-;;9323:67;9387:2;9382:3;9323:67;:::i;:::-;9316:74;;9420:34;9416:1;9411:3;9407:11;9400:55;9486:4;9481:2;9476:3;9472:12;9465:26;9517:2;9512:3;9508:12;9501:19;;9306:220;;;:::o;9532:389::-;;9695:67;9759:2;9754:3;9695:67;:::i;:::-;9688:74;;9792:34;9788:1;9783:3;9779:11;9772:55;9858:27;9853:2;9848:3;9844:12;9837:49;9912:2;9907:3;9903:12;9896:19;;9678:243;;;:::o;9927:370::-;;10090:67;10154:2;10149:3;10090:67;:::i;:::-;10083:74;;10187:34;10183:1;10178:3;10174:11;10167:55;10253:8;10248:2;10243:3;10239:12;10232:30;10288:2;10283:3;10279:12;10272:19;;10073:224;;;:::o;10303:372::-;;10466:67;10530:2;10525:3;10466:67;:::i;:::-;10459:74;;10563:34;10559:1;10554:3;10550:11;10543:55;10629:10;10624:2;10619:3;10615:12;10608:32;10666:2;10661:3;10657:12;10650:19;;10449:226;;;:::o;10681:382::-;;10844:67;10908:2;10903:3;10844:67;:::i;:::-;10837:74;;10941:34;10937:1;10932:3;10928:11;10921:55;11007:20;11002:2;10997:3;10993:12;10986:42;11054:2;11049:3;11045:12;11038:19;;10827:236;;;:::o;11069:327::-;;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11329:31;11325:1;11320:3;11316:11;11309:52;11387:2;11382:3;11378:12;11371:19;;11215:181;;;:::o;11402:372::-;;11565:67;11629:2;11624:3;11565:67;:::i;:::-;11558:74;;11662:34;11658:1;11653:3;11649:11;11642:55;11728:10;11723:2;11718:3;11714:12;11707:32;11765:2;11760:3;11756:12;11749:19;;11548:226;;;:::o;11780:330::-;;11943:67;12007:2;12002:3;11943:67;:::i;:::-;11936:74;;12040:34;12036:1;12031:3;12027:11;12020:55;12101:2;12096:3;12092:12;12085:19;;11926:184;;;:::o;12116:369::-;;12279:67;12343:2;12338:3;12279:67;:::i;:::-;12272:74;;12376:34;12372:1;12367:3;12363:11;12356:55;12442:7;12437:2;12432:3;12428:12;12421:29;12476:2;12471:3;12467:12;12460:19;;12262:223;;;:::o;12491:368::-;;12654:67;12718:2;12713:3;12654:67;:::i;:::-;12647:74;;12751:34;12747:1;12742:3;12738:11;12731:55;12817:6;12812:2;12807:3;12803:12;12796:28;12850:2;12845:3;12841:12;12834:19;;12637:222;;;:::o;12865:381::-;;13028:67;13092:2;13087:3;13028:67;:::i;:::-;13021:74;;13125:34;13121:1;13116:3;13112:11;13105:55;13191:19;13186:2;13181:3;13177:12;13170:41;13237:2;13232:3;13228:12;13221:19;;13011:235;;;:::o;13252:315::-;;13415:67;13479:2;13474:3;13415:67;:::i;:::-;13408:74;;13512:19;13508:1;13503:3;13499:11;13492:40;13558:2;13553:3;13549:12;13542:19;;13398:169;;;:::o;13573:118::-;13660:24;13678:5;13660:24;:::i;:::-;13655:3;13648:37;13638:53;;:::o;13697:222::-;;13828:2;13817:9;13813:18;13805:26;;13841:71;13909:1;13898:9;13894:17;13885:6;13841:71;:::i;:::-;13795:124;;;;:::o;13925:254::-;;14072:2;14061:9;14057:18;14049:26;;14085:87;14169:1;14158:9;14154:17;14145:6;14085:87;:::i;:::-;14039:140;;;;:::o;14185:348::-;;14352:2;14341:9;14337:18;14329:26;;14365:79;14441:1;14430:9;14426:17;14417:6;14365:79;:::i;:::-;14454:72;14522:2;14511:9;14507:18;14498:6;14454:72;:::i;:::-;14319:214;;;;;:::o;14539:807::-;;14826:3;14815:9;14811:19;14803:27;;14840:71;14908:1;14897:9;14893:17;14884:6;14840:71;:::i;:::-;14921:72;14989:2;14978:9;14974:18;14965:6;14921:72;:::i;:::-;15003:80;15079:2;15068:9;15064:18;15055:6;15003:80;:::i;:::-;15093;15169:2;15158:9;15154:18;15145:6;15093:80;:::i;:::-;15183:73;15251:3;15240:9;15236:19;15227:6;15183:73;:::i;:::-;15266;15334:3;15323:9;15319:19;15310:6;15266:73;:::i;:::-;14793:553;;;;;;;;;:::o;15352:210::-;;15477:2;15466:9;15462:18;15454:26;;15490:65;15552:1;15541:9;15537:17;15528:6;15490:65;:::i;:::-;15444:118;;;;:::o;15568:313::-;;15719:2;15708:9;15704:18;15696:26;;15768:9;15762:4;15758:20;15754:1;15743:9;15739:17;15732:47;15796:78;15869:4;15860:6;15796:78;:::i;:::-;15788:86;;15686:195;;;;:::o;15887:419::-;;16091:2;16080:9;16076:18;16068:26;;16140:9;16134:4;16130:20;16126:1;16115:9;16111:17;16104:47;16168:131;16294:4;16168:131;:::i;:::-;16160:139;;16058:248;;;:::o;16312:419::-;;16516:2;16505:9;16501:18;16493:26;;16565:9;16559:4;16555:20;16551:1;16540:9;16536:17;16529:47;16593:131;16719:4;16593:131;:::i;:::-;16585:139;;16483:248;;;:::o;16737:419::-;;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16908:248;;;:::o;17162:419::-;;17366:2;17355:9;17351:18;17343:26;;17415:9;17409:4;17405:20;17401:1;17390:9;17386:17;17379:47;17443:131;17569:4;17443:131;:::i;:::-;17435:139;;17333:248;;;:::o;17587:419::-;;17791:2;17780:9;17776:18;17768:26;;17840:9;17834:4;17830:20;17826:1;17815:9;17811:17;17804:47;17868:131;17994:4;17868:131;:::i;:::-;17860:139;;17758:248;;;:::o;18012:419::-;;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18183:248;;;:::o;18437:419::-;;18641:2;18630:9;18626:18;18618:26;;18690:9;18684:4;18680:20;18676:1;18665:9;18661:17;18654:47;18718:131;18844:4;18718:131;:::i;:::-;18710:139;;18608:248;;;:::o;18862:419::-;;19066:2;19055:9;19051:18;19043:26;;19115:9;19109:4;19105:20;19101:1;19090:9;19086:17;19079:47;19143:131;19269:4;19143:131;:::i;:::-;19135:139;;19033:248;;;:::o;19287:419::-;;19491:2;19480:9;19476:18;19468:26;;19540:9;19534:4;19530:20;19526:1;19515:9;19511:17;19504:47;19568:131;19694:4;19568:131;:::i;:::-;19560:139;;19458:248;;;:::o;19712:419::-;;19916:2;19905:9;19901:18;19893:26;;19965:9;19959:4;19955:20;19951:1;19940:9;19936:17;19929:47;19993:131;20119:4;19993:131;:::i;:::-;19985:139;;19883:248;;;:::o;20137:419::-;;20341:2;20330:9;20326:18;20318:26;;20390:9;20384:4;20380:20;20376:1;20365:9;20361:17;20354:47;20418:131;20544:4;20418:131;:::i;:::-;20410:139;;20308:248;;;:::o;20562:419::-;;20766:2;20755:9;20751:18;20743:26;;20815:9;20809:4;20805:20;20801:1;20790:9;20786:17;20779:47;20843:131;20969:4;20843:131;:::i;:::-;20835:139;;20733:248;;;:::o;20987:419::-;;21191:2;21180:9;21176:18;21168:26;;21240:9;21234:4;21230:20;21226:1;21215:9;21211:17;21204:47;21268:131;21394:4;21268:131;:::i;:::-;21260:139;;21158:248;;;:::o;21412:419::-;;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21583:248;;;:::o;21837:222::-;;21968:2;21957:9;21953:18;21945:26;;21981:71;22049:1;22038:9;22034:17;22025:6;21981:71;:::i;:::-;21935:124;;;;:::o;22065:847::-;;22374:3;22363:9;22359:19;22351:27;;22388:71;22456:1;22445:9;22441:17;22432:6;22388:71;:::i;:::-;22469:80;22545:2;22534:9;22530:18;22521:6;22469:80;:::i;:::-;22596:9;22590:4;22586:20;22581:2;22570:9;22566:18;22559:48;22624:108;22727:4;22718:6;22624:108;:::i;:::-;22616:116;;22742:80;22818:2;22807:9;22803:18;22794:6;22742:80;:::i;:::-;22832:73;22900:3;22889:9;22885:19;22876:6;22832:73;:::i;:::-;22341:571;;;;;;;;:::o;22918:831::-;;23219:3;23208:9;23204:19;23196:27;;23233:71;23301:1;23290:9;23286:17;23277:6;23233:71;:::i;:::-;23314:80;23390:2;23379:9;23375:18;23366:6;23314:80;:::i;:::-;23441:9;23435:4;23431:20;23426:2;23415:9;23411:18;23404:48;23469:108;23572:4;23563:6;23469:108;:::i;:::-;23461:116;;23587:72;23655:2;23644:9;23640:18;23631:6;23587:72;:::i;:::-;23669:73;23737:3;23726:9;23722:19;23713:6;23669:73;:::i;:::-;23186:563;;;;;;;;:::o;23755:442::-;;23942:2;23931:9;23927:18;23919:26;;23955:71;24023:1;24012:9;24008:17;23999:6;23955:71;:::i;:::-;24036:72;24104:2;24093:9;24089:18;24080:6;24036:72;:::i;:::-;24118;24186:2;24175:9;24171:18;24162:6;24118:72;:::i;:::-;23909:288;;;;;;:::o;24203:132::-;;24293:3;24285:11;;24323:4;24318:3;24314:14;24306:22;;24275:60;;;:::o;24341:114::-;;24442:5;24436:12;24426:22;;24415:40;;;:::o;24461:99::-;;24547:5;24541:12;24531:22;;24520:40;;;:::o;24566:113::-;;24668:4;24663:3;24659:14;24651:22;;24641:38;;;:::o;24685:184::-;;24818:6;24813:3;24806:19;24858:4;24853:3;24849:14;24834:29;;24796:73;;;;:::o;24875:169::-;;24993:6;24988:3;24981:19;25033:4;25028:3;25024:14;25009:29;;24971:73;;;;:::o;25050:305::-;;25109:20;25127:1;25109:20;:::i;:::-;25104:25;;25143:20;25161:1;25143:20;:::i;:::-;25138:25;;25297:1;25229:66;25225:74;25222:1;25219:81;25216:2;;;25303:18;;:::i;:::-;25216:2;25347:1;25344;25340:9;25333:16;;25094:261;;;;:::o;25361:185::-;;25418:20;25436:1;25418:20;:::i;:::-;25413:25;;25452:20;25470:1;25452:20;:::i;:::-;25447:25;;25491:1;25481:2;;25496:18;;:::i;:::-;25481:2;25538:1;25535;25531:9;25526:14;;25403:143;;;;:::o;25552:348::-;;25615:20;25633:1;25615:20;:::i;:::-;25610:25;;25649:20;25667:1;25649:20;:::i;:::-;25644:25;;25837:1;25769:66;25765:74;25762:1;25759:81;25754:1;25747:9;25740:17;25736:105;25733:2;;;25844:18;;:::i;:::-;25733:2;25892:1;25889;25885:9;25874:20;;25600:300;;;;:::o;25906:191::-;;25966:20;25984:1;25966:20;:::i;:::-;25961:25;;26000:20;26018:1;26000:20;:::i;:::-;25995:25;;26039:1;26036;26033:8;26030:2;;;26044:18;;:::i;:::-;26030:2;26089:1;26086;26082:9;26074:17;;25951:146;;;;:::o;26103:96::-;;26169:24;26187:5;26169:24;:::i;:::-;26158:35;;26148:51;;;:::o;26205:104::-;;26279:24;26297:5;26279:24;:::i;:::-;26268:35;;26258:51;;;:::o;26315:90::-;;26392:5;26385:13;26378:21;26367:32;;26357:48;;;:::o;26411:109::-;;26490:24;26508:5;26490:24;:::i;:::-;26479:35;;26469:51;;;:::o;26526:126::-;;26603:42;26596:5;26592:54;26581:65;;26571:81;;;:::o;26658:77::-;;26724:5;26713:16;;26703:32;;;:::o;26741:134::-;;26832:37;26863:5;26832:37;:::i;:::-;26819:50;;26809:66;;;:::o;26881:121::-;;26972:24;26990:5;26972:24;:::i;:::-;26959:37;;26949:53;;;:::o;27008:126::-;;27091:37;27122:5;27091:37;:::i;:::-;27078:50;;27068:66;;;:::o;27140:113::-;;27223:24;27241:5;27223:24;:::i;:::-;27210:37;;27200:53;;;:::o;27259:307::-;27327:1;27337:113;27351:6;27348:1;27345:13;27337:113;;;27436:1;27431:3;27427:11;27421:18;27417:1;27412:3;27408:11;27401:39;27373:2;27370:1;27366:10;27361:15;;27337:113;;;27468:6;27465:1;27462:13;27459:2;;;27548:1;27539:6;27534:3;27530:16;27523:27;27459:2;27308:258;;;;:::o;27572:320::-;;27653:1;27647:4;27643:12;27633:22;;27700:1;27694:4;27690:12;27721:18;27711:2;;27777:4;27769:6;27765:17;27755:27;;27711:2;27839;27831:6;27828:14;27808:18;27805:38;27802:2;;;27858:18;;:::i;:::-;27802:2;27623:269;;;;:::o;27898:180::-;27946:77;27943:1;27936:88;28043:4;28040:1;28033:15;28067:4;28064:1;28057:15;28084:180;28132:77;28129:1;28122:88;28229:4;28226:1;28219:15;28253:4;28250:1;28243:15;28270:180;28318:77;28315:1;28308:88;28415:4;28412:1;28405:15;28439:4;28436:1;28429:15;28456:102;;28548:2;28544:7;28539:2;28532:5;28528:14;28524:28;28514:38;;28504:54;;;:::o;28564:122::-;28637:24;28655:5;28637:24;:::i;:::-;28630:5;28627:35;28617:2;;28676:1;28673;28666:12;28617:2;28607:79;:::o;28692:138::-;28773:32;28799:5;28773:32;:::i;:::-;28766:5;28763:43;28753:2;;28820:1;28817;28810:12;28753:2;28743:87;:::o;28836:116::-;28906:21;28921:5;28906:21;:::i;:::-;28899:5;28896:32;28886:2;;28942:1;28939;28932:12;28886:2;28876:76;:::o;28958:148::-;29044:37;29075:5;29044:37;:::i;:::-;29037:5;29034:48;29024:2;;29096:1;29093;29086:12;29024:2;29014:92;:::o;29112:122::-;29185:24;29203:5;29185:24;:::i;:::-;29178:5;29175:35;29165:2;;29224:1;29221;29214:12;29165:2;29155:79;:::o

Swarm Source

ipfs://287084beb958e2c3b13ff89f83c86530956ab6f7b38ca25c6282167008f0b67a
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.