ETH Price: $3,864.50 (+5.46%)

Contract

0x71E9230A083366ca67E87F22417b01D5a51Ea36D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Age:24H
Amount:Between 1-10k
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00742811 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00742811 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00745774 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00745774 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00748748 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00748748 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00751734 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00751734 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00754732 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00754732 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00757742 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00757742 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00760764 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00760764 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00763798 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00763798 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00766844 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00766844 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00769902 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00769902 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00772972 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00772972 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00776055 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.00776055 ETH
151456992022-07-15 6:43:13873 days ago1657867393
0x71E9230A...5a51Ea36D
0.0077915 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ThreeMonkeys

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-13
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDexRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

pragma solidity ^0.8.4;

contract ThreeMonkeys is IERC20, Ownable
{
    //TresFlames
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isAMM;
    
    string private constant _name = 'Three Monkeys';
    string private constant _symbol = '3M';

    uint8 private constant _decimals = 18;

    uint public constant InitialSupply= 10**7 * 10**_decimals;
    uint private constant DefaultLiquidityLockTime=7 days;
    uint private _circulatingSupply =InitialSupply;
    uint public buyTax = 30;
    uint public sellTax = 30;
    uint public transferTax = 30;
    uint public burnTax=50;
    uint public liquidityTax=50;
    uint public projectTax=900;
    uint public swapTreshold=4;
    uint public overLiquifyTreshold=75;
    uint public LaunchTimestamp;
    uint _liquidityUnlockTime;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;

    uint256 public maxWalletBalance;
    uint256 public maxTransactionAmount;

    bool private _isSwappingContractModifier;
    bool public manualSwap;
    bool public LPReleaseLimitedTo20Percent;

    IDexRouter private  _dexRouter;

    address private _dexPairAddress;
    address public monkeyWallet;
    address public constant burnWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant DexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    event MaxWalletBalanceUpdated(uint256 percent);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint project,uint liquidity);
    event ExcludeAccount(address account, bool exclude);
    event OnEnableTrading();
    event OnReleaseLP();
    event OnProlongLPLock(uint UnlockTimestamp);
    event ExcludeFromLimits(address account, bool exclude);
    event MonkeyWalletChange(address newWallet);
    event AMMadded(address AMM);
    event ManualSwapOn(bool manual);
    event ManualSwapPerformed();
    event LimitLPRelease();
    event LockExtended(uint secondsUntilUnlock);
    event MaxTransactionAmountUpdated(uint256 percent);
    event SwapThresholdChange(uint newSwapTresholdPermille);
    event OverLiquifiedThresholdChange(uint newOverLiquifyTresholdPermille);
    event RecoverETH();


    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    constructor () {
        uint ownerBalance=_circulatingSupply * 95/100;
        uint contractgivenBalance=_circulatingSupply * 5/100;
        _balances[msg.sender] = ownerBalance;
        _balances[address(this)] = contractgivenBalance;
        emit Transfer(address(0), msg.sender, ownerBalance);
        emit Transfer(address(0), address(this), contractgivenBalance);

        _dexRouter = IDexRouter(DexRouter);
        _dexPairAddress = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        isAMM[_dexPairAddress]=true;
        
        monkeyWallet=0x7a918D7fEb6EcD31f3f5633e0243E380b3568F8c;

        excludedFromFees[msg.sender]=true;
        excludedFromFees[DexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromLimits[burnWallet] = true;
        excludedFromLimits[address(this)] = true;
    }

    function ChangeMonkeyWallet(address newWallet) public onlyOwner{
        monkeyWallet=newWallet;
        emit MonkeyWalletChange(newWallet);
    }
    function setMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    function setMaxTransactionAmount(uint256 percent) public onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (
            isAMM[sender] &&
            !excludedAccount
        ) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isAMM[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
        }

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];
        uint tax;
        if(isSell){  
            uint SellTaxDuration=45 minutes;      
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,100);
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=25 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,999);
            }else tax=buyTax;
        } else tax=transferTax;

        if((sender!=_dexPairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        uint tokensToBeSentToBurn=_calculateFee(amount, tax, burnTax);
        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-(tokensToBeSentToBurn + contractToken);

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[burnWallet]+=tokensToBeSentToBurn;
        _balances[recipient]+=taxedAmount;
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _getStartTax(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-50)*timeSinceLaunch/duration);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint project,uint liquidity) public onlyOwner{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(burn+project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, project, liquidity);
    }
    function isOverLiquified() public view returns(bool){
        return _balances[_dexPairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_dexPairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance=address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);

        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        uint monkeybalance=address(this).balance;
        (bool monkey,)=monkeyWallet.call{value:monkeybalance}("");
        monkey=true;
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_dexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        try _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ethamount) private {
        _approve(address(this), address(_dexRouter), tokenamount);
        _dexRouter.addLiquidityETH{value: ethamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    function SetAMM(address AMM, bool Add) public onlyOwner{
        require(AMM!=_dexPairAddress,"can't change dex");
        isAMM[AMM]=Add;
        emit AMMadded(AMM);
    }
    function SwitchManualSwap(bool manual) public onlyOwner{
        manualSwap=manual;
        emit ManualSwapOn(manual);
    }
    function SwapContractToken() public onlyOwner{
        _swapContractToken(true);
        emit ManualSwapPerformed();
    }
    function ExcludeAccountFromFees(address account, bool exclude) public onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    function setExcludedAccountFromLimits(address account, bool exclude) public onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) public view returns(bool) {
        return excludedFromLimits[account];
    }
    function SetupEnableTrading() public onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 5 / 1000;
        maxTransactionAmount = InitialSupply * 50 / 10000;
        emit OnEnableTrading();
    }
    function limitLiquidityReleaseTo20Percent() public onlyOwner{
        LPReleaseLimitedTo20Percent=true;
        emit LimitLPRelease();
    }
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyOwner{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
        emit LockExtended(secondsUntilUnlock);
    }
    function _prolongLiquidityLock(uint newUnlockTime) private{
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    function LiquidityRelease() public onlyOwner {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");
        IERC20 liquidityToken = IERC20(_dexPairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }
    function emergencyETHrecovery(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
        emit RecoverETH();
    }

    receive() external payable {}

    function getOwner() external view override returns (address) {return owner();}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external view override returns (uint) {return _circulatingSupply;}
    function balanceOf(address account) public view override returns (uint) {return _balances[account];}
    function allowance(address _owner, address spender) external view override returns (uint) {return _allowances[_owner][spender];}
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"AMM","type":"address"}],"name":"AMMadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitLPRelease","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"manual","type":"bool"}],"name":"ManualSwapOn","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualSwapPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"MonkeyWalletChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"OverLiquifiedThresholdChange","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":[],"name":"RecoverETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMonkeyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyETHrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReleaseTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"monkeyWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004f7565b6200002190629896806200050f565b600655601e600755601e600855601e6009556032600a556032600b55610384600c556004600d55604b600e553480156200005a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060006064600654605f620000b191906200050f565b620000bd919062000531565b9050600060646006546005620000d491906200050f565b620000e0919062000531565b336000818152600160205260408082208690553082528082208490555192935090916000805160206200318683398151915290620001219086815260200190565b60405180910390a36040518181523090600090600080516020620031868339815191529060200160405180910390a360138054767a250d5630b4cf539739df2c5dacb4c659f2488d0000006301000000600160b81b031990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa158015620001ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f4919062000554565b6001600160a01b031663c9c6539630601360039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d919062000554565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f1919062000554565b601480546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff19908116600190811790925560158054909616737a918d7feb6ecd31f3f5633e0243e380b3568f8c179095553384526004835281842080548616821790557f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d7805486168217905530808552828520805487168317905560039093527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548616821790559183529091208054909216179055506200057f9050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004395781600019048211156200041d576200041d620003e2565b808516156200042b57918102915b93841c9390800290620003fd565b509250929050565b6000826200045257506001620004f1565b816200046157506000620004f1565b81600181146200047a57600281146200048557620004a5565b6001915050620004f1565b60ff841115620004995762000499620003e2565b50506001821b620004f1565b5060208310610133831016604e8410600b8410161715620004ca575081810a620004f1565b620004d68383620003f8565b8060001904821115620004ed57620004ed620003e2565b0290505b92915050565b60006200050860ff84168362000441565b9392505050565b60008160001904831182151516156200052c576200052c620003e2565b500290565b6000826200054f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200056757600080fd5b81516001600160a01b03811681146200050857600080fd5b612bf7806200058f6000396000f3fe60806040526004361061031e5760003560e01c80638124f7ac116101ab578063be617fa0116100f7578063d46b6a3011610095578063e0d2f9eb1161006f578063e0d2f9eb14610923578063e52fb9ec14610943578063f2fde38b14610959578063f7942b631461097957600080fd5b8063d46b6a301461087d578063dbe66ca0146108ad578063dd62ed3e146108dd57600080fd5b8063c8c8ebe4116100d1578063c8c8ebe41461081b578063cc1776d314610831578063cfd1940e14610847578063d24cd3ec1461086757600080fd5b8063be617fa0146107db578063c3a3c032146107f1578063c3f4f54f1461080657600080fd5b80639b39b65f11610164578063a9059cbb1161013e578063a9059cbb1461076f578063b40d09e21461078f578063bbde77c1146107a5578063bc43d849146107bb57600080fd5b80639b39b65f1461071a578063a457c2d71461073a578063a68bdac71461075a57600080fd5b80638124f7ac1461067b5780638512af8414610691578063868b0141146106b1578063893d20e8146106d15780638da5cb5b146106d157806395d89b41146106ef57600080fd5b80632d48f84f1161026a5780634f7041a5116102235780635cce86cd116101fd5780635cce86cd146105e257806370a082311461061b578063715018a6146106515780637b9e987a1461066657600080fd5b80634f7041a51461058d5780635149f984146105a357806351bc3c85146105c357600080fd5b80632d48f84f146104e7578063313ce567146105075780633227925f14610523578063395093511461054357806341aec3571461056357806346e35f031461057857600080fd5b80630eff4c64116102d75780631e293c10116102b15780631e293c10146104725780631eb25d131461049257806323b872dd146104a75780632c92293c146104c757600080fd5b80630eff4c641461042357806318160ddd146104475780631d4eaead1461045c57600080fd5b80630612f39d1461032a5780630622874914610341578063065f4b411461037457806306fdde0314610394578063095ea7b3146103d35780630ed92da71461040357600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610999565b005b34801561034d57600080fd5b5061035761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038057600080fd5b5061033f61038f36600461271f565b610b6e565b3480156103a057600080fd5b5060408051808201909152600d81526c5468726565204d6f6e6b65797360981b60208201525b60405161036b9190612738565b3480156103df57600080fd5b506103f36103ee3660046127a5565b610c18565b604051901515815260200161036b565b34801561040f57600080fd5b50601554610357906001600160a01b031681565b34801561042f57600080fd5b50610439600e5481565b60405190815260200161036b565b34801561045357600080fd5b50600654610439565b34801561046857600080fd5b50610439600a5481565b34801561047e57600080fd5b5061033f61048d36600461271f565b610c2f565b34801561049e57600080fd5b50610439610d4d565b3480156104b357600080fd5b506103f36104c23660046127d1565b610d69565b3480156104d357600080fd5b5061033f6104e236600461271f565b610e00565b3480156104f357600080fd5b5061033f610502366004612812565b610f14565b34801561051357600080fd5b506040516012815260200161036b565b34801561052f57600080fd5b5061033f61053e36600461271f565b6110a7565b34801561054f57600080fd5b506103f361055e3660046127a5565b611122565b34801561056f57600080fd5b5061033f611159565b34801561058457600080fd5b506103f36111c7565b34801561059957600080fd5b5061043960075481565b3480156105af57600080fd5b5061033f6105be366004612863565b611207565b3480156105cf57600080fd5b506013546103f390610100900460ff1681565b3480156105ee57600080fd5b506103f36105fd36600461289c565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561062757600080fd5b5061043961063636600461289c565b6001600160a01b031660009081526001602052604090205490565b34801561065d57600080fd5b5061033f6112ee565b34801561067257600080fd5b5061033f611371565b34801561068757600080fd5b5061043960095481565b34801561069d57600080fd5b5061033f6106ac36600461289c565b611483565b3480156106bd57600080fd5b5061033f6106cc3660046128c0565b61150a565b3480156106dd57600080fd5b506000546001600160a01b0316610357565b3480156106fb57600080fd5b50604080518082019091526002815261334d60f01b60208201526103c6565b34801561072657600080fd5b506013546103f39062010000900460ff1681565b34801561074657600080fd5b506103f36107553660046127a5565b611591565b34801561076657600080fd5b5061033f61160d565b34801561077b57600080fd5b506103f361078a3660046127a5565b611682565b34801561079b57600080fd5b50610439600f5481565b3480156107b157600080fd5b5061043960115481565b3480156107c757600080fd5b5061033f6107d636600461271f565b61168f565b3480156107e757600080fd5b50610439600b5481565b3480156107fd57600080fd5b5061043961170c565b34801561081257600080fd5b5061043961172c565b34801561082757600080fd5b5061043960125481565b34801561083d57600080fd5b5061043960085481565b34801561085357600080fd5b5061033f61086236600461271f565b61178b565b34801561087357600080fd5b50610439600c5481565b34801561088957600080fd5b506103f361089836600461289c565b60056020526000908152604090205460ff1681565b3480156108b957600080fd5b506103f36108c836600461289c565b60046020526000908152604090205460ff1681565b3480156108e957600080fd5b506104396108f83660046128dd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561092f57600080fd5b5061033f61093e366004612863565b611807565b34801561094f57600080fd5b50610439600d5481565b34801561096557600080fd5b5061033f61097436600461289c565b6118f4565b34801561098557600080fd5b5061033f610994366004612863565b6119ed565b336109ac6000546001600160a01b031690565b6001600160a01b0316146109db5760405162461bcd60e51b81526004016109d29061290b565b60405180910390fd5b601054421015610a205760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b60448201526064016109d2565b6014546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190612940565b60135490915062010000900460ff1615610acf57610ab262093a804261296f565b601055600a610ac2826002612987565b610acc91906129a6565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4091906129c8565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610b816000546001600160a01b031690565b6001600160a01b031614610ba75760405162461bcd60e51b81526004016109d29061290b565b47336108fc6064610bb88585612987565b610bc291906129a6565b6040518115909202916000818181858888f19350505050158015610bea573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610c25338484611a82565b5060015b92915050565b33610c426000546001600160a01b031690565b6001600160a01b031614610c685760405162461bcd60e51b81526004016109d29061290b565b6019811015610ca55760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b60448201526064016109d2565b612710811115610ce25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016109d2565b61271081610cf26012600a612ac9565b610cff9062989680612987565b610d099190612987565b610d1391906129a6565b6012556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610d596012600a612ac9565b610d669062989680612987565b81565b6000610d76848484611b75565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610de15760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016109d2565b610df58533610df08685612ad8565b611a82565b506001949350505050565b33610e136000546001600160a01b031690565b6001600160a01b031614610e395760405162461bcd60e51b81526004016109d29061290b565b600a811015610e735760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b60448201526064016109d2565b6103e8811115610eb05760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016109d2565b6103e881610ec06012600a612ac9565b610ecd9062989680612987565b610ed79190612987565b610ee191906129a6565b6011556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610d42565b33610f276000546001600160a01b031690565b6001600160a01b031614610f4d5760405162461bcd60e51b81526004016109d29061290b565b6000610f5c600a6103e86129a6565b9050808711158015610f6e5750808611155b8015610f7a5750808511155b610fbb5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064016109d2565b6103e882610fc9858761296f565b610fd3919061296f565b1461102a5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b60648201526084016109d2565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b336110ba6000546001600160a01b031690565b6001600160a01b0316146110e05760405162461bcd60e51b81526004016109d29061290b565b6110f26110ed428361296f565b611cba565b6040518181527f2d3b38a507b3fb0ee1aaa054f2d952d0ac517f18f1cba8857c1b0e2ed9d5dbd990602001610d42565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c25918590610df090869061296f565b3361116c6000546001600160a01b031690565b6001600160a01b0316146111925760405162461bcd60e51b81526004016109d29061290b565b61119c6001611cfd565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e546006546111dc9190612987565b6111e691906129a6565b6014546001600160a01b031660009081526001602052604090205411919050565b3361121a6000546001600160a01b031690565b6001600160a01b0316146112405760405162461bcd60e51b81526004016109d29061290b565b6014546001600160a01b03908116908316036112915760405162461bcd60e51b815260206004820152601060248201526f0c6c2dc4ee840c6d0c2dcceca40c8caf60831b60448201526064016109d2565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b336113016000546001600160a01b031690565b6001600160a01b0316146113275760405162461bcd60e51b81526004016109d29061290b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113846000546001600160a01b031690565b6001600160a01b0316146113aa5760405162461bcd60e51b81526004016109d29061290b565b600f54156113ec5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b60448201526064016109d2565b42600f556103e86113ff6012600a612ac9565b61140c9062989680612987565b611417906005612987565b61142191906129a6565b6011556127106114336012600a612ac9565b6114409062989680612987565b61144b906032612987565b61145591906129a6565b6012556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336114966000546001600160a01b031690565b6001600160a01b0316146114bc5760405162461bcd60e51b81526004016109d29061290b565b601580546001600160a01b0319166001600160a01b0383169081179091556040519081527f6887369acbdc098350fa0bc1e3691469fe67c7bba8662473c718ad9b5658ff1e90602001610d42565b3361151d6000546001600160a01b031690565b6001600160a01b0316146115435760405162461bcd60e51b81526004016109d29061290b565b601380548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610d4290831515815260200190565b905090565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156115f45760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016109d2565b6116033385610df08685612ad8565b5060019392505050565b336116206000546001600160a01b031690565b6001600160a01b0316146116465760405162461bcd60e51b81526004016109d29061290b565b6013805462ff00001916620100001790556040517f4aef80fb0c1ab90a77982dc86c9e9980ea16125ae57fea5089954547863f7f2390600090a1565b6000610c25338484611b75565b336116a26000546001600160a01b031690565b6001600160a01b0316146116c85760405162461bcd60e51b81526004016109d29061290b565b6103e88111156116d757600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610d42565b6000601054421015611726574260105461158c9190612ad8565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065461176a6012600a612ac9565b6117779062989680612987565b6117819190612ad8565b61158c919061296f565b3361179e6000546001600160a01b031690565b6001600160a01b0316146117c45760405162461bcd60e51b81526004016109d29061290b565b600a8111156117d257600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610d42565b3361181a6000546001600160a01b031690565b6001600160a01b0316146118405760405162461bcd60e51b81526004016109d29061290b565b306001600160a01b038316036118985760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e747261637400000000000060448201526064016109d2565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491016112e2565b336119076000546001600160a01b031690565b6001600160a01b03161461192d5760405162461bcd60e51b81526004016109d29061290b565b6001600160a01b0381166119925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611a006000546001600160a01b031690565b6001600160a01b031614611a265760405162461bcd60e51b81526004016109d29061290b565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016112e2565b6001600160a01b038316611acc5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016109d2565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016109d2565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bc05760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016109d2565b6001600160a01b038216611c095760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016109d2565b6001600160a01b03831660009081526004602052604090205460ff1680611c4857506001600160a01b03821660009081526004602052604090205460ff165b15611c5d57611c58838383611eb9565b505050565b6000600f5411611caf5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016109d2565b611c58838383611fcc565b6010548111611cc857600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610d42565b6013805460ff191660019081179091553060009081526020919091526040812054600c54600b54919291611d31919061296f565b600d546014546001600160a01b0316600090815260016020526040812054929350916103e891611d6091612987565b611d6a91906129a6565b905081600003611d7c57505050611eac565b8315611d98575030600090815260016020526040902054611da8565b80831015611da857505050611eac565b6000611db26111c7565b611dd45782600b5483611dc59190612987565b611dcf91906129a6565b611dd7565b60005b90506000611de58284612ad8565b90506000611df46002846129a6565b90506000611e02838361296f565b905047611e0e82612475565b6000611e1a8247612ad8565b90508515611e4757600083611e2f8684612987565b611e3991906129a6565b9050611e4585826125ee565b505b60155460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611e98576040519150601f19603f3d011682016040523d82523d6000602084013e611e9d565b606091505b50505050505050505050505050505b506013805460ff19169055565b6001600160a01b03831660009081526001602052604090205481811015611f1d5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016109d2565b6001600160a01b03841660009081526001602052604081208054849290611f45908490612ad8565b90915550506001600160a01b03831660009081526001602052604081208054849290611f7290849061296f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fbe91815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156120305760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016109d2565b6001600160a01b03841660009081526003602052604081205460ff168061206f57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612098575080155b15612186576012548311156121005760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109d2565b6001600160a01b038416600090815260016020526040902054601154612126858361296f565b11156121805760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b60648201526084016109d2565b50612229565b6001600160a01b03841660009081526005602052604090205460ff1680156121ac575080155b15612229576012548311156122295760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e00000000000060648201526084016109d2565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561229157600f54610a8c9061226c90829061296f565b4210156122855761227e8160646126ac565b915061228b565b60085491505b506122ca565b82156122c557600f546019906122a890829061296f565b4210156122bb5761227e816103e76126ac565b50506007546122ca565b506009545b6014546001600160a01b038981169116148015906122f05750601354610100900460ff16155b80156122ff575060135460ff16155b1561230e5761230e6000611cfd565b600061231d8783600a546126f2565b9050600061233b8884600b54600c54612336919061296f565b6126f2565b90506000612349828461296f565b612353908a612ad8565b6001600160a01b038c16600090815260016020526040812080549293508b92909190612380908490612ad8565b909155505030600090815260016020526040812080548492906123a490849061296f565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548592906123e790849061296f565b90915550506001600160a01b038a166000908152600160205260408120805483929061241490849061296f565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161246091815260200190565b60405180910390a35050505050505050505050565b601354612494903090630100000090046001600160a01b031683611a82565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124c9576124c9612aef565b60200260200101906001600160a01b031690816001600160a01b031681525050601360039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125609190612b05565b8160018151811061257357612573612aef565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815263010000009091049091169063791ac947906125c2908590600090869030904290600401612b22565b600060405180830381600087803b1580156125dc57600080fd5b505af1925050508015611c5857505050565b60135461260d903090630100000090046001600160a01b031684611a82565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612680573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126a59190612b93565b5050505050565b600080600f54426126bd9190612ad8565b905083816126cc603286612ad8565b6126d69190612987565b6126e091906129a6565b6126ea9084612ad8565b949350505050565b60006127006103e880612987565b8261270b8587612987565b6127159190612987565b6126ea91906129a6565b60006020828403121561273157600080fd5b5035919050565b600060208083528351808285015260005b8181101561276557858101830151858201604001528201612749565b81811115612777576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146127a257600080fd5b50565b600080604083850312156127b857600080fd5b82356127c38161278d565b946020939093013593505050565b6000806000606084860312156127e657600080fd5b83356127f18161278d565b925060208401356128018161278d565b929592945050506040919091013590565b60008060008060008060c0878903121561282b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80151581146127a257600080fd5b6000806040838503121561287657600080fd5b82356128818161278d565b9150602083013561289181612855565b809150509250929050565b6000602082840312156128ae57600080fd5b81356128b98161278d565b9392505050565b6000602082840312156128d257600080fd5b81356128b981612855565b600080604083850312156128f057600080fd5b82356128fb8161278d565b915060208301356128918161278d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561295257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561298257612982612959565b500190565b60008160001904831182151516156129a1576129a1612959565b500290565b6000826129c357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129da57600080fd5b81516128b981612855565b600181815b80851115612a20578160001904821115612a0657612a06612959565b80851615612a1357918102915b93841c93908002906129ea565b509250929050565b600082612a3757506001610c29565b81612a4457506000610c29565b8160018114612a5a5760028114612a6457612a80565b6001915050610c29565b60ff841115612a7557612a75612959565b50506001821b610c29565b5060208310610133831016604e8410600b8410161715612aa3575081810a610c29565b612aad83836129e5565b8060001904821115612ac157612ac1612959565b029392505050565b60006128b960ff841683612a28565b600082821015612aea57612aea612959565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b1757600080fd5b81516128b98161278d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b725784516001600160a01b031683529383019391830191600101612b4d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ba857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b28788a4725fc7a4befde4a872a7eb7ffa6946498aae4fa282df3f1ca13a04a164736f6c634300080f0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638124f7ac116101ab578063be617fa0116100f7578063d46b6a3011610095578063e0d2f9eb1161006f578063e0d2f9eb14610923578063e52fb9ec14610943578063f2fde38b14610959578063f7942b631461097957600080fd5b8063d46b6a301461087d578063dbe66ca0146108ad578063dd62ed3e146108dd57600080fd5b8063c8c8ebe4116100d1578063c8c8ebe41461081b578063cc1776d314610831578063cfd1940e14610847578063d24cd3ec1461086757600080fd5b8063be617fa0146107db578063c3a3c032146107f1578063c3f4f54f1461080657600080fd5b80639b39b65f11610164578063a9059cbb1161013e578063a9059cbb1461076f578063b40d09e21461078f578063bbde77c1146107a5578063bc43d849146107bb57600080fd5b80639b39b65f1461071a578063a457c2d71461073a578063a68bdac71461075a57600080fd5b80638124f7ac1461067b5780638512af8414610691578063868b0141146106b1578063893d20e8146106d15780638da5cb5b146106d157806395d89b41146106ef57600080fd5b80632d48f84f1161026a5780634f7041a5116102235780635cce86cd116101fd5780635cce86cd146105e257806370a082311461061b578063715018a6146106515780637b9e987a1461066657600080fd5b80634f7041a51461058d5780635149f984146105a357806351bc3c85146105c357600080fd5b80632d48f84f146104e7578063313ce567146105075780633227925f14610523578063395093511461054357806341aec3571461056357806346e35f031461057857600080fd5b80630eff4c64116102d75780631e293c10116102b15780631e293c10146104725780631eb25d131461049257806323b872dd146104a75780632c92293c146104c757600080fd5b80630eff4c641461042357806318160ddd146104475780631d4eaead1461045c57600080fd5b80630612f39d1461032a5780630622874914610341578063065f4b411461037457806306fdde0314610394578063095ea7b3146103d35780630ed92da71461040357600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610999565b005b34801561034d57600080fd5b5061035761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038057600080fd5b5061033f61038f36600461271f565b610b6e565b3480156103a057600080fd5b5060408051808201909152600d81526c5468726565204d6f6e6b65797360981b60208201525b60405161036b9190612738565b3480156103df57600080fd5b506103f36103ee3660046127a5565b610c18565b604051901515815260200161036b565b34801561040f57600080fd5b50601554610357906001600160a01b031681565b34801561042f57600080fd5b50610439600e5481565b60405190815260200161036b565b34801561045357600080fd5b50600654610439565b34801561046857600080fd5b50610439600a5481565b34801561047e57600080fd5b5061033f61048d36600461271f565b610c2f565b34801561049e57600080fd5b50610439610d4d565b3480156104b357600080fd5b506103f36104c23660046127d1565b610d69565b3480156104d357600080fd5b5061033f6104e236600461271f565b610e00565b3480156104f357600080fd5b5061033f610502366004612812565b610f14565b34801561051357600080fd5b506040516012815260200161036b565b34801561052f57600080fd5b5061033f61053e36600461271f565b6110a7565b34801561054f57600080fd5b506103f361055e3660046127a5565b611122565b34801561056f57600080fd5b5061033f611159565b34801561058457600080fd5b506103f36111c7565b34801561059957600080fd5b5061043960075481565b3480156105af57600080fd5b5061033f6105be366004612863565b611207565b3480156105cf57600080fd5b506013546103f390610100900460ff1681565b3480156105ee57600080fd5b506103f36105fd36600461289c565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561062757600080fd5b5061043961063636600461289c565b6001600160a01b031660009081526001602052604090205490565b34801561065d57600080fd5b5061033f6112ee565b34801561067257600080fd5b5061033f611371565b34801561068757600080fd5b5061043960095481565b34801561069d57600080fd5b5061033f6106ac36600461289c565b611483565b3480156106bd57600080fd5b5061033f6106cc3660046128c0565b61150a565b3480156106dd57600080fd5b506000546001600160a01b0316610357565b3480156106fb57600080fd5b50604080518082019091526002815261334d60f01b60208201526103c6565b34801561072657600080fd5b506013546103f39062010000900460ff1681565b34801561074657600080fd5b506103f36107553660046127a5565b611591565b34801561076657600080fd5b5061033f61160d565b34801561077b57600080fd5b506103f361078a3660046127a5565b611682565b34801561079b57600080fd5b50610439600f5481565b3480156107b157600080fd5b5061043960115481565b3480156107c757600080fd5b5061033f6107d636600461271f565b61168f565b3480156107e757600080fd5b50610439600b5481565b3480156107fd57600080fd5b5061043961170c565b34801561081257600080fd5b5061043961172c565b34801561082757600080fd5b5061043960125481565b34801561083d57600080fd5b5061043960085481565b34801561085357600080fd5b5061033f61086236600461271f565b61178b565b34801561087357600080fd5b50610439600c5481565b34801561088957600080fd5b506103f361089836600461289c565b60056020526000908152604090205460ff1681565b3480156108b957600080fd5b506103f36108c836600461289c565b60046020526000908152604090205460ff1681565b3480156108e957600080fd5b506104396108f83660046128dd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561092f57600080fd5b5061033f61093e366004612863565b611807565b34801561094f57600080fd5b50610439600d5481565b34801561096557600080fd5b5061033f61097436600461289c565b6118f4565b34801561098557600080fd5b5061033f610994366004612863565b6119ed565b336109ac6000546001600160a01b031690565b6001600160a01b0316146109db5760405162461bcd60e51b81526004016109d29061290b565b60405180910390fd5b601054421015610a205760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b60448201526064016109d2565b6014546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190612940565b60135490915062010000900460ff1615610acf57610ab262093a804261296f565b601055600a610ac2826002612987565b610acc91906129a6565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4091906129c8565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610b816000546001600160a01b031690565b6001600160a01b031614610ba75760405162461bcd60e51b81526004016109d29061290b565b47336108fc6064610bb88585612987565b610bc291906129a6565b6040518115909202916000818181858888f19350505050158015610bea573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610c25338484611a82565b5060015b92915050565b33610c426000546001600160a01b031690565b6001600160a01b031614610c685760405162461bcd60e51b81526004016109d29061290b565b6019811015610ca55760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b60448201526064016109d2565b612710811115610ce25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016109d2565b61271081610cf26012600a612ac9565b610cff9062989680612987565b610d099190612987565b610d1391906129a6565b6012556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610d596012600a612ac9565b610d669062989680612987565b81565b6000610d76848484611b75565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610de15760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016109d2565b610df58533610df08685612ad8565b611a82565b506001949350505050565b33610e136000546001600160a01b031690565b6001600160a01b031614610e395760405162461bcd60e51b81526004016109d29061290b565b600a811015610e735760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b60448201526064016109d2565b6103e8811115610eb05760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b60448201526064016109d2565b6103e881610ec06012600a612ac9565b610ecd9062989680612987565b610ed79190612987565b610ee191906129a6565b6011556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610d42565b33610f276000546001600160a01b031690565b6001600160a01b031614610f4d5760405162461bcd60e51b81526004016109d29061290b565b6000610f5c600a6103e86129a6565b9050808711158015610f6e5750808611155b8015610f7a5750808511155b610fbb5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064016109d2565b6103e882610fc9858761296f565b610fd3919061296f565b1461102a5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b60648201526084016109d2565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b336110ba6000546001600160a01b031690565b6001600160a01b0316146110e05760405162461bcd60e51b81526004016109d29061290b565b6110f26110ed428361296f565b611cba565b6040518181527f2d3b38a507b3fb0ee1aaa054f2d952d0ac517f18f1cba8857c1b0e2ed9d5dbd990602001610d42565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c25918590610df090869061296f565b3361116c6000546001600160a01b031690565b6001600160a01b0316146111925760405162461bcd60e51b81526004016109d29061290b565b61119c6001611cfd565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e546006546111dc9190612987565b6111e691906129a6565b6014546001600160a01b031660009081526001602052604090205411919050565b3361121a6000546001600160a01b031690565b6001600160a01b0316146112405760405162461bcd60e51b81526004016109d29061290b565b6014546001600160a01b03908116908316036112915760405162461bcd60e51b815260206004820152601060248201526f0c6c2dc4ee840c6d0c2dcceca40c8caf60831b60448201526064016109d2565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b336113016000546001600160a01b031690565b6001600160a01b0316146113275760405162461bcd60e51b81526004016109d29061290b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113846000546001600160a01b031690565b6001600160a01b0316146113aa5760405162461bcd60e51b81526004016109d29061290b565b600f54156113ec5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b60448201526064016109d2565b42600f556103e86113ff6012600a612ac9565b61140c9062989680612987565b611417906005612987565b61142191906129a6565b6011556127106114336012600a612ac9565b6114409062989680612987565b61144b906032612987565b61145591906129a6565b6012556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336114966000546001600160a01b031690565b6001600160a01b0316146114bc5760405162461bcd60e51b81526004016109d29061290b565b601580546001600160a01b0319166001600160a01b0383169081179091556040519081527f6887369acbdc098350fa0bc1e3691469fe67c7bba8662473c718ad9b5658ff1e90602001610d42565b3361151d6000546001600160a01b031690565b6001600160a01b0316146115435760405162461bcd60e51b81526004016109d29061290b565b601380548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610d4290831515815260200190565b905090565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156115f45760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016109d2565b6116033385610df08685612ad8565b5060019392505050565b336116206000546001600160a01b031690565b6001600160a01b0316146116465760405162461bcd60e51b81526004016109d29061290b565b6013805462ff00001916620100001790556040517f4aef80fb0c1ab90a77982dc86c9e9980ea16125ae57fea5089954547863f7f2390600090a1565b6000610c25338484611b75565b336116a26000546001600160a01b031690565b6001600160a01b0316146116c85760405162461bcd60e51b81526004016109d29061290b565b6103e88111156116d757600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610d42565b6000601054421015611726574260105461158c9190612ad8565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065461176a6012600a612ac9565b6117779062989680612987565b6117819190612ad8565b61158c919061296f565b3361179e6000546001600160a01b031690565b6001600160a01b0316146117c45760405162461bcd60e51b81526004016109d29061290b565b600a8111156117d257600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610d42565b3361181a6000546001600160a01b031690565b6001600160a01b0316146118405760405162461bcd60e51b81526004016109d29061290b565b306001600160a01b038316036118985760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e747261637400000000000060448201526064016109d2565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491016112e2565b336119076000546001600160a01b031690565b6001600160a01b03161461192d5760405162461bcd60e51b81526004016109d29061290b565b6001600160a01b0381166119925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611a006000546001600160a01b031690565b6001600160a01b031614611a265760405162461bcd60e51b81526004016109d29061290b565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016112e2565b6001600160a01b038316611acc5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016109d2565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016109d2565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bc05760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016109d2565b6001600160a01b038216611c095760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016109d2565b6001600160a01b03831660009081526004602052604090205460ff1680611c4857506001600160a01b03821660009081526004602052604090205460ff165b15611c5d57611c58838383611eb9565b505050565b6000600f5411611caf5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016109d2565b611c58838383611fcc565b6010548111611cc857600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610d42565b6013805460ff191660019081179091553060009081526020919091526040812054600c54600b54919291611d31919061296f565b600d546014546001600160a01b0316600090815260016020526040812054929350916103e891611d6091612987565b611d6a91906129a6565b905081600003611d7c57505050611eac565b8315611d98575030600090815260016020526040902054611da8565b80831015611da857505050611eac565b6000611db26111c7565b611dd45782600b5483611dc59190612987565b611dcf91906129a6565b611dd7565b60005b90506000611de58284612ad8565b90506000611df46002846129a6565b90506000611e02838361296f565b905047611e0e82612475565b6000611e1a8247612ad8565b90508515611e4757600083611e2f8684612987565b611e3991906129a6565b9050611e4585826125ee565b505b60155460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611e98576040519150601f19603f3d011682016040523d82523d6000602084013e611e9d565b606091505b50505050505050505050505050505b506013805460ff19169055565b6001600160a01b03831660009081526001602052604090205481811015611f1d5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016109d2565b6001600160a01b03841660009081526001602052604081208054849290611f45908490612ad8565b90915550506001600160a01b03831660009081526001602052604081208054849290611f7290849061296f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fbe91815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156120305760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016109d2565b6001600160a01b03841660009081526003602052604081205460ff168061206f57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612098575080155b15612186576012548311156121005760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109d2565b6001600160a01b038416600090815260016020526040902054601154612126858361296f565b11156121805760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b60648201526084016109d2565b50612229565b6001600160a01b03841660009081526005602052604090205460ff1680156121ac575080155b15612229576012548311156122295760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e00000000000060648201526084016109d2565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561229157600f54610a8c9061226c90829061296f565b4210156122855761227e8160646126ac565b915061228b565b60085491505b506122ca565b82156122c557600f546019906122a890829061296f565b4210156122bb5761227e816103e76126ac565b50506007546122ca565b506009545b6014546001600160a01b038981169116148015906122f05750601354610100900460ff16155b80156122ff575060135460ff16155b1561230e5761230e6000611cfd565b600061231d8783600a546126f2565b9050600061233b8884600b54600c54612336919061296f565b6126f2565b90506000612349828461296f565b612353908a612ad8565b6001600160a01b038c16600090815260016020526040812080549293508b92909190612380908490612ad8565b909155505030600090815260016020526040812080548492906123a490849061296f565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548592906123e790849061296f565b90915550506001600160a01b038a166000908152600160205260408120805483929061241490849061296f565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161246091815260200190565b60405180910390a35050505050505050505050565b601354612494903090630100000090046001600160a01b031683611a82565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124c9576124c9612aef565b60200260200101906001600160a01b031690816001600160a01b031681525050601360039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125609190612b05565b8160018151811061257357612573612aef565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815263010000009091049091169063791ac947906125c2908590600090869030904290600401612b22565b600060405180830381600087803b1580156125dc57600080fd5b505af1925050508015611c5857505050565b60135461260d903090630100000090046001600160a01b031684611a82565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612680573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126a59190612b93565b5050505050565b600080600f54426126bd9190612ad8565b905083816126cc603286612ad8565b6126d69190612987565b6126e091906129a6565b6126ea9084612ad8565b949350505050565b60006127006103e880612987565b8261270b8587612987565b6127159190612987565b6126ea91906129a6565b60006020828403121561273157600080fd5b5035919050565b600060208083528351808285015260005b8181101561276557858101830151858201604001528201612749565b81811115612777576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146127a257600080fd5b50565b600080604083850312156127b857600080fd5b82356127c38161278d565b946020939093013593505050565b6000806000606084860312156127e657600080fd5b83356127f18161278d565b925060208401356128018161278d565b929592945050506040919091013590565b60008060008060008060c0878903121561282b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80151581146127a257600080fd5b6000806040838503121561287657600080fd5b82356128818161278d565b9150602083013561289181612855565b809150509250929050565b6000602082840312156128ae57600080fd5b81356128b98161278d565b9392505050565b6000602082840312156128d257600080fd5b81356128b981612855565b600080604083850312156128f057600080fd5b82356128fb8161278d565b915060208301356128918161278d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561295257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561298257612982612959565b500190565b60008160001904831182151516156129a1576129a1612959565b500290565b6000826129c357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129da57600080fd5b81516128b981612855565b600181815b80851115612a20578160001904821115612a0657612a06612959565b80851615612a1357918102915b93841c93908002906129ea565b509250929050565b600082612a3757506001610c29565b81612a4457506000610c29565b8160018114612a5a5760028114612a6457612a80565b6001915050610c29565b60ff841115612a7557612a75612959565b50506001821b610c29565b5060208310610133831016604e8410600b8410161715612aa3575081810a610c29565b612aad83836129e5565b8060001904821115612ac157612ac1612959565b029392505050565b60006128b960ff841683612a28565b600082821015612aea57612aea612959565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b1757600080fd5b81516128b98161278d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b725784516001600160a01b031683529383019391830191600101612b4d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ba857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b28788a4725fc7a4befde4a872a7eb7ffa6946498aae4fa282df3f1ca13a04a164736f6c634300080f0033

