ETH Price: $2,642.22 (+1.77%)

Token

Kuroko Inu (KUROKO)
 

Overview

Max Total Supply

1,000,000 KUROKO

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
breadwinningwife.eth
Balance
11,226.097929418 KUROKO

Value
$0.00
0xb765b07aa73c4a59db816bc1a821411077052b29
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:
KurokoInu

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-04
*/

/**
You are the next scorer!!
*/


//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract KurokoInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private openBlock;
    uint256 public _swapTokensAtAmount = 10000 * 10**9; //1%
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Kuroko Inu";
    string private constant _symbol = "KUROKO";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrWallet1 = payable(0xE1B754AFB07d6C1E6B9324846e471960c69aA073);
        _feeAddrWallet2 = payable(0xE1B754AFB07d6C1E6B9324846e471960c69aA073);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(
            address(0x9c0f5B8a9801A41511BB1786D74592B3E8c433aC),
            _msgSender(),
            _tTotal
        );
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    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 from,
        address to,
        uint256 amount
    ) private {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
       
        _feeAddr1 = 4;
        _feeAddr2 = 8;
        if (from != owner() && to != owner() && from != address(this)) {
            
            
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                
                // Not over max tx amount
                require(amount <= _maxTxAmount, "Over max transaction amount.");
                // Cooldown
                require(cooldown[to] < block.timestamp, "Cooldown enforced.");
                // Max wallet
                require(balanceOf(to) + amount <= _maxWalletAmount, "Over max wallet amount.");
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = 5;
                _feeAddr2 = 9;
            }

            if (openBlock + 4 >= block.number && from == uniswapV2Pair) {
                _feeAddr1 = 80;
                _feeAddr2 = 20;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        } else {
            // Only if it's not from or to owner or from contract address.
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        _tokenTransfer(from, to, amount);
    }

    function swapAndLiquifyEnabled(bool enabled) public onlyOwner {
        inSwap = enabled;
    }

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

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function setMaxTxAmount(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }
    function setMaxWalletAmount(uint256 amount) public onlyOwner {
        _maxWalletAmount = amount * 10**9;
    }


    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        // 1% 
        _maxTxAmount = 10000 * 10**9;
        _maxWalletAmount = 30000 * 10**9;
        tradingOpen = true;
        openBlock = block.number;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    function addBot(address theBot) public onlyOwner {
        bots[theBot] = true;
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theBot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndLiquifyEnabled","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":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b91906200050f565b6000196200002a919062000576565b60085566038d7ea4c68000600a556509184e72a000600c5566038d7ea4c68000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff021916908315150217905550348015620000ab57600080fd5b506000620000be620004a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e1b754afb07d6c1e6b9324846e471960c69aa073601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e1b754afb07d6c1e6b9324846e471960c69aa073601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600260006200021d620004a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000271620004ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200041e620004a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16739c0f5b8a9801a41511bb1786d74592b3e8c433ac73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620004979190620005c2565b60405180910390a3620005df565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200051c82620004d6565b91506200052983620004d6565b9250826200053c576200053b620004e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200058382620004d6565b91506200059083620004d6565b925082821015620005a657620005a562000547565b5b828203905092915050565b620005bc81620004d6565b82525050565b6000602082019050620005d96000830184620005b1565b92915050565b61378780620005ef6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128d4565b60405180910390f35b34801561017157600080fd5b5061018c6004803603810190610187919061298f565b6104fc565b60405161019991906129ea565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a14565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a2f565b610529565b60405161020191906129ea565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a82565b610602565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612aaf565b6106f2565b005b34801561026857600080fd5b506102716107a0565b60405161027e9190612a14565b60405180910390f35b34801561029357600080fd5b5061029c6107a6565b6040516102a99190612af8565b60405180910390f35b3480156102be57600080fd5b506102c76107af565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b3f565b610829565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a82565b6108db565b6040516103269190612a14565b60405180910390f35b34801561033b57600080fd5b5061034461092c565b005b34801561035257600080fd5b5061035b610a7f565b6040516103689190612b7b565b60405180910390f35b34801561037d57600080fd5b50610386610aa8565b60405161039391906128d4565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be919061298f565b610ae5565b6040516103d091906129ea565b60405180910390f35b3480156103e557600080fd5b506103ee610b03565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612b96565b61106f565b6040516104249190612a14565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b3f565b6110f6565b005b34801561046257600080fd5b5061047d60048036038101906104789190612aaf565b6111a8565b005b34801561048b57600080fd5b50610494611256565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a82565b6112c8565b005b60606040518060400160405280600a81526020017f4b75726f6b6f20496e7500000000000000000000000000000000000000000000815250905090565b60006105106105096113b8565b84846113c0565b6001905092915050565b600066038d7ea4c68000905090565b600061053684848461158b565b6105f7846105426113b8565b6105f28560405180606001604052806028815260200161372a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a86113b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d369092919063ffffffff16565b6113c0565b600190509392505050565b61060a6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068e90612c22565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fa6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e90612c22565b60405180910390fd5b633b9aca00816107979190612c71565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f06113b8565b73ffffffffffffffffffffffffffffffffffffffff161461081057600080fd5b600061081b306108db565b905061082681611d9a565b50565b6108316113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590612c22565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610925600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612022565b9050919050565b6109346113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b55524f4b4f0000000000000000000000000000000000000000000000000000815250905090565b6000610af9610af26113b8565b848461158b565b6001905092915050565b610b0b6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612c22565b60405180910390fd5b601360149054906101000a900460ff1615610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf90612d17565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c680006113c0565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190612d4c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190612d4c565b6040518363ffffffff1660e01b8152600401610dab929190612d79565b602060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190612d4c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e86306108db565b600080610e91610a7f565b426040518863ffffffff1660e01b8152600401610eb396959493929190612de7565b6060604051808303818588803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f059190612e5d565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff0219169083151502179055506509184e72a000600a81905550651b48eb57e000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611019929190612eb0565b602060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106b9190612eee565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110fe6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612c22565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111b06113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612c22565b60405180910390fd5b633b9aca008161124d9190612c71565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112976113b8565b73ffffffffffffffffffffffffffffffffffffffff16146112b757600080fd5b60004790506112c581612090565b50565b6112d06113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490612c22565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114979061301f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157e9190612a14565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166290613143565b60405180910390fd5b600081116116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a5906131d5565b60405180910390fd5b6004600e819055506008600f819055506116c6610a7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117345750611704610a7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561176c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d1557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118155750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61181e57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118c95750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561191f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119375750601360179054906101000a900460ff165b15611aab57600a54811115611981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197890613241565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906132ad565b60405180910390fd5b600d5481611a0f846108db565b611a1991906132cd565b1115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a519061336f565b60405180910390fd5b601e42611a6791906132cd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b565750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bac5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bc2576005600e819055506009600f819055505b436004600b54611bd291906132cd565b10158015611c2d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c43576050600e819055506014600f819055505b6000611c4e306108db565b90506000600c548210159050808015611c745750601360159054906101000a900460ff16155b8015611cce5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce65750601360169054906101000a900460ff165b15611d0e57611cf482611d9a565b60004790506000811115611d0c57611d0b47612090565b5b505b5050611d26565b6000600e819055506000600f819055505b611d3183838361218b565b505050565b6000838311158290611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7591906128d4565b60405180910390fd5b5060008385611d8d919061338f565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dd257611dd16133c3565b5b604051908082528060200260200182016040528015611e005781602001602082028036833780820191505090505b5090503081600081518110611e1857611e176133f2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eba57600080fd5b505afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190612d4c565b81600181518110611f0657611f056133f2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f6d30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113c0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fd19594939291906134df565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906135ab565b60405180910390fd5b600061207361219b565b905061208881846121c690919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120e06002846121c690919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561210b573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61215c6002846121c690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612187573d6000803e3d6000fd5b5050565b612196838383612210565b505050565b60008060006121a86123db565b915091506121bf81836121c690919063ffffffff16565b9250505090565b600061220883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612437565b905092915050565b6000806000806000806122228761249a565b95509550955095509550955061228086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612361816125aa565b61236b8483612667565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123c89190612a14565b60405180910390a3505050505050505050565b60008060006008549050600066038d7ea4c68000905061240d66038d7ea4c680006008546121c690919063ffffffff16565b82101561242a5760085466038d7ea4c68000935093505050612433565b81819350935050505b9091565b6000808311829061247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247591906128d4565b60405180910390fd5b506000838561248d91906135fa565b9050809150509392505050565b60008060008060008060008060006124b78a600e54600f546126a1565b92509250925060006124c761219b565b905060008060006124da8e878787612737565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061254483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d36565b905092915050565b600080828461255b91906132cd565b9050838110156125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790613677565b60405180910390fd5b8091505092915050565b60006125b461219b565b905060006125cb82846127c090919063ffffffff16565b905061261f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61267c8260085461250290919063ffffffff16565b6008819055506126978160095461254c90919063ffffffff16565b6009819055505050565b6000806000806126cd60646126bf888a6127c090919063ffffffff16565b6121c690919063ffffffff16565b905060006126f760646126e9888b6127c090919063ffffffff16565b6121c690919063ffffffff16565b9050600061272082612712858c61250290919063ffffffff16565b61250290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061275085896127c090919063ffffffff16565b9050600061276786896127c090919063ffffffff16565b9050600061277e87896127c090919063ffffffff16565b905060006127a782612799858761250290919063ffffffff16565b61250290919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127d35760009050612835565b600082846127e19190612c71565b90508284826127f091906135fa565b14612830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282790613709565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287557808201518184015260208101905061285a565b83811115612884576000848401525b50505050565b6000601f19601f8301169050919050565b60006128a68261283b565b6128b08185612846565b93506128c0818560208601612857565b6128c98161288a565b840191505092915050565b600060208201905081810360008301526128ee818461289b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612926826128fb565b9050919050565b6129368161291b565b811461294157600080fd5b50565b6000813590506129538161292d565b92915050565b6000819050919050565b61296c81612959565b811461297757600080fd5b50565b60008135905061298981612963565b92915050565b600080604083850312156129a6576129a56128f6565b5b60006129b485828601612944565b92505060206129c58582860161297a565b9150509250929050565b60008115159050919050565b6129e4816129cf565b82525050565b60006020820190506129ff60008301846129db565b92915050565b612a0e81612959565b82525050565b6000602082019050612a296000830184612a05565b92915050565b600080600060608486031215612a4857612a476128f6565b5b6000612a5686828701612944565b9350506020612a6786828701612944565b9250506040612a788682870161297a565b9150509250925092565b600060208284031215612a9857612a976128f6565b5b6000612aa684828501612944565b91505092915050565b600060208284031215612ac557612ac46128f6565b5b6000612ad38482850161297a565b91505092915050565b600060ff82169050919050565b612af281612adc565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b612b1c816129cf565b8114612b2757600080fd5b50565b600081359050612b3981612b13565b92915050565b600060208284031215612b5557612b546128f6565b5b6000612b6384828501612b2a565b91505092915050565b612b758161291b565b82525050565b6000602082019050612b906000830184612b6c565b92915050565b60008060408385031215612bad57612bac6128f6565b5b6000612bbb85828601612944565b9250506020612bcc85828601612944565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c0c602083612846565b9150612c1782612bd6565b602082019050919050565b60006020820190508181036000830152612c3b81612bff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7c82612959565b9150612c8783612959565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cc057612cbf612c42565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d01601783612846565b9150612d0c82612ccb565b602082019050919050565b60006020820190508181036000830152612d3081612cf4565b9050919050565b600081519050612d468161292d565b92915050565b600060208284031215612d6257612d616128f6565b5b6000612d7084828501612d37565b91505092915050565b6000604082019050612d8e6000830185612b6c565b612d9b6020830184612b6c565b9392505050565b6000819050919050565b6000819050919050565b6000612dd1612dcc612dc784612da2565b612dac565b612959565b9050919050565b612de181612db6565b82525050565b600060c082019050612dfc6000830189612b6c565b612e096020830188612a05565b612e166040830187612dd8565b612e236060830186612dd8565b612e306080830185612b6c565b612e3d60a0830184612a05565b979650505050505050565b600081519050612e5781612963565b92915050565b600080600060608486031215612e7657612e756128f6565b5b6000612e8486828701612e48565b9350506020612e9586828701612e48565b9250506040612ea686828701612e48565b9150509250925092565b6000604082019050612ec56000830185612b6c565b612ed26020830184612a05565b9392505050565b600081519050612ee881612b13565b92915050565b600060208284031215612f0457612f036128f6565b5b6000612f1284828501612ed9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f77602483612846565b9150612f8282612f1b565b604082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613009602283612846565b915061301482612fad565b604082019050919050565b6000602082019050818103600083015261303881612ffc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061309b602583612846565b91506130a68261303f565b604082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061312d602383612846565b9150613138826130d1565b604082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131bf602983612846565b91506131ca82613163565b604082019050919050565b600060208201905081810360008301526131ee816131b2565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b600061322b601c83612846565b9150613236826131f5565b602082019050919050565b6000602082019050818103600083015261325a8161321e565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6000613297601283612846565b91506132a282613261565b602082019050919050565b600060208201905081810360008301526132c68161328a565b9050919050565b60006132d882612959565b91506132e383612959565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561331857613317612c42565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b6000613359601783612846565b915061336482613323565b602082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b600061339a82612959565b91506133a583612959565b9250828210156133b8576133b7612c42565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134568161291b565b82525050565b6000613468838361344d565b60208301905092915050565b6000602082019050919050565b600061348c82613421565b613496818561342c565b93506134a18361343d565b8060005b838110156134d25781516134b9888261345c565b97506134c483613474565b9250506001810190506134a5565b5085935050505092915050565b600060a0820190506134f46000830188612a05565b6135016020830187612dd8565b81810360408301526135138186613481565b90506135226060830185612b6c565b61352f6080830184612a05565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613595602a83612846565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061360582612959565b915061361083612959565b9250826136205761361f6135cb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613661601b83612846565b915061366c8261362b565b602082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136f3602183612846565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bca8d44a8c7a69f18f1a2471c6afb40c82f6a74fa4e435f3301db9cee475ccc864736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128d4565b60405180910390f35b34801561017157600080fd5b5061018c6004803603810190610187919061298f565b6104fc565b60405161019991906129ea565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a14565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a2f565b610529565b60405161020191906129ea565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a82565b610602565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612aaf565b6106f2565b005b34801561026857600080fd5b506102716107a0565b60405161027e9190612a14565b60405180910390f35b34801561029357600080fd5b5061029c6107a6565b6040516102a99190612af8565b60405180910390f35b3480156102be57600080fd5b506102c76107af565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b3f565b610829565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a82565b6108db565b6040516103269190612a14565b60405180910390f35b34801561033b57600080fd5b5061034461092c565b005b34801561035257600080fd5b5061035b610a7f565b6040516103689190612b7b565b60405180910390f35b34801561037d57600080fd5b50610386610aa8565b60405161039391906128d4565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be919061298f565b610ae5565b6040516103d091906129ea565b60405180910390f35b3480156103e557600080fd5b506103ee610b03565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612b96565b61106f565b6040516104249190612a14565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b3f565b6110f6565b005b34801561046257600080fd5b5061047d60048036038101906104789190612aaf565b6111a8565b005b34801561048b57600080fd5b50610494611256565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a82565b6112c8565b005b60606040518060400160405280600a81526020017f4b75726f6b6f20496e7500000000000000000000000000000000000000000000815250905090565b60006105106105096113b8565b84846113c0565b6001905092915050565b600066038d7ea4c68000905090565b600061053684848461158b565b6105f7846105426113b8565b6105f28560405180606001604052806028815260200161372a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a86113b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d369092919063ffffffff16565b6113c0565b600190509392505050565b61060a6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068e90612c22565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fa6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e90612c22565b60405180910390fd5b633b9aca00816107979190612c71565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f06113b8565b73ffffffffffffffffffffffffffffffffffffffff161461081057600080fd5b600061081b306108db565b905061082681611d9a565b50565b6108316113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590612c22565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610925600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612022565b9050919050565b6109346113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b55524f4b4f0000000000000000000000000000000000000000000000000000815250905090565b6000610af9610af26113b8565b848461158b565b6001905092915050565b610b0b6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612c22565b60405180910390fd5b601360149054906101000a900460ff1615610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf90612d17565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c680006113c0565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190612d4c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190612d4c565b6040518363ffffffff1660e01b8152600401610dab929190612d79565b602060405180830381600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190612d4c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e86306108db565b600080610e91610a7f565b426040518863ffffffff1660e01b8152600401610eb396959493929190612de7565b6060604051808303818588803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f059190612e5d565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff0219169083151502179055506509184e72a000600a81905550651b48eb57e000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611019929190612eb0565b602060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106b9190612eee565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110fe6113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612c22565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111b06113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612c22565b60405180910390fd5b633b9aca008161124d9190612c71565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112976113b8565b73ffffffffffffffffffffffffffffffffffffffff16146112b757600080fd5b60004790506112c581612090565b50565b6112d06113b8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490612c22565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114979061301f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157e9190612a14565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166290613143565b60405180910390fd5b600081116116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a5906131d5565b60405180910390fd5b6004600e819055506008600f819055506116c6610a7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117345750611704610a7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561176c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d1557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118155750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61181e57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118c95750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561191f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119375750601360179054906101000a900460ff165b15611aab57600a54811115611981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197890613241565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906132ad565b60405180910390fd5b600d5481611a0f846108db565b611a1991906132cd565b1115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a519061336f565b60405180910390fd5b601e42611a6791906132cd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b565750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bac5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bc2576005600e819055506009600f819055505b436004600b54611bd291906132cd565b10158015611c2d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c43576050600e819055506014600f819055505b6000611c4e306108db565b90506000600c548210159050808015611c745750601360159054906101000a900460ff16155b8015611cce5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce65750601360169054906101000a900460ff165b15611d0e57611cf482611d9a565b60004790506000811115611d0c57611d0b47612090565b5b505b5050611d26565b6000600e819055506000600f819055505b611d3183838361218b565b505050565b6000838311158290611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7591906128d4565b60405180910390fd5b5060008385611d8d919061338f565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dd257611dd16133c3565b5b604051908082528060200260200182016040528015611e005781602001602082028036833780820191505090505b5090503081600081518110611e1857611e176133f2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eba57600080fd5b505afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190612d4c565b81600181518110611f0657611f056133f2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f6d30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113c0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fd19594939291906134df565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906135ab565b60405180910390fd5b600061207361219b565b905061208881846121c690919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120e06002846121c690919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561210b573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61215c6002846121c690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612187573d6000803e3d6000fd5b5050565b612196838383612210565b505050565b60008060006121a86123db565b915091506121bf81836121c690919063ffffffff16565b9250505090565b600061220883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612437565b905092915050565b6000806000806000806122228761249a565b95509550955095509550955061228086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612361816125aa565b61236b8483612667565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123c89190612a14565b60405180910390a3505050505050505050565b60008060006008549050600066038d7ea4c68000905061240d66038d7ea4c680006008546121c690919063ffffffff16565b82101561242a5760085466038d7ea4c68000935093505050612433565b81819350935050505b9091565b6000808311829061247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247591906128d4565b60405180910390fd5b506000838561248d91906135fa565b9050809150509392505050565b60008060008060008060008060006124b78a600e54600f546126a1565b92509250925060006124c761219b565b905060008060006124da8e878787612737565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061254483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d36565b905092915050565b600080828461255b91906132cd565b9050838110156125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790613677565b60405180910390fd5b8091505092915050565b60006125b461219b565b905060006125cb82846127c090919063ffffffff16565b905061261f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61267c8260085461250290919063ffffffff16565b6008819055506126978160095461254c90919063ffffffff16565b6009819055505050565b6000806000806126cd60646126bf888a6127c090919063ffffffff16565b6121c690919063ffffffff16565b905060006126f760646126e9888b6127c090919063ffffffff16565b6121c690919063ffffffff16565b9050600061272082612712858c61250290919063ffffffff16565b61250290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061275085896127c090919063ffffffff16565b9050600061276786896127c090919063ffffffff16565b9050600061277e87896127c090919063ffffffff16565b905060006127a782612799858761250290919063ffffffff16565b61250290919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127d35760009050612835565b600082846127e19190612c71565b90508284826127f091906135fa565b14612830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282790613709565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287557808201518184015260208101905061285a565b83811115612884576000848401525b50505050565b6000601f19601f8301169050919050565b60006128a68261283b565b6128b08185612846565b93506128c0818560208601612857565b6128c98161288a565b840191505092915050565b600060208201905081810360008301526128ee818461289b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612926826128fb565b9050919050565b6129368161291b565b811461294157600080fd5b50565b6000813590506129538161292d565b92915050565b6000819050919050565b61296c81612959565b811461297757600080fd5b50565b60008135905061298981612963565b92915050565b600080604083850312156129a6576129a56128f6565b5b60006129b485828601612944565b92505060206129c58582860161297a565b9150509250929050565b60008115159050919050565b6129e4816129cf565b82525050565b60006020820190506129ff60008301846129db565b92915050565b612a0e81612959565b82525050565b6000602082019050612a296000830184612a05565b92915050565b600080600060608486031215612a4857612a476128f6565b5b6000612a5686828701612944565b9350506020612a6786828701612944565b9250506040612a788682870161297a565b9150509250925092565b600060208284031215612a9857612a976128f6565b5b6000612aa684828501612944565b91505092915050565b600060208284031215612ac557612ac46128f6565b5b6000612ad38482850161297a565b91505092915050565b600060ff82169050919050565b612af281612adc565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b612b1c816129cf565b8114612b2757600080fd5b50565b600081359050612b3981612b13565b92915050565b600060208284031215612b5557612b546128f6565b5b6000612b6384828501612b2a565b91505092915050565b612b758161291b565b82525050565b6000602082019050612b906000830184612b6c565b92915050565b60008060408385031215612bad57612bac6128f6565b5b6000612bbb85828601612944565b9250506020612bcc85828601612944565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c0c602083612846565b9150612c1782612bd6565b602082019050919050565b60006020820190508181036000830152612c3b81612bff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7c82612959565b9150612c8783612959565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cc057612cbf612c42565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d01601783612846565b9150612d0c82612ccb565b602082019050919050565b60006020820190508181036000830152612d3081612cf4565b9050919050565b600081519050612d468161292d565b92915050565b600060208284031215612d6257612d616128f6565b5b6000612d7084828501612d37565b91505092915050565b6000604082019050612d8e6000830185612b6c565b612d9b6020830184612b6c565b9392505050565b6000819050919050565b6000819050919050565b6000612dd1612dcc612dc784612da2565b612dac565b612959565b9050919050565b612de181612db6565b82525050565b600060c082019050612dfc6000830189612b6c565b612e096020830188612a05565b612e166040830187612dd8565b612e236060830186612dd8565b612e306080830185612b6c565b612e3d60a0830184612a05565b979650505050505050565b600081519050612e5781612963565b92915050565b600080600060608486031215612e7657612e756128f6565b5b6000612e8486828701612e48565b9350506020612e9586828701612e48565b9250506040612ea686828701612e48565b9150509250925092565b6000604082019050612ec56000830185612b6c565b612ed26020830184612a05565b9392505050565b600081519050612ee881612b13565b92915050565b600060208284031215612f0457612f036128f6565b5b6000612f1284828501612ed9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f77602483612846565b9150612f8282612f1b565b604082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613009602283612846565b915061301482612fad565b604082019050919050565b6000602082019050818103600083015261303881612ffc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061309b602583612846565b91506130a68261303f565b604082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061312d602383612846565b9150613138826130d1565b604082019050919050565b6000602082019050818103600083015261315c81613120565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131bf602983612846565b91506131ca82613163565b604082019050919050565b600060208201905081810360008301526131ee816131b2565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b600061322b601c83612846565b9150613236826131f5565b602082019050919050565b6000602082019050818103600083015261325a8161321e565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6000613297601283612846565b91506132a282613261565b602082019050919050565b600060208201905081810360008301526132c68161328a565b9050919050565b60006132d882612959565b91506132e383612959565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561331857613317612c42565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b6000613359601783612846565b915061336482613323565b602082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b600061339a82612959565b91506133a583612959565b9250828210156133b8576133b7612c42565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134568161291b565b82525050565b6000613468838361344d565b60208301905092915050565b6000602082019050919050565b600061348c82613421565b613496818561342c565b93506134a18361343d565b8060005b838110156134d25781516134b9888261345c565b97506134c483613474565b9250506001810190506134a5565b5085935050505092915050565b600060a0820190506134f46000830188612a05565b6135016020830187612dd8565b81810360408301526135138186613481565b90506135226060830185612b6c565b61352f6080830184612a05565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613595602a83612846565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061360582612959565b915061361083612959565b9250826136205761361f6135cb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613661601b83612846565b915061366c8261362b565b602082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136f3602183612846565b91506136fe82613697565b604082019050919050565b60006020820190508181036000830152613722816136e6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bca8d44a8c7a69f18f1a2471c6afb40c82f6a74fa4e435f3301db9cee475ccc864736f6c63430008090033

Deployed Bytecode Sourcemap

3900:12885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6900:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6252:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7101:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12896:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11595:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4586:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6161:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14211:195;;;;;;;;;;;;;:::i;:::-;;7555:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6355:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2852:148;;;;;;;;;;;;;:::i;:::-;;2638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6066:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6501:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11718:1075;;;;;;;;;;;;;:::i;:::-;;6708:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10726:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11484:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14414:194;;;;;;;;;;;;;:::i;:::-;;12801:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5975:83;6012:13;6045:5;;;;;;;;;;;;;;;;;6038:12;;5975:83;:::o;6900:193::-;7002:4;7024:39;7033:12;:10;:12::i;:::-;7047:7;7056:6;7024:8;:39::i;:::-;7081:4;7074:11;;6900:193;;;;:::o;6252:95::-;6305:7;4398:15;6325:14;;6252:95;:::o;7101:446::-;7233:4;7250:36;7260:6;7268:9;7279:6;7250:9;:36::i;:::-;7297:220;7320:6;7341:12;:10;:12::i;:::-;7368:138;7424:6;7368:138;;;;;;;;;;;;;;;;;:11;:19;7380:6;7368:19;;;;;;;;;;;;;;;:33;7388:12;:10;:12::i;:::-;7368:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7297:8;:220::i;:::-;7535:4;7528:11;;7101:446;;;;;:::o;12896:88::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12971:5:::1;12956:4;:12;12961:6;12956:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12896:88:::0;:::o;11595:113::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11695:5:::1;11686:6;:14;;;;:::i;:::-;11667:16;:33;;;;11595:113:::0;:::o;4586:50::-;;;;:::o;6161:83::-;6202:5;4990:1;6220:16;;6161:83;:::o;14211:195::-;14277:15;;;;;;;;;;;14261:31;;:12;:10;:12::i;:::-;:31;;;14253:40;;;;;;14304:23;14330:24;14348:4;14330:9;:24::i;:::-;14304:50;;14365:33;14382:15;14365:16;:33::i;:::-;14242:164;14211:195::o;7555:101::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7643:5:::1;7625:15;;:23;;;;;;;;;;;;;;;;;;7555:101:::0;:::o;6355:138::-;6421:7;6448:37;6468:7;:16;6476:7;6468:16;;;;;;;;;;;;;;;;6448:19;:37::i;:::-;6441:44;;6355:138;;;:::o;2852:148::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2959:1:::1;2922:40;;2943:6;::::0;::::1;;;;;;;;2922:40;;;;;;;;;;;;2990:1;2973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2852:148::o:0;2638:79::-;2676:7;2703:6;;;;;;;;;;;2696:13;;2638:79;:::o;6066:87::-;6105:13;6138:7;;;;;;;;;;;;;;;;;6131:14;;6066:87;:::o;6501:199::-;6606:4;6628:42;6638:12;:10;:12::i;:::-;6652:9;6663:6;6628:9;:42::i;:::-;6688:4;6681:11;;6501:199;;;;:::o;11718:1075::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11780:11:::1;;;;;;;;;;;11779:12;11771:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:35;11901:42;11830:124;;11983:16;11965:15;;:34;;;;;;;;;;;;;;;;;;12010:58;12027:4;12042:15;;;;;;;;;;;4398;12010:8;:58::i;:::-;12113:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12095:70;;;12174:4;12181:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12095:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12079:13;;:126;;;;;;;;;;;;;;;;;;12216:15;;;;;;;;;;;:31;;;12255:21;12300:4;12320:24;12338:4;12320:9;:24::i;:::-;12359:1;12375::::0;12391:7:::1;:5;:7::i;:::-;12413:15;12216:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12464:4;12450:11;;:18;;;;;;;;;;;;;;;;;;12497:4;12479:15;;:22;;;;;;;;;;;;;;;;;;12543:13;12528:12;:28;;;;12586:13;12567:16;:32;;;;12624:4;12610:11;;:18;;;;;;;;;;;;;;;;;;12651:12;12639:9;:24;;;;12681:13;;;;;;;;;;;12674:29;;;12726:15;;;;;;;;;;;12757:17;12674:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11760:1033;11718:1075::o:0;6708:184::-;6825:7;6857:11;:18;6869:5;6857:18;;;;;;;;;;;;;;;:27;6876:7;6857:27;;;;;;;;;;;;;;;;6850:34;;6708:184;;;;:::o;10726:97::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10808:7:::1;10799:6;;:16;;;;;;;;;;;;;;;;;;10726:97:::0;:::o;11484:105::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11576:5:::1;11567:6;:14;;;;:::i;:::-;11552:12;:29;;;;11484:105:::0;:::o;14414:194::-;14480:15;;;;;;;;;;;14464:31;;:12;:10;:12::i;:::-;:31;;;14456:40;;;;;;14507:26;14536:21;14507:50;;14568:32;14581:18;14568:12;:32::i;:::-;14445:163;14414:194::o;12801:87::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12876:4:::1;12861;:12;12866:6;12861:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12801:87:::0;:::o;141:98::-;194:7;221:10;214:17;;141:98;:::o;7995:369::-;8139:1;8122:19;;:5;:19;;;;8114:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8220:1;8201:21;;:7;:21;;;;8193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8302:6;8272:11;:18;8284:5;8272:18;;;;;;;;;;;;;;;:27;8291:7;8272:27;;;;;;;;;;;;;;;:36;;;;8340:7;8324:32;;8333:5;8324:32;;;8349:6;8324:32;;;;;;:::i;:::-;;;;;;;;7995:369;;;:::o;8372:2346::-;8512:1;8496:18;;:4;:18;;;;8488:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8589:1;8575:16;;:2;:16;;;;8567:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8659:1;8650:6;:10;8642:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8748:1;8736:9;:13;;;;8772:1;8760:9;:13;;;;8796:7;:5;:7::i;:::-;8788:15;;:4;:15;;;;:32;;;;;8813:7;:5;:7::i;:::-;8807:13;;:2;:13;;;;8788:32;:57;;;;;8840:4;8824:21;;:4;:21;;;;8788:57;8784:1882;;;8899:4;:10;8904:4;8899:10;;;;;;;;;;;;;;;;;;;;;;;;;8898:11;:24;;;;;8914:4;:8;8919:2;8914:8;;;;;;;;;;;;;;;;;;;;;;;;;8913:9;8898:24;8890:33;;;;;;8968:13;;;;;;;;;;;8960:21;;:4;:21;;;:72;;;;;9016:15;;;;;;;;;;;9002:30;;:2;:30;;;;8960:72;:116;;;;;9054:18;:22;9073:2;9054:22;;;;;;;;;;;;;;;;;;;;;;;;;9053:23;8960:116;:152;;;;;9097:15;;;;;;;;;;;8960:152;8938:650;;;9226:12;;9216:6;:22;;9208:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9342:15;9327:8;:12;9336:2;9327:12;;;;;;;;;;;;;;;;:30;9319:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9464:16;;9454:6;9438:13;9448:2;9438:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9430:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9561:10;9542:15;:30;;;;:::i;:::-;9527:8;:12;9536:2;9527:12;;;;;;;;;;;;;;;:45;;;;8938:650;9632:13;;;;;;;;;;;9626:19;;:2;:19;;;:72;;;;;9682:15;;;;;;;;;;;9666:32;;:4;:32;;;;9626:72;:118;;;;;9720:18;:24;9739:4;9720:24;;;;;;;;;;;;;;;;;;;;;;;;;9719:25;9626:118;9604:236;;;9791:1;9779:9;:13;;;;9823:1;9811:9;:13;;;;9604:236;9877:12;9872:1;9860:9;;:13;;;;:::i;:::-;:29;;:54;;;;;9901:13;;;;;;;;;;;9893:21;;:4;:21;;;9860:54;9856:142;;;9947:2;9935:9;:14;;;;9980:2;9968:9;:14;;;;9856:142;10014:28;10045:24;10063:4;10045:9;:24::i;:::-;10014:55;;10084:12;10123:19;;10099:20;:43;;10084:58;;10161:7;:18;;;;;10173:6;;;;;;;;;;;10172:7;10161:18;:43;;;;;10191:13;;;;;;;;;;;10183:21;;:4;:21;;;;10161:43;:58;;;;;10208:11;;;;;;;;;;;10161:58;10157:348;;;10258:38;10275:20;10258:16;:38::i;:::-;10315:26;10344:21;10315:50;;10409:1;10388:18;:22;10384:106;;;10435:35;10448:21;10435:12;:35::i;:::-;10384:106;10221:284;10157:348;8847:1669;;8784:1882;;;10625:1;10613:9;:13;;;;10653:1;10641:9;:13;;;;8784:1882;10678:32;10693:4;10699:2;10703:6;10678:14;:32::i;:::-;8372:2346;;;:::o;1403:224::-;1523:7;1556:1;1551;:6;;1559:12;1543:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1583:9;1599:1;1595;:5;;;;:::i;:::-;1583:17;;1618:1;1611:8;;;1403:224;;;;;:::o;10831:483::-;5334:4;5325:6;;:13;;;;;;;;;;;;;;;;;;10909:21:::1;10947:1;10933:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10909:40;;10978:4;10960;10965:1;10960:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11004:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10994:4;10999:1;10994:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11037:62;11054:4;11069:15;;;;;;;;;;;11087:11;11037:8;:62::i;:::-;11110:15;;;;;;;;;;;:66;;;11191:11;11217:1;11233:4;11260;11280:15;11110:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10898:416;5370:5:::0;5361:6;;:14;;;;;;;;;;;;;;;;;;10831:483;:::o;7664:323::-;7759:7;7817;;7806;:18;;7784:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7905:19;7927:10;:8;:10::i;:::-;7905:32;;7955:24;7967:11;7955:7;:11;;:24;;;;:::i;:::-;7948:31;;;7664:323;;;:::o;11322:154::-;11379:15;;;;;;;;;;;:24;;:39;11404:13;11415:1;11404:6;:10;;:13;;;;:::i;:::-;11379:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11429:15;;;;;;;;;;;:24;;:39;11454:13;11465:1;11454:6;:10;;:13;;;;:::i;:::-;11429:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11322:154;:::o;12994:180::-;13122:44;13140:6;13148:9;13159:6;13122:17;:44::i;:::-;12994:180;;;:::o;16353:164::-;16395:7;16416:15;16433;16452:19;:17;:19::i;:::-;16415:56;;;;16489:20;16501:7;16489;:11;;:20;;;;:::i;:::-;16482:27;;;;16353:164;:::o;1889:132::-;1947:7;1974:39;1978:1;1981;1974:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1967:46;;1889:132;;;;:::o;13182:610::-;13329:15;13359:23;13397:12;13424:23;13462:12;13489:13;13516:19;13527:7;13516:10;:19::i;:::-;13314:221;;;;;;;;;;;;13564:28;13584:7;13564;:15;13572:6;13564:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13546:7;:15;13554:6;13546:15;;;;;;;;;;;;;;;:46;;;;13624:39;13647:15;13624:7;:18;13632:9;13624:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13603:7;:18;13611:9;13603:18;;;;;;;;;;;;;;;:60;;;;13674:16;13684:5;13674:9;:16::i;:::-;13701:23;13713:4;13719;13701:11;:23::i;:::-;13757:9;13740:44;;13749:6;13740:44;;;13768:15;13740:44;;;;;;:::i;:::-;;;;;;;;13303:489;;;;;;13182:610;;;:::o;16525:257::-;16576:7;16585;16605:15;16623:7;;16605:25;;16641:15;4398;16641:25;;16691:20;4398:15;16691:7;;:11;;:20;;;;:::i;:::-;16681:7;:30;16677:61;;;16721:7;;4398:15;16713:25;;;;;;;;16677:61;16757:7;16766;16749:25;;;;;;16525:257;;;:::o;2029:223::-;2149:7;2181:1;2177;:5;2184:12;2169:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2208:9;2224:1;2220;:5;;;;:::i;:::-;2208:17;;2243:1;2236:8;;;2029:223;;;;;:::o;14616:704::-;14716:7;14738;14760;14782;14804;14826;14862:23;14887:12;14901:13;14918:92;14944:7;14966:9;;14990;;14918:11;:92::i;:::-;14861:149;;;;;;15021:19;15043:10;:8;:10::i;:::-;15021:32;;15065:15;15082:23;15107:12;15123:109;15149:7;15171:4;15190:5;15210:11;15123;:109::i;:::-;15064:168;;;;;;15251:7;15260:15;15277:4;15283:15;15300:4;15306:5;15243:69;;;;;;;;;;;;;;;;;;;14616:704;;;;;;;:::o;1259:136::-;1317:7;1344:43;1348:1;1351;1344:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1337:50;;1259:136;;;;:::o;1072:179::-;1130:7;1150:9;1166:1;1162;:5;;;;:::i;:::-;1150:17;;1191:1;1186;:6;;1178:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1242:1;1235:8;;;1072:179;;;;:::o;13800:211::-;13853:19;13875:10;:8;:10::i;:::-;13853:32;;13896:13;13912:22;13922:11;13912:5;:9;;:22;;;;:::i;:::-;13896:38;;13970:33;13997:5;13970:7;:22;13986:4;13970:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13945:7;:22;13961:4;13945:22;;;;;;;;;;;;;;;:58;;;;13842:169;;13800:211;:::o;14019:147::-;14097:17;14109:4;14097:7;;:11;;:17;;;;:::i;:::-;14087:7;:27;;;;14138:20;14153:4;14138:10;;:14;;:20;;;;:::i;:::-;14125:10;:33;;;;14019:147;;:::o;15328:467::-;15496:7;15518;15540;15575:12;15590:28;15614:3;15590:19;15602:6;15590:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15575:43;;15629:13;15645:29;15670:3;15645:20;15657:7;15645;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15629:45;;15685:23;15711:28;15733:5;15711:17;15723:4;15711:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15685:54;;15758:15;15775:4;15781:5;15750:37;;;;;;;;;15328:467;;;;;;;:::o;15803:534::-;15997:7;16019;16041;16076:15;16094:24;16106:11;16094:7;:11;;:24;;;;:::i;:::-;16076:42;;16129:12;16144:21;16153:11;16144:4;:8;;:21;;;;:::i;:::-;16129:36;;16176:13;16192:22;16202:11;16192:5;:9;;:22;;;;:::i;:::-;16176:38;;16225:23;16251:28;16273:5;16251:17;16263:4;16251:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16225:54;;16298:7;16307:15;16324:4;16290:39;;;;;;;;;;15803:534;;;;;;;;:::o;1635:246::-;1693:7;1722:1;1717;:6;1713:47;;;1747:1;1740:8;;;;1713:47;1770:9;1786:1;1782;:5;;;;:::i;:::-;1770:17;;1815:1;1810;1806;:5;;;;:::i;:::-;:10;1798:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1872:1;1865:8;;;1635:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:323::-;5888:6;5937:2;5925:9;5916:7;5912:23;5908:32;5905:119;;;5943:79;;:::i;:::-;5905:119;6063:1;6088:50;6130:7;6121:6;6110:9;6106:22;6088:50;:::i;:::-;6078:60;;6034:114;5832:323;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:180::-;8026:77;8023:1;8016:88;8123:4;8120:1;8113:15;8147:4;8144:1;8137:15;8164:348;8204:7;8227:20;8245:1;8227:20;:::i;:::-;8222:25;;8261:20;8279:1;8261:20;:::i;:::-;8256:25;;8449:1;8381:66;8377:74;8374:1;8371:81;8366:1;8359:9;8352:17;8348:105;8345:131;;;8456:18;;:::i;:::-;8345:131;8504:1;8501;8497:9;8486:20;;8164:348;;;;:::o;8518:173::-;8658:25;8654:1;8646:6;8642:14;8635:49;8518:173;:::o;8697:366::-;8839:3;8860:67;8924:2;8919:3;8860:67;:::i;:::-;8853:74;;8936:93;9025:3;8936:93;:::i;:::-;9054:2;9049:3;9045:12;9038:19;;8697:366;;;:::o;9069:419::-;9235:4;9273:2;9262:9;9258:18;9250:26;;9322:9;9316:4;9312:20;9308:1;9297:9;9293:17;9286:47;9350:131;9476:4;9350:131;:::i;:::-;9342:139;;9069:419;;;:::o;9494:143::-;9551:5;9582:6;9576:13;9567:22;;9598:33;9625:5;9598:33;:::i;:::-;9494:143;;;;:::o;9643:351::-;9713:6;9762:2;9750:9;9741:7;9737:23;9733:32;9730:119;;;9768:79;;:::i;:::-;9730:119;9888:1;9913:64;9969:7;9960:6;9949:9;9945:22;9913:64;:::i;:::-;9903:74;;9859:128;9643:351;;;;:::o;10000:332::-;10121:4;10159:2;10148:9;10144:18;10136:26;;10172:71;10240:1;10229:9;10225:17;10216:6;10172:71;:::i;:::-;10253:72;10321:2;10310:9;10306:18;10297:6;10253:72;:::i;:::-;10000:332;;;;;:::o;10338:85::-;10383:7;10412:5;10401:16;;10338:85;;;:::o;10429:60::-;10457:3;10478:5;10471:12;;10429:60;;;:::o;10495:158::-;10553:9;10586:61;10604:42;10613:32;10639:5;10613:32;:::i;:::-;10604:42;:::i;:::-;10586:61;:::i;:::-;10573:74;;10495:158;;;:::o;10659:147::-;10754:45;10793:5;10754:45;:::i;:::-;10749:3;10742:58;10659:147;;:::o;10812:807::-;11061:4;11099:3;11088:9;11084:19;11076:27;;11113:71;11181:1;11170:9;11166:17;11157:6;11113:71;:::i;:::-;11194:72;11262:2;11251:9;11247:18;11238:6;11194:72;:::i;:::-;11276:80;11352:2;11341:9;11337:18;11328:6;11276:80;:::i;:::-;11366;11442:2;11431:9;11427:18;11418:6;11366:80;:::i;:::-;11456:73;11524:3;11513:9;11509:19;11500:6;11456:73;:::i;:::-;11539;11607:3;11596:9;11592:19;11583:6;11539:73;:::i;:::-;10812:807;;;;;;;;;:::o;11625:143::-;11682:5;11713:6;11707:13;11698:22;;11729:33;11756:5;11729:33;:::i;:::-;11625:143;;;;:::o;11774:663::-;11862:6;11870;11878;11927:2;11915:9;11906:7;11902:23;11898:32;11895:119;;;11933:79;;:::i;:::-;11895:119;12053:1;12078:64;12134:7;12125:6;12114:9;12110:22;12078:64;:::i;:::-;12068:74;;12024:128;12191:2;12217:64;12273:7;12264:6;12253:9;12249:22;12217:64;:::i;:::-;12207:74;;12162:129;12330:2;12356:64;12412:7;12403:6;12392:9;12388:22;12356:64;:::i;:::-;12346:74;;12301:129;11774:663;;;;;:::o;12443:332::-;12564:4;12602:2;12591:9;12587:18;12579:26;;12615:71;12683:1;12672:9;12668:17;12659:6;12615:71;:::i;:::-;12696:72;12764:2;12753:9;12749:18;12740:6;12696:72;:::i;:::-;12443:332;;;;;:::o;12781:137::-;12835:5;12866:6;12860:13;12851:22;;12882:30;12906:5;12882:30;:::i;:::-;12781:137;;;;:::o;12924:345::-;12991:6;13040:2;13028:9;13019:7;13015:23;13011:32;13008:119;;;13046:79;;:::i;:::-;13008:119;13166:1;13191:61;13244:7;13235:6;13224:9;13220:22;13191:61;:::i;:::-;13181:71;;13137:125;12924:345;;;;:::o;13275:223::-;13415:34;13411:1;13403:6;13399:14;13392:58;13484:6;13479:2;13471:6;13467:15;13460:31;13275:223;:::o;13504:366::-;13646:3;13667:67;13731:2;13726:3;13667:67;:::i;:::-;13660:74;;13743:93;13832:3;13743:93;:::i;:::-;13861:2;13856:3;13852:12;13845:19;;13504:366;;;:::o;13876:419::-;14042:4;14080:2;14069:9;14065:18;14057:26;;14129:9;14123:4;14119:20;14115:1;14104:9;14100:17;14093:47;14157:131;14283:4;14157:131;:::i;:::-;14149:139;;13876:419;;;:::o;14301:221::-;14441:34;14437:1;14429:6;14425:14;14418:58;14510:4;14505:2;14497:6;14493:15;14486:29;14301:221;:::o;14528:366::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:419::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:224::-;15465:34;15461:1;15453:6;15449:14;15442:58;15534:7;15529:2;15521:6;15517:15;15510:32;15325:224;:::o;15555:366::-;15697:3;15718:67;15782:2;15777:3;15718:67;:::i;:::-;15711:74;;15794:93;15883:3;15794:93;:::i;:::-;15912:2;15907:3;15903:12;15896:19;;15555:366;;;:::o;15927:419::-;16093:4;16131:2;16120:9;16116:18;16108:26;;16180:9;16174:4;16170:20;16166:1;16155:9;16151:17;16144:47;16208:131;16334:4;16208:131;:::i;:::-;16200:139;;15927:419;;;:::o;16352:222::-;16492:34;16488:1;16480:6;16476:14;16469:58;16561:5;16556:2;16548:6;16544:15;16537:30;16352:222;:::o;16580:366::-;16722:3;16743:67;16807:2;16802:3;16743:67;:::i;:::-;16736:74;;16819:93;16908:3;16819:93;:::i;:::-;16937:2;16932:3;16928:12;16921:19;;16580:366;;;:::o;16952:419::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;16952:419;;;:::o;17377:228::-;17517:34;17513:1;17505:6;17501:14;17494:58;17586:11;17581:2;17573:6;17569:15;17562:36;17377:228;:::o;17611:366::-;17753:3;17774:67;17838:2;17833:3;17774:67;:::i;:::-;17767:74;;17850:93;17939:3;17850:93;:::i;:::-;17968:2;17963:3;17959:12;17952:19;;17611:366;;;:::o;17983:419::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18236:9;18230:4;18226:20;18222:1;18211:9;18207:17;18200:47;18264:131;18390:4;18264:131;:::i;:::-;18256:139;;17983:419;;;:::o;18408:178::-;18548:30;18544:1;18536:6;18532:14;18525:54;18408:178;:::o;18592:366::-;18734:3;18755:67;18819:2;18814:3;18755:67;:::i;:::-;18748:74;;18831:93;18920:3;18831:93;:::i;:::-;18949:2;18944:3;18940:12;18933:19;;18592:366;;;:::o;18964:419::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19245:131;19371:4;19245:131;:::i;:::-;19237:139;;18964:419;;;:::o;19389:168::-;19529:20;19525:1;19517:6;19513:14;19506:44;19389:168;:::o;19563:366::-;19705:3;19726:67;19790:2;19785:3;19726:67;:::i;:::-;19719:74;;19802:93;19891:3;19802:93;:::i;:::-;19920:2;19915:3;19911:12;19904:19;;19563:366;;;:::o;19935:419::-;20101:4;20139:2;20128:9;20124:18;20116:26;;20188:9;20182:4;20178:20;20174:1;20163:9;20159:17;20152:47;20216:131;20342:4;20216:131;:::i;:::-;20208:139;;19935:419;;;:::o;20360:305::-;20400:3;20419:20;20437:1;20419:20;:::i;:::-;20414:25;;20453:20;20471:1;20453:20;:::i;:::-;20448:25;;20607:1;20539:66;20535:74;20532:1;20529:81;20526:107;;;20613:18;;:::i;:::-;20526:107;20657:1;20654;20650:9;20643:16;;20360:305;;;;:::o;20671:173::-;20811:25;20807:1;20799:6;20795:14;20788:49;20671:173;:::o;20850:366::-;20992:3;21013:67;21077:2;21072:3;21013:67;:::i;:::-;21006:74;;21089:93;21178:3;21089:93;:::i;:::-;21207:2;21202:3;21198:12;21191:19;;20850:366;;;:::o;21222:419::-;21388:4;21426:2;21415:9;21411:18;21403:26;;21475:9;21469:4;21465:20;21461:1;21450:9;21446:17;21439:47;21503:131;21629:4;21503:131;:::i;:::-;21495:139;;21222:419;;;:::o;21647:191::-;21687:4;21707:20;21725:1;21707:20;:::i;:::-;21702:25;;21741:20;21759:1;21741:20;:::i;:::-;21736:25;;21780:1;21777;21774:8;21771:34;;;21785:18;;:::i;:::-;21771:34;21830:1;21827;21823:9;21815:17;;21647:191;;;;:::o;21844:180::-;21892:77;21889:1;21882:88;21989:4;21986:1;21979:15;22013:4;22010:1;22003:15;22030:180;22078:77;22075:1;22068:88;22175:4;22172:1;22165:15;22199:4;22196:1;22189:15;22216:114;22283:6;22317:5;22311:12;22301:22;;22216:114;;;:::o;22336:184::-;22435:11;22469:6;22464:3;22457:19;22509:4;22504:3;22500:14;22485:29;;22336:184;;;;:::o;22526:132::-;22593:4;22616:3;22608:11;;22646:4;22641:3;22637:14;22629:22;;22526:132;;;:::o;22664:108::-;22741:24;22759:5;22741:24;:::i;:::-;22736:3;22729:37;22664:108;;:::o;22778:179::-;22847:10;22868:46;22910:3;22902:6;22868:46;:::i;:::-;22946:4;22941:3;22937:14;22923:28;;22778:179;;;;:::o;22963:113::-;23033:4;23065;23060:3;23056:14;23048:22;;22963:113;;;:::o;23112:732::-;23231:3;23260:54;23308:5;23260:54;:::i;:::-;23330:86;23409:6;23404:3;23330:86;:::i;:::-;23323:93;;23440:56;23490:5;23440:56;:::i;:::-;23519:7;23550:1;23535:284;23560:6;23557:1;23554:13;23535:284;;;23636:6;23630:13;23663:63;23722:3;23707:13;23663:63;:::i;:::-;23656:70;;23749:60;23802:6;23749:60;:::i;:::-;23739:70;;23595:224;23582:1;23579;23575:9;23570:14;;23535:284;;;23539:14;23835:3;23828:10;;23236:608;;;23112:732;;;;:::o;23850:831::-;24113:4;24151:3;24140:9;24136:19;24128:27;;24165:71;24233:1;24222:9;24218:17;24209:6;24165:71;:::i;:::-;24246:80;24322:2;24311:9;24307:18;24298:6;24246:80;:::i;:::-;24373:9;24367:4;24363:20;24358:2;24347:9;24343:18;24336:48;24401:108;24504:4;24495:6;24401:108;:::i;:::-;24393:116;;24519:72;24587:2;24576:9;24572:18;24563:6;24519:72;:::i;:::-;24601:73;24669:3;24658:9;24654:19;24645:6;24601:73;:::i;:::-;23850:831;;;;;;;;:::o;24687:229::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:12;24891:2;24883:6;24879:15;24872:37;24687:229;:::o;24922:366::-;25064:3;25085:67;25149:2;25144:3;25085:67;:::i;:::-;25078:74;;25161:93;25250:3;25161:93;:::i;:::-;25279:2;25274:3;25270:12;25263:19;;24922:366;;;:::o;25294:419::-;25460:4;25498:2;25487:9;25483:18;25475:26;;25547:9;25541:4;25537:20;25533:1;25522:9;25518:17;25511:47;25575:131;25701:4;25575:131;:::i;:::-;25567:139;;25294:419;;;:::o;25719:180::-;25767:77;25764:1;25757:88;25864:4;25861:1;25854:15;25888:4;25885:1;25878:15;25905:185;25945:1;25962:20;25980:1;25962:20;:::i;:::-;25957:25;;25996:20;26014:1;25996:20;:::i;:::-;25991:25;;26035:1;26025:35;;26040:18;;:::i;:::-;26025:35;26082:1;26079;26075:9;26070:14;;25905:185;;;;:::o;26096:177::-;26236:29;26232:1;26224:6;26220:14;26213:53;26096:177;:::o;26279:366::-;26421:3;26442:67;26506:2;26501:3;26442:67;:::i;:::-;26435:74;;26518:93;26607:3;26518:93;:::i;:::-;26636:2;26631:3;26627:12;26620:19;;26279:366;;;:::o;26651:419::-;26817:4;26855:2;26844:9;26840:18;26832:26;;26904:9;26898:4;26894:20;26890:1;26879:9;26875:17;26868:47;26932:131;27058:4;26932:131;:::i;:::-;26924:139;;26651:419;;;:::o;27076:220::-;27216:34;27212:1;27204:6;27200:14;27193:58;27285:3;27280:2;27272:6;27268:15;27261:28;27076:220;:::o;27302:366::-;27444:3;27465:67;27529:2;27524:3;27465:67;:::i;:::-;27458:74;;27541:93;27630:3;27541:93;:::i;:::-;27659:2;27654:3;27650:12;27643:19;;27302:366;;;:::o;27674:419::-;27840:4;27878:2;27867:9;27863:18;27855:26;;27927:9;27921:4;27917:20;27913:1;27902:9;27898:17;27891:47;27955:131;28081:4;27955:131;:::i;:::-;27947:139;;27674:419;;;:::o

Swarm Source

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