ETH Price: $2,297.87 (-0.89%)
Gas: 5.89 Gwei

Token

Artificial Inu (AI)
 

Overview

Max Total Supply

420,690,888 AI

Holders

79

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.99519957 AI

Value
$0.00
0xC694Da6e99A7E68dd215A308DF72eDAA6f8C8736
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ArtificialInu

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

/**

Artificial Inu (AI)
Website: https://artificialinu-erc.com/
TG: https://t.me/artificialinuportal
X: https://twitter.com/Artificial_Inu7

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    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 totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address public owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function renounceOwnership() public onlyOwner { emit OwnershipTransferred(address(0)); owner = address(0);}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        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;
}

contract ArtificialInu is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string private constant _name = "Artificial Inu";
    string private constant _symbol = "AI";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 420_690_888 * (10 ** _decimals);

    mapping (address => uint256) _balances;
    
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;

    IRouter public router;
    address public pair;

    bool private swapEnabled = true;
    bool private swapping;
    uint256 private swapThreshold = ( _totalSupply * 100 ) / 10000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 20;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 20;
    uint256 private buyFee = 20;
    uint256 private sellFee = 30;
    uint256 private transferFee = 50;
    uint256 private denominator = 100;
    
    address internal development_receiver; 
    address internal marketing_receiver;
    address internal liquidity_receiver;
    uint256 public _maxWalletToken = ( _totalSupply * 140 ) / 10000;


    constructor() Ownable(msg.sender) {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        pair = IFactory(router.factory()).createPair(address(this), router.WETH()); 
        _allowances[address(this)][address(router)] = type(uint256).max; 

        development_receiver = msg.sender;
        marketing_receiver = msg.sender;
        liquidity_receiver = msg.sender;
        isFeeExempt[msg.sender] = true;

        isFeeExempt[address(this)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setFeeExempt(address _address, bool _enabled) external {require(isFeeExempt[msg.sender]); isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap() public view returns (bool) {

        return msg.sender != pair 
        && !swapping
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    } 

    function setSwapSettings(bool _enabled, uint256 _amount) external {
        require(isFeeExempt[msg.sender]);
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; buyFee = _buy; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 20%");
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }


    function removeLimits() public onlyOwner {
        _maxWalletToken = _totalSupply;
    }

    function renounce() external onlyOwner {
        removeLimits();
        renounceOwnership();
    }

    function manualSell(address sender, uint256 amount) public lockTheSwap {
        require(isFeeExempt[msg.sender]);
        _transfer(sender, address(this), amount);
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(msg.sender == development_receiver, "you are not authorized to rescue tokens");
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) internal lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokens,
            0,
            path,
            address(this),
            block.timestamp
        );

        (bool success,) = payable(marketing_receiver).call{value: address(this).balance, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    
    }

    function manualSwap() external {
        require(isFeeExempt[msg.sender]);
        uint256 amount = balanceOf(address(this));
        if(amount > swapThreshold){amount = swapThreshold;}
        swapAndLiquify(amount);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return buyFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feePercent = getTotalFee(sender, recipient);
        if(feePercent > 0){
            uint256 feeAmount = amount.mul(feePercent).div(denominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            return amount.sub(feeAmount);
        } 
        return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= _balances[sender],"You are trying to transfer more than your balance");
        
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");
        }

        if(shouldContractSwap()) {
            swapAndLiquify(swapThreshold);
        }

        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(spender != address(0), "ERC20: approve to the zero address");
        require(owner != address(0), "ERC20: approve from the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldContractSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee9190620008a4565b6319133bc8620000ff9190620008f5565b6004556001600960146101000a81548160ff0219169083151502179055506127106064600454620001319190620008f5565b6200013d91906200096f565b600a556000600b556014600c556000600d556000600e556014600f556014601055601e60115560326012556064601355612710608c600454620001819190620008f5565b6200018d91906200096f565b6017553480156200019d57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c9919062000a11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000353573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000379919062000a11565b6040518363ffffffff1660e01b81526004016200039892919062000a54565b6020604051808303816000875af1158015620003b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003de919062000a11565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620006fc919062000a92565b60405180910390a362000aaf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007985780860481111562000770576200076f6200070a565b5b6001851615620007805780820291505b8081029050620007908562000739565b945062000750565b94509492505050565b600082620007b3576001905062000886565b81620007c3576000905062000886565b8160018114620007dc5760028114620007e7576200081d565b600191505062000886565b60ff841115620007fc57620007fb6200070a565b5b8360020a9150848211156200081657620008156200070a565b5b5062000886565b5060208310610133831016604e8410600b8410161715620008575782820a9050838111156200085157620008506200070a565b5b62000886565b62000866848484600162000746565b9250905081840481111562000880576200087f6200070a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008b1826200088d565b9150620008be8362000897565b9250620008ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007a1565b905092915050565b600062000902826200088d565b91506200090f836200088d565b92508282026200091f816200088d565b915082820484148315176200093957620009386200070a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200097c826200088d565b915062000989836200088d565b9250826200099c576200099b62000940565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009d982620009ac565b9050919050565b620009eb81620009cc565b8114620009f757600080fd5b50565b60008151905062000a0b81620009e0565b92915050565b60006020828403121562000a2a5762000a29620009a7565b5b600062000a3a84828501620009fa565b91505092915050565b62000a4e81620009cc565b82525050565b600060408201905062000a6b600083018562000a43565b62000a7a602083018462000a43565b9392505050565b62000a8c816200088d565b82525050565b600060208201905062000aa9600083018462000a81565b92915050565b6131cd8062000abf6000396000f3fe6080604052600436106101bb5760003560e01c80638cd4426d116100ec578063a8aa1b311161008a578063d0e1032611610064578063d0e10326146105e1578063dd62ed3e1461060a578063f2fde38b14610647578063f887ea4014610670576101c2565b8063a8aa1b3114610562578063a9059cbb1461058d578063b15be2f5146105ca576101c2565b80639213c358116100c65780639213c358146104bc57806395d89b41146104e55780639d7f155114610510578063a85ffe4f14610539576101c2565b80638cd4426d1461043f5780638da5cb5b146104685780638ebfc79614610493576101c2565b80634eed4fa111610159578063715018a611610133578063715018a6146103bb578063751039fc146103d257806378109e54146103e9578063893d20e814610414576101c2565b80634eed4fa11461033c57806351bc3c851461036757806370a082311461037e576101c2565b806323b872dd1161019557806323b872dd1461025a5780632f54bf6e14610297578063313ce567146102d45780633f4218e0146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e991906122bc565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612377565b6106d8565b60405161022691906123d2565b60405180910390f35b34801561023b57600080fd5b506102446106ef565b60405161025191906123fc565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190612417565b610750565b60405161028e91906123d2565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b9919061246a565b61081b565b6040516102cb91906123d2565b60405180910390f35b3480156102e057600080fd5b506102e9610874565b6040516102f691906124b3565b60405180910390f35b34801561030b57600080fd5b506103266004803603810190610321919061246a565b61087d565b60405161033391906123d2565b60405180910390f35b34801561034857600080fd5b5061035161089d565b60405161035e91906123d2565b60405180910390f35b34801561037357600080fd5b5061037c610974565b005b34801561038a57600080fd5b506103a560048036038101906103a0919061246a565b6109f3565b6040516103b291906123fc565b60405180910390f35b3480156103c757600080fd5b506103d0610a3c565b005b3480156103de57600080fd5b506103e7610aff565b005b3480156103f557600080fd5b506103fe610b52565b60405161040b91906123fc565b60405180910390f35b34801561042057600080fd5b50610429610b58565b60405161043691906124dd565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190612377565b610b81565b005b34801561047457600080fd5b5061047d610d5a565b60405161048a91906124dd565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612524565b610d7e565b005b3480156104c857600080fd5b506104e360048036038101906104de9190612564565b610e2f565b005b3480156104f157600080fd5b506104fa611047565b60405161050791906122bc565b60405180910390f35b34801561051c57600080fd5b50610537600480360381019061053291906125b7565b611084565b005b34801561054557600080fd5b50610560600480360381019061055b9190612377565b611175565b005b34801561056e57600080fd5b50610577611210565b60405161058491906124dd565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af9190612377565b611236565b6040516105c191906123d2565b60405180910390f35b3480156105d657600080fd5b506105df61124d565b005b3480156105ed57600080fd5b506106086004803603810190610603919061266d565b6112a7565b005b34801561061657600080fd5b50610631600480360381019061062c91906126ad565b611322565b60405161063e91906123fc565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061272b565b6113a9565b005b34801561067c57600080fd5b5061068561146b565b60405161069291906127b7565b60405180910390f35b60606040518060400160405280600e81526020017f4172746966696369616c20496e75000000000000000000000000000000000000815250905090565b60006106e5338484611491565b6001905092915050565b600061074b6106fe60006109f3565b61073d61072c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166109f3565b60045461165a90919063ffffffff16565b61165a90919063ffffffff16565b905090565b600061075d848484611670565b610810843361080b8560405180606001604052806028815260200161317060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b969092919063ffffffff16565b611491565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561090a5750600960159054906101000a900460ff16155b80156109225750600960149054906101000a900460ff165b801561096f5750600a54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ca57600080fd5b60006109d5306109f3565b9050600a548111156109e757600a5490505b6109f081611beb565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a453361081b565b610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b9061281e565b60405180910390fd5b7f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ab491906124dd565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b083361081b565b610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e9061281e565b60405180910390fd5b600454601781905550565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c08906128b0565b60405180910390fd5b6000610cb26064610ca4848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5591906124dd565b602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906128e5565b611f0b90919063ffffffff16565b611f2190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d11929190612912565b6020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612950565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd457600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e383361081b565b610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e9061281e565b60405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600281526020017f4149000000000000000000000000000000000000000000000000000000000000815250905090565b61108d3361081b565b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c39061281e565b60405180910390fd5b87600b8190555086600c8190555085600e8190555084600d8190555083600f81905550826010819055508160118190555080601281905550601354600f541115801561111c575060135460115411155b801561112c575060135460125411155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906129ef565b60405180910390fd5b5050505050505050565b6001600960156101000a81548160ff021916908315150217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111e657600080fd5b6111f1823083611670565b6000600960156101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611243338484611670565b6001905092915050565b6112563361081b565b611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c9061281e565b60405180910390fd5b61129d610aff565b6112a5610a3c565b565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112fd57600080fd5b81600960146101000a81548160ff02191690831515021790555080600a819055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113b23361081b565b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e89061281e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516114609190612a30565b60405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790612abd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690612b4f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164d91906123fc565b60405180910390a3505050565b600081836116689190612b9e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612c44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590612cd6565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790612d68565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118745750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ce5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119285750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119c45760175461198282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b11156119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba90612dd4565b60405180910390fd5b5b6119cc61089d565b156119dd576119dc600a54611beb565b5b611a2f81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a7e8484611f4d565b611a885781611a94565b611a93848484611ffb565b5b9050611ae881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8891906123fc565b60405180910390a350505050565b6000838311158290611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd591906122bc565b60405180910390fd5b5082840390509392505050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c2357611c22612df4565b5b604051908082528060200260200182016040528015611c515781602001602082028036833780820191505090505b5090503081600081518110611c6957611c68612e23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d349190612e67565b81600181518110611d4857611d47612e23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611de6959493929190612f8d565b600060405180830381600087803b158015611e0057600080fd5b505af1158015611e14573d6000803e3d6000fd5b505050506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164761753090604051611e6490613018565b600060405180830381858888f193505050503d8060008114611ea2576040519150601f19603f3d011682016040523d82523d6000602084013e611ea7565b606091505b5050905080611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613079565b60405180910390fd5b50506000600960156101000a81548160ff02191690831515021790555050565b60008183611f199190613099565b905092915050565b60008183611f2f919061310a565b905092915050565b60008183611f45919061313b565b905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ff35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806120088585612160565b9050600081111561215457600061203c60135461202e8487611f0b90919063ffffffff16565b611f2190919063ffffffff16565b905061209081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213091906123fc565b60405180910390a361214b818561165a90919063ffffffff16565b92505050612159565b829150505b9392505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c1576011549050612226565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576010549050612226565b60125490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561226657808201518184015260208101905061224b565b60008484015250505050565b6000601f19601f8301169050919050565b600061228e8261222c565b6122988185612237565b93506122a8818560208601612248565b6122b181612272565b840191505092915050565b600060208201905081810360008301526122d68184612283565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061230e826122e3565b9050919050565b61231e81612303565b811461232957600080fd5b50565b60008135905061233b81612315565b92915050565b6000819050919050565b61235481612341565b811461235f57600080fd5b50565b6000813590506123718161234b565b92915050565b6000806040838503121561238e5761238d6122de565b5b600061239c8582860161232c565b92505060206123ad85828601612362565b9150509250929050565b60008115159050919050565b6123cc816123b7565b82525050565b60006020820190506123e760008301846123c3565b92915050565b6123f681612341565b82525050565b600060208201905061241160008301846123ed565b92915050565b6000806000606084860312156124305761242f6122de565b5b600061243e8682870161232c565b935050602061244f8682870161232c565b925050604061246086828701612362565b9150509250925092565b6000602082840312156124805761247f6122de565b5b600061248e8482850161232c565b91505092915050565b600060ff82169050919050565b6124ad81612497565b82525050565b60006020820190506124c860008301846124a4565b92915050565b6124d781612303565b82525050565b60006020820190506124f260008301846124ce565b92915050565b612501816123b7565b811461250c57600080fd5b50565b60008135905061251e816124f8565b92915050565b6000806040838503121561253b5761253a6122de565b5b60006125498582860161232c565b925050602061255a8582860161250f565b9150509250929050565b60008060006060848603121561257d5761257c6122de565b5b600061258b8682870161232c565b935050602061259c8682870161232c565b92505060406125ad8682870161232c565b9150509250925092565b600080600080600080600080610100898b0312156125d8576125d76122de565b5b60006125e68b828c01612362565b98505060206125f78b828c01612362565b97505060406126088b828c01612362565b96505060606126198b828c01612362565b955050608061262a8b828c01612362565b94505060a061263b8b828c01612362565b93505060c061264c8b828c01612362565b92505060e061265d8b828c01612362565b9150509295985092959890939650565b60008060408385031215612684576126836122de565b5b60006126928582860161250f565b92505060206126a385828601612362565b9150509250929050565b600080604083850312156126c4576126c36122de565b5b60006126d28582860161232c565b92505060206126e38582860161232c565b9150509250929050565b60006126f8826122e3565b9050919050565b612708816126ed565b811461271357600080fd5b50565b600081359050612725816126ff565b92915050565b600060208284031215612741576127406122de565b5b600061274f84828501612716565b91505092915050565b6000819050919050565b600061277d612778612773846122e3565b612758565b6122e3565b9050919050565b600061278f82612762565b9050919050565b60006127a182612784565b9050919050565b6127b181612796565b82525050565b60006020820190506127cc60008301846127a8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612808600683612237565b9150612813826127d2565b602082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f796f7520617265206e6f7420617574686f72697a656420746f2072657363756560008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061289a602783612237565b91506128a58261283e565b604082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b6000815190506128df8161234b565b92915050565b6000602082840312156128fb576128fa6122de565b5b6000612909848285016128d0565b91505092915050565b600060408201905061292760008301856124ce565b61293460208301846123ed565b9392505050565b60008151905061294a816124f8565b92915050565b600060208284031215612966576129656122de565b5b60006129748482850161293b565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006129d9602c83612237565b91506129e48261297d565b604082019050919050565b60006020820190508181036000830152612a08816129cc565b9050919050565b6000612a1a82612784565b9050919050565b612a2a81612a0f565b82525050565b6000602082019050612a456000830184612a21565b92915050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa7602283612237565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b39602483612237565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ba982612341565b9150612bb483612341565b9250828203905081811115612bcc57612bcb612b6f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c2e602583612237565b9150612c3982612bd2565b604082019050919050565b60006020820190508181036000830152612c5d81612c21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc0602383612237565b9150612ccb82612c64565b604082019050919050565b60006020820190508181036000830152612cef81612cb3565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612d52603183612237565b9150612d5d82612cf6565b604082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612dbe601e83612237565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e6181612315565b92915050565b600060208284031215612e7d57612e7c6122de565b5b6000612e8b84828501612e52565b91505092915050565b6000819050919050565b6000612eb9612eb4612eaf84612e94565b612758565b612341565b9050919050565b612ec981612e9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f0481612303565b82525050565b6000612f168383612efb565b60208301905092915050565b6000602082019050919050565b6000612f3a82612ecf565b612f448185612eda565b9350612f4f83612eeb565b8060005b83811015612f80578151612f678882612f0a565b9750612f7283612f22565b925050600181019050612f53565b5085935050505092915050565b600060a082019050612fa260008301886123ed565b612faf6020830187612ec0565b8181036040830152612fc18186612f2f565b9050612fd060608301856124ce565b612fdd60808301846123ed565b9695505050505050565b600081905092915050565b50565b6000613002600083612fe7565b915061300d82612ff2565b600082019050919050565b600061302382612ff5565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613063601e83612237565b915061306e8261302d565b602082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b60006130a482612341565b91506130af83612341565b92508282026130bd81612341565b915082820484148315176130d4576130d3612b6f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061311582612341565b915061312083612341565b9250826131305761312f6130db565b5b828204905092915050565b600061314682612341565b915061315183612341565b925082820190508082111561316957613168612b6f565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220653bf676241dcb4f167a17340f41a6291d4880bccf341d25b810fc86d57e999164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80638cd4426d116100ec578063a8aa1b311161008a578063d0e1032611610064578063d0e10326146105e1578063dd62ed3e1461060a578063f2fde38b14610647578063f887ea4014610670576101c2565b8063a8aa1b3114610562578063a9059cbb1461058d578063b15be2f5146105ca576101c2565b80639213c358116100c65780639213c358146104bc57806395d89b41146104e55780639d7f155114610510578063a85ffe4f14610539576101c2565b80638cd4426d1461043f5780638da5cb5b146104685780638ebfc79614610493576101c2565b80634eed4fa111610159578063715018a611610133578063715018a6146103bb578063751039fc146103d257806378109e54146103e9578063893d20e814610414576101c2565b80634eed4fa11461033c57806351bc3c851461036757806370a082311461037e576101c2565b806323b872dd1161019557806323b872dd1461025a5780632f54bf6e14610297578063313ce567146102d45780633f4218e0146102ff576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e991906122bc565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612377565b6106d8565b60405161022691906123d2565b60405180910390f35b34801561023b57600080fd5b506102446106ef565b60405161025191906123fc565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190612417565b610750565b60405161028e91906123d2565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b9919061246a565b61081b565b6040516102cb91906123d2565b60405180910390f35b3480156102e057600080fd5b506102e9610874565b6040516102f691906124b3565b60405180910390f35b34801561030b57600080fd5b506103266004803603810190610321919061246a565b61087d565b60405161033391906123d2565b60405180910390f35b34801561034857600080fd5b5061035161089d565b60405161035e91906123d2565b60405180910390f35b34801561037357600080fd5b5061037c610974565b005b34801561038a57600080fd5b506103a560048036038101906103a0919061246a565b6109f3565b6040516103b291906123fc565b60405180910390f35b3480156103c757600080fd5b506103d0610a3c565b005b3480156103de57600080fd5b506103e7610aff565b005b3480156103f557600080fd5b506103fe610b52565b60405161040b91906123fc565b60405180910390f35b34801561042057600080fd5b50610429610b58565b60405161043691906124dd565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190612377565b610b81565b005b34801561047457600080fd5b5061047d610d5a565b60405161048a91906124dd565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612524565b610d7e565b005b3480156104c857600080fd5b506104e360048036038101906104de9190612564565b610e2f565b005b3480156104f157600080fd5b506104fa611047565b60405161050791906122bc565b60405180910390f35b34801561051c57600080fd5b50610537600480360381019061053291906125b7565b611084565b005b34801561054557600080fd5b50610560600480360381019061055b9190612377565b611175565b005b34801561056e57600080fd5b50610577611210565b60405161058491906124dd565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af9190612377565b611236565b6040516105c191906123d2565b60405180910390f35b3480156105d657600080fd5b506105df61124d565b005b3480156105ed57600080fd5b506106086004803603810190610603919061266d565b6112a7565b005b34801561061657600080fd5b50610631600480360381019061062c91906126ad565b611322565b60405161063e91906123fc565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061272b565b6113a9565b005b34801561067c57600080fd5b5061068561146b565b60405161069291906127b7565b60405180910390f35b60606040518060400160405280600e81526020017f4172746966696369616c20496e75000000000000000000000000000000000000815250905090565b60006106e5338484611491565b6001905092915050565b600061074b6106fe60006109f3565b61073d61072c600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166109f3565b60045461165a90919063ffffffff16565b61165a90919063ffffffff16565b905090565b600061075d848484611670565b610810843361080b8560405180606001604052806028815260200161317060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b969092919063ffffffff16565b611491565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561090a5750600960159054906101000a900460ff16155b80156109225750600960149054906101000a900460ff165b801561096f5750600a54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ca57600080fd5b60006109d5306109f3565b9050600a548111156109e757600a5490505b6109f081611beb565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a453361081b565b610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b9061281e565b60405180910390fd5b7f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610ab491906124dd565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b083361081b565b610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e9061281e565b60405180910390fd5b600454601781905550565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c08906128b0565b60405180910390fd5b6000610cb26064610ca4848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5591906124dd565b602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906128e5565b611f0b90919063ffffffff16565b611f2190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d11929190612912565b6020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612950565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd457600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e383361081b565b610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e9061281e565b60405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600281526020017f4149000000000000000000000000000000000000000000000000000000000000815250905090565b61108d3361081b565b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c39061281e565b60405180910390fd5b87600b8190555086600c8190555085600e8190555084600d8190555083600f81905550826010819055508160118190555080601281905550601354600f541115801561111c575060135460115411155b801561112c575060135460125411155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906129ef565b60405180910390fd5b5050505050505050565b6001600960156101000a81548160ff021916908315150217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111e657600080fd5b6111f1823083611670565b6000600960156101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611243338484611670565b6001905092915050565b6112563361081b565b611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c9061281e565b60405180910390fd5b61129d610aff565b6112a5610a3c565b565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112fd57600080fd5b81600960146101000a81548160ff02191690831515021790555080600a819055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113b23361081b565b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e89061281e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516114609190612a30565b60405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790612abd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690612b4f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164d91906123fc565b60405180910390a3505050565b600081836116689190612b9e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612c44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590612cd6565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790612d68565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118745750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ce5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119285750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119c45760175461198282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b11156119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba90612dd4565b60405180910390fd5b5b6119cc61089d565b156119dd576119dc600a54611beb565b5b611a2f81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a7e8484611f4d565b611a885781611a94565b611a93848484611ffb565b5b9050611ae881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8891906123fc565b60405180910390a350505050565b6000838311158290611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd591906122bc565b60405180910390fd5b5082840390509392505050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c2357611c22612df4565b5b604051908082528060200260200182016040528015611c515781602001602082028036833780820191505090505b5090503081600081518110611c6957611c68612e23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d349190612e67565b81600181518110611d4857611d47612e23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611de6959493929190612f8d565b600060405180830381600087803b158015611e0057600080fd5b505af1158015611e14573d6000803e3d6000fd5b505050506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164761753090604051611e6490613018565b600060405180830381858888f193505050503d8060008114611ea2576040519150601f19603f3d011682016040523d82523d6000602084013e611ea7565b606091505b5050905080611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613079565b60405180910390fd5b50506000600960156101000a81548160ff02191690831515021790555050565b60008183611f199190613099565b905092915050565b60008183611f2f919061310a565b905092915050565b60008183611f45919061313b565b905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ff35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806120088585612160565b9050600081111561215457600061203c60135461202e8487611f0b90919063ffffffff16565b611f2190919063ffffffff16565b905061209081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213091906123fc565b60405180910390a361214b818561165a90919063ffffffff16565b92505050612159565b829150505b9392505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c1576011549050612226565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576010549050612226565b60125490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561226657808201518184015260208101905061224b565b60008484015250505050565b6000601f19601f8301169050919050565b600061228e8261222c565b6122988185612237565b93506122a8818560208601612248565b6122b181612272565b840191505092915050565b600060208201905081810360008301526122d68184612283565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061230e826122e3565b9050919050565b61231e81612303565b811461232957600080fd5b50565b60008135905061233b81612315565b92915050565b6000819050919050565b61235481612341565b811461235f57600080fd5b50565b6000813590506123718161234b565b92915050565b6000806040838503121561238e5761238d6122de565b5b600061239c8582860161232c565b92505060206123ad85828601612362565b9150509250929050565b60008115159050919050565b6123cc816123b7565b82525050565b60006020820190506123e760008301846123c3565b92915050565b6123f681612341565b82525050565b600060208201905061241160008301846123ed565b92915050565b6000806000606084860312156124305761242f6122de565b5b600061243e8682870161232c565b935050602061244f8682870161232c565b925050604061246086828701612362565b9150509250925092565b6000602082840312156124805761247f6122de565b5b600061248e8482850161232c565b91505092915050565b600060ff82169050919050565b6124ad81612497565b82525050565b60006020820190506124c860008301846124a4565b92915050565b6124d781612303565b82525050565b60006020820190506124f260008301846124ce565b92915050565b612501816123b7565b811461250c57600080fd5b50565b60008135905061251e816124f8565b92915050565b6000806040838503121561253b5761253a6122de565b5b60006125498582860161232c565b925050602061255a8582860161250f565b9150509250929050565b60008060006060848603121561257d5761257c6122de565b5b600061258b8682870161232c565b935050602061259c8682870161232c565b92505060406125ad8682870161232c565b9150509250925092565b600080600080600080600080610100898b0312156125d8576125d76122de565b5b60006125e68b828c01612362565b98505060206125f78b828c01612362565b97505060406126088b828c01612362565b96505060606126198b828c01612362565b955050608061262a8b828c01612362565b94505060a061263b8b828c01612362565b93505060c061264c8b828c01612362565b92505060e061265d8b828c01612362565b9150509295985092959890939650565b60008060408385031215612684576126836122de565b5b60006126928582860161250f565b92505060206126a385828601612362565b9150509250929050565b600080604083850312156126c4576126c36122de565b5b60006126d28582860161232c565b92505060206126e38582860161232c565b9150509250929050565b60006126f8826122e3565b9050919050565b612708816126ed565b811461271357600080fd5b50565b600081359050612725816126ff565b92915050565b600060208284031215612741576127406122de565b5b600061274f84828501612716565b91505092915050565b6000819050919050565b600061277d612778612773846122e3565b612758565b6122e3565b9050919050565b600061278f82612762565b9050919050565b60006127a182612784565b9050919050565b6127b181612796565b82525050565b60006020820190506127cc60008301846127a8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612808600683612237565b9150612813826127d2565b602082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f796f7520617265206e6f7420617574686f72697a656420746f2072657363756560008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061289a602783612237565b91506128a58261283e565b604082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b6000815190506128df8161234b565b92915050565b6000602082840312156128fb576128fa6122de565b5b6000612909848285016128d0565b91505092915050565b600060408201905061292760008301856124ce565b61293460208301846123ed565b9392505050565b60008151905061294a816124f8565b92915050565b600060208284031215612966576129656122de565b5b60006129748482850161293b565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006129d9602c83612237565b91506129e48261297d565b604082019050919050565b60006020820190508181036000830152612a08816129cc565b9050919050565b6000612a1a82612784565b9050919050565b612a2a81612a0f565b82525050565b6000602082019050612a456000830184612a21565b92915050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa7602283612237565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b39602483612237565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ba982612341565b9150612bb483612341565b9250828203905081811115612bcc57612bcb612b6f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c2e602583612237565b9150612c3982612bd2565b604082019050919050565b60006020820190508181036000830152612c5d81612c21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc0602383612237565b9150612ccb82612c64565b604082019050919050565b60006020820190508181036000830152612cef81612cb3565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612d52603183612237565b9150612d5d82612cf6565b604082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612dbe601e83612237565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e6181612315565b92915050565b600060208284031215612e7d57612e7c6122de565b5b6000612e8b84828501612e52565b91505092915050565b6000819050919050565b6000612eb9612eb4612eaf84612e94565b612758565b612341565b9050919050565b612ec981612e9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f0481612303565b82525050565b6000612f168383612efb565b60208301905092915050565b6000602082019050919050565b6000612f3a82612ecf565b612f448185612eda565b9350612f4f83612eeb565b8060005b83811015612f80578151612f678882612f0a565b9750612f7283612f22565b925050600181019050612f53565b5085935050505092915050565b600060a082019050612fa260008301886123ed565b612faf6020830187612ec0565b8181036040830152612fc18186612f2f565b9050612fd060608301856124ce565b612fdd60808301846123ed565b9695505050505050565b600081905092915050565b50565b6000613002600083612fe7565b915061300d82612ff2565b600082019050919050565b600061302382612ff5565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613063601e83612237565b915061306e8261302d565b602082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b60006130a482612341565b91506130af83612341565b92508282026130bd81612341565b915082820484148315176130d4576130d3612b6f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061311582612341565b915061312083612341565b9250826131305761312f6130db565b5b828204905092915050565b600061314682612341565b915061315183612341565b925082820190508082111561316957613168612b6f565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220653bf676241dcb4f167a17340f41a6291d4880bccf341d25b810fc86d57e999164736f6c63430008130033

Deployed Bytecode Sourcemap

4935:8628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7069:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7902:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8041:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12908:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3726:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5560:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8181:204;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10767:228;;;;;;;;;;;;;:::i;:::-;;7376:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3819:107;;;;;;;;;;;;;:::i;:::-;;9474:90;;;;;;;;;;;;;:::i;:::-;;6349:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7292:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9863:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3577:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7763:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9126:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7142:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8586:532;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9682:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5641:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7485:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9572:102;;;;;;;;;;;;;:::i;:::-;;8394:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7630:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3932:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5613:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7069:67;7106:13;7129:5;;;;;;;;;;;;;;;;;7122:12;;7069:67;:::o;7902:133::-;7977:4;7984:37;7993:10;8005:7;8014:6;7984:8;:37::i;:::-;8029:4;8022:11;;7902:133;;;;:::o;8041:132::-;8094:7;8111:60;8149:21;8167:1;8149:9;:21::i;:::-;8111:33;8128:15;8138:4;;;;;;;;;;;8128:9;:15::i;:::-;8111:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8104:67;;8041:132;:::o;12908:309::-;13006:4;13023:36;13033:6;13041:9;13052:6;13023:9;:36::i;:::-;13070:117;13079:6;13087:10;13099:87;13135:6;13099:87;;;;;;;;;;;;;;;;;:11;:19;13111:6;13099:19;;;;;;;;;;;;;;;:31;13119:10;13099:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;13070:8;:117::i;:::-;13205:4;13198:11;;12908:309;;;;;:::o;3726:87::-;3781:4;3806:5;;;;;;;;;;;3795:16;;:7;:16;;;3788:23;;3726:87;;;:::o;7219:67::-;7260:5;5352:1;7268:16;;7219:67;:::o;5560:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8181:204::-;8232:4;8272;;;;;;;;;;;8258:18;;:10;:18;;;;:41;;;;;8291:8;;;;;;;;;;;8290:9;8258:41;:65;;;;;8312:11;;;;;;;;;;;8258:65;:119;;;;;8364:13;;8336:9;:24;8354:4;8336:24;;;;;;;;;;;;;;;;:41;;8258:119;8251:126;;8181:204;:::o;10767:228::-;10817:11;:23;10829:10;10817:23;;;;;;;;;;;;;;;;;;;;;;;;;10809:32;;;;;;10852:14;10869:24;10887:4;10869:9;:24::i;:::-;10852:41;;10916:13;;10907:6;:22;10904:51;;;10940:13;;10931:22;;10904:51;10965:22;10980:6;10965:14;:22::i;:::-;10798:197;10767:228::o;7376:103::-;7442:7;7459:9;:18;7469:7;7459:18;;;;;;;;;;;;;;;;7452:25;;7376:103;;;:::o;3819:107::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3872:32:::1;3901:1;3872:32;;;;;;:::i;:::-;;;;;;;;3922:1;3906:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;3819:107::o:0;9474:90::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9544:12:::1;;9526:15;:30;;;;9474:90::o:0;6349:63::-;;;;:::o;7292:78::-;7344:7;7362:5;;;;;;;;;;;7355:12;;7292:78;:::o;9863:329::-;9961:20;;;;;;;;;;;9947:34;;:10;:34;;;9939:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10036:15;10054:63;10113:3;10054:54;10100:7;10061:8;10054:26;;;10089:4;10054:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10036:81;;10135:8;10128:25;;;10154:20;;;;;;;;;;;10176:7;10128:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9928:264;9863:329;;:::o;3577:20::-;;;;;;;;;;;;:::o;7763:133::-;7836:11;:23;7848:10;7836:23;;;;;;;;;;;;;;;;;;;;;;;;;7828:32;;;;;;7886:8;7862:11;:21;7874:8;7862:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7763:133;;:::o;9126:338::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:10:::1;9248:18;;:31;;;;;;;;;;;;;;;;;;9302:10;9281:18;;:31;;;;;;;;;;;;;;;;;;9337:12;9314:20;;:35;;;;;;;;;;;;;;;;;;9386:4;9360:11;:23;9372:10;9360:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9418:4;9392:11;:23;9404:10;9392:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9452:4;9424:11;:25;9436:12;9424:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9126:338:::0;;;:::o;7142:71::-;7181:13;7204:7;;;;;;;;;;;;;;;;;7197:14;;7142:71;:::o;8586:532::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8805:10:::1;8790:12;:25;;;;8832:10;8817:12;:25;;;;8854:5;8844:7;:15;;;;8878:12;8861:14;:29;;;;8903:6;8892:8;:17;;;;8920:4;8911:6;:13;;;;8936:5;8926:7;:15;;;;8957:6;8943:11;:20;;;;8994:11;;8982:8;;:23;;:49;;;;;9020:11;;9009:7;;:22;;8982:49;:79;;;;;9050:11;;9035;;:26;;8982:79;8974:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;8586:532:::0;;;;;;;;:::o;9682:173::-;5837:4;5826:8;;:15;;;;;;;;;;;;;;;;;;9772:11:::1;:23;9784:10;9772:23;;;;;;;;;;;;;;;;;;;;;;;;;9764:32;;;::::0;::::1;;9807:40;9817:6;9833:4;9840:6;9807:9;:40::i;:::-;5857:5:::0;5846:8;;:16;;;;;;;;;;;;;;;;;;9682:173;;:::o;5641:19::-;;;;;;;;;;;;;:::o;7485:139::-;7563:4;7570:40;7580:10;7592:9;7603:6;7570:9;:40::i;:::-;7618:4;7611:11;;7485:139;;;;:::o;9572:102::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9622:14:::1;:12;:14::i;:::-;9647:19;:17;:19::i;:::-;9572:102::o:0;8394:184::-;8479:11;:23;8491:10;8479:23;;;;;;;;;;;;;;;;;;;;;;;;;8471:32;;;;;;8528:8;8514:11;;:22;;;;;;;;;;;;;;;;;;8563:7;8547:13;:23;;;;8394:184;;:::o;7630:127::-;7711:7;7728:11;:18;7740:5;7728:18;;;;;;;;;;;;;;;:27;7747:7;7728:27;;;;;;;;;;;;;;;;7721:34;;7630:127;;;;:::o;3932:111::-;3685:19;3693:10;3685:7;:19::i;:::-;3677:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4006:3:::1;3998:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4016:25;4037:3;4016:25;;;;;;:::i;:::-;;;;;;;;3932:111:::0;:::o;5613:21::-;;;;;;;;;;;;;:::o;13225:335::-;13337:1;13318:21;;:7;:21;;;13310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13414:1;13397:19;;:5;:19;;;13389:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13498:6;13468:11;:18;13480:5;13468:18;;;;;;;;;;;;;;;:27;13487:7;13468:27;;;;;;;;;;;;;;;:36;;;;13536:7;13520:32;;13529:5;13520:32;;;13545:6;13520:32;;;;;;:::i;:::-;;;;;;;;13225:335;;;:::o;1467:98::-;1525:7;1556:1;1552;:5;;;;:::i;:::-;1545:12;;1467:98;;;;:::o;11896:1004::-;12011:1;11993:20;;:6;:20;;;11985:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12095:1;12074:23;;:9;:23;;;12066:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12166:9;:17;12176:6;12166:17;;;;;;;;;;;;;;;;12156:6;:27;;12148:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;12261:11;:19;12273:6;12261:19;;;;;;;;;;;;;;;;;;;;;;;;;12260:20;:47;;;;;12285:11;:22;12297:9;12285:22;;;;;;;;;;;;;;;;;;;;;;;;;12284:23;12260:47;:77;;;;;12332:4;;;;;;;;;;;12311:26;;:9;:26;;;;12260:77;:107;;;;;12362:4;;;;;;;;;;;12341:26;;:9;:26;;;;12260:107;12257:234;;;12429:15;;12392:32;12417:6;12392:9;:20;12402:9;12392:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12391:53;;12383:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12257:234;12506:20;:18;:20::i;:::-;12503:81;;;12543:29;12558:13;;12543:14;:29::i;:::-;12503:81;12616:29;12638:6;12616:9;:17;12626:6;12616:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12596:9;:17;12606:6;12596:17;;;;;;;;;;;;;;;:49;;;;12656:22;12681:32;12695:6;12703:9;12681:13;:32::i;:::-;:78;;12753:6;12681:78;;;12716:34;12724:6;12732:9;12743:6;12716:7;:34::i;:::-;12681:78;12656:103;;12793:40;12818:14;12793:9;:20;12803:9;12793:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12770:9;:20;12780:9;12770:20;;;;;;;;;;;;;;;:63;;;;12866:9;12849:43;;12858:6;12849:43;;;12877:14;12849:43;;;;;;:::i;:::-;;;;;;;;11974:926;11896:1004;;;:::o;1891:240::-;2011:7;2069:1;2064;:6;;2072:12;2056:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2111:1;2107;:5;2100:12;;1891:240;;;;;:::o;10200:559::-;5837:4;5826:8;;:15;;;;;;;;;;;;;;;;;;10272:21:::1;10310:1;10296:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:40;;10341:4;10323;10328:1;10323:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10367:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10357:4;10362:1;10357:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10393:6;;;;;;;;;;;:57;;;10465:6;10486:1;10502:4;10529;10549:15;10393:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10589:12;10614:18;;;;;;;;;;;10606:32;;10646:21;10674:5;10606:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10588:96;;;10703:7;10695:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10261:498;;5857:5:::0;5846:8;;:16;;;;;;;;;;;;;;;;;;10200:559;:::o;1573:98::-;1631:7;1662:1;1658;:5;;;;:::i;:::-;1651:12;;1573:98;;;;:::o;1679:::-;1737:7;1768:1;1764;:5;;;;:::i;:::-;1757:12;;1679:98;;;;:::o;1361:::-;1419:7;1450:1;1446;:5;;;;:::i;:::-;1439:12;;1361:98;;;;:::o;11003:160::-;11084:4;11109:11;:19;11121:6;11109:19;;;;;;;;;;;;;;;;;;;;;;;;;11108:20;:47;;;;;11133:11;:22;11145:9;11133:22;;;;;;;;;;;;;;;;;;;;;;;;;11132:23;11108:47;11101:54;;11003:160;;;;:::o;11396:492::-;11482:7;11504:18;11525:30;11537:6;11545:9;11525:11;:30::i;:::-;11504:51;;11582:1;11569:10;:14;11566:290;;;11599:17;11619:39;11646:11;;11619:22;11630:10;11619:6;:10;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;11599:59;;11700:39;11729:9;11700;:24;11718:4;11700:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11673:9;:24;11691:4;11673:24;;;;;;;;;;;;;;;:66;;;;11784:4;11759:42;;11768:6;11759:42;;;11791:9;11759:42;;;;;;:::i;:::-;;;;;;;;11823:21;11834:9;11823:6;:10;;:21;;;;:::i;:::-;11816:28;;;;;;11566:290;11874:6;11867:13;;;11396:492;;;;;;:::o;11171:217::-;11250:7;11286:4;;;;;;;;;;;11273:17;;:9;:17;;;11270:38;;11299:7;;11292:14;;;;11270:38;11331:4;;;;;;;;;;;11321:14;;:6;:14;;;11318:34;;11344:6;;11337:13;;;;11318:34;11369:11;;11362:18;;11171:217;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:619::-;6352:6;6360;6368;6417:2;6405:9;6396:7;6392:23;6388:32;6385:119;;;6423:79;;:::i;:::-;6385:119;6543:1;6568:53;6613:7;6604:6;6593:9;6589:22;6568:53;:::i;:::-;6558:63;;6514:117;6670:2;6696:53;6741:7;6732:6;6721:9;6717:22;6696:53;:::i;:::-;6686:63;;6641:118;6798:2;6824:53;6869:7;6860:6;6849:9;6845:22;6824:53;:::i;:::-;6814:63;;6769:118;6275:619;;;;;:::o;6900:1349::-;7022:6;7030;7038;7046;7054;7062;7070;7078;7127:3;7115:9;7106:7;7102:23;7098:33;7095:120;;;7134:79;;:::i;:::-;7095:120;7254:1;7279:53;7324:7;7315:6;7304:9;7300:22;7279:53;:::i;:::-;7269:63;;7225:117;7381:2;7407:53;7452:7;7443:6;7432:9;7428:22;7407:53;:::i;:::-;7397:63;;7352:118;7509:2;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7480:118;7637:2;7663:53;7708:7;7699:6;7688:9;7684:22;7663:53;:::i;:::-;7653:63;;7608:118;7765:3;7792:53;7837:7;7828:6;7817:9;7813:22;7792:53;:::i;:::-;7782:63;;7736:119;7894:3;7921:53;7966:7;7957:6;7946:9;7942:22;7921:53;:::i;:::-;7911:63;;7865:119;8023:3;8050:53;8095:7;8086:6;8075:9;8071:22;8050:53;:::i;:::-;8040:63;;7994:119;8152:3;8179:53;8224:7;8215:6;8204:9;8200:22;8179:53;:::i;:::-;8169:63;;8123:119;6900:1349;;;;;;;;;;;:::o;8255:468::-;8320:6;8328;8377:2;8365:9;8356:7;8352:23;8348:32;8345:119;;;8383:79;;:::i;:::-;8345:119;8503:1;8528:50;8570:7;8561:6;8550:9;8546:22;8528:50;:::i;:::-;8518:60;;8474:114;8627:2;8653:53;8698:7;8689:6;8678:9;8674:22;8653:53;:::i;:::-;8643:63;;8598:118;8255:468;;;;;:::o;8729:474::-;8797:6;8805;8854:2;8842:9;8833:7;8829:23;8825:32;8822:119;;;8860:79;;:::i;:::-;8822:119;8980:1;9005:53;9050:7;9041:6;9030:9;9026:22;9005:53;:::i;:::-;8995:63;;8951:117;9107:2;9133:53;9178:7;9169:6;9158:9;9154:22;9133:53;:::i;:::-;9123:63;;9078:118;8729:474;;;;;:::o;9209:104::-;9254:7;9283:24;9301:5;9283:24;:::i;:::-;9272:35;;9209:104;;;:::o;9319:138::-;9400:32;9426:5;9400:32;:::i;:::-;9393:5;9390:43;9380:71;;9447:1;9444;9437:12;9380:71;9319:138;:::o;9463:155::-;9517:5;9555:6;9542:20;9533:29;;9571:41;9606:5;9571:41;:::i;:::-;9463:155;;;;:::o;9624:345::-;9691:6;9740:2;9728:9;9719:7;9715:23;9711:32;9708:119;;;9746:79;;:::i;:::-;9708:119;9866:1;9891:61;9944:7;9935:6;9924:9;9920:22;9891:61;:::i;:::-;9881:71;;9837:125;9624:345;;;;:::o;9975:60::-;10003:3;10024:5;10017:12;;9975:60;;;:::o;10041:142::-;10091:9;10124:53;10142:34;10151:24;10169:5;10151:24;:::i;:::-;10142:34;:::i;:::-;10124:53;:::i;:::-;10111:66;;10041:142;;;:::o;10189:126::-;10239:9;10272:37;10303:5;10272:37;:::i;:::-;10259:50;;10189:126;;;:::o;10321:141::-;10386:9;10419:37;10450:5;10419:37;:::i;:::-;10406:50;;10321:141;;;:::o;10468:161::-;10570:52;10616:5;10570:52;:::i;:::-;10565:3;10558:65;10468:161;;:::o;10635:252::-;10743:4;10781:2;10770:9;10766:18;10758:26;;10794:86;10877:1;10866:9;10862:17;10853:6;10794:86;:::i;:::-;10635:252;;;;:::o;10893:156::-;11033:8;11029:1;11021:6;11017:14;11010:32;10893:156;:::o;11055:365::-;11197:3;11218:66;11282:1;11277:3;11218:66;:::i;:::-;11211:73;;11293:93;11382:3;11293:93;:::i;:::-;11411:2;11406:3;11402:12;11395:19;;11055:365;;;:::o;11426:419::-;11592:4;11630:2;11619:9;11615:18;11607:26;;11679:9;11673:4;11669:20;11665:1;11654:9;11650:17;11643:47;11707:131;11833:4;11707:131;:::i;:::-;11699:139;;11426:419;;;:::o;11851:226::-;11991:34;11987:1;11979:6;11975:14;11968:58;12060:9;12055:2;12047:6;12043:15;12036:34;11851:226;:::o;12083:366::-;12225:3;12246:67;12310:2;12305:3;12246:67;:::i;:::-;12239:74;;12322:93;12411:3;12322:93;:::i;:::-;12440:2;12435:3;12431:12;12424:19;;12083:366;;;:::o;12455:419::-;12621:4;12659:2;12648:9;12644:18;12636:26;;12708:9;12702:4;12698:20;12694:1;12683:9;12679:17;12672:47;12736:131;12862:4;12736:131;:::i;:::-;12728:139;;12455:419;;;:::o;12880:143::-;12937:5;12968:6;12962:13;12953:22;;12984:33;13011:5;12984:33;:::i;:::-;12880:143;;;;:::o;13029:351::-;13099:6;13148:2;13136:9;13127:7;13123:23;13119:32;13116:119;;;13154:79;;:::i;:::-;13116:119;13274:1;13299:64;13355:7;13346:6;13335:9;13331:22;13299:64;:::i;:::-;13289:74;;13245:128;13029:351;;;;:::o;13386:332::-;13507:4;13545:2;13534:9;13530:18;13522:26;;13558:71;13626:1;13615:9;13611:17;13602:6;13558:71;:::i;:::-;13639:72;13707:2;13696:9;13692:18;13683:6;13639:72;:::i;:::-;13386:332;;;;;:::o;13724:137::-;13778:5;13809:6;13803:13;13794:22;;13825:30;13849:5;13825:30;:::i;:::-;13724:137;;;;:::o;13867:345::-;13934:6;13983:2;13971:9;13962:7;13958:23;13954:32;13951:119;;;13989:79;;:::i;:::-;13951:119;14109:1;14134:61;14187:7;14178:6;14167:9;14163:22;14134:61;:::i;:::-;14124:71;;14080:125;13867:345;;;;:::o;14218:231::-;14358:34;14354:1;14346:6;14342:14;14335:58;14427:14;14422:2;14414:6;14410:15;14403:39;14218:231;:::o;14455:366::-;14597:3;14618:67;14682:2;14677:3;14618:67;:::i;:::-;14611:74;;14694:93;14783:3;14694:93;:::i;:::-;14812:2;14807:3;14803:12;14796:19;;14455:366;;;:::o;14827:419::-;14993:4;15031:2;15020:9;15016:18;15008:26;;15080:9;15074:4;15070:20;15066:1;15055:9;15051:17;15044:47;15108:131;15234:4;15108:131;:::i;:::-;15100:139;;14827:419;;;:::o;15252:134::-;15310:9;15343:37;15374:5;15343:37;:::i;:::-;15330:50;;15252:134;;;:::o;15392:147::-;15487:45;15526:5;15487:45;:::i;:::-;15482:3;15475:58;15392:147;;:::o;15545:238::-;15646:4;15684:2;15673:9;15669:18;15661:26;;15697:79;15773:1;15762:9;15758:17;15749:6;15697:79;:::i;:::-;15545:238;;;;:::o;15789:221::-;15929:34;15925:1;15917:6;15913:14;15906:58;15998:4;15993:2;15985:6;15981:15;15974:29;15789:221;:::o;16016:366::-;16158:3;16179:67;16243:2;16238:3;16179:67;:::i;:::-;16172:74;;16255:93;16344:3;16255:93;:::i;:::-;16373:2;16368:3;16364:12;16357:19;;16016:366;;;:::o;16388:419::-;16554:4;16592:2;16581:9;16577:18;16569:26;;16641:9;16635:4;16631:20;16627:1;16616:9;16612:17;16605:47;16669:131;16795:4;16669:131;:::i;:::-;16661:139;;16388:419;;;:::o;16813:223::-;16953:34;16949:1;16941:6;16937:14;16930:58;17022:6;17017:2;17009:6;17005:15;16998:31;16813:223;:::o;17042:366::-;17184:3;17205:67;17269:2;17264:3;17205:67;:::i;:::-;17198:74;;17281:93;17370:3;17281:93;:::i;:::-;17399:2;17394:3;17390:12;17383:19;;17042:366;;;:::o;17414:419::-;17580:4;17618:2;17607:9;17603:18;17595:26;;17667:9;17661:4;17657:20;17653:1;17642:9;17638:17;17631:47;17695:131;17821:4;17695:131;:::i;:::-;17687:139;;17414:419;;;:::o;17839:180::-;17887:77;17884:1;17877:88;17984:4;17981:1;17974:15;18008:4;18005:1;17998:15;18025:194;18065:4;18085:20;18103:1;18085:20;:::i;:::-;18080:25;;18119:20;18137:1;18119:20;:::i;:::-;18114:25;;18163:1;18160;18156:9;18148:17;;18187:1;18181:4;18178:11;18175:37;;;18192:18;;:::i;:::-;18175:37;18025:194;;;;:::o;18225:224::-;18365:34;18361:1;18353:6;18349:14;18342:58;18434:7;18429:2;18421:6;18417:15;18410:32;18225:224;:::o;18455:366::-;18597:3;18618:67;18682:2;18677:3;18618:67;:::i;:::-;18611:74;;18694:93;18783:3;18694:93;:::i;:::-;18812:2;18807:3;18803:12;18796:19;;18455:366;;;:::o;18827:419::-;18993:4;19031:2;19020:9;19016:18;19008:26;;19080:9;19074:4;19070:20;19066:1;19055:9;19051:17;19044:47;19108:131;19234:4;19108:131;:::i;:::-;19100:139;;18827:419;;;:::o;19252:222::-;19392:34;19388:1;19380:6;19376:14;19369:58;19461:5;19456:2;19448:6;19444:15;19437:30;19252:222;:::o;19480:366::-;19622:3;19643:67;19707:2;19702:3;19643:67;:::i;:::-;19636:74;;19719:93;19808:3;19719:93;:::i;:::-;19837:2;19832:3;19828:12;19821:19;;19480:366;;;:::o;19852:419::-;20018:4;20056:2;20045:9;20041:18;20033:26;;20105:9;20099:4;20095:20;20091:1;20080:9;20076:17;20069:47;20133:131;20259:4;20133:131;:::i;:::-;20125:139;;19852:419;;;:::o;20277:236::-;20417:34;20413:1;20405:6;20401:14;20394:58;20486:19;20481:2;20473:6;20469:15;20462:44;20277:236;:::o;20519:366::-;20661:3;20682:67;20746:2;20741:3;20682:67;:::i;:::-;20675:74;;20758:93;20847:3;20758:93;:::i;:::-;20876:2;20871:3;20867:12;20860:19;;20519:366;;;:::o;20891:419::-;21057:4;21095:2;21084:9;21080:18;21072:26;;21144:9;21138:4;21134:20;21130:1;21119:9;21115:17;21108:47;21172:131;21298:4;21172:131;:::i;:::-;21164:139;;20891:419;;;:::o;21316:180::-;21456:32;21452:1;21444:6;21440:14;21433:56;21316:180;:::o;21502:366::-;21644:3;21665:67;21729:2;21724:3;21665:67;:::i;:::-;21658:74;;21741:93;21830:3;21741:93;:::i;:::-;21859:2;21854:3;21850:12;21843:19;;21502:366;;;:::o;21874:419::-;22040:4;22078:2;22067:9;22063:18;22055:26;;22127:9;22121:4;22117:20;22113:1;22102:9;22098:17;22091:47;22155:131;22281:4;22155:131;:::i;:::-;22147:139;;21874:419;;;:::o;22299:180::-;22347:77;22344:1;22337:88;22444:4;22441:1;22434:15;22468:4;22465:1;22458:15;22485:180;22533:77;22530:1;22523:88;22630:4;22627:1;22620:15;22654:4;22651:1;22644:15;22671:143;22728:5;22759:6;22753:13;22744:22;;22775:33;22802:5;22775:33;:::i;:::-;22671:143;;;;:::o;22820:351::-;22890:6;22939:2;22927:9;22918:7;22914:23;22910:32;22907:119;;;22945:79;;:::i;:::-;22907:119;23065:1;23090:64;23146:7;23137:6;23126:9;23122:22;23090:64;:::i;:::-;23080:74;;23036:128;22820:351;;;;:::o;23177:85::-;23222:7;23251:5;23240:16;;23177:85;;;:::o;23268:158::-;23326:9;23359:61;23377:42;23386:32;23412:5;23386:32;:::i;:::-;23377:42;:::i;:::-;23359:61;:::i;:::-;23346:74;;23268:158;;;:::o;23432:147::-;23527:45;23566:5;23527:45;:::i;:::-;23522:3;23515:58;23432:147;;:::o;23585:114::-;23652:6;23686:5;23680:12;23670:22;;23585:114;;;:::o;23705:184::-;23804:11;23838:6;23833:3;23826:19;23878:4;23873:3;23869:14;23854:29;;23705:184;;;;:::o;23895:132::-;23962:4;23985:3;23977:11;;24015:4;24010:3;24006:14;23998:22;;23895:132;;;:::o;24033:108::-;24110:24;24128:5;24110:24;:::i;:::-;24105:3;24098:37;24033:108;;:::o;24147:179::-;24216:10;24237:46;24279:3;24271:6;24237:46;:::i;:::-;24315:4;24310:3;24306:14;24292:28;;24147:179;;;;:::o;24332:113::-;24402:4;24434;24429:3;24425:14;24417:22;;24332:113;;;:::o;24481:732::-;24600:3;24629:54;24677:5;24629:54;:::i;:::-;24699:86;24778:6;24773:3;24699:86;:::i;:::-;24692:93;;24809:56;24859:5;24809:56;:::i;:::-;24888:7;24919:1;24904:284;24929:6;24926:1;24923:13;24904:284;;;25005:6;24999:13;25032:63;25091:3;25076:13;25032:63;:::i;:::-;25025:70;;25118:60;25171:6;25118:60;:::i;:::-;25108:70;;24964:224;24951:1;24948;24944:9;24939:14;;24904:284;;;24908:14;25204:3;25197:10;;24605:608;;;24481:732;;;;:::o;25219:831::-;25482:4;25520:3;25509:9;25505:19;25497:27;;25534:71;25602:1;25591:9;25587:17;25578:6;25534:71;:::i;:::-;25615:80;25691:2;25680:9;25676:18;25667:6;25615:80;:::i;:::-;25742:9;25736:4;25732:20;25727:2;25716:9;25712:18;25705:48;25770:108;25873:4;25864:6;25770:108;:::i;:::-;25762:116;;25888:72;25956:2;25945:9;25941:18;25932:6;25888:72;:::i;:::-;25970:73;26038:3;26027:9;26023:19;26014:6;25970:73;:::i;:::-;25219:831;;;;;;;;:::o;26056:147::-;26157:11;26194:3;26179:18;;26056:147;;;;:::o;26209:114::-;;:::o;26329:398::-;26488:3;26509:83;26590:1;26585:3;26509:83;:::i;:::-;26502:90;;26601:93;26690:3;26601:93;:::i;:::-;26719:1;26714:3;26710:11;26703:18;;26329:398;;;:::o;26733:379::-;26917:3;26939:147;27082:3;26939:147;:::i;:::-;26932:154;;27103:3;27096:10;;26733:379;;;:::o;27118:180::-;27258:32;27254:1;27246:6;27242:14;27235:56;27118:180;:::o;27304:366::-;27446:3;27467:67;27531:2;27526:3;27467:67;:::i;:::-;27460:74;;27543:93;27632:3;27543:93;:::i;:::-;27661:2;27656:3;27652:12;27645:19;;27304:366;;;:::o;27676:419::-;27842:4;27880:2;27869:9;27865:18;27857:26;;27929:9;27923:4;27919:20;27915:1;27904:9;27900:17;27893:47;27957:131;28083:4;27957:131;:::i;:::-;27949:139;;27676:419;;;:::o;28101:410::-;28141:7;28164:20;28182:1;28164:20;:::i;:::-;28159:25;;28198:20;28216:1;28198:20;:::i;:::-;28193:25;;28253:1;28250;28246:9;28275:30;28293:11;28275:30;:::i;:::-;28264:41;;28454:1;28445:7;28441:15;28438:1;28435:22;28415:1;28408:9;28388:83;28365:139;;28484:18;;:::i;:::-;28365:139;28149:362;28101:410;;;;:::o;28517:180::-;28565:77;28562:1;28555:88;28662:4;28659:1;28652:15;28686:4;28683:1;28676:15;28703:185;28743:1;28760:20;28778:1;28760:20;:::i;:::-;28755:25;;28794:20;28812:1;28794:20;:::i;:::-;28789:25;;28833:1;28823:35;;28838:18;;:::i;:::-;28823:35;28880:1;28877;28873:9;28868:14;;28703:185;;;;:::o;28894:191::-;28934:3;28953:20;28971:1;28953:20;:::i;:::-;28948:25;;28987:20;29005:1;28987:20;:::i;:::-;28982:25;;29030:1;29027;29023:9;29016:16;;29051:3;29048:1;29045:10;29042:36;;;29058:18;;:::i;:::-;29042:36;28894:191;;;;:::o

Swarm Source

ipfs://653bf676241dcb4f167a17340f41a6291d4880bccf341d25b810fc86d57e9991
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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