Deployed Bytecode Sourcemap

2637:16210:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15805:509;;;;;;;;;;;;;:::i;:::-;;4045:79;;;;;;;;;;;;4082:42;4045:79;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4045:79:0;;;;;;;;16320:238;;;;;;;;;;-1:-1:-1;16320:238:0;;;;;:::i;:::-;;:::i;16687:78::-;;;;;;;;;;-1:-1:-1;16758:5:0;;;;;;;;;;;;-1:-1:-1;;;16758:5:0;;;;16687:78;;;;;;;:::i;17448:158::-;;;;;;;;;;-1:-1:-1;17448:158:0;;;;;:::i;:::-;;:::i;:::-;;;1630:14:1;;1623:22;1605:41;;1593:2;1578:18;17448:158:0;1465:187:1;4011:27:0;;;;;;;;;;-1:-1:-1;4011:27:0;;;;-1:-1:-1;;;;;4011:27:0;;;3537:34;;;;;;;;;;;;;;;;;;;1803:25:1;;;1791:2;1776:18;3537:34:0;1657:177:1;16943:89:0;;;;;;;;;;-1:-1:-1;17012:18:0;;16943:89;;3408:22;;;;;;;;;;;;;;;;6528:286;;;;;;;;;;-1:-1:-1;6528:286:0;;;;;:::i;:::-;;:::i;3135:57::-;;;;;;;;;;;;;:::i;17912:382::-;;;;;;;;;;-1:-1:-1;17912:382:0;;;;;:::i;:::-;;:::i;6244:278::-;;;;;;;;;;-1:-1:-1;6244:278:0;;;;;:::i;:::-;;:::i;10816:590::-;;;;;;;;;;-1:-1:-1;10816:590:0;;;;;:::i;:::-;;:::i;16859:78::-;;;;;;;;;;-1:-1:-1;16859:78:0;;3124:2;2970:36:1;;2958:2;2943:18;16859:78:0;2828:184:1;15377:198:0;;;;;;;;;;-1:-1:-1;15377:198:0;;;;;:::i;:::-;;:::i;18300:202::-;;;;;;;;;;-1:-1:-1;18300:202:0;;;;;:::i;:::-;;:::i;14210:125::-;;;;;;;;;;;;;:::i;11412:148::-;;;;;;;;;;;;;:::i;3312:23::-;;;;;;;;;;;;;;;;13895:176;;;;;;;;;;-1:-1:-1;13895:176:0;;;;;:::i;:::-;;:::i;3857:22::-;;;;;;;;;;-1:-1:-1;3857:22:0;;;;;;;;;;;14791:126;;;;;;;;;;-1:-1:-1;14791:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;14882:27:0;14858:4;14882:27;;;:18;:27;;;;;;;;;14791:126;17038:100;;;;;;;;;;-1:-1:-1;17038:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;17118:18:0;17104:4;17118:18;;;:9;:18;;;;;;;17038:100;2221:140;;;;;;;;;;;;;:::i;14923:299::-;;;;;;;;;;;;;:::i;3373:28::-;;;;;;;;;;;;;;;;6089:149;;;;;;;;;;-1:-1:-1;6089:149:0;;;;;:::i;:::-;;:::i;14077:127::-;;;;;;;;;;-1:-1:-1;14077:127:0;;;;;:::i;:::-;;:::i;16603:78::-;;;;;;;;;;-1:-1:-1;16655:7:0;2077:6;-1:-1:-1;;;;;2077:6:0;16603:78;;16771:82;;;;;;;;;;-1:-1:-1;16844:7:0;;;;;;;;;;;;-1:-1:-1;;;16844:7:0;;;;16771:82;;3886:39;;;;;;;;;;-1:-1:-1;3886:39:0;;;;;;;;;;;18508:334;;;;;;;;;;-1:-1:-1;18508:334:0;;;;;:::i;:::-;;:::i;15228:143::-;;;;;;;;;;;;;:::i;17278:164::-;;;;;;;;;;-1:-1:-1;17278:164:0;;;;;:::i;:::-;;:::i;3578:27::-;;;;;;;;;;;;;;;;3728:31;;;;;;;;;;;;;;;;10522:288;;;;;;;;;;-1:-1:-1;10522:288:0;;;;;:::i;:::-;;:::i;3437:27::-;;;;;;;;;;;;;;;;13539:205;;;;;;;;;;;;;:::i;13750:139::-;;;;;;;;;;;;;:::i;3766:35::-;;;;;;;;;;;;;;;;3342:24;;;;;;;;;;;;;;;;10266:250;;;;;;;;;;-1:-1:-1;10266:250:0;;;;;:::i;:::-;;:::i;3471:26::-;;;;;;;;;;;;;;;;2940:35;;;;;;;;;;-1:-1:-1;2940:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2885:48;;;;;;;;;;-1:-1:-1;2885:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17144:128;;;;;;;;;;-1:-1:-1;17144:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;17242:19:0;;;17228:4;17242:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17144:128;14341:249;;;;;;;;;;-1:-1:-1;14341:249:0;;;;;:::i;:::-;;:::i;3504:26::-;;;;;;;;;;;;;;;;2367:236;;;;;;;;;;-1:-1:-1;2367:236:0;;;;;:::i;:::-;;:::i;14596:189::-;;;;;;;;;;-1:-1:-1;14596:189:0;;;;;:::i;:::-;;:::i;15805:509::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;;;;;;;;;15888:20:::1;;15869:15;:39;;15861:68;;;::::0;-1:-1:-1;;;15861:68:0;;4981:2:1;15861:68:0::1;::::0;::::1;4963:21:1::0;5020:2;5000:18;;;4993:30;-1:-1:-1;;;5039:18:1;;;5032:46;5095:18;;15861:68:0::1;4779:340:1::0;15861:68:0::1;15971:15;::::0;16012:39:::1;::::0;-1:-1:-1;;;16012:39:0;;16045:4:::1;16012:39;::::0;::::1;160:51:1::0;-1:-1:-1;;;;;15971:15:0;;::::1;::::0;15940:21:::1;::::0;15971:15;;16012:24:::1;::::0;133:18:1;;16012:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16065:27;::::0;15998:53;;-1:-1:-1;16065:27:0;;::::1;;;16062:162;;;16139:40;3246:6;16139:15;:40;:::i;:::-;16118:20;:61:::0;16210:2:::1;16201:8;:6:::0;16208:1:::1;16201:8;:::i;:::-;:11;;;;:::i;:::-;16194:18;;16062:162;16234:43;::::0;-1:-1:-1;;;16234:43:0;;16258:10:::1;16234:43;::::0;::::1;6147:51:1::0;6214:18;;;6207:34;;;-1:-1:-1;;;;;16234:23:0;::::1;::::0;::::1;::::0;6120:18:1;;16234:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16293:13:0::1;::::0;::::1;::::0;;;::::1;15850:464;;15805:509::o:0;16320:238::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;16426:21:::1;16466:10;16458:64;16518:3;16487:28;16499:16:::0;16426:21;16487:28:::1;:::i;:::-;:34;;;;:::i;:::-;16458:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16538:12:0::1;::::0;::::1;::::0;;;::::1;16395:163;16320:238:::0;:::o;17448:158::-;17522:4;17539:37;17548:10;17560:7;17569:6;17539:8;:37::i;:::-;-1:-1:-1;17594:4:0;17448:158;;;;;:::o;6528:286::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6625:2:::1;6614:7;:13;;6606:35;;;::::0;-1:-1:-1;;;6606:35:0;;6704:2:1;6606:35:0::1;::::0;::::1;6686:21:1::0;6743:1;6723:18;;;6716:29;-1:-1:-1;;;6761:18:1;;;6754:39;6810:18;;6606:35:0::1;6502:332:1::0;6606:35:0::1;6671:5;6660:7;:16;;6652:37;;;::::0;-1:-1:-1;;;6652:37:0;;7041:2:1;6652:37:0::1;::::0;::::1;7023:21:1::0;7080:1;7060:18;;;7053:29;-1:-1:-1;;;7098:18:1;;;7091:38;7146:18;;6652:37:0::1;6839:331:1::0;6652:37:0::1;6749:5;6739:7:::0;3179:13:::1;3124:2;3179;:13;:::i;:::-;3171:21;::::0;:5:::1;:21;:::i;:::-;6723:23;;;;:::i;:::-;:31;;;;:::i;:::-;6700:20;:54:::0;6770:36:::1;::::0;1803:25:1;;;6770:36:0::1;::::0;1791:2:1;1776:18;6770:36:0::1;;;;;;;;6528:286:::0;:::o;3135:57::-;3179:13;3124:2;3179;:13;:::i;:::-;3171:21;;:5;:21;:::i;:::-;3135:57;:::o;17912:382::-;18009:4;18026:36;18036:6;18044:9;18055:6;18026:9;:36::i;:::-;-1:-1:-1;;;;;18097:19:0;;18073:21;18097:19;;;:11;:19;;;;;;;;18117:10;18097:31;;;;;;;;18147:26;;;;18139:59;;;;-1:-1:-1;;;18139:59:0;;8760:2:1;18139:59:0;;;8742:21:1;8799:2;8779:18;;;8772:30;-1:-1:-1;;;8818:18:1;;;8811:50;8878:18;;18139:59:0;8558:344:1;18139:59:0;18209:55;18218:6;18226:10;18238:25;18257:6;18238:16;:25;:::i;:::-;18209:8;:55::i;:::-;-1:-1:-1;18282:4:0;;17912:382;-1:-1:-1;;;;17912:382:0:o;6244:278::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6346:2:::1;6335:7;:13;;6327:32;;;::::0;-1:-1:-1;;;6327:32:0;;9239:2:1;6327:32:0::1;::::0;::::1;9221:21:1::0;9278:1;9258:18;;;9251:29;-1:-1:-1;;;9296:18:1;;;9289:36;9342:18;;6327:32:0::1;9037:329:1::0;6327:32:0::1;6389:4;6378:7;:15;;6370:36;;;::::0;-1:-1:-1;;;6370:36:0;;7041:2:1;6370:36:0::1;::::0;::::1;7023:21:1::0;7080:1;7060:18;;;7053:29;-1:-1:-1;;;7098:18:1;;;7091:38;7146:18;;6370:36:0::1;6839:331:1::0;6370:36:0::1;6462:4;6452:7:::0;3179:13:::1;3124:2;3179;:13;:::i;:::-;3171:21;::::0;:5:::1;:21;:::i;:::-;6436:23;;;;:::i;:::-;:30;;;;:::i;:::-;6417:16;:49:::0;6482:32:::1;::::0;1803:25:1;;;6482:32:0::1;::::0;1791:2:1;1776:18;6482:32:0::1;1657:177:1::0;10816:590:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;10938:11:::1;10950:33;3717:2;3674:4;10950:33;:::i;:::-;10938:45;;11007:6;11002:3;:11;;:25;;;;;11021:6;11015:4;:12;;11002:25;:44;;;;;11040:6;11029:9;:17;;11002:44;10994:74;;;::::0;-1:-1:-1;;;10994:74:0;;9573:2:1;10994:74:0::1;::::0;::::1;9555:21:1::0;9612:2;9592:18;;;9585:30;-1:-1:-1;;;9631:18:1;;;9624:48;9689:18;;10994:74:0::1;9371:342:1::0;10994:74:0::1;3674:4;11100:9:::0;11087:12:::1;11092:7:::0;11087:4;:12:::1;:::i;:::-;:22;;;;:::i;:::-;:39;11079:84;;;::::0;-1:-1:-1;;;11079:84:0;;9920:2:1;11079:84:0::1;::::0;::::1;9902:21:1::0;9959:2;9939:18;;;9932:30;9998:34;9978:18;;;9971:62;-1:-1:-1;;;10049:18:1;;;10042:31;10090:19;;11079:84:0::1;9718:397:1::0;11079:84:0::1;11174:6;:10:::0;;;11195:7:::1;:12:::0;;;11218:11:::1;:21:::0;;;11250:10:::1;:18:::0;;;11279:12:::1;:22:::0;;;11312:7:::1;:12:::0;;;11340:58:::1;::::0;;10407:25:1;;;10463:2;10448:18;;10441:34;;;10491:18;;;10484:34;;;10549:2;10534:18;;10527:34;;;10592:3;10577:19;;10570:35;;;10636:3;10621:19;;10614:35;;;11340:58:0::1;::::0;10394:3:1;10379:19;11340:58:0::1;;;;;;;10927:479;10816:590:::0;;;;;;:::o;15377:198::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;15462:57:::1;15484:34;15503:15;15484:18:::0;:34:::1;:::i;:::-;15462:21;:57::i;:::-;15535:32;::::0;1803:25:1;;;15535:32:0::1;::::0;1791:2:1;1776:18;15535:32:0::1;1657:177:1::0;18300:202:0;18405:10;18379:4;18426:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18426:32:0;;;;;;;;;;18379:4;;18396:76;;18417:7;;18426:45;;18461:10;;18426:45;:::i;14210:125::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14266:24:::1;14285:4;14266:18;:24::i;:::-;14306:21;::::0;::::1;::::0;;;::::1;14210:125::o:0;11412:148::-;11459:4;11548;11528:19;;11509:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;11492:15;;-1:-1:-1;;;;;11492:15:0;11482:26;;;;:9;:26;;;;;;:70;;11412:148;-1:-1:-1;11412:148:0:o;13895:176::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;13974:15:::1;::::0;-1:-1:-1;;;;;13974:15:0;;::::1;13969:20:::0;;::::1;::::0;13961:48:::1;;;::::0;-1:-1:-1;;;13961:48:0;;10862:2:1;13961:48:0::1;::::0;::::1;10844:21:1::0;10901:2;10881:18;;;10874:30;-1:-1:-1;;;10920:18:1;;;10913:46;10976:18;;13961:48:0::1;10660:340:1::0;13961:48:0::1;-1:-1:-1::0;;;;;14020:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;;;;:14;;-1:-1:-1;;14020:14:0::1;::::0;::::1;;;::::0;;14050:13;;160:51:1;;;14050:13:0::1;::::0;133:18:1;14050:13:0::1;;;;;;;;13895:176:::0;;:::o;2221:140::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;2320:1:::1;2304:6:::0;;2283:40:::1;::::0;-1:-1:-1;;;;;2304:6:0;;::::1;::::0;2283:40:::1;::::0;2320:1;;2283:40:::1;2351:1;2334:19:::0;;-1:-1:-1;;;;;;2334:19:0::1;::::0;;2221:140::o;14923:299::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14988:15:::1;::::0;:18;14980:45:::1;;;::::0;-1:-1:-1;;;14980:45:0;;11207:2:1;14980:45:0::1;::::0;::::1;11189:21:1::0;11246:2;11226:18;;;11219:30;-1:-1:-1;;;11265:18:1;;;11258:45;11320:18;;14980:45:0::1;11005:339:1::0;14980:45:0::1;15052:15;15036;:31:::0;15117:4:::1;3179:13;3124:2;3179;:13;:::i;:::-;3171:21;::::0;:5:::1;:21;:::i;:::-;15097:17;::::0;15113:1:::1;15097:17;:::i;:::-;:24;;;;:::i;:::-;15078:16;:43:::0;15176:5:::1;3179:13;3124:2;3179;:13;:::i;:::-;3171:21;::::0;:5:::1;:21;:::i;:::-;15155:18;::::0;15171:2:::1;15155:18;:::i;:::-;:26;;;;:::i;:::-;15132:20;:49:::0;15197:17:::1;::::0;::::1;::::0;;;::::1;14923:299::o:0;6089:149::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6163:12:::1;:22:::0;;-1:-1:-1;;;;;;6163:22:0::1;-1:-1:-1::0;;;;;6163:22:0;::::1;::::0;;::::1;::::0;;;6201:29:::1;::::0;160:51:1;;;6201:29:0::1;::::0;148:2:1;133:18;6201:29:0::1;14:203:1::0;14077:127:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14143:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;14143:17:0;;::::1;;::::0;;14176:20:::1;::::0;::::1;::::0;::::1;::::0;14154:6;1630:14:1;1623:22;1605:41;;1593:2;1578:18;;1465:187;16672:7:0;16665:14;;16603:78;:::o;18508:334::-;18645:10;18592:4;18633:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18633:32:0;;;;;;;;;;18684:35;;;;18676:60;;;;-1:-1:-1;;;18676:60:0;;11551:2:1;18676:60:0;;;11533:21:1;11590:2;11570:18;;;11563:30;-1:-1:-1;;;11609:18:1;;;11602:42;11661:18;;18676:60:0;11349:336:1;18676:60:0;18747:65;18756:10;18768:7;18777:34;18796:15;18777:16;:34;:::i;18747:65::-;-1:-1:-1;18830:4:0;;18508:334;-1:-1:-1;;;18508:334:0:o;15228:143::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;15299:27:::1;:32:::0;;-1:-1:-1;;15299:32:0::1;::::0;::::1;::::0;;15347:16:::1;::::0;::::1;::::0;15299:32;;15347:16:::1;15228:143::o:0;17278:164::-;17355:4;17372:40;17382:10;17394:9;17405:6;17372:9;:40::i;10522:288::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;10660:4:::1;10628:30;:36;;10620:45;;;::::0;::::1;;10676:19;:50:::0;;;10742:60:::1;::::0;1803:25:1;;;10742:60:0::1;::::0;1791:2:1;1776:18;10742:60:0::1;1657:177:1::0;13539:205:0;13604:4;13639:20;;13623:15;:36;13620:97;;;13702:15;13681:20;;:36;;;;:::i;13620:97::-;-1:-1:-1;13735:1:0;;13539:205::o;13750:139::-;13873:6;13797:4;13855:26;;;:9;:26;;;;13835:18;;3179:13;3124:2;3179;:13;:::i;:::-;3171:21;;:5;:21;:::i;:::-;13821:32;;;;:::i;:::-;13820:61;;;;:::i;10266:250::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;10381:2:::1;10356:23;:27;;10348:36;;;::::0;::::1;;10412:12;:36:::0;;;10464:44:::1;::::0;1803:25:1;;;10464:44:0::1;::::0;1791:2:1;1776:18;10464:44:0::1;1657:177:1::0;14341:249:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14456:4:::1;-1:-1:-1::0;;;;;14439:22:0;::::1;::::0;14431:60:::1;;;::::0;-1:-1:-1;;;14431:60:0;;11892:2:1;14431:60:0::1;::::0;::::1;11874:21:1::0;11931:2;11911:18;;;11904:30;11970:28;11950:18;;;11943:56;12016:18;;14431:60:0::1;11690:350:1::0;14431:60:0::1;-1:-1:-1::0;;;;;14502:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;14502:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14551:31;;12213:51:1;;;12280:18;;;12273:50;14551:31:0::1;::::0;12186:18:1;14551:31:0::1;12045:284:1::0;2367:236:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2448:22:0;::::1;2440:73;;;::::0;-1:-1:-1;;;2440:73:0;;12536:2:1;2440:73:0::1;::::0;::::1;12518:21:1::0;12575:2;12555:18;;;12548:30;12614:34;12594:18;;;12587:62;-1:-1:-1;;;12665:18:1;;;12658:36;12711:19;;2440:73:0::1;12334:402:1::0;2440:73:0::1;2550:6;::::0;;2529:38:::1;::::0;-1:-1:-1;;;;;2529:38:0;;::::1;::::0;2550:6;::::1;::::0;2529:38:::1;::::0;::::1;2578:6;:17:::0;;-1:-1:-1;;;;;;2578:17:0::1;-1:-1:-1::0;;;;;2578:17:0;;;::::1;::::0;;;::::1;::::0;;2367:236::o;14596:189::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14692:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;14692:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14743:34;;12213:51:1;;;12280:18;;;12273:50;14743:34:0::1;::::0;12186:18:1;14743:34:0::1;12045:284:1::0;17612:294:0;-1:-1:-1;;;;;17702:19:0;;17694:49;;;;-1:-1:-1;;;17694:49:0;;12943:2:1;17694:49:0;;;12925:21:1;12982:2;12962:18;;;12955:30;-1:-1:-1;;;13001:18:1;;;12994:47;13058:18;;17694:49:0;12741:341:1;17694:49:0;-1:-1:-1;;;;;17762:21:0;;17754:49;;;;-1:-1:-1;;;17754:49:0;;13289:2:1;17754:49:0;;;13271:21:1;13328:2;13308:18;;;13301:30;-1:-1:-1;;;13347:18:1;;;13340:45;13402:18;;17754:49:0;13087:339:1;17754:49:0;-1:-1:-1;;;;;17814:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17866:32;;1803:25:1;;;17866:32:0;;1776:18:1;17866:32:0;;;;;;;17612:294;;;:::o;6820:501::-;-1:-1:-1;;;;;6913:20:0;;6905:51;;;;-1:-1:-1;;;6905:51:0;;13633:2:1;6905:51:0;;;13615:21:1;13672:2;13652:18;;;13645:30;-1:-1:-1;;;13691:18:1;;;13684:48;13749:18;;6905:51:0;13431:342:1;6905:51:0;-1:-1:-1;;;;;6975:23:0;;6967:52;;;;-1:-1:-1;;;6967:52:0;;13980:2:1;6967:52:0;;;13962:21:1;14019:2;13999:18;;;13992:30;-1:-1:-1;;;14038:18:1;;;14031:46;14094:18;;6967:52:0;13778:340:1;6967:52:0;-1:-1:-1;;;;;7033:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;7061:27:0;;;;;;:16;:27;;;;;;;;7033:55;7030:284;;;7103:43;7120:6;7128:9;7139:6;7103:16;:43::i;:::-;6820:501;;;:::o;7030:284::-;7202:1;7186:15;;:17;7178:52;;;;-1:-1:-1;;;7178:52:0;;14325:2:1;7178:52:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:25;14383:18;;;14376:53;14446:18;;7178:52:0;14123:347:1;7178:52:0;7245:39;7260:6;7267:9;7277:6;7245:14;:39::i;15581:218::-;15672:20;;15658:13;:34;15650:43;;;;;;15704:20;:34;;;15754:37;;1803:25:1;;;15754:37:0;;1791:2:1;1776:18;15754:37:0;1657:177:1;11566:1142:0;5088:27;:34;;-1:-1:-1;;5088:34:0;5118:4;5088:34;;;;;;11682:4:::1;5088:27:::0;11664:24;;;::::1;::::0;;;;;;;;11726:10:::1;::::0;11713:12:::1;::::0;11664:24;;5088:27;11713:23:::1;::::0;11726:10;11713:23:::1;:::i;:::-;11791:12;::::0;11774:15:::1;::::0;-1:-1:-1;;;;;11774:15:0::1;11747:16;11764:26:::0;;;:9:::1;:26;::::0;;;;;11699:37;;-1:-1:-1;11747:16:0;11804:4:::1;::::0;11764:39:::1;::::0;::::1;:::i;:::-;:44;;;;:::i;:::-;11747:61;;11822:8;11832:1;11822:11:::0;11819:22:::1;;11834:7;;;;;11819:22;11854:12;11851:134;;;-1:-1:-1::0;11911:4:0::1;11893:24;::::0;;;:9:::1;:24;::::0;;;;;11851:134:::1;;;11952:11;11936:15;:27;11933:52;;;11978:7;;;;;11933:52;11997:22;12030:17;:15;:17::i;:::-;:65;;12087:8;12073:12;;12061:11;:24;;;;:::i;:::-;12060:35;;;;:::i;:::-;12030:65;;;12048:1;12030:65;11997:98:::0;-1:-1:-1;12108:20:0::1;12130:29;11997:98:::0;12130:11;:29:::1;:::i;:::-;12108:51:::0;-1:-1:-1;12172:12:0::1;12185:19;12203:1;12185:17:::0;:19:::1;:::i;:::-;12172:32:::0;-1:-1:-1;12215:14:0::1;12230:23;12238:15:::0;12172:32;12230:23:::1;:::i;:::-;12215:38:::0;-1:-1:-1;12287:21:0::1;12319:27;12215:38:::0;12319:16:::1;:27::i;:::-;12357:11;12370:41;12394:17:::0;12370:21:::1;:41;:::i;:::-;12357:55:::0;-1:-1:-1;12428:19:0;;12425:135:::1;;12463:11;12494:9:::0;12478:14:::1;12485:7:::0;12478:6;:14:::1;:::i;:::-;12477:26;;;;:::i;:::-;12463:40;;12518:30;12532:7;12541:6;12518:13;:30::i;:::-;12448:112;12425:135;12636:12;::::0;:42:::1;::::0;12589:21:::1;::::0;12570:18:::1;::::0;-1:-1:-1;;;;;12636:12:0;;::::1;::::0;12589:21;;12570:18;12636:42;12570:18;12636:42;12589:21;12636:12;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;5133:1:0::1;-1:-1:-1::0;5145:27:0;:35;;-1:-1:-1;;5145:35:0;;;11566:1142::o;9921:339::-;-1:-1:-1;;;;;10034:17:0;;10013:18;10034:17;;;:9;:17;;;;;;10070:23;;;;10062:60;;;;-1:-1:-1;;;10062:60:0;;14887:2:1;10062:60:0;;;14869:21:1;14926:2;14906:18;;;14899:30;-1:-1:-1;;;14945:18:1;;;14938:54;15009:18;;10062:60:0;14685:348:1;10062:60:0;-1:-1:-1;;;;;10133:17:0;;;;;;:9;:17;;;;;:25;;10152:6;;10133:17;:25;;10152:6;;10133:25;:::i;:::-;;;;-1:-1:-1;;;;;;;10169:20:0;;;;;;:9;:20;;;;;:28;;10191:6;;10169:20;:28;;10191:6;;10169:28;:::i;:::-;;;;;;;;10235:9;-1:-1:-1;;;;;10219:33:0;10228:6;-1:-1:-1;;;;;10219:33:0;;10245:6;10219:33;;;;1803:25:1;;1791:2;1776:18;;1657:177;10219:33:0;;;;;;;;10002:258;9921:339;;;:::o;7327:2189::-;-1:-1:-1;;;;;7438:17:0;;7417:18;7438:17;;;:9;:17;;;;;;7474:23;;;;7466:60;;;;-1:-1:-1;;;7466:60:0;;14887:2:1;7466:60:0;;;14869:21:1;14926:2;14906:18;;;14899:30;-1:-1:-1;;;14945:18:1;;;14938:54;15009:18;;7466:60:0;14685:348:1;7466:60:0;-1:-1:-1;;;;;7560:26:0;;7537:20;7560:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;7590:29:0;;;;;;:18;:29;;;;;;;;7560:59;-1:-1:-1;;;;;7648:13:0;;;;;;:5;:13;;;;;;7537:82;;-1:-1:-1;7648:13:0;;:46;;;;;7679:15;7678:16;7648:46;7630:684;;;7757:20;;7747:6;:30;;7721:132;;;;-1:-1:-1;;;7721:132:0;;15240:2:1;7721:132:0;;;15222:21:1;15279:2;15259:18;;;15252:30;15318:34;15298:18;;;15291:62;-1:-1:-1;;;15369:18:1;;;15362:38;15417:19;;7721:132:0;15038:404:1;7721:132:0;-1:-1:-1;;;;;17118:18:0;;7868:32;17118:18;;;:9;:18;;;;;;8001:16;;7964:33;7991:6;17118:18;7964:33;:::i;:::-;:53;;7938:151;;;;-1:-1:-1;;;7938:151:0;;15649:2:1;7938:151:0;;;15631:21:1;15688:2;15668:18;;;15661:30;15727:34;15707:18;;;15700:62;-1:-1:-1;;;15778:18:1;;;15771:34;15822:19;;7938:151:0;15447:400:1;7938:151:0;7706:395;7630:684;;;-1:-1:-1;;;;;8125:16:0;;;;;;:5;:16;;;;;;;;:49;;;;;8159:15;8158:16;8125:49;8107:207;;;8219:20;;8209:6;:30;;8201:101;;;;-1:-1:-1;;;8201:101:0;;16054:2:1;8201:101:0;;;16036:21:1;16093:2;16073:18;;;16066:30;16132:34;16112:18;;;16105:62;16203:28;16183:18;;;16176:56;16249:19;;8201:101:0;15852:422:1;8201:101:0;-1:-1:-1;;;;;8337:13:0;;;8326:10;8337:13;;;:5;:13;;;;;;;8373:16;;;;;;;;8337:13;;;;;8373:16;;8419:491;;;;8517:15;;8467:10;;8517:31;;8467:10;;8517:31;:::i;:::-;8501:15;:47;8498:143;;;8572:33;8585:15;8601:3;8572:12;:33::i;:::-;8568:37;;8498:143;;;8634:7;;8630:11;;8498:143;8429:228;8419:491;;;8675:5;8672:238;;;8760:15;;8716:10;;8760:30;;8716:10;;8760:30;:::i;:::-;8744:15;:46;8741:136;;;8814:32;8827:14;8842:3;8814:12;:32::i;8741:136::-;-1:-1:-1;;8871:6:0;;8672:238;;;-1:-1:-1;8899:11:0;;8672:238;8935:15;;-1:-1:-1;;;;;8927:23:0;;;8935:15;;8927:23;;;;8926:40;;-1:-1:-1;8955:10:0;;;;;;;8954:11;8926:40;:72;;;;-1:-1:-1;8970:27:0;;;;8969:28;8926:72;8923:115;;;9013:25;9032:5;9013:18;:25::i;:::-;9051;9077:35;9091:6;9099:3;9104:7;;9077:13;:35::i;:::-;9051:61;;9123:18;9142:51;9156:6;9164:3;9180:12;;9169:10;;:23;;;;:::i;:::-;9142:13;:51::i;:::-;9123:70;-1:-1:-1;9204:16:0;9229:36;9123:70;9229:20;:36;:::i;:::-;9221:45;;:6;:45;:::i;:::-;-1:-1:-1;;;;;9279:17:0;;;;;;:9;:17;;;;;:25;;9204:62;;-1:-1:-1;9298:6:0;;9279:17;;;:25;;9298:6;;9279:25;:::i;:::-;;;;-1:-1:-1;;9333:4:0;9315:24;;;;:9;:24;;;;;:41;;9343:13;;9315:24;:41;;9343:13;;9315:41;:::i;:::-;;;;-1:-1:-1;;4082:42:0;9367:21;;;;:9;:21;;;:43;;9390:20;;9367:21;:43;;9390:20;;9367:43;:::i;:::-;;;;-1:-1:-1;;;;;;;9421:20:0;;;;;;:9;:20;;;;;:33;;9443:11;;9421:20;:33;;9443:11;;9421:33;:::i;:::-;;;;;;;;9486:9;-1:-1:-1;;;;;9470:38:0;9479:6;-1:-1:-1;;;;;9470:38:0;;9496:11;9470:38;;;;1803:25:1;;1791:2;1776:18;;1657:177;9470:38:0;;;;;;;;7406:2110;;;;;;;;7327:2189;;;:::o;12714:462::-;12804:10;;12772:52;;12789:4;;12804:10;;;-1:-1:-1;;;;;12804:10:0;12817:6;12772:8;:52::i;:::-;12859:16;;;12873:1;12859:16;;;;;;;;12835:21;;12859:16;;;;;;;;;;-1:-1:-1;12859:16:0;12835:40;;12904:4;12886;12891:1;12886:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12886:23:0;;;-1:-1:-1;;;;;12886:23:0;;;;;12930:10;;;;;;;;;-1:-1:-1;;;;;12930:10:0;-1:-1:-1;;;;;12930:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12920:4;12925:1;12920:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12920:27:0;;;:7;;;;;;;;;:27;12964:10;;:186;;-1:-1:-1;;;12964:186:0;;:10;;;;;;;;:61;;:186;;13040:6;;13061:1;;13077:4;;13104;;13124:15;;12964:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12761:415;12714:462;:::o;13182:351::-;13290:10;;13258:57;;13275:4;;13290:10;;;-1:-1:-1;;;;;13290:10:0;13303:11;13258:8;:57::i;:::-;13326:10;;:199;;-1:-1:-1;;;13326:199:0;;13393:4;13326:199;;;18125:34:1;;;18175:18;;;18168:34;;;13439:1:0;18218:18:1;;;18211:34;;;18261:18;;;18254:34;18304:19;;;18297:44;13499:15:0;18357:19:1;;;18350:35;13326:10:0;;;;-1:-1:-1;;;;;13326:10:0;;:26;;13360:9;;18059:19:1;;13326:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13182:351;;:::o;9522:211::-;9594:4;9610:20;9647:15;;9631;:31;;;;:::i;:::-;9610:52;-1:-1:-1;9716:8:0;9610:52;9689:9;9696:2;9689:6;:9;:::i;:::-;9688:27;;;;:::i;:::-;:36;;;;:::i;:::-;9680:45;;:6;:45;:::i;:::-;9673:52;9522:211;-1:-1:-1;;;;9522:211:0:o;9739:176::-;9824:4;9875:31;3674:4;;9875:31;:::i;:::-;9860:10;9849;9856:3;9849:6;:10;:::i;:::-;:21;;;;:::i;:::-;9848:59;;;;:::i;222:180:1:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;373:23:1;;222:180;-1:-1:-1;222:180:1:o;407:597::-;519:4;548:2;577;566:9;559:21;609:6;603:13;652:6;647:2;636:9;632:18;625:34;677:1;687:140;701:6;698:1;695:13;687:140;;;796:14;;;792:23;;786:30;762:17;;;781:2;758:26;751:66;716:10;;687:140;;;845:6;842:1;839:13;836:91;;;915:1;910:2;901:6;890:9;886:22;882:31;875:42;836:91;-1:-1:-1;988:2:1;967:15;-1:-1:-1;;963:29:1;948:45;;;;995:2;944:54;;407:597;-1:-1:-1;;;407:597:1:o;1009:131::-;-1:-1:-1;;;;;1084:31:1;;1074:42;;1064:70;;1130:1;1127;1120:12;1064:70;1009:131;:::o;1145:315::-;1213:6;1221;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;:::-;1398:5;1450:2;1435:18;;;;1422:32;;-1:-1:-1;;;1145:315:1:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:1;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:1;2270:18;;;;2257:32;;1839:456::o;2300:523::-;2404:6;2412;2420;2428;2436;2444;2497:3;2485:9;2476:7;2472:23;2468:33;2465:53;;;2514:1;2511;2504:12;2465:53;-1:-1:-1;;2537:23:1;;;2607:2;2592:18;;2579:32;;-1:-1:-1;2658:2:1;2643:18;;2630:32;;2709:2;2694:18;;2681:32;;-1:-1:-1;2760:3:1;2745:19;;2732:33;;-1:-1:-1;2812:3:1;2797:19;2784:33;;-1:-1:-1;2300:523:1;-1:-1:-1;2300:523:1:o;3017:118::-;3103:5;3096:13;3089:21;3082:5;3079:32;3069:60;;3125:1;3122;3115:12;3140:382;3205:6;3213;3266:2;3254:9;3245:7;3241:23;3237:32;3234:52;;;3282:1;3279;3272:12;3234:52;3321:9;3308:23;3340:31;3365:5;3340:31;:::i;:::-;3390:5;-1:-1:-1;3447:2:1;3432:18;;3419:32;3460:30;3419:32;3460:30;:::i;:::-;3509:7;3499:17;;;3140:382;;;;;:::o;3527:247::-;3586:6;3639:2;3627:9;3618:7;3614:23;3610:32;3607:52;;;3655:1;3652;3645:12;3607:52;3694:9;3681:23;3713:31;3738:5;3713:31;:::i;:::-;3763:5;3527:247;-1:-1:-1;;;3527:247:1:o;3779:241::-;3835:6;3888:2;3876:9;3867:7;3863:23;3859:32;3856:52;;;3904:1;3901;3894:12;3856:52;3943:9;3930:23;3962:28;3984:5;3962:28;:::i;4025:388::-;4093:6;4101;4154:2;4142:9;4133:7;4129:23;4125:32;4122:52;;;4170:1;4167;4160:12;4122:52;4209:9;4196:23;4228:31;4253:5;4228:31;:::i;:::-;4278:5;-1:-1:-1;4335:2:1;4320:18;;4307:32;4348:33;4307:32;4348:33;:::i;4418:356::-;4620:2;4602:21;;;4639:18;;;4632:30;4698:34;4693:2;4678:18;;4671:62;4765:2;4750:18;;4418:356::o;5124:184::-;5194:6;5247:2;5235:9;5226:7;5222:23;5218:32;5215:52;;;5263:1;5260;5253:12;5215:52;-1:-1:-1;5286:16:1;;5124:184;-1:-1:-1;5124:184:1:o;5313:127::-;5374:10;5369:3;5365:20;5362:1;5355:31;5405:4;5402:1;5395:15;5429:4;5426:1;5419:15;5445:128;5485:3;5516:1;5512:6;5509:1;5506:13;5503:39;;;5522:18;;:::i;:::-;-1:-1:-1;5558:9:1;;5445:128::o;5578:168::-;5618:7;5684:1;5680;5676:6;5672:14;5669:1;5666:21;5661:1;5654:9;5647:17;5643:45;5640:71;;;5691:18;;:::i;:::-;-1:-1:-1;5731:9:1;;5578:168::o;5751:217::-;5791:1;5817;5807:132;;5861:10;5856:3;5852:20;5849:1;5842:31;5896:4;5893:1;5886:15;5924:4;5921:1;5914:15;5807:132;-1:-1:-1;5953:9:1;;5751:217::o;6252:245::-;6319:6;6372:2;6360:9;6351:7;6347:23;6343:32;6340:52;;;6388:1;6385;6378:12;6340:52;6420:9;6414:16;6439:28;6461:5;6439:28;:::i;7175:422::-;7264:1;7307:5;7264:1;7321:270;7342:7;7332:8;7329:21;7321:270;;;7401:4;7397:1;7393:6;7389:17;7383:4;7380:27;7377:53;;;7410:18;;:::i;:::-;7460:7;7450:8;7446:22;7443:55;;;7480:16;;;;7443:55;7559:22;;;;7519:15;;;;7321:270;;;7325:3;7175:422;;;;;:::o;7602:806::-;7651:5;7681:8;7671:80;;-1:-1:-1;7722:1:1;7736:5;;7671:80;7770:4;7760:76;;-1:-1:-1;7807:1:1;7821:5;;7760:76;7852:4;7870:1;7865:59;;;;7938:1;7933:130;;;;7845:218;;7865:59;7895:1;7886:10;;7909:5;;;7933:130;7970:3;7960:8;7957:17;7954:43;;;7977:18;;:::i;:::-;-1:-1:-1;;8033:1:1;8019:16;;8048:5;;7845:218;;8147:2;8137:8;8134:16;8128:3;8122:4;8119:13;8115:36;8109:2;8099:8;8096:16;8091:2;8085:4;8082:12;8078:35;8075:77;8072:159;;;-1:-1:-1;8184:19:1;;;8216:5;;8072:159;8263:34;8288:8;8282:4;8263:34;:::i;:::-;8333:6;8329:1;8325:6;8321:19;8312:7;8309:32;8306:58;;;8344:18;;:::i;:::-;8382:20;;7602:806;-1:-1:-1;;;7602:806:1:o;8413:140::-;8471:5;8500:47;8541:4;8531:8;8527:19;8521:4;8500:47;:::i;8907:125::-;8947:4;8975:1;8972;8969:8;8966:34;;;8980:18;;:::i;:::-;-1:-1:-1;9017:9:1;;8907:125::o;16411:127::-;16472:10;16467:3;16463:20;16460:1;16453:31;16503:4;16500:1;16493:15;16527:4;16524:1;16517:15;16543:251;16613:6;16666:2;16654:9;16645:7;16641:23;16637:32;16634:52;;;16682:1;16679;16672:12;16634:52;16714:9;16708:16;16733:31;16758:5;16733:31;:::i;16799:980::-;17061:4;17109:3;17098:9;17094:19;17140:6;17129:9;17122:25;17166:2;17204:6;17199:2;17188:9;17184:18;17177:34;17247:3;17242:2;17231:9;17227:18;17220:31;17271:6;17306;17300:13;17337:6;17329;17322:22;17375:3;17364:9;17360:19;17353:26;;17414:2;17406:6;17402:15;17388:29;;17435:1;17445:195;17459:6;17456:1;17453:13;17445:195;;;17524:13;;-1:-1:-1;;;;;17520:39:1;17508:52;;17615:15;;;;17580:12;;;;17556:1;17474:9;17445:195;;;-1:-1:-1;;;;;;;17696:32:1;;;;17691:2;17676:18;;17669:60;-1:-1:-1;;;17760:3:1;17745:19;17738:35;17657:3;16799:980;-1:-1:-1;;;16799:980:1:o;18396:306::-;18484:6;18492;18500;18553:2;18541:9;18532:7;18528:23;18524:32;18521:52;;;18569:1;18566;18559:12;18521:52;18598:9;18592:16;18582:26;;18648:2;18637:9;18633:18;18627:25;18617:35;;18692:2;18681:9;18677:18;18671:25;18661:35;;18396:306;;;;;:::o

Swarm Source

ipfs://b28788a4725fc7a4befde4a872a7eb7ffa6946498aae4fa282df3f1ca13a04a1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.