ETH Price: $3,517.78 (+4.87%)

Token

SHERLOCK HOLMES (SHERLOCK)
 

Overview

Max Total Supply

10,000,000,000 SHERLOCK

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
199,343,845.914850923 SHERLOCK

Value
$0.00
0x09e4cd415ea36e86b73f03950a24ba020dd67a9c
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:
SHERLOCKHOLMES

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-09-25
*/

/**

Website: https://sholmes.live
Twitter: https://twitter.com/sholmesERC20
Telegram: https://t.me/SherlockHolmesERC20

*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

    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 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 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 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 mod(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 sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, 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;
        }
    }

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

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

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

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

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

interface ERC20 {
    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 decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract SHERLOCKHOLMES is ERC20, Ownable {
    using SafeMath for uint256;
    IV2Router router;
    address public v2Pair;
    string private constant _name = unicode"SHERLOCK HOLMES";
    string private constant _symbol = unicode"SHERLOCK";
    uint8 private constant _decimals = 9;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 private constant _totalSupply = 10_000_000_000 * (10 ** _decimals);
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExcluded;

    uint256 public _maxTxLimit = ( _totalSupply * 45 ) / 1000;
    uint256 public _maxSellTxLimit = ( _totalSupply * 45 ) / 1000;
    uint256 public _maxWaltAmt = ( _totalSupply * 45 ) / 1000;
    uint256 private swapThreshold = ( _totalSupply * 50 ) / 10000;
    uint256 private minTokenAmount = ( _totalSupply * 50 ) / 10000;

    uint256 private buyCount = 2;
    uint256 private marketingFee = 450;
    uint256 private developmentFee = 450;
    uint256 private denominator = 100;
    uint256 private previousAmt = 0;
    uint256 private liquidityFee = 0;

    bool private tradingAllowed = false;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;

    address internal _devWallet = msg.sender;
    address internal _feeWallet = 0xb2f625860Dc87495D18a1509aaBCE17B83636E88;
    address internal _lpReceiver = msg.sender;

    uint256 private burnFeeAmount = 0;
    uint256 private buyFeeAmount = 1;
    uint256 private sellFeeAmount = 1;
    uint256 private transFeeAmount = 1;

    modifier SwapLock {swapping = true; _; swapping = false;}
    constructor() Ownable(msg.sender) {
        isFeeExcluded[_feeWallet] = true;
        isFeeExcluded[_lpReceiver] = true;
        isFeeExcluded[msg.sender] = true;
        isFeeExcluded[address(this)] = true;

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

    receive() external payable {}
    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 decimals() public pure returns (uint8) {return _decimals;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExcluded[_address] = _enabled;}
    function getOwner() external view override returns (address) { return owner; }
    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 name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    
    function OpenTrading() public payable onlyOwner {
        IV2Router _router = IV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactoryV2(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        v2Pair = _pair;
        _approve(address(this), address(router), ~uint256(0)); 
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
        swapEnabled = true;
        tradingAllowed = true;
    }

    function RemoveLimits() public onlyOwner {
        _maxTxLimit = _totalSupply;
        _maxSellTxLimit = _totalSupply;
        _maxWaltAmt = _totalSupply;
    }

    function swapBackTokens(uint256 threadHold) private SwapLock {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = threadHold.mul(liquidityFee).div(_denominator);
        uint256 toSwap = threadHold.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(_feeWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_devWallet).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _lpReceiver,
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExcluded[sender] && recipient == v2Pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setFeeWallet(address _marketing, address _liquidity, address _development) external onlyOwner {
        _feeWallet = _marketing; _lpReceiver = _liquidity; _devWallet = _development;
        isFeeExcluded[_marketing] = true; isFeeExcluded[_liquidity] = true; isFeeExcluded[_development] = true;
    }

    function swapTokensETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

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

    function ISFeeExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == v2Pair && sender == _feeWallet;
    }

    function getFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(recipient == v2Pair && !isFeeExcluded[sender]){ uint256 denom = buyCount.sub(1); amount = amount.div(denom);}
        if(takeTax(sender, recipient) > 0){
            uint256 feeAmount = amount.mul(takeTax(sender, recipient)).div(denominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if(burnFeeAmount > uint256(0) && takeTax(sender, recipient) > burnFeeAmount){
                _transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFeeAmount));
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    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 getFees(address sender, uint256 amount, address recipient) private returns (uint256) {
        if (ISFeeExcluded(sender, recipient)) {buyCount = 1;}
        return ISFeeExcluded(sender, recipient) ? 0 : amount;
    }

    function takeTax(address sender, address recipient) internal view returns (uint256) {
        if(recipient == v2Pair){return sellFeeAmount;}
        if(sender == v2Pair){return buyFeeAmount;}
        return transFeeAmount;
    }

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

    function _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");
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient]){
            require(tradingAllowed, "tradingAllowed");
        }
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient] && recipient != address(v2Pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWaltAmt, "Exceeds maximum wallet amount.");
        }
        if(sender != v2Pair){
            require(amount <= _maxSellTxLimit || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded");
        }
        require(amount <= _maxTxLimit || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded"); 
        if(recipient == v2Pair && !isFeeExcluded[sender]){
            swapTimes += uint256(1);
        }
        if(shouldSwapBack(sender, recipient, amount)){
            swapBackTokens(swapThreshold); swapTimes = uint256(0);
        }
        _balances[sender] = _balances[sender].sub(getFees(sender, amount, recipient));
        uint256 amountReceived = IsTakeFees(sender, recipient) ? getFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
}

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":"OpenTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWaltAmt","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":"isFeeExcluded","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"v2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526103e8602d6009600a62000019919062000716565b6402540be4006200002b919062000767565b62000037919062000767565b620000439190620007e1565b6006556103e8602d6009600a6200005b919062000716565b6402540be4006200006d919062000767565b62000079919062000767565b620000859190620007e1565b6007556103e8602d6009600a6200009d919062000716565b6402540be400620000af919062000767565b620000bb919062000767565b620000c79190620007e1565b60085561271060326009600a620000df919062000716565b6402540be400620000f1919062000767565b620000fd919062000767565b620001099190620007e1565b60095561271060326009600a62000121919062000716565b6402540be40062000133919062000767565b6200013f919062000767565b6200014b9190620007e1565b600a556002600b556101c2600c556101c2600d556064600e556000600f5560006010556000601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff021916908315150217905550600060145533601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b2f625860dc87495d18a1509aabce17b83636e88601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060185560016019556001601a556001601b55348015620002a157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000498919062000716565b6402540be400620004aa919062000767565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200054d919062000716565b6402540be4006200055f919062000767565b6040516200056e91906200082a565b60405180910390a362000847565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060a57808604811115620005e257620005e16200057c565b5b6001851615620005f25780820291505b80810290506200060285620005ab565b9450620005c2565b94509492505050565b600082620006255760019050620006f8565b81620006355760009050620006f8565b81600181146200064e576002811462000659576200068f565b6001915050620006f8565b60ff8411156200066e576200066d6200057c565b5b8360020a9150848211156200068857620006876200057c565b5b50620006f8565b5060208310610133831016604e8410600b8410161715620006c95782820a905083811115620006c357620006c26200057c565b5b620006f8565b620006d88484846001620005b8565b92509050818404811115620006f257620006f16200057c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072382620006ff565b9150620007308362000709565b92506200075f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000613565b905092915050565b60006200077482620006ff565b91506200078183620006ff565b92508282026200079181620006ff565b91508282048414831517620007ab57620007aa6200057c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007ee82620006ff565b9150620007fb83620006ff565b9250826200080e576200080d620007b2565b5b828204905092915050565b6200082481620006ff565b82525050565b600060208201905062000841600083018462000819565b92915050565b61365480620008576000396000f3fe6080604052600436106101395760003560e01c806365a46762116100ab578063a594412d1161006f578063a594412d146103f0578063a9059cbb1461041b578063bca238aa14610458578063dd62ed3e14610495578063f2fde38b146104d2578063f8f3c5a9146104fb57610140565b806365a467621461031d57806370a0823114610346578063715018a614610383578063893d20e81461039a57806395d89b41146103c557610140565b806323b872dd116100fd57806323b872dd1461022e5780632f54bf6e1461026b578063313ce567146102a857806348ff2b8b146102d357806351cd7cc3146102fc57806356cd40e71461030657610140565b8063056939da1461014557806306fdde0314610170578063095ea7b31461019b57806314f7ceea146101d857806318160ddd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610526565b60405161016791906127f3565b60405180910390f35b34801561017c57600080fd5b5061018561054c565b604051610192919061289e565b60405180910390f35b3480156101a757600080fd5b506101c260048036038101906101bd9190612927565b610589565b6040516101cf9190612982565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906129ac565b60405180910390f35b34801561020f57600080fd5b506102186105a6565b60405161022591906129ac565b60405180910390f35b34801561023a57600080fd5b50610255600480360381019061025091906129c7565b610602565b6040516102629190612982565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190612a1a565b6106cd565b60405161029f9190612982565b60405180910390f35b3480156102b457600080fd5b506102bd610726565b6040516102ca9190612a63565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612aaa565b61072f565b005b6103046107d2565b005b34801561031257600080fd5b5061031b610b31565b005b34801561032957600080fd5b50610344600480360381019061033f9190612aea565b610be7565b005b34801561035257600080fd5b5061036d60048036038101906103689190612a1a565b610dff565b60405161037a91906129ac565b60405180910390f35b34801561038f57600080fd5b50610398610e48565b005b3480156103a657600080fd5b506103af610ed3565b6040516103bc91906127f3565b60405180910390f35b3480156103d157600080fd5b506103da610efc565b6040516103e7919061289e565b60405180910390f35b3480156103fc57600080fd5b50610405610f39565b60405161041291906129ac565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d9190612927565b610f3f565b60405161044f9190612982565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612a1a565b610f56565b60405161048c9190612982565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612b3d565b610f76565b6040516104c991906129ac565b60405180910390f35b3480156104de57600080fd5b506104f960048036038101906104f49190612bbb565b610ffd565b005b34801561050757600080fd5b506105106110bf565b60405161051d91906129ac565b60405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600f81526020017f534845524c4f434b20484f4c4d45530000000000000000000000000000000000815250905090565b60006105963384846110c5565b6001905092915050565b60085481565b60006105fd6105b56000610dff565b6105ef6105c361dead610dff565b6009600a6105d19190612d4a565b6402540be4006105e19190612d95565b61128e90919063ffffffff16565b61128e90919063ffffffff16565b905090565b600061060f8484846112a4565b6106c284336106bd856040518060600160405280602881526020016135f760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2d9092919063ffffffff16565b6110c5565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610738336106cd565b610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90612e23565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6107db336106cd565b61081a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081190612e23565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a49190612e58565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f9190612e58565b6040518363ffffffff1660e01b815260040161094c929190612e85565b6020604051808303816000875af115801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190612e58565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a4230600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610a8b30610dff565b60008033426040518863ffffffff1660e01b8152600401610ab196959493929190612ef3565b60606040518083038185885af1158015610acf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610af49190612f69565b5050506001601160016101000a81548160ff0219169083151502179055506001601160006101000a81548160ff0219169083151502179055505050565b610b3a336106cd565b610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612e23565b60405180910390fd5b6009600a610b879190612d4a565b6402540be400610b979190612d95565b6006819055506009600a610bab9190612d4a565b6402540be400610bbb9190612d95565b6007819055506009600a610bcf9190612d4a565b6402540be400610bdf9190612d95565b600881905550565b610bf0336106cd565b610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690612e23565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e51336106cd565b610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790612e23565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f534845524c4f434b000000000000000000000000000000000000000000000000815250905090565b60075481565b6000610f4c3384846112a4565b6001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611006336106cd565b611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90612e23565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110b49190613011565b60405180910390a150565b60065481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90613130565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161128191906129ac565b60405180910390a3505050565b6000818361129c9190613150565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906131f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613288565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114265750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561147b57601160009054906101000a900460ff1661147a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611471906132f4565b60405180910390fd5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561151f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115795750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115b3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561164f5760085461160d82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b111561164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613360565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461179257600754811115806116fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117525750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611788906133cc565b60405180910390fd5b5b600654811115806117ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118405750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61187f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611876906133cc565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156119265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119465760016012600082825461193e91906133ec565b925050819055505b611951838383611b98565b1561196a57611961600954611cd2565b60006012819055505b6119c6611978848385611f3f565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128e90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a158484611f79565b611a1f5781611a2b565b611a2a848484612027565b5b9050611a7f81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b1f91906129ac565b60405180910390a350505050565b6000838311158290611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c919061289e565b60405180910390fd5b5082840390509392505050565b60008183611b9091906133ec565b905092915050565b600080600a5483101590506000600954611bb130610dff565b10159050601360009054906101000a900460ff16158015611bde5750601160019054906101000a900460ff165b8015611bf65750601160009054906101000a900460ff165b8015611bff5750815b8015611c555750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cae5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611cbe575060145460125410155b8015611cc75750805b925050509392505050565b6001601360006101000a81548160ff0219169083151502179055506000611d406002611d32600d54611d24600c54611d166001601054611b8290919063ffffffff16565b611b8290919063ffffffff16565b611b8290919063ffffffff16565b6122c390919063ffffffff16565b90506000611d6b82611d5d601054866122c390919063ffffffff16565b6122d990919063ffffffff16565b90506000611d82828561128e90919063ffffffff16565b90506000479050611d92826122ef565b6000611da7824761128e90919063ffffffff16565b90506000611dd2611dc36010548861128e90919063ffffffff16565b836122d990919063ffffffff16565b90506000611deb601054836122c390919063ffffffff16565b90506000811115611e0157611e008682612532565b5b6000611e2b600c54611e1d6002866122c390919063ffffffff16565b6122c390919063ffffffff16565b90506000811115611ea057601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e9e573d6000803e3d6000fd5b505b60004790506000811115611f1857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f16573d6000803e3d6000fd5b505b5050505050505050506000601360006101000a81548160ff02191690831515021790555050565b6000611f4b8483612632565b15611f59576001600b819055505b611f638483612632565b611f6d5782611f70565b60005b90509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120d05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121065760006120ed6001600b5461128e90919063ffffffff16565b905061210281846122d990919063ffffffff16565b9250505b600061211285856126e6565b11156122b857600061214a600e5461213c61212d88886126e6565b866122c390919063ffffffff16565b6122d990919063ffffffff16565b905061219e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161223e91906129ac565b60405180910390a36000601854118015612262575060185461226086866126e6565b115b1561229d5761229c3061dead612297601854612289600e54896122d990919063ffffffff16565b6122c390919063ffffffff16565b6112a4565b5b6122b0818461128e90919063ffffffff16565b9150506122bc565b8190505b9392505050565b600081836122d19190612d95565b905092915050565b600081836122e7919061344f565b905092915050565b6000600267ffffffffffffffff81111561230c5761230b613480565b5b60405190808252806020026020018201604052801561233a5781602001602082028036833780820191505090505b5090503081600081518110612352576123516134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190612e58565b81600181518110612431576124306134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124fc95949392919061359c565b600060405180830381600087803b15801561251657600080fd5b505af115801561252a573d6000803e3d6000fd5b505050505050565b61255f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125e896959493929190612ef3565b60606040518083038185885af1158015612606573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061262b9190612f69565b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156126de5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361274757601a5490506127ac565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a65760195490506127ac565b601b5490505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127dd826127b2565b9050919050565b6127ed816127d2565b82525050565b600060208201905061280860008301846127e4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561284857808201518184015260208101905061282d565b60008484015250505050565b6000601f19601f8301169050919050565b60006128708261280e565b61287a8185612819565b935061288a81856020860161282a565b61289381612854565b840191505092915050565b600060208201905081810360008301526128b88184612865565b905092915050565b600080fd5b6128ce816127d2565b81146128d957600080fd5b50565b6000813590506128eb816128c5565b92915050565b6000819050919050565b612904816128f1565b811461290f57600080fd5b50565b600081359050612921816128fb565b92915050565b6000806040838503121561293e5761293d6128c0565b5b600061294c858286016128dc565b925050602061295d85828601612912565b9150509250929050565b60008115159050919050565b61297c81612967565b82525050565b60006020820190506129976000830184612973565b92915050565b6129a6816128f1565b82525050565b60006020820190506129c1600083018461299d565b92915050565b6000806000606084860312156129e0576129df6128c0565b5b60006129ee868287016128dc565b93505060206129ff868287016128dc565b9250506040612a1086828701612912565b9150509250925092565b600060208284031215612a3057612a2f6128c0565b5b6000612a3e848285016128dc565b91505092915050565b600060ff82169050919050565b612a5d81612a47565b82525050565b6000602082019050612a786000830184612a54565b92915050565b612a8781612967565b8114612a9257600080fd5b50565b600081359050612aa481612a7e565b92915050565b60008060408385031215612ac157612ac06128c0565b5b6000612acf858286016128dc565b9250506020612ae085828601612a95565b9150509250929050565b600080600060608486031215612b0357612b026128c0565b5b6000612b11868287016128dc565b9350506020612b22868287016128dc565b9250506040612b33868287016128dc565b9150509250925092565b60008060408385031215612b5457612b536128c0565b5b6000612b62858286016128dc565b9250506020612b73858286016128dc565b9150509250929050565b6000612b88826127b2565b9050919050565b612b9881612b7d565b8114612ba357600080fd5b50565b600081359050612bb581612b8f565b92915050565b600060208284031215612bd157612bd06128c0565b5b6000612bdf84828501612ba6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c6e57808604811115612c4a57612c49612be8565b5b6001851615612c595780820291505b8081029050612c6785612c17565b9450612c2e565b94509492505050565b600082612c875760019050612d43565b81612c955760009050612d43565b8160018114612cab5760028114612cb557612ce4565b6001915050612d43565b60ff841115612cc757612cc6612be8565b5b8360020a915084821115612cde57612cdd612be8565b5b50612d43565b5060208310610133831016604e8410600b8410161715612d195782820a905083811115612d1457612d13612be8565b5b612d43565b612d268484846001612c24565b92509050818404811115612d3d57612d3c612be8565b5b81810290505b9392505050565b6000612d55826128f1565b9150612d6083612a47565b9250612d8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c77565b905092915050565b6000612da0826128f1565b9150612dab836128f1565b9250828202612db9816128f1565b91508282048414831517612dd057612dcf612be8565b5b5092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e0d600683612819565b9150612e1882612dd7565b602082019050919050565b60006020820190508181036000830152612e3c81612e00565b9050919050565b600081519050612e52816128c5565b92915050565b600060208284031215612e6e57612e6d6128c0565b5b6000612e7c84828501612e43565b91505092915050565b6000604082019050612e9a60008301856127e4565b612ea760208301846127e4565b9392505050565b6000819050919050565b6000819050919050565b6000612edd612ed8612ed384612eae565b612eb8565b6128f1565b9050919050565b612eed81612ec2565b82525050565b600060c082019050612f0860008301896127e4565b612f15602083018861299d565b612f226040830187612ee4565b612f2f6060830186612ee4565b612f3c60808301856127e4565b612f4960a083018461299d565b979650505050505050565b600081519050612f63816128fb565b92915050565b600080600060608486031215612f8257612f816128c0565b5b6000612f9086828701612f54565b9350506020612fa186828701612f54565b9250506040612fb286828701612f54565b9150509250925092565b6000612fd7612fd2612fcd846127b2565b612eb8565b6127b2565b9050919050565b6000612fe982612fbc565b9050919050565b6000612ffb82612fde565b9050919050565b61300b81612ff0565b82525050565b60006020820190506130266000830184613002565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483612819565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061311a602283612819565b9150613125826130be565b604082019050919050565b600060208201905081810360008301526131498161310d565b9050919050565b600061315b826128f1565b9150613166836128f1565b925082820390508181111561317e5761317d612be8565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e0602583612819565b91506131eb82613184565b604082019050919050565b6000602082019050818103600083015261320f816131d3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613272602383612819565b915061327d82613216565b604082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006132de600e83612819565b91506132e9826132a8565b602082019050919050565b6000602082019050818103600083015261330d816132d1565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061334a601e83612819565b915061335582613314565b602082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006133b6601183612819565b91506133c182613380565b602082019050919050565b600060208201905081810360008301526133e5816133a9565b9050919050565b60006133f7826128f1565b9150613402836128f1565b925082820190508082111561341a57613419612be8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061345a826128f1565b9150613465836128f1565b92508261347557613474613420565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613513816127d2565b82525050565b6000613525838361350a565b60208301905092915050565b6000602082019050919050565b6000613549826134de565b61355381856134e9565b935061355e836134fa565b8060005b8381101561358f5781516135768882613519565b975061358183613531565b925050600181019050613562565b5085935050505092915050565b600060a0820190506135b1600083018861299d565b6135be6020830187612ee4565b81810360408301526135d0818661353e565b90506135df60608301856127e4565b6135ec608083018461299d565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c75a7e0e1a7aaef5557bbf9a929016e409166facffdaa0d533b8e5b8438618e564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806365a46762116100ab578063a594412d1161006f578063a594412d146103f0578063a9059cbb1461041b578063bca238aa14610458578063dd62ed3e14610495578063f2fde38b146104d2578063f8f3c5a9146104fb57610140565b806365a467621461031d57806370a0823114610346578063715018a614610383578063893d20e81461039a57806395d89b41146103c557610140565b806323b872dd116100fd57806323b872dd1461022e5780632f54bf6e1461026b578063313ce567146102a857806348ff2b8b146102d357806351cd7cc3146102fc57806356cd40e71461030657610140565b8063056939da1461014557806306fdde0314610170578063095ea7b31461019b57806314f7ceea146101d857806318160ddd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610526565b60405161016791906127f3565b60405180910390f35b34801561017c57600080fd5b5061018561054c565b604051610192919061289e565b60405180910390f35b3480156101a757600080fd5b506101c260048036038101906101bd9190612927565b610589565b6040516101cf9190612982565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906129ac565b60405180910390f35b34801561020f57600080fd5b506102186105a6565b60405161022591906129ac565b60405180910390f35b34801561023a57600080fd5b50610255600480360381019061025091906129c7565b610602565b6040516102629190612982565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190612a1a565b6106cd565b60405161029f9190612982565b60405180910390f35b3480156102b457600080fd5b506102bd610726565b6040516102ca9190612a63565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612aaa565b61072f565b005b6103046107d2565b005b34801561031257600080fd5b5061031b610b31565b005b34801561032957600080fd5b50610344600480360381019061033f9190612aea565b610be7565b005b34801561035257600080fd5b5061036d60048036038101906103689190612a1a565b610dff565b60405161037a91906129ac565b60405180910390f35b34801561038f57600080fd5b50610398610e48565b005b3480156103a657600080fd5b506103af610ed3565b6040516103bc91906127f3565b60405180910390f35b3480156103d157600080fd5b506103da610efc565b6040516103e7919061289e565b60405180910390f35b3480156103fc57600080fd5b50610405610f39565b60405161041291906129ac565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d9190612927565b610f3f565b60405161044f9190612982565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612a1a565b610f56565b60405161048c9190612982565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612b3d565b610f76565b6040516104c991906129ac565b60405180910390f35b3480156104de57600080fd5b506104f960048036038101906104f49190612bbb565b610ffd565b005b34801561050757600080fd5b506105106110bf565b60405161051d91906129ac565b60405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600f81526020017f534845524c4f434b20484f4c4d45530000000000000000000000000000000000815250905090565b60006105963384846110c5565b6001905092915050565b60085481565b60006105fd6105b56000610dff565b6105ef6105c361dead610dff565b6009600a6105d19190612d4a565b6402540be4006105e19190612d95565b61128e90919063ffffffff16565b61128e90919063ffffffff16565b905090565b600061060f8484846112a4565b6106c284336106bd856040518060600160405280602881526020016135f760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2d9092919063ffffffff16565b6110c5565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610738336106cd565b610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90612e23565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6107db336106cd565b61081a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081190612e23565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a49190612e58565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f9190612e58565b6040518363ffffffff1660e01b815260040161094c929190612e85565b6020604051808303816000875af115801561096b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098f9190612e58565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a4230600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610a8b30610dff565b60008033426040518863ffffffff1660e01b8152600401610ab196959493929190612ef3565b60606040518083038185885af1158015610acf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610af49190612f69565b5050506001601160016101000a81548160ff0219169083151502179055506001601160006101000a81548160ff0219169083151502179055505050565b610b3a336106cd565b610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612e23565b60405180910390fd5b6009600a610b879190612d4a565b6402540be400610b979190612d95565b6006819055506009600a610bab9190612d4a565b6402540be400610bbb9190612d95565b6007819055506009600a610bcf9190612d4a565b6402540be400610bdf9190612d95565b600881905550565b610bf0336106cd565b610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690612e23565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e51336106cd565b610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790612e23565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f534845524c4f434b000000000000000000000000000000000000000000000000815250905090565b60075481565b6000610f4c3384846112a4565b6001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611006336106cd565b611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90612e23565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110b49190613011565b60405180910390a150565b60065481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061309e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90613130565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161128191906129ac565b60405180910390a3505050565b6000818361129c9190613150565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906131f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613288565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114265750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561147b57601160009054906101000a900460ff1661147a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611471906132f4565b60405180910390fd5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561151f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115795750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115b3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561164f5760085461160d82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b111561164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613360565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461179257600754811115806116fe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117525750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611788906133cc565b60405180910390fd5b5b600654811115806117ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118405750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61187f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611876906133cc565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156119265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119465760016012600082825461193e91906133ec565b925050819055505b611951838383611b98565b1561196a57611961600954611cd2565b60006012819055505b6119c6611978848385611f3f565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128e90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a158484611f79565b611a1f5781611a2b565b611a2a848484612027565b5b9050611a7f81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b1f91906129ac565b60405180910390a350505050565b6000838311158290611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c919061289e565b60405180910390fd5b5082840390509392505050565b60008183611b9091906133ec565b905092915050565b600080600a5483101590506000600954611bb130610dff565b10159050601360009054906101000a900460ff16158015611bde5750601160019054906101000a900460ff165b8015611bf65750601160009054906101000a900460ff165b8015611bff5750815b8015611c555750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cae5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611cbe575060145460125410155b8015611cc75750805b925050509392505050565b6001601360006101000a81548160ff0219169083151502179055506000611d406002611d32600d54611d24600c54611d166001601054611b8290919063ffffffff16565b611b8290919063ffffffff16565b611b8290919063ffffffff16565b6122c390919063ffffffff16565b90506000611d6b82611d5d601054866122c390919063ffffffff16565b6122d990919063ffffffff16565b90506000611d82828561128e90919063ffffffff16565b90506000479050611d92826122ef565b6000611da7824761128e90919063ffffffff16565b90506000611dd2611dc36010548861128e90919063ffffffff16565b836122d990919063ffffffff16565b90506000611deb601054836122c390919063ffffffff16565b90506000811115611e0157611e008682612532565b5b6000611e2b600c54611e1d6002866122c390919063ffffffff16565b6122c390919063ffffffff16565b90506000811115611ea057601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e9e573d6000803e3d6000fd5b505b60004790506000811115611f1857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f16573d6000803e3d6000fd5b505b5050505050505050506000601360006101000a81548160ff02191690831515021790555050565b6000611f4b8483612632565b15611f59576001600b819055505b611f638483612632565b611f6d5782611f70565b60005b90509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120d05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121065760006120ed6001600b5461128e90919063ffffffff16565b905061210281846122d990919063ffffffff16565b9250505b600061211285856126e6565b11156122b857600061214a600e5461213c61212d88886126e6565b866122c390919063ffffffff16565b6122d990919063ffffffff16565b905061219e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161223e91906129ac565b60405180910390a36000601854118015612262575060185461226086866126e6565b115b1561229d5761229c3061dead612297601854612289600e54896122d990919063ffffffff16565b6122c390919063ffffffff16565b6112a4565b5b6122b0818461128e90919063ffffffff16565b9150506122bc565b8190505b9392505050565b600081836122d19190612d95565b905092915050565b600081836122e7919061344f565b905092915050565b6000600267ffffffffffffffff81111561230c5761230b613480565b5b60405190808252806020026020018201604052801561233a5781602001602082028036833780820191505090505b5090503081600081518110612352576123516134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190612e58565b81600181518110612431576124306134af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124fc95949392919061359c565b600060405180830381600087803b15801561251657600080fd5b505af115801561252a573d6000803e3d6000fd5b505050505050565b61255f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125e896959493929190612ef3565b60606040518083038185885af1158015612606573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061262b9190612f69565b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156126de5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361274757601a5490506127ac565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a65760195490506127ac565b601b5490505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127dd826127b2565b9050919050565b6127ed816127d2565b82525050565b600060208201905061280860008301846127e4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561284857808201518184015260208101905061282d565b60008484015250505050565b6000601f19601f8301169050919050565b60006128708261280e565b61287a8185612819565b935061288a81856020860161282a565b61289381612854565b840191505092915050565b600060208201905081810360008301526128b88184612865565b905092915050565b600080fd5b6128ce816127d2565b81146128d957600080fd5b50565b6000813590506128eb816128c5565b92915050565b6000819050919050565b612904816128f1565b811461290f57600080fd5b50565b600081359050612921816128fb565b92915050565b6000806040838503121561293e5761293d6128c0565b5b600061294c858286016128dc565b925050602061295d85828601612912565b9150509250929050565b60008115159050919050565b61297c81612967565b82525050565b60006020820190506129976000830184612973565b92915050565b6129a6816128f1565b82525050565b60006020820190506129c1600083018461299d565b92915050565b6000806000606084860312156129e0576129df6128c0565b5b60006129ee868287016128dc565b93505060206129ff868287016128dc565b9250506040612a1086828701612912565b9150509250925092565b600060208284031215612a3057612a2f6128c0565b5b6000612a3e848285016128dc565b91505092915050565b600060ff82169050919050565b612a5d81612a47565b82525050565b6000602082019050612a786000830184612a54565b92915050565b612a8781612967565b8114612a9257600080fd5b50565b600081359050612aa481612a7e565b92915050565b60008060408385031215612ac157612ac06128c0565b5b6000612acf858286016128dc565b9250506020612ae085828601612a95565b9150509250929050565b600080600060608486031215612b0357612b026128c0565b5b6000612b11868287016128dc565b9350506020612b22868287016128dc565b9250506040612b33868287016128dc565b9150509250925092565b60008060408385031215612b5457612b536128c0565b5b6000612b62858286016128dc565b9250506020612b73858286016128dc565b9150509250929050565b6000612b88826127b2565b9050919050565b612b9881612b7d565b8114612ba357600080fd5b50565b600081359050612bb581612b8f565b92915050565b600060208284031215612bd157612bd06128c0565b5b6000612bdf84828501612ba6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c6e57808604811115612c4a57612c49612be8565b5b6001851615612c595780820291505b8081029050612c6785612c17565b9450612c2e565b94509492505050565b600082612c875760019050612d43565b81612c955760009050612d43565b8160018114612cab5760028114612cb557612ce4565b6001915050612d43565b60ff841115612cc757612cc6612be8565b5b8360020a915084821115612cde57612cdd612be8565b5b50612d43565b5060208310610133831016604e8410600b8410161715612d195782820a905083811115612d1457612d13612be8565b5b612d43565b612d268484846001612c24565b92509050818404811115612d3d57612d3c612be8565b5b81810290505b9392505050565b6000612d55826128f1565b9150612d6083612a47565b9250612d8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c77565b905092915050565b6000612da0826128f1565b9150612dab836128f1565b9250828202612db9816128f1565b91508282048414831517612dd057612dcf612be8565b5b5092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e0d600683612819565b9150612e1882612dd7565b602082019050919050565b60006020820190508181036000830152612e3c81612e00565b9050919050565b600081519050612e52816128c5565b92915050565b600060208284031215612e6e57612e6d6128c0565b5b6000612e7c84828501612e43565b91505092915050565b6000604082019050612e9a60008301856127e4565b612ea760208301846127e4565b9392505050565b6000819050919050565b6000819050919050565b6000612edd612ed8612ed384612eae565b612eb8565b6128f1565b9050919050565b612eed81612ec2565b82525050565b600060c082019050612f0860008301896127e4565b612f15602083018861299d565b612f226040830187612ee4565b612f2f6060830186612ee4565b612f3c60808301856127e4565b612f4960a083018461299d565b979650505050505050565b600081519050612f63816128fb565b92915050565b600080600060608486031215612f8257612f816128c0565b5b6000612f9086828701612f54565b9350506020612fa186828701612f54565b9250506040612fb286828701612f54565b9150509250925092565b6000612fd7612fd2612fcd846127b2565b612eb8565b6127b2565b9050919050565b6000612fe982612fbc565b9050919050565b6000612ffb82612fde565b9050919050565b61300b81612ff0565b82525050565b60006020820190506130266000830184613002565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483612819565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061311a602283612819565b9150613125826130be565b604082019050919050565b600060208201905081810360008301526131498161310d565b9050919050565b600061315b826128f1565b9150613166836128f1565b925082820390508181111561317e5761317d612be8565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e0602583612819565b91506131eb82613184565b604082019050919050565b6000602082019050818103600083015261320f816131d3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613272602383612819565b915061327d82613216565b604082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006132de600e83612819565b91506132e9826132a8565b602082019050919050565b6000602082019050818103600083015261330d816132d1565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061334a601e83612819565b915061335582613314565b602082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006133b6601183612819565b91506133c182613380565b602082019050919050565b600060208201905081810360008301526133e5816133a9565b9050919050565b60006133f7826128f1565b9150613402836128f1565b925082820190508082111561341a57613419612be8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061345a826128f1565b9150613465836128f1565b92508261347557613474613420565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613513816127d2565b82525050565b6000613525838361350a565b60208301905092915050565b6000602082019050919050565b6000613549826134de565b61355381856134e9565b935061355e836134fa565b8060005b8381101561358f5781516135768882613519565b975061358183613531565b925050600181019050613562565b5085935050505092915050565b600060a0820190506135b1600083018861299d565b6135be6020830187612ee4565b81810360408301526135d0818661353e565b90506135df60608301856127e4565b6135ec608083018461299d565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c75a7e0e1a7aaef5557bbf9a929016e409166facffdaa0d533b8e5b8438618e564736f6c63430008130033

Deployed Bytecode Sourcemap

4877:10299:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4982:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7976:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7039:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5653:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7178:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12552:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3739:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7316:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8132:538;;;:::i;:::-;;8678:164;;;;;;;;;;;;;:::i;:::-;;10664:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7389:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3832:77;;;;;;;;;;;;;:::i;:::-;;7614:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8049:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5585:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7698:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5466:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7843:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3622:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5521:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4982:21;;;;;;;;;;;;;:::o;7976:67::-;8013:13;8036:5;;;;;;;;;;;;;;;;;8029:12;;7976:67;:::o;7039:133::-;7114:4;7121:37;7130:10;7142:7;7151:6;7121:8;:37::i;:::-;7166:4;7159:11;;7039:133;;;;:::o;5653:57::-;;;;:::o;7178:132::-;7231:7;7248:60;7286:21;7304:1;7286:9;:21::i;:::-;7248:33;7265:15;5207:42;7265:9;:15::i;:::-;5166:1;5316:2;:15;;;;:::i;:::-;5298:14;:34;;;;:::i;:::-;7248:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;7241:67;;7178:132;:::o;12552:309::-;12650:4;12667:36;12677:6;12685:9;12696:6;12667:9;:36::i;:::-;12714:117;12723:6;12731:10;12743:87;12779:6;12743:87;;;;;;;;;;;;;;;;;:11;:19;12755:6;12743:19;;;;;;;;;;;;;;;:31;12763:10;12743:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;12714:8;:117::i;:::-;12849:4;12842:11;;12552:309;;;;;:::o;3739:87::-;3794:4;3819:5;;;;;;;;;;;3808:16;;:7;:16;;;3801:23;;3739:87;;;:::o;7316:67::-;7357:5;5166:1;7365:16;;7316:67;:::o;7498:110::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7598:8:::1;7572:13;:23;7586:8;7572:23;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7498:110:::0;;:::o;8132:538::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8191:17:::1;8221:42;8191:73;;8275:13;8302:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8291:40;;;8340:4;8347:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8291:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8275:87;;8382:7;8373:6;;:16;;;;;;;;;;;;;;;;;;8409:5;8400:6;;:14;;;;;;;;;;;;;;;;;;8425:53;8442:4;8457:6;;;;;;;;;;;8475:1;8466:11;8425:8;:53::i;:::-;8490:6;;;;;;;;;;;:22;;;8520:9;8539:4;8545:24;8563:4;8545:9;:24::i;:::-;8570:1;8572::::0;8574:10:::1;8585:15;8490:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8626:4;8612:11;;:18;;;;;;;;;;;;;;;;;;8658:4;8641:14;;:21;;;;;;;;;;;;;;;;;;8180:490;;8132:538::o:0;8678:164::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5166:1:::1;5316:2;:15;;;;:::i;:::-;5298:14;:34;;;;:::i;:::-;8730:11;:26;;;;5166:1;5316:2;:15;;;;:::i;:::-;5298:14;:34;;;;:::i;:::-;8767:15;:30;;;;5166:1;5316:2;:15;;;;:::i;:::-;5298:14;:34;;;;:::i;:::-;8808:11;:26;;;;8678:164::o:0;10664:311::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10791:10:::1;10778;;:23;;;;;;;;;;;;;;;;;;10817:10;10803:11;;:24;;;;;;;;;;;;;;;;;;10842:12;10829:10;;:25;;;;;;;;;;;;;;;;;;10893:4;10865:13;:25;10879:10;10865:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10927:4;10899:13;:25;10913:10;10899:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10963:4;10933:13;:27;10947:12;10933:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;10664:311:::0;;;:::o;7389:103::-;7455:7;7472:9;:18;7482:7;7472:18;;;;;;;;;;;;;;;;7465:25;;7389:103;;;:::o;3832:77::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3904:1:::1;3888:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;3832:77::o:0;7614:78::-;7666:7;7684:5;;;;;;;;;;;7677:12;;7614:78;:::o;8049:71::-;8088:13;8111:7;;;;;;;;;;;;;;;;;8104:14;;8049:71;:::o;5585:61::-;;;;:::o;7698:139::-;7776:4;7783:40;7793:10;7805:9;7816:6;7783:9;:40::i;:::-;7831:4;7824:11;;7698:139;;;;:::o;5466:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;7843:127::-;7924:7;7941:11;:18;7953:5;7941:18;;;;;;;;;;;;;;;:27;7960:7;7941:27;;;;;;;;;;;;;;;;7934:34;;7843:127;;;;:::o;3622:111::-;3530:19;3538:10;3530:7;:19::i;:::-;3522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3696:3:::1;3688:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3706:25;3727:3;3706:25;;;;;;:::i;:::-;;;;;;;;3622:111:::0;:::o;5521:57::-;;;;:::o;13345:335::-;13455:1;13438:19;;:5;:19;;;13430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:1;13517:21;;:7;:21;;;13509:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13618:6;13588:11;:18;13600:5;13588:18;;;;;;;;;;;;;;;:27;13607:7;13588:27;;;;;;;;;;;;;;;:36;;;;13656:7;13640:32;;13649:5;13640:32;;;13665:6;13640:32;;;;;;:::i;:::-;;;;;;;;13345:335;;;:::o;1442:98::-;1500:7;1531:1;1527;:5;;;;:::i;:::-;1520:12;;1442:98;;;;:::o;13688:1485::-;13803:1;13785:20;;:6;:20;;;13777:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13887:1;13866:23;;:9;:23;;;13858:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13944:13;:21;13958:6;13944:21;;;;;;;;;;;;;;;;;;;;;;;;;13943:22;:51;;;;;13970:13;:24;13984:9;13970:24;;;;;;;;;;;;;;;;;;;;;;;;;13969:25;13943:51;13940:123;;;14018:14;;;;;;;;;;;14010:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13940:123;14077:13;:21;14091:6;14077:21;;;;;;;;;;;;;;;;;;;;;;;;;14076:22;:51;;;;;14103:13;:24;14117:9;14103:24;;;;;;;;;;;;;;;;;;;;;;;;;14102:25;14076:51;:83;;;;;14152:6;;;;;;;;;;;14131:28;;:9;:28;;;;14076:83;:113;;;;;5207:42;14163:26;;:9;:26;;;;14076:113;14073:236;;;14251:11;;14214:32;14239:6;14214:9;:20;14224:9;14214:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14213:49;;14205:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;14073:236;14332:6;;;;;;;;;;;14322:16;;:6;:16;;;14319:155;;14372:15;;14362:6;:25;;:50;;;;14391:13;:21;14405:6;14391:21;;;;;;;;;;;;;;;;;;;;;;;;;14362:50;:78;;;;14416:13;:24;14430:9;14416:24;;;;;;;;;;;;;;;;;;;;;;;;;14362:78;14354:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;14319:155;14502:11;;14492:6;:21;;:46;;;;14517:13;:21;14531:6;14517:21;;;;;;;;;;;;;;;;;;;;;;;;;14492:46;:74;;;;14542:13;:24;14556:9;14542:24;;;;;;;;;;;;;;;;;;;;;;;;;14492:74;14484:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;14616:6;;;;;;;;;;;14603:19;;:9;:19;;;:45;;;;;14627:13;:21;14641:6;14627:21;;;;;;;;;;;;;;;;;;;;;;;;;14626:22;14603:45;14600:99;;;14685:1;14664:9;;:23;;;;;;;:::i;:::-;;;;;;;;14600:99;14712:41;14727:6;14735:9;14746:6;14712:14;:41::i;:::-;14709:125;;;14769:29;14784:13;;14769:14;:29::i;:::-;14820:1;14800:9;:22;;;;14709:125;14864:57;14886:34;14894:6;14902;14910:9;14886:7;:34::i;:::-;14864:9;:17;14874:6;14864:17;;;;;;;;;;;;;;;;:21;;:57;;;;:::i;:::-;14844:9;:17;14854:6;14844:17;;;;;;;;;;;;;;;:77;;;;14932:22;14957:29;14968:6;14976:9;14957:10;:29::i;:::-;:75;;15026:6;14957:75;;;14989:34;14997:6;15005:9;15016:6;14989:7;:34::i;:::-;14957:75;14932:100;;15066:40;15091:14;15066:9;:20;15076:9;15066:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15043:9;:20;15053:9;15043:20;;;;;;;;;;;;;;;:63;;;;15139:9;15122:43;;15131:6;15122:43;;;15150:14;15122:43;;;;;;:::i;:::-;;;;;;;;13766:1407;13688:1485;;;:::o;1760:240::-;1880:7;1938:1;1933;:6;;1941:12;1925:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1980:1;1976;:5;1969:12;;1760:240;;;;;:::o;1336:98::-;1394:7;1425:1;1421;:5;;;;:::i;:::-;1414:12;;1336:98;;;;:::o;10253:403::-;10351:4;10368:13;10394:14;;10384:6;:24;;10368:40;;10419:19;10469:13;;10441:24;10459:4;10441:9;:24::i;:::-;:41;;10419:63;;10501:8;;;;;;;;;;;10500:9;:24;;;;;10513:11;;;;;;;;;;;10500:24;:42;;;;;10528:14;;;;;;;;;;;10500:42;:54;;;;;10546:8;10500:54;:80;;;;;10559:13;:21;10573:6;10559:21;;;;;;;;;;;;;;;;;;;;;;;;;10558:22;10500:80;:103;;;;;10597:6;;;;;;;;;;;10584:19;;:9;:19;;;10500:103;:130;;;;;10620:10;;10607:9;;:23;;10500:130;:148;;;;;10634:14;10500:148;10493:155;;;;10253:403;;;;;:::o;8850:1051::-;6634:4;6623:8;;:15;;;;;;;;;;;;;;;;;;8922:20:::1;8945:66;9009:1;8946:57;8988:14;;8946:37;8970:12;;8946:19;8963:1;8946:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;8945:63;;:66;;;;:::i;:::-;8922:89;;9022:32;9057:46;9090:12;9057:28;9072:12;;9057:10;:14;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;9022:81;;9114:14;9131:40;9146:24;9131:10;:14;;:40;;;;:::i;:::-;9114:57;;9182:22;9207:21;9182:46;;9239:21;9253:6;9239:13;:21::i;:::-;9271:20;9294:41;9320:14;9294:21;:25;;:41;;;;:::i;:::-;9271:64;;9346:19;9367:48;9384:30;9401:12;;9384;:16;;:30;;;;:::i;:::-;9367:12;:16;;:48;;;;:::i;:::-;9346:69;;9426:29;9458;9474:12;;9458:11;:15;;:29;;;;:::i;:::-;9426:61;;9533:1;9501:21;:34;9498:103;;;9537:61;9550:24;9576:21;9537:12;:61::i;:::-;9498:103;9611:20;9634:36;9657:12;;9634:18;9650:1;9634:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;9611:59;;9699:1;9684:12;:16;9681:65;;;9710:10;;;;;;;;;;;9702:28;;:42;9731:12;9702:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9681:65;9756:23;9782:21;9756:47;;9843:1;9817:15;:28;9814:80;;;9855:10;;;;;;;;;;;9847:28;;:45;9876:15;9847:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9814:80;8911:990;;;;;;;;;6654:5:::0;6643:8;;:16;;;;;;;;;;;;;;;;;;8850:1051;:::o;12869:228::-;12954:7;12978:32;12992:6;13000:9;12978:13;:32::i;:::-;12974:53;;;13024:1;13013:8;:12;;;;12974:53;13044:32;13058:6;13066:9;13044:13;:32::i;:::-;:45;;13083:6;13044:45;;;13079:1;13044:45;13037:52;;12869:228;;;;;:::o;11422:161::-;11500:4;11525:13;:21;11539:6;11525:21;;;;;;;;;;;;;;;;;;;;;;;;;11524:22;:51;;;;;11551:13;:24;11565:9;11551:24;;;;;;;;;;;;;;;;;;;;;;;;;11550:25;11524:51;11517:58;;11422:161;;;;:::o;11755:789::-;11841:7;11877:6;;;;;;;;;;;11864:19;;:9;:19;;;:45;;;;;11888:13;:21;11902:6;11888:21;;;;;;;;;;;;;;;;;;;;;;;;;11887:22;11864:45;11861:112;;;11912:13;11928:15;11941:1;11928:8;;:12;;:15;;;;:::i;:::-;11912:31;;11954:17;11965:5;11954:6;:10;;:17;;;;:::i;:::-;11945:26;;11910:63;11861:112;12015:1;11986:26;11994:6;12002:9;11986:7;:26::i;:::-;:30;11983:530;;;12032:17;12052:55;12095:11;;12052:38;12063:26;12071:6;12079:9;12063:7;:26::i;:::-;12052:6;:10;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;12032:75;;12149:39;12178:9;12149;:24;12167:4;12149:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12122:9;:24;12140:4;12122:24;;;;;;;;;;;;;;;:66;;;;12233:4;12208:42;;12217:6;12208:42;;;12240:9;12208:42;;;;;;:::i;:::-;;;;;;;;12292:1;12268:13;;:26;:72;;;;;12327:13;;12298:26;12306:6;12314:9;12298:7;:26::i;:::-;:42;12268:72;12265:194;;;12360:83;12378:4;5207:42;12400;12428:13;;12400:23;12411:11;;12400:6;:10;;:23;;;;:::i;:::-;:27;;:42;;;;:::i;:::-;12360:9;:83::i;:::-;12265:194;12480:21;12491:9;12480:6;:10;;:21;;;;:::i;:::-;12473:28;;;;;11983:530;12530:6;12523:13;;11755:789;;;;;;:::o;1654:98::-;1712:7;1743:1;1739;:5;;;;:::i;:::-;1732:12;;1654:98;;;;:::o;2255:::-;2313:7;2344:1;2340;:5;;;;:::i;:::-;2333:12;;2255:98;;;;:::o;10983:431::-;11046:21;11084:1;11070:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11046:40;;11115:4;11097;11102:1;11097:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11141:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11131:4;11136:1;11131:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11165:53;11182:4;11197:6;;;;;;;;;;;11206:11;11165:8;:53::i;:::-;11229:6;;;;;;;;;;;:57;;;11301:11;11327:1;11343:4;11370;11390:15;11229:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11035:379;10983:431;:::o;9909:336::-;9990:53;10007:4;10022:6;;;;;;;;;;;10031:11;9990:8;:53::i;:::-;10054:6;;;;;;;;;;;:22;;;10084:9;10117:4;10137:11;10163:1;10179;10195:11;;;;;;;;;;;10221:15;10054:183;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9909:336;;:::o;11591:156::-;11672:4;11709:6;;;;;;;;;;;11696:19;;:9;:19;;;:43;;;;;11729:10;;;;;;;;;;;11719:20;;:6;:20;;;11696:43;11689:50;;11591:156;;;;:::o;13105:232::-;13180:7;13216:6;;;;;;;;;;;13203:19;;:9;:19;;;13200:46;;13231:13;;13224:20;;;;13200:46;13269:6;;;;;;;;;;;13259:16;;:6;:16;;;13256:42;;13284:12;;13277:19;;;;13256:42;13315:14;;13308:21;;13105:232;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:329::-;4834:6;4883:2;4871:9;4862:7;4858:23;4854:32;4851:119;;;4889:79;;:::i;:::-;4851:119;5009:1;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4980:117;4775:329;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::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:474::-;6968:6;6976;7025:2;7013:9;7004:7;7000:23;6996:32;6993:119;;;7031:79;;:::i;:::-;6993:119;7151:1;7176:53;7221:7;7212:6;7201:9;7197:22;7176:53;:::i;:::-;7166:63;;7122:117;7278:2;7304:53;7349:7;7340:6;7329:9;7325:22;7304:53;:::i;:::-;7294:63;;7249:118;6900:474;;;;;:::o;7380:104::-;7425:7;7454:24;7472:5;7454:24;:::i;:::-;7443:35;;7380:104;;;:::o;7490:138::-;7571:32;7597:5;7571:32;:::i;:::-;7564:5;7561:43;7551:71;;7618:1;7615;7608:12;7551:71;7490:138;:::o;7634:155::-;7688:5;7726:6;7713:20;7704:29;;7742:41;7777:5;7742:41;:::i;:::-;7634:155;;;;:::o;7795:345::-;7862:6;7911:2;7899:9;7890:7;7886:23;7882:32;7879:119;;;7917:79;;:::i;:::-;7879:119;8037:1;8062:61;8115:7;8106:6;8095:9;8091:22;8062:61;:::i;:::-;8052:71;;8008:125;7795:345;;;;:::o;8146:180::-;8194:77;8191:1;8184:88;8291:4;8288:1;8281:15;8315:4;8312:1;8305:15;8332:102;8374:8;8421:5;8418:1;8414:13;8393:34;;8332:102;;;:::o;8440:848::-;8501:5;8508:4;8532:6;8523:15;;8556:5;8547:14;;8570:712;8591:1;8581:8;8578:15;8570:712;;;8686:4;8681:3;8677:14;8671:4;8668:24;8665:50;;;8695:18;;:::i;:::-;8665:50;8745:1;8735:8;8731:16;8728:451;;;9160:4;9153:5;9149:16;9140:25;;8728:451;9210:4;9204;9200:15;9192:23;;9240:32;9263:8;9240:32;:::i;:::-;9228:44;;8570:712;;;8440:848;;;;;;;:::o;9294:1073::-;9348:5;9539:8;9529:40;;9560:1;9551:10;;9562:5;;9529:40;9588:4;9578:36;;9605:1;9596:10;;9607:5;;9578:36;9674:4;9722:1;9717:27;;;;9758:1;9753:191;;;;9667:277;;9717:27;9735:1;9726:10;;9737:5;;;9753:191;9798:3;9788:8;9785:17;9782:43;;;9805:18;;:::i;:::-;9782:43;9854:8;9851:1;9847:16;9838:25;;9889:3;9882:5;9879:14;9876:40;;;9896:18;;:::i;:::-;9876:40;9929:5;;;9667:277;;10053:2;10043:8;10040:16;10034:3;10028:4;10025:13;10021:36;10003:2;9993:8;9990:16;9985:2;9979:4;9976:12;9972:35;9956:111;9953:246;;;10109:8;10103:4;10099:19;10090:28;;10144:3;10137:5;10134:14;10131:40;;;10151:18;;:::i;:::-;10131:40;10184:5;;9953:246;10224:42;10262:3;10252:8;10246:4;10243:1;10224:42;:::i;:::-;10209:57;;;;10298:4;10293:3;10289:14;10282:5;10279:25;10276:51;;;10307:18;;:::i;:::-;10276:51;10356:4;10349:5;10345:16;10336:25;;9294:1073;;;;;;:::o;10373:281::-;10431:5;10455:23;10473:4;10455:23;:::i;:::-;10447:31;;10499:25;10515:8;10499:25;:::i;:::-;10487:37;;10543:104;10580:66;10570:8;10564:4;10543:104;:::i;:::-;10534:113;;10373:281;;;;:::o;10660:410::-;10700:7;10723:20;10741:1;10723:20;:::i;:::-;10718:25;;10757:20;10775:1;10757:20;:::i;:::-;10752:25;;10812:1;10809;10805:9;10834:30;10852:11;10834:30;:::i;:::-;10823:41;;11013:1;11004:7;11000:15;10997:1;10994:22;10974:1;10967:9;10947:83;10924:139;;11043:18;;:::i;:::-;10924:139;10708:362;10660:410;;;;:::o;11076:156::-;11216:8;11212:1;11204:6;11200:14;11193:32;11076:156;:::o;11238:365::-;11380:3;11401:66;11465:1;11460:3;11401:66;:::i;:::-;11394:73;;11476:93;11565:3;11476:93;:::i;:::-;11594:2;11589:3;11585:12;11578:19;;11238:365;;;:::o;11609:419::-;11775:4;11813:2;11802:9;11798:18;11790:26;;11862:9;11856:4;11852:20;11848:1;11837:9;11833:17;11826:47;11890:131;12016:4;11890:131;:::i;:::-;11882:139;;11609:419;;;:::o;12034:143::-;12091:5;12122:6;12116:13;12107:22;;12138:33;12165:5;12138:33;:::i;:::-;12034:143;;;;:::o;12183:351::-;12253:6;12302:2;12290:9;12281:7;12277:23;12273:32;12270:119;;;12308:79;;:::i;:::-;12270:119;12428:1;12453:64;12509:7;12500:6;12489:9;12485:22;12453:64;:::i;:::-;12443:74;;12399:128;12183:351;;;;:::o;12540:332::-;12661:4;12699:2;12688:9;12684:18;12676:26;;12712:71;12780:1;12769:9;12765:17;12756:6;12712:71;:::i;:::-;12793:72;12861:2;12850:9;12846:18;12837:6;12793:72;:::i;:::-;12540:332;;;;;:::o;12878:85::-;12923:7;12952:5;12941:16;;12878:85;;;:::o;12969:60::-;12997:3;13018:5;13011:12;;12969:60;;;:::o;13035:158::-;13093:9;13126:61;13144:42;13153:32;13179:5;13153:32;:::i;:::-;13144:42;:::i;:::-;13126:61;:::i;:::-;13113:74;;13035:158;;;:::o;13199:147::-;13294:45;13333:5;13294:45;:::i;:::-;13289:3;13282:58;13199:147;;:::o;13352:807::-;13601:4;13639:3;13628:9;13624:19;13616:27;;13653:71;13721:1;13710:9;13706:17;13697:6;13653:71;:::i;:::-;13734:72;13802:2;13791:9;13787:18;13778:6;13734:72;:::i;:::-;13816:80;13892:2;13881:9;13877:18;13868:6;13816:80;:::i;:::-;13906;13982:2;13971:9;13967:18;13958:6;13906:80;:::i;:::-;13996:73;14064:3;14053:9;14049:19;14040:6;13996:73;:::i;:::-;14079;14147:3;14136:9;14132:19;14123:6;14079:73;:::i;:::-;13352:807;;;;;;;;;:::o;14165:143::-;14222:5;14253:6;14247:13;14238:22;;14269:33;14296:5;14269:33;:::i;:::-;14165:143;;;;:::o;14314:663::-;14402:6;14410;14418;14467:2;14455:9;14446:7;14442:23;14438:32;14435:119;;;14473:79;;:::i;:::-;14435:119;14593:1;14618:64;14674:7;14665:6;14654:9;14650:22;14618:64;:::i;:::-;14608:74;;14564:128;14731:2;14757:64;14813:7;14804:6;14793:9;14789:22;14757:64;:::i;:::-;14747:74;;14702:129;14870:2;14896:64;14952:7;14943:6;14932:9;14928:22;14896:64;:::i;:::-;14886:74;;14841:129;14314:663;;;;;:::o;14983:142::-;15033:9;15066:53;15084:34;15093:24;15111:5;15093:24;:::i;:::-;15084:34;:::i;:::-;15066:53;:::i;:::-;15053:66;;14983:142;;;:::o;15131:126::-;15181:9;15214:37;15245:5;15214:37;:::i;:::-;15201:50;;15131:126;;;:::o;15263:134::-;15321:9;15354:37;15385:5;15354:37;:::i;:::-;15341:50;;15263:134;;;:::o;15403:147::-;15498:45;15537:5;15498:45;:::i;:::-;15493:3;15486:58;15403:147;;:::o;15556:238::-;15657:4;15695:2;15684:9;15680:18;15672:26;;15708:79;15784:1;15773:9;15769:17;15760:6;15708:79;:::i;:::-;15556:238;;;;:::o;15800:223::-;15940:34;15936:1;15928:6;15924:14;15917:58;16009:6;16004:2;15996:6;15992:15;15985:31;15800:223;:::o;16029:366::-;16171:3;16192:67;16256:2;16251:3;16192:67;:::i;:::-;16185:74;;16268:93;16357:3;16268:93;:::i;:::-;16386:2;16381:3;16377:12;16370:19;;16029:366;;;:::o;16401:419::-;16567:4;16605:2;16594:9;16590:18;16582:26;;16654:9;16648:4;16644:20;16640:1;16629:9;16625:17;16618:47;16682:131;16808:4;16682:131;:::i;:::-;16674:139;;16401:419;;;:::o;16826:221::-;16966:34;16962:1;16954:6;16950:14;16943:58;17035:4;17030:2;17022:6;17018:15;17011:29;16826:221;:::o;17053:366::-;17195:3;17216:67;17280:2;17275:3;17216:67;:::i;:::-;17209:74;;17292:93;17381:3;17292:93;:::i;:::-;17410:2;17405:3;17401:12;17394:19;;17053:366;;;:::o;17425:419::-;17591:4;17629:2;17618:9;17614:18;17606:26;;17678:9;17672:4;17668:20;17664:1;17653:9;17649:17;17642:47;17706:131;17832:4;17706:131;:::i;:::-;17698:139;;17425:419;;;:::o;17850:194::-;17890:4;17910:20;17928:1;17910:20;:::i;:::-;17905:25;;17944:20;17962:1;17944:20;:::i;:::-;17939:25;;17988:1;17985;17981:9;17973:17;;18012:1;18006:4;18003:11;18000:37;;;18017:18;;:::i;:::-;18000:37;17850:194;;;;:::o;18050:224::-;18190:34;18186:1;18178:6;18174:14;18167:58;18259:7;18254:2;18246:6;18242:15;18235:32;18050:224;:::o;18280:366::-;18422:3;18443:67;18507:2;18502:3;18443:67;:::i;:::-;18436:74;;18519:93;18608:3;18519:93;:::i;:::-;18637:2;18632:3;18628:12;18621:19;;18280:366;;;:::o;18652:419::-;18818:4;18856:2;18845:9;18841:18;18833:26;;18905:9;18899:4;18895:20;18891:1;18880:9;18876:17;18869:47;18933:131;19059:4;18933:131;:::i;:::-;18925:139;;18652:419;;;:::o;19077:222::-;19217:34;19213:1;19205:6;19201:14;19194:58;19286:5;19281:2;19273:6;19269:15;19262:30;19077:222;:::o;19305:366::-;19447:3;19468:67;19532:2;19527:3;19468:67;:::i;:::-;19461:74;;19544:93;19633:3;19544:93;:::i;:::-;19662:2;19657:3;19653:12;19646:19;;19305:366;;;:::o;19677:419::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19930:9;19924:4;19920:20;19916:1;19905:9;19901:17;19894:47;19958:131;20084:4;19958:131;:::i;:::-;19950:139;;19677:419;;;:::o;20102:164::-;20242:16;20238:1;20230:6;20226:14;20219:40;20102:164;:::o;20272:366::-;20414:3;20435:67;20499:2;20494:3;20435:67;:::i;:::-;20428:74;;20511:93;20600:3;20511:93;:::i;:::-;20629:2;20624:3;20620:12;20613:19;;20272:366;;;:::o;20644:419::-;20810:4;20848:2;20837:9;20833:18;20825:26;;20897:9;20891:4;20887:20;20883:1;20872:9;20868:17;20861:47;20925:131;21051:4;20925:131;:::i;:::-;20917:139;;20644:419;;;:::o;21069:180::-;21209:32;21205:1;21197:6;21193:14;21186:56;21069:180;:::o;21255:366::-;21397:3;21418:67;21482:2;21477:3;21418:67;:::i;:::-;21411:74;;21494:93;21583:3;21494:93;:::i;:::-;21612:2;21607:3;21603:12;21596:19;;21255:366;;;:::o;21627:419::-;21793:4;21831:2;21820:9;21816:18;21808:26;;21880:9;21874:4;21870:20;21866:1;21855:9;21851:17;21844:47;21908:131;22034:4;21908:131;:::i;:::-;21900:139;;21627:419;;;:::o;22052:167::-;22192:19;22188:1;22180:6;22176:14;22169:43;22052:167;:::o;22225:366::-;22367:3;22388:67;22452:2;22447:3;22388:67;:::i;:::-;22381:74;;22464:93;22553:3;22464:93;:::i;:::-;22582:2;22577:3;22573:12;22566:19;;22225:366;;;:::o;22597:419::-;22763:4;22801:2;22790:9;22786:18;22778:26;;22850:9;22844:4;22840:20;22836:1;22825:9;22821:17;22814:47;22878:131;23004:4;22878:131;:::i;:::-;22870:139;;22597:419;;;:::o;23022:191::-;23062:3;23081:20;23099:1;23081:20;:::i;:::-;23076:25;;23115:20;23133:1;23115:20;:::i;:::-;23110:25;;23158:1;23155;23151:9;23144:16;;23179:3;23176:1;23173:10;23170:36;;;23186:18;;:::i;:::-;23170:36;23022:191;;;;:::o;23219:180::-;23267:77;23264:1;23257:88;23364:4;23361:1;23354:15;23388:4;23385:1;23378:15;23405:185;23445:1;23462:20;23480:1;23462:20;:::i;:::-;23457:25;;23496:20;23514:1;23496:20;:::i;:::-;23491:25;;23535:1;23525:35;;23540:18;;:::i;:::-;23525:35;23582:1;23579;23575:9;23570:14;;23405:185;;;;:::o;23596:180::-;23644:77;23641:1;23634:88;23741:4;23738:1;23731:15;23765:4;23762:1;23755:15;23782:180;23830:77;23827:1;23820:88;23927:4;23924:1;23917:15;23951:4;23948:1;23941:15;23968:114;24035:6;24069:5;24063:12;24053:22;;23968:114;;;:::o;24088:184::-;24187:11;24221:6;24216:3;24209:19;24261:4;24256:3;24252:14;24237:29;;24088:184;;;;:::o;24278:132::-;24345:4;24368:3;24360:11;;24398:4;24393:3;24389:14;24381:22;;24278:132;;;:::o;24416:108::-;24493:24;24511:5;24493:24;:::i;:::-;24488:3;24481:37;24416:108;;:::o;24530:179::-;24599:10;24620:46;24662:3;24654:6;24620:46;:::i;:::-;24698:4;24693:3;24689:14;24675:28;;24530:179;;;;:::o;24715:113::-;24785:4;24817;24812:3;24808:14;24800:22;;24715:113;;;:::o;24864:732::-;24983:3;25012:54;25060:5;25012:54;:::i;:::-;25082:86;25161:6;25156:3;25082:86;:::i;:::-;25075:93;;25192:56;25242:5;25192:56;:::i;:::-;25271:7;25302:1;25287:284;25312:6;25309:1;25306:13;25287:284;;;25388:6;25382:13;25415:63;25474:3;25459:13;25415:63;:::i;:::-;25408:70;;25501:60;25554:6;25501:60;:::i;:::-;25491:70;;25347:224;25334:1;25331;25327:9;25322:14;;25287:284;;;25291:14;25587:3;25580:10;;24988:608;;;24864:732;;;;:::o;25602:831::-;25865:4;25903:3;25892:9;25888:19;25880:27;;25917:71;25985:1;25974:9;25970:17;25961:6;25917:71;:::i;:::-;25998:80;26074:2;26063:9;26059:18;26050:6;25998:80;:::i;:::-;26125:9;26119:4;26115:20;26110:2;26099:9;26095:18;26088:48;26153:108;26256:4;26247:6;26153:108;:::i;:::-;26145:116;;26271:72;26339:2;26328:9;26324:18;26315:6;26271:72;:::i;:::-;26353:73;26421:3;26410:9;26406:19;26397:6;26353:73;:::i;:::-;25602:831;;;;;;;;:::o

Swarm Source

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