ETH Price: $3,605.47 (+9.22%)

Token

AI Deploy (AID)
 

Overview

Max Total Supply

10,000,000 AID

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,097.925940452 AID

Value
$0.00
0x049619f1464d55dfed881d006dc8b3ed441c1d5c
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:
AIDeploy

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Effortlessly create ERC-20 tokens, deploy them on Ethereum and add liquidity with just a few clicks.
Leverage AI agents for intelligent, data-driven suggestions

https://aideploy.bot/
https://t.me/aideployportal
https://twitter.com/AI_Deploy
https://t.me/aideployethbot
https://t.me/aideploytestnetbot
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

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
    );
}

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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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;
    }
}

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 AIDeploy is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "AI Deploy";
    string private constant _symbol = "AID";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 12;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 34;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 150000 * 10**9;
    uint256 public _maxWalletSize = 150000 * 10**9;
    uint256 public _swapTokensAtAmount = 1500 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _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 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function setFinalFee() private {
        _taxFeeOnBuy = 2;
        _taxFeeOnSell = 2;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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");

        if (from != owner() && to != owner()) {

            
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

       
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 {
        _marketingAddress.transfer(amount);
    }

    function tradingEnable(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    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 _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).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);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"tradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100005f196200001a9190620006d1565b5f1962000028919062000735565b6006555f600855600c6009555f600a556022600b55600a54600c55600b54600d55600c54600e55600d54600f553360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360146101000a81548160ff0219169083151502179055505f601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555065886c98b7600060145565886c98b7600060155565015d3ef798006016553480156200014e575f80fd5b505f620001606200066d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002126200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003179190620007d4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a39190620007d4565b6040518363ffffffff1660e01b8152600401620003c292919062000815565b6020604051808303815f875af1158015620003df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004059190620007d4565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004596200067460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005f96200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200065e919062000851565b60405180910390a3506200086c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006dd826200069b565b9150620006ea836200069b565b925082620006fd57620006fc620006a4565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000741826200069b565b91506200074e836200069b565b925082820390508181111562000769576200076862000708565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200079e8262000773565b9050919050565b620007b08162000792565b8114620007bb575f80fd5b50565b5f81519050620007ce81620007a5565b92915050565b5f60208284031215620007ec57620007eb6200076f565b5b5f620007fb84828501620007be565b91505092915050565b6200080f8162000792565b82525050565b5f6040820190506200082a5f83018562000804565b62000839602083018462000804565b9392505050565b6200084b816200069b565b82525050565b5f602082019050620008665f83018462000840565b92915050565b6135b1806200087a5f395ff3fe608060405260043610610184575f3560e01c806374010ece116100d0578063a2a957bb11610089578063c492f04611610063578063c492f0461461052d578063dd62ed3e14610555578063ea1644d514610591578063f2fde38b146105b95761018b565b8063a2a957bb146104b3578063a9059cbb146104db578063c3c8cd80146105175761018b565b806374010ece146103bb5780637d1db4a5146103e35780638da5cb5b1461040d5780638f9a55c01461043757806395d89b411461046157806398a5c3151461048b5761018b565b8063304c58871161013d5780636d8aa8f8116101175780636d8aa8f81461032b5780636fc3eaec1461035357806370a0823114610369578063715018a6146103a55761018b565b8063304c5887146102af578063313ce567146102d757806349bd5a5e146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd146102495780632fd689e3146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b09190612704565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906127b9565b61061e565b6040516101ec9190612811565b60405180910390f35b348015610200575f80fd5b5061020961063b565b6040516102169190612885565b60405180910390f35b34801561022a575f80fd5b50610233610660565b60405161024091906128ad565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906128c6565b61066e565b60405161027c9190612811565b60405180910390f35b348015610290575f80fd5b50610299610742565b6040516102a691906128ad565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612940565b610748565b005b3480156102e2575f80fd5b506102eb6107f9565b6040516102f89190612986565b60405180910390f35b34801561030c575f80fd5b50610315610801565b60405161032291906129ae565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c9190612940565b610826565b005b34801561035e575f80fd5b506103676108d7565b005b348015610374575f80fd5b5061038f600480360381019061038a91906129c7565b6109a4565b60405161039c91906128ad565b60405180910390f35b3480156103b0575f80fd5b506103b96109f2565b005b3480156103c6575f80fd5b506103e160048036038101906103dc91906129f2565b610b40565b005b3480156103ee575f80fd5b506103f7610bde565b60405161040491906128ad565b60405180910390f35b348015610418575f80fd5b50610421610be4565b60405161042e91906129ae565b60405180910390f35b348015610442575f80fd5b5061044b610c0b565b60405161045891906128ad565b60405180910390f35b34801561046c575f80fd5b50610475610c11565b6040516104829190612704565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac91906129f2565b610c4e565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612a1d565b610cec565b005b3480156104e6575f80fd5b5061050160048036038101906104fc91906127b9565b610da2565b60405161050e9190612811565b60405180910390f35b348015610522575f80fd5b5061052b610dbf565b005b348015610538575f80fd5b50610553600480360381019061054e9190612ae2565b610e94565b005b348015610560575f80fd5b5061057b60048036038101906105769190612b3f565b610fc3565b60405161058891906128ad565b60405180910390f35b34801561059c575f80fd5b506105b760048036038101906105b291906129f2565b611045565b005b3480156105c4575f80fd5b506105df60048036038101906105da91906129c7565b6110e3565b005b60606040518060400160405280600981526020017f4149204465706c6f790000000000000000000000000000000000000000000000815250905090565b5f61063161062a6112a0565b84846112a7565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f662386f26fc10000905090565b5f61067a84848461146a565b610737846106866112a0565b610732856040518060600160405280602881526020016135546028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e96112a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bef9092919063ffffffff16565b6112a7565b600190509392505050565b60165481565b6107506112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390612bc7565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082e6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b190612bc7565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109176112a0565b73ffffffffffffffffffffffffffffffffffffffff16148061098c575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109746112a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610994575f80fd5b5f4790506109a181611c51565b50565b5f6109eb60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cb9565b9050919050565b6109fa6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612bc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b486112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90612bc7565b60405180910390fd5b8060148190555050565b60145481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600381526020017f4149440000000000000000000000000000000000000000000000000000000000815250905090565b610c566112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990612bc7565b60405180910390fd5b8060168190555050565b610cf46112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612bc7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610db5610dae6112a0565b848461146a565b6001905092915050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dff6112a0565b73ffffffffffffffffffffffffffffffffffffffff161480610e74575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5c6112a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610e7c575f80fd5b5f610e86306109a4565b9050610e9181611d25565b50565b610e9c6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612bc7565b60405180910390fd5b5f5b83839050811015610fbd578160055f868685818110610f4c57610f4b612be5565b5b9050602002016020810190610f6191906129c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f2a565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61104d6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612bc7565b60405180910390fd5b8060158190555050565b6110eb6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90612bc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90612c82565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90612d10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612d9e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145d91906128ad565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90612e2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612eba565b60405180910390fd5b5f8111611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90612f48565b60405180910390fd5b611590610be4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115fe57506115ce610be4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118fc57601360149054906101000a900460ff1661168d5761161f610be4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390612fd6565b60405180910390fd5b5b6014548111156116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061303e565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461177e5760155481611733846109a4565b61173d9190613089565b1061177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061312c565b60405180910390fd5b5b5f611788306109a4565b90505f601654821015905060145482106117a25760145491505b8080156117bc5750601360159054906101000a900460ff16155b8015611815575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561182d5750601360169054906101000a900460ff165b8015611880575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118d3575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118f9576118e182611d25565b5f4790505f8111156118f7576118f647611c51565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061199c575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a4d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a4c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5a575f9050611bdd565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b03575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b1b57600854600c81905550600954600d819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bc4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bdc57600a54600c81905550600b54600d819055505b5b611be984848484611f90565b50505050565b5f838311158290611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d9190612704565b60405180910390fd5b505f8385611c44919061314a565b9050809150509392505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cb5573d5f803e3d5ffd5b5050565b5f600654821115611cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf6906131ed565b60405180910390fd5b5f611d08611fbd565b9050611d1d8184611fe690919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d5c57611d5b61320b565b5b604051908082528060200260200182016040528015611d8a5781602001602082028036833780820191505090505b50905030815f81518110611da157611da0612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e69919061324c565b81600181518110611e7d57611e7c612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ee33060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112a7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f45959493929190613367565b5f604051808303815f87803b158015611f5c575f80fd5b505af1158015611f6e573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b80611f9e57611f9d61202f565b5b611fa9848484612068565b80611fb757611fb6612228565b5b50505050565b5f805f611fc861223c565b91509150611fdf8183611fe690919063ffffffff16565b9250505090565b5f61202783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612295565b905092915050565b5f600c5414801561204157505f600d54145b61206657600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612077876122f6565b9550955095509550955095506120d38660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121648560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121ae816123fc565b6121b884836124b3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161221591906128ad565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f662386f26fc10000905061226b662386f26fc10000600654611fe690919063ffffffff16565b82101561228857600654662386f26fc10000935093505050612291565b81819350935050505b9091565b5f80831182906122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d29190612704565b60405180910390fd5b505f83856122e991906133ec565b9050809150509392505050565b5f805f805f805f805f61230e8a600c54600d546124ed565b9250925092505f61231d611fbd565b90505f805f61232e8e87878761257f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61239783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bef565b905092915050565b5f8082846123ad9190613089565b9050838110156123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990613466565b60405180910390fd5b8091505092915050565b5f612405611fbd565b90505f61241b828461260390919063ffffffff16565b905061246d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124c88260065461235690919063ffffffff16565b6006819055506124e38160075461239f90919063ffffffff16565b6007819055505050565b5f805f806125176064612509888a61260390919063ffffffff16565b611fe690919063ffffffff16565b90505f6125406064612532888b61260390919063ffffffff16565b611fe690919063ffffffff16565b90505f6125688261255a858c61235690919063ffffffff16565b61235690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612596858961260390919063ffffffff16565b90505f6125ac868961260390919063ffffffff16565b90505f6125c2878961260390919063ffffffff16565b90505f6125ea826125dc858761235690919063ffffffff16565b61235690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612613575f9050612674565b5f82846126209190613484565b905082848261262f91906133ec565b1461266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690613535565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126b1578082015181840152602081019050612696565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126d68261267a565b6126e08185612684565b93506126f0818560208601612694565b6126f9816126bc565b840191505092915050565b5f6020820190508181035f83015261271c81846126cc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127558261272c565b9050919050565b6127658161274b565b811461276f575f80fd5b50565b5f813590506127808161275c565b92915050565b5f819050919050565b61279881612786565b81146127a2575f80fd5b50565b5f813590506127b38161278f565b92915050565b5f80604083850312156127cf576127ce612724565b5b5f6127dc85828601612772565b92505060206127ed858286016127a5565b9150509250929050565b5f8115159050919050565b61280b816127f7565b82525050565b5f6020820190506128245f830184612802565b92915050565b5f819050919050565b5f61284d6128486128438461272c565b61282a565b61272c565b9050919050565b5f61285e82612833565b9050919050565b5f61286f82612854565b9050919050565b61287f81612865565b82525050565b5f6020820190506128985f830184612876565b92915050565b6128a781612786565b82525050565b5f6020820190506128c05f83018461289e565b92915050565b5f805f606084860312156128dd576128dc612724565b5b5f6128ea86828701612772565b93505060206128fb86828701612772565b925050604061290c868287016127a5565b9150509250925092565b61291f816127f7565b8114612929575f80fd5b50565b5f8135905061293a81612916565b92915050565b5f6020828403121561295557612954612724565b5b5f6129628482850161292c565b91505092915050565b5f60ff82169050919050565b6129808161296b565b82525050565b5f6020820190506129995f830184612977565b92915050565b6129a88161274b565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b5f602082840312156129dc576129db612724565b5b5f6129e984828501612772565b91505092915050565b5f60208284031215612a0757612a06612724565b5b5f612a14848285016127a5565b91505092915050565b5f805f8060808587031215612a3557612a34612724565b5b5f612a42878288016127a5565b9450506020612a53878288016127a5565b9350506040612a64878288016127a5565b9250506060612a75878288016127a5565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612aa257612aa1612a81565b5b8235905067ffffffffffffffff811115612abf57612abe612a85565b5b602083019150836020820283011115612adb57612ada612a89565b5b9250929050565b5f805f60408486031215612af957612af8612724565b5b5f84013567ffffffffffffffff811115612b1657612b15612728565b5b612b2286828701612a8d565b93509350506020612b358682870161292c565b9150509250925092565b5f8060408385031215612b5557612b54612724565b5b5f612b6285828601612772565b9250506020612b7385828601612772565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb1602083612684565b9150612bbc82612b7d565b602082019050919050565b5f6020820190508181035f830152612bde81612ba5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c6c602683612684565b9150612c7782612c12565b604082019050919050565b5f6020820190508181035f830152612c9981612c60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cfa602483612684565b9150612d0582612ca0565b604082019050919050565b5f6020820190508181035f830152612d2781612cee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d88602283612684565b9150612d9382612d2e565b604082019050919050565b5f6020820190508181035f830152612db581612d7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e16602583612684565b9150612e2182612dbc565b604082019050919050565b5f6020820190508181035f830152612e4381612e0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612ea4602383612684565b9150612eaf82612e4a565b604082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f32602983612684565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612fc0603f83612684565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613028601c83612684565b915061303382612ff4565b602082019050919050565b5f6020820190508181035f8301526130558161301c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61309382612786565b915061309e83612786565b92508282019050808211156130b6576130b561305c565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613116602383612684565b9150613121826130bc565b604082019050919050565b5f6020820190508181035f8301526131438161310a565b9050919050565b5f61315482612786565b915061315f83612786565b92508282039050818111156131775761317661305c565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131d7602a83612684565b91506131e28261317d565b604082019050919050565b5f6020820190508181035f830152613204816131cb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506132468161275c565b92915050565b5f6020828403121561326157613260612724565b5b5f61326e84828501613238565b91505092915050565b5f819050919050565b5f61329a61329561329084613277565b61282a565b612786565b9050919050565b6132aa81613280565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132e28161274b565b82525050565b5f6132f383836132d9565b60208301905092915050565b5f602082019050919050565b5f613315826132b0565b61331f81856132ba565b935061332a836132ca565b805f5b8381101561335a57815161334188826132e8565b975061334c836132ff565b92505060018101905061332d565b5085935050505092915050565b5f60a08201905061337a5f83018861289e565b61338760208301876132a1565b8181036040830152613399818661330b565b90506133a8606083018561299f565b6133b5608083018461289e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133f682612786565b915061340183612786565b925082613411576134106133bf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613450601b83612684565b915061345b8261341c565b602082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b5f61348e82612786565b915061349983612786565b92508282026134a781612786565b915082820484148315176134be576134bd61305c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61351f602183612684565b915061352a826134c5565b604082019050919050565b5f6020820190508181035f83015261354c81613513565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ba4959acffa43cb8100ad6beec12a7d75a0e68bb0bd7e5f370b69c61053e96064736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806374010ece116100d0578063a2a957bb11610089578063c492f04611610063578063c492f0461461052d578063dd62ed3e14610555578063ea1644d514610591578063f2fde38b146105b95761018b565b8063a2a957bb146104b3578063a9059cbb146104db578063c3c8cd80146105175761018b565b806374010ece146103bb5780637d1db4a5146103e35780638da5cb5b1461040d5780638f9a55c01461043757806395d89b411461046157806398a5c3151461048b5761018b565b8063304c58871161013d5780636d8aa8f8116101175780636d8aa8f81461032b5780636fc3eaec1461035357806370a0823114610369578063715018a6146103a55761018b565b8063304c5887146102af578063313ce567146102d757806349bd5a5e146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd146102495780632fd689e3146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b09190612704565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906127b9565b61061e565b6040516101ec9190612811565b60405180910390f35b348015610200575f80fd5b5061020961063b565b6040516102169190612885565b60405180910390f35b34801561022a575f80fd5b50610233610660565b60405161024091906128ad565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906128c6565b61066e565b60405161027c9190612811565b60405180910390f35b348015610290575f80fd5b50610299610742565b6040516102a691906128ad565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612940565b610748565b005b3480156102e2575f80fd5b506102eb6107f9565b6040516102f89190612986565b60405180910390f35b34801561030c575f80fd5b50610315610801565b60405161032291906129ae565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c9190612940565b610826565b005b34801561035e575f80fd5b506103676108d7565b005b348015610374575f80fd5b5061038f600480360381019061038a91906129c7565b6109a4565b60405161039c91906128ad565b60405180910390f35b3480156103b0575f80fd5b506103b96109f2565b005b3480156103c6575f80fd5b506103e160048036038101906103dc91906129f2565b610b40565b005b3480156103ee575f80fd5b506103f7610bde565b60405161040491906128ad565b60405180910390f35b348015610418575f80fd5b50610421610be4565b60405161042e91906129ae565b60405180910390f35b348015610442575f80fd5b5061044b610c0b565b60405161045891906128ad565b60405180910390f35b34801561046c575f80fd5b50610475610c11565b6040516104829190612704565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac91906129f2565b610c4e565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612a1d565b610cec565b005b3480156104e6575f80fd5b5061050160048036038101906104fc91906127b9565b610da2565b60405161050e9190612811565b60405180910390f35b348015610522575f80fd5b5061052b610dbf565b005b348015610538575f80fd5b50610553600480360381019061054e9190612ae2565b610e94565b005b348015610560575f80fd5b5061057b60048036038101906105769190612b3f565b610fc3565b60405161058891906128ad565b60405180910390f35b34801561059c575f80fd5b506105b760048036038101906105b291906129f2565b611045565b005b3480156105c4575f80fd5b506105df60048036038101906105da91906129c7565b6110e3565b005b60606040518060400160405280600981526020017f4149204465706c6f790000000000000000000000000000000000000000000000815250905090565b5f61063161062a6112a0565b84846112a7565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f662386f26fc10000905090565b5f61067a84848461146a565b610737846106866112a0565b610732856040518060600160405280602881526020016135546028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e96112a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bef9092919063ffffffff16565b6112a7565b600190509392505050565b60165481565b6107506112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390612bc7565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082e6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b190612bc7565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109176112a0565b73ffffffffffffffffffffffffffffffffffffffff16148061098c575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109746112a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610994575f80fd5b5f4790506109a181611c51565b50565b5f6109eb60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cb9565b9050919050565b6109fa6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612bc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b486112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90612bc7565b60405180910390fd5b8060148190555050565b60145481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600381526020017f4149440000000000000000000000000000000000000000000000000000000000815250905090565b610c566112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990612bc7565b60405180910390fd5b8060168190555050565b610cf46112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612bc7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610db5610dae6112a0565b848461146a565b6001905092915050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dff6112a0565b73ffffffffffffffffffffffffffffffffffffffff161480610e74575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5c6112a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610e7c575f80fd5b5f610e86306109a4565b9050610e9181611d25565b50565b610e9c6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612bc7565b60405180910390fd5b5f5b83839050811015610fbd578160055f868685818110610f4c57610f4b612be5565b5b9050602002016020810190610f6191906129c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f2a565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61104d6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612bc7565b60405180910390fd5b8060158190555050565b6110eb6112a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90612bc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90612c82565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90612d10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612d9e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145d91906128ad565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90612e2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612eba565b60405180910390fd5b5f8111611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90612f48565b60405180910390fd5b611590610be4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115fe57506115ce610be4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118fc57601360149054906101000a900460ff1661168d5761161f610be4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390612fd6565b60405180910390fd5b5b6014548111156116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061303e565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461177e5760155481611733846109a4565b61173d9190613089565b1061177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061312c565b60405180910390fd5b5b5f611788306109a4565b90505f601654821015905060145482106117a25760145491505b8080156117bc5750601360159054906101000a900460ff16155b8015611815575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561182d5750601360169054906101000a900460ff165b8015611880575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118d3575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118f9576118e182611d25565b5f4790505f8111156118f7576118f647611c51565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061199c575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a4d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a4c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5a575f9050611bdd565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b03575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b1b57600854600c81905550600954600d819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bc4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bdc57600a54600c81905550600b54600d819055505b5b611be984848484611f90565b50505050565b5f838311158290611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d9190612704565b60405180910390fd5b505f8385611c44919061314a565b9050809150509392505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cb5573d5f803e3d5ffd5b5050565b5f600654821115611cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf6906131ed565b60405180910390fd5b5f611d08611fbd565b9050611d1d8184611fe690919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d5c57611d5b61320b565b5b604051908082528060200260200182016040528015611d8a5781602001602082028036833780820191505090505b50905030815f81518110611da157611da0612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e69919061324c565b81600181518110611e7d57611e7c612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ee33060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112a7565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f45959493929190613367565b5f604051808303815f87803b158015611f5c575f80fd5b505af1158015611f6e573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b80611f9e57611f9d61202f565b5b611fa9848484612068565b80611fb757611fb6612228565b5b50505050565b5f805f611fc861223c565b91509150611fdf8183611fe690919063ffffffff16565b9250505090565b5f61202783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612295565b905092915050565b5f600c5414801561204157505f600d54145b61206657600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612077876122f6565b9550955095509550955095506120d38660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121648560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121ae816123fc565b6121b884836124b3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161221591906128ad565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f662386f26fc10000905061226b662386f26fc10000600654611fe690919063ffffffff16565b82101561228857600654662386f26fc10000935093505050612291565b81819350935050505b9091565b5f80831182906122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d29190612704565b60405180910390fd5b505f83856122e991906133ec565b9050809150509392505050565b5f805f805f805f805f61230e8a600c54600d546124ed565b9250925092505f61231d611fbd565b90505f805f61232e8e87878761257f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61239783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bef565b905092915050565b5f8082846123ad9190613089565b9050838110156123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990613466565b60405180910390fd5b8091505092915050565b5f612405611fbd565b90505f61241b828461260390919063ffffffff16565b905061246d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124c88260065461235690919063ffffffff16565b6006819055506124e38160075461239f90919063ffffffff16565b6007819055505050565b5f805f806125176064612509888a61260390919063ffffffff16565b611fe690919063ffffffff16565b90505f6125406064612532888b61260390919063ffffffff16565b611fe690919063ffffffff16565b90505f6125688261255a858c61235690919063ffffffff16565b61235690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612596858961260390919063ffffffff16565b90505f6125ac868961260390919063ffffffff16565b90505f6125c2878961260390919063ffffffff16565b90505f6125ea826125dc858761235690919063ffffffff16565b61235690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612613575f9050612674565b5f82846126209190613484565b905082848261262f91906133ec565b1461266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690613535565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126b1578082015181840152602081019050612696565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126d68261267a565b6126e08185612684565b93506126f0818560208601612694565b6126f9816126bc565b840191505092915050565b5f6020820190508181035f83015261271c81846126cc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127558261272c565b9050919050565b6127658161274b565b811461276f575f80fd5b50565b5f813590506127808161275c565b92915050565b5f819050919050565b61279881612786565b81146127a2575f80fd5b50565b5f813590506127b38161278f565b92915050565b5f80604083850312156127cf576127ce612724565b5b5f6127dc85828601612772565b92505060206127ed858286016127a5565b9150509250929050565b5f8115159050919050565b61280b816127f7565b82525050565b5f6020820190506128245f830184612802565b92915050565b5f819050919050565b5f61284d6128486128438461272c565b61282a565b61272c565b9050919050565b5f61285e82612833565b9050919050565b5f61286f82612854565b9050919050565b61287f81612865565b82525050565b5f6020820190506128985f830184612876565b92915050565b6128a781612786565b82525050565b5f6020820190506128c05f83018461289e565b92915050565b5f805f606084860312156128dd576128dc612724565b5b5f6128ea86828701612772565b93505060206128fb86828701612772565b925050604061290c868287016127a5565b9150509250925092565b61291f816127f7565b8114612929575f80fd5b50565b5f8135905061293a81612916565b92915050565b5f6020828403121561295557612954612724565b5b5f6129628482850161292c565b91505092915050565b5f60ff82169050919050565b6129808161296b565b82525050565b5f6020820190506129995f830184612977565b92915050565b6129a88161274b565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b5f602082840312156129dc576129db612724565b5b5f6129e984828501612772565b91505092915050565b5f60208284031215612a0757612a06612724565b5b5f612a14848285016127a5565b91505092915050565b5f805f8060808587031215612a3557612a34612724565b5b5f612a42878288016127a5565b9450506020612a53878288016127a5565b9350506040612a64878288016127a5565b9250506060612a75878288016127a5565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612aa257612aa1612a81565b5b8235905067ffffffffffffffff811115612abf57612abe612a85565b5b602083019150836020820283011115612adb57612ada612a89565b5b9250929050565b5f805f60408486031215612af957612af8612724565b5b5f84013567ffffffffffffffff811115612b1657612b15612728565b5b612b2286828701612a8d565b93509350506020612b358682870161292c565b9150509250925092565b5f8060408385031215612b5557612b54612724565b5b5f612b6285828601612772565b9250506020612b7385828601612772565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb1602083612684565b9150612bbc82612b7d565b602082019050919050565b5f6020820190508181035f830152612bde81612ba5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c6c602683612684565b9150612c7782612c12565b604082019050919050565b5f6020820190508181035f830152612c9981612c60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cfa602483612684565b9150612d0582612ca0565b604082019050919050565b5f6020820190508181035f830152612d2781612cee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d88602283612684565b9150612d9382612d2e565b604082019050919050565b5f6020820190508181035f830152612db581612d7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e16602583612684565b9150612e2182612dbc565b604082019050919050565b5f6020820190508181035f830152612e4381612e0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612ea4602383612684565b9150612eaf82612e4a565b604082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f32602983612684565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612fc0603f83612684565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613028601c83612684565b915061303382612ff4565b602082019050919050565b5f6020820190508181035f8301526130558161301c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61309382612786565b915061309e83612786565b92508282019050808211156130b6576130b561305c565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613116602383612684565b9150613121826130bc565b604082019050919050565b5f6020820190508181035f8301526131438161310a565b9050919050565b5f61315482612786565b915061315f83612786565b92508282039050818111156131775761317661305c565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131d7602a83612684565b91506131e28261317d565b604082019050919050565b5f6020820190508181035f830152613204816131cb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506132468161275c565b92915050565b5f6020828403121561326157613260612724565b5b5f61326e84828501613238565b91505092915050565b5f819050919050565b5f61329a61329561329084613277565b61282a565b612786565b9050919050565b6132aa81613280565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132e28161274b565b82525050565b5f6132f383836132d9565b60208301905092915050565b5f602082019050919050565b5f613315826132b0565b61331f81856132ba565b935061332a836132ca565b805f5b8381101561335a57815161334188826132e8565b975061334c836132ff565b92505060018101905061332d565b5085935050505092915050565b5f60a08201905061337a5f83018861289e565b61338760208301876132a1565b8181036040830152613399818661330b565b90506133a8606083018561299f565b6133b5608083018461289e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133f682612786565b915061340183612786565b925082613411576134106133bf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613450601b83612684565b915061345b8261341c565b602082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b5f61348e82612786565b915061349983612786565b92508282026134a781612786565b915082820484148315176134be576134bd61305c565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61351f602183612684565b915061352a826134c5565b604082019050919050565b5f6020820190508181035f83015261354c81613513565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ba4959acffa43cb8100ad6beec12a7d75a0e68bb0bd7e5f370b69c61053e96064736f6c63430008170033

Deployed Bytecode Sourcemap

4382:12997:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7622:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5545:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6974:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7823:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5848:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12228:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6883:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5593:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16761:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12584:235;;;;;;;;;;;;;:::i;:::-;;7077:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1869:148;;;;;;;;;;;;;:::i;:::-;;16901:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5744:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1655:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5795:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6788:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16570:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16227:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7223:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12340:236;;;;;;;;;;;;;:::i;:::-;;17140:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7430:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17017:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2025:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6697:83;6734:13;6767:5;;;;;;;;;;;;;;;;;6760:12;;6697:83;:::o;7622:193::-;7724:4;7746:39;7755:12;:10;:12::i;:::-;7769:7;7778:6;7746:8;:39::i;:::-;7803:4;7796:11;;7622:193;;;;:::o;5545:41::-;;;;;;;;;;;;;:::o;6974:95::-;7027:7;4927:16;7047:14;;6974:95;:::o;7823:446::-;7955:4;7972:36;7982:6;7990:9;8001:6;7972:9;:36::i;:::-;8019:220;8042:6;8063:12;:10;:12::i;:::-;8090:138;8146:6;8090:138;;;;;;;;;;;;;;;;;:11;:19;8102:6;8090:19;;;;;;;;;;;;;;;:33;8110:12;:10;:12::i;:::-;8090:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8019:8;:220::i;:::-;8257:4;8250:11;;7823:446;;;;;:::o;5848:49::-;;;;:::o;12228:104::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12312:12:::1;12298:11;;:26;;;;;;;;;;;;;;;;;;12228:104:::0;:::o;6883:83::-;6924:5;4603:1;6942:16;;6883:83;:::o;5593:28::-;;;;;;;;;;;;;:::o;16761:101::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16842:12:::1;16828:11;;:26;;;;;;;;;;;;;;;;;;16761:101:::0;:::o;12584:235::-;12650:19;;;;;;;;;;;12634:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12689:17;;;;;;;;;;;12673:33;;:12;:10;:12::i;:::-;:33;;;12634:72;12626:81;;;;;;12718:26;12747:21;12718:50;;12779:32;12792:18;12779:12;:32::i;:::-;12615:204;12584:235::o;7077:138::-;7143:7;7170:37;7190:7;:16;7198:7;7190:16;;;;;;;;;;;;;;;;7170:19;:37::i;:::-;7163:44;;7077:138;;;:::o;1869:148::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1976:1:::1;1939:40;;1960:6;::::0;::::1;;;;;;;;1939:40;;;;;;;;;;;;2007:1;1990:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1869:148::o:0;16901:108::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16990:11:::1;16975:12;:26;;;;16901:108:::0;:::o;5744:44::-;;;;:::o;1655:79::-;1693:7;1720:6;;;;;;;;;;;1713:13;;1655:79;:::o;5795:46::-;;;;:::o;6788:87::-;6827:13;6860:7;;;;;;;;;;;;;;;;;6853:14;;6788:87;:::o;16570:139::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16683:18:::1;16661:19;:40;;;;16570:139:::0;:::o;16227:291::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16378:13:::1;16361:14;:30;;;;16420:14;16402:15;:32;;;;16460:11;16445:12;:26;;;;16498:12;16482:13;:28;;;;16227:291:::0;;;;:::o;7223:199::-;7328:4;7350:42;7360:12;:10;:12::i;:::-;7374:9;7385:6;7350:9;:42::i;:::-;7410:4;7403:11;;7223:199;;;;:::o;12340:236::-;12406:19;;;;;;;;;;;12390:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12445:17;;;;;;;;;;;12429:33;;:12;:10;:12::i;:::-;:33;;;12390:72;12382:81;;;;;;12474:23;12500:24;12518:4;12500:9;:24::i;:::-;12474:50;;12535:33;12552:15;12535:16;:33::i;:::-;12371:205;12340:236::o;17140:234::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17257:9:::1;17253:114;17276:8;;:15;;17272:1;:19;17253:114;;;17347:8;17313:18;:31;17332:8;;17341:1;17332:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17313:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17293:3;;;;;;;17253:114;;;;17140:234:::0;;;:::o;7430:184::-;7547:7;7579:11;:18;7591:5;7579:18;;;;;;;;;;;;;;;:27;7598:7;7579:27;;;;;;;;;;;;;;;;7572:34;;7430:184;;;;:::o;17017:115::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17111:13:::1;17094:14;:30;;;;17017:115:::0;:::o;2025:244::-;1792:12;:10;:12::i;:::-;1782:22;;:6;;;;;;;;;;:22;;;1774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2134:1:::1;2114:22;;:8;:22;;::::0;2106:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2224:8;2195:38;;2216:6;::::0;::::1;;;;;;;;2195:38;;;;;;;;;;;;2253:8;2244:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2025:244:::0;:::o;414:98::-;467:7;494:10;487:17;;414:98;:::o;9062:369::-;9206:1;9189:19;;:5;:19;;;9181:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9287:1;9268:21;;:7;:21;;;9260:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9369:6;9339:11;:18;9351:5;9339:18;;;;;;;;;;;;;;;:27;9358:7;9339:27;;;;;;;;;;;;;;;:36;;;;9407:7;9391:32;;9400:5;9391:32;;;9416:6;9391:32;;;;;;:::i;:::-;;;;;;;;9062:369;;;:::o;9439:2183::-;9577:1;9561:18;;:4;:18;;;9553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9654:1;9640:16;;:2;:16;;;9632:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9724:1;9715:6;:10;9707:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9796:7;:5;:7::i;:::-;9788:15;;:4;:15;;;;:32;;;;;9813:7;:5;:7::i;:::-;9807:13;;:2;:13;;;;9788:32;9784:1167;;;9858:11;;;;;;;;;;;9853:144;;9906:7;:5;:7::i;:::-;9898:15;;:4;:15;;;9890:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9853:144;10031:12;;10021:6;:22;;10013:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:13;;;;;;;;;;;10110:19;;:2;:19;;;10107:146;;10183:14;;10174:6;10158:13;10168:2;10158:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10150:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10107:146;10269:28;10300:24;10318:4;10300:9;:24::i;:::-;10269:55;;10339:12;10378:19;;10354:20;:43;;10339:58;;10441:12;;10417:20;:36;10414:124;;10510:12;;10487:35;;10414:124;10558:7;:18;;;;;10570:6;;;;;;;;;;;10569:7;10558:18;:43;;;;;10588:13;;;;;;;;;;;10580:21;;:4;:21;;;;10558:43;:58;;;;;10605:11;;;;;;;;;;;10558:58;:87;;;;;10621:18;:24;10640:4;10621:24;;;;;;;;;;;;;;;;;;;;;;;;;10620:25;10558:87;:114;;;;;10650:18;:22;10669:2;10650:22;;;;;;;;;;;;;;;;;;;;;;;;;10649:23;10558:114;10554:386;;;10693:38;10710:20;10693:16;:38::i;:::-;10750:26;10779:21;10750:50;;10844:1;10823:18;:22;10819:106;;;10870:35;10883:21;10870:12;:35::i;:::-;10819:106;10674:266;10554:386;9822:1129;;9784:1167;10963:12;10978:4;10963:19;;11009:18;:24;11028:4;11009:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11037:18;:22;11056:2;11037:22;;;;;;;;;;;;;;;;;;;;;;;;;11009:50;11008:102;;;;11073:13;;;;;;;;;;;11065:21;;:4;:21;;;;:44;;;;;11096:13;;;;;;;;;;;11090:19;;:2;:19;;;;11065:44;11008:102;11004:557;;;11137:5;11127:15;;11004:557;;;11202:13;;;;;;;;;;;11194:21;;:4;:21;;;:55;;;;;11233:15;;;;;;;;;;;11219:30;;:2;:30;;;;11194:55;11191:162;;;11282:14;;11270:9;:26;;;;11325:12;;11315:7;:22;;;;11191:162;11393:13;;;;;;;;;;;11387:19;;:2;:19;;;:55;;;;;11426:15;;;;;;;;;;;11410:32;;:4;:32;;;;11387:55;11383:165;;;11475:15;;11463:9;:27;;;;11519:13;;11509:7;:23;;;;11383:165;11004:557;11573:41;11588:4;11594:2;11598:6;11606:7;11573:14;:41::i;:::-;9542:2080;9439:2183;;;:::o;2633:224::-;2753:7;2786:1;2781;:6;;2789:12;2773:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2813:9;2829:1;2825;:5;;;;:::i;:::-;2813:17;;2848:1;2841:8;;;2633:224;;;;;:::o;12121:99::-;12178:17;;;;;;;;;;;:26;;:34;12205:6;12178:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12121:99;:::o;8277:323::-;8372:7;8430;;8419;:18;;8397:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:19;8540:10;:8;:10::i;:::-;8518:32;;8568:24;8580:11;8568:7;:11;;:24;;;;:::i;:::-;8561:31;;;8277:323;;;:::o;11630:483::-;6000:4;5991:6;;:13;;;;;;;;;;;;;;;;;;11708:21:::1;11746:1;11732:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11708:40;;11777:4;11759;11764:1;11759:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11803:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11793:4;11798:1;11793:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11836:62;11853:4;11868:15;;;;;;;;;;;11886:11;11836:8;:62::i;:::-;11909:15;;;;;;;;;;;:66;;;11990:11;12016:1;12032:4;12059;12079:15;11909:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11697:416;6036:5:::0;6027:6;;:14;;;;;;;;;;;;;;;;;;11630:483;:::o;12829:282::-;12985:7;12980:28;;12994:14;:12;:14::i;:::-;12980:28;13019:44;13037:6;13045:9;13056:6;13019:17;:44::i;:::-;13079:7;13074:29;;13088:15;:13;:15::i;:::-;13074:29;12829:282;;;;:::o;15790:164::-;15832:7;15853:15;15870;15889:19;:17;:19::i;:::-;15852:56;;;;15926:20;15938:7;15926;:11;;:20;;;;:::i;:::-;15919:27;;;;15790:164;:::o;3119:132::-;3177:7;3204:39;3208:1;3211;3204:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3197:46;;3119:132;;;;:::o;8608:219::-;8668:1;8655:9;;:14;:30;;;;;8684:1;8673:7;;:12;8655:30;8687:7;8651:43;8726:9;;8706:17;:29;;;;8764:7;;8746:15;:25;;;;8796:1;8784:9;:13;;;;8818:1;8808:7;:11;;;;8608:219;:::o;13119:610::-;13266:15;13296:23;13334:12;13361:23;13399:12;13426:13;13453:19;13464:7;13453:10;:19::i;:::-;13251:221;;;;;;;;;;;;13501:28;13521:7;13501;:15;13509:6;13501:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13483:7;:15;13491:6;13483:15;;;;;;;;;;;;;;;:46;;;;13561:39;13584:15;13561:7;:18;13569:9;13561:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13540:7;:18;13548:9;13540:18;;;;;;;;;;;;;;;:60;;;;13611:16;13621:5;13611:9;:16::i;:::-;13638:23;13650:4;13656;13638:11;:23::i;:::-;13694:9;13677:44;;13686:6;13677:44;;;13705:15;13677:44;;;;;;:::i;:::-;;;;;;;;13240:489;;;;;;13119:610;;;:::o;8937:117::-;8993:17;;8981:9;:29;;;;9031:15;;9021:7;:25;;;;8937:117::o;15962:257::-;16013:7;16022;16042:15;16060:7;;16042:25;;16078:15;4927:16;16078:25;;16128:20;4927:16;16128:7;;:11;;:20;;;;:::i;:::-;16118:7;:30;16114:61;;;16158:7;;4927:16;16150:25;;;;;;;;16114:61;16194:7;16203;16186:25;;;;;;15962:257;;;:::o;3259:223::-;3379:7;3411:1;3407;:5;3414:12;3399:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3438:9;3454:1;3450;:5;;;;:::i;:::-;3438:17;;3473:1;3466:8;;;3259:223;;;;;:::o;14148:615::-;14248:7;14270;14292;14314;14336;14358;14394:23;14419:12;14433:13;14463:40;14475:7;14484:9;;14495:7;;14463:11;:40::i;:::-;14393:110;;;;;;14514:19;14536:10;:8;:10::i;:::-;14514:32;;14558:15;14575:23;14600:12;14629:46;14641:7;14650:4;14656:5;14663:11;14629;:46::i;:::-;14557:118;;;;;;14694:7;14703:15;14720:4;14726:15;14743:4;14749:5;14686:69;;;;;;;;;;;;;;;;;;;14148:615;;;;;;;:::o;2489:136::-;2547:7;2574:43;2578:1;2581;2574:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2567:50;;2489:136;;;;:::o;2302:179::-;2360:7;2380:9;2396:1;2392;:5;;;;:::i;:::-;2380:17;;2421:1;2416;:6;;2408:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2472:1;2465:8;;;2302:179;;;;:::o;13737:211::-;13790:19;13812:10;:8;:10::i;:::-;13790:32;;13833:13;13849:22;13859:11;13849:5;:9;;:22;;;;:::i;:::-;13833:38;;13907:33;13934:5;13907:7;:22;13923:4;13907:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13882:7;:22;13898:4;13882:22;;;;;;;;;;;;;;;:58;;;;13779:169;;13737:211;:::o;13956:147::-;14034:17;14046:4;14034:7;;:11;;:17;;;;:::i;:::-;14024:7;:27;;;;14075:20;14090:4;14075:10;;:14;;:20;;;;:::i;:::-;14062:10;:33;;;;13956:147;;:::o;14771:469::-;14940:7;14962;14984;15019:12;15034:30;15060:3;15034:21;15046:8;15034:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15019:45;;15075:13;15091:28;15115:3;15091:19;15103:6;15091:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15075:44;;15130:23;15156:28;15178:5;15156:17;15168:4;15156:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15130:54;;15203:15;15220:4;15226:5;15195:37;;;;;;;;;14771:469;;;;;;;:::o;15248:534::-;15442:7;15464;15486;15521:15;15539:24;15551:11;15539:7;:11;;:24;;;;:::i;:::-;15521:42;;15574:12;15589:21;15598:11;15589:4;:8;;:21;;;;:::i;:::-;15574:36;;15621:13;15637:22;15647:11;15637:5;:9;;:22;;;;:::i;:::-;15621:38;;15670:23;15696:28;15718:5;15696:17;15708:4;15696:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15670:54;;15743:7;15752:15;15769:4;15735:39;;;;;;;;;;15248:534;;;;;;;;:::o;2865:246::-;2923:7;2952:1;2947;:6;2943:47;;2977:1;2970:8;;;;2943:47;3000:9;3016:1;3012;:5;;;;:::i;:::-;3000:17;;3045:1;3040;3036;:5;;;;:::i;:::-;:10;3028:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3102:1;3095:8;;;2865: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:116::-;5466:21;5481:5;5466:21;:::i;:::-;5459:5;5456:32;5446:60;;5502:1;5499;5492:12;5446:60;5396:116;:::o;5518:133::-;5561:5;5599:6;5586:20;5577:29;;5615:30;5639:5;5615:30;:::i;:::-;5518:133;;;;:::o;5657:323::-;5713:6;5762:2;5750:9;5741:7;5737:23;5733:32;5730:119;;;5768:79;;:::i;:::-;5730:119;5888:1;5913:50;5955:7;5946:6;5935:9;5931:22;5913:50;:::i;:::-;5903:60;;5859:114;5657:323;;;;:::o;5986:86::-;6021:7;6061:4;6054:5;6050:16;6039:27;;5986:86;;;:::o;6078:112::-;6161:22;6177:5;6161:22;:::i;:::-;6156:3;6149:35;6078:112;;:::o;6196:214::-;6285:4;6323:2;6312:9;6308:18;6300:26;;6336:67;6400:1;6389:9;6385:17;6376:6;6336:67;:::i;:::-;6196:214;;;;:::o;6416:118::-;6503:24;6521:5;6503:24;:::i;:::-;6498:3;6491:37;6416:118;;:::o;6540:222::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6684:71;6752:1;6741:9;6737:17;6728:6;6684:71;:::i;:::-;6540:222;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:117;8441:1;8438;8431:12;8455:117;8564:1;8561;8554:12;8595:568;8668:8;8678:6;8728:3;8721:4;8713:6;8709:17;8705:27;8695:122;;8736:79;;:::i;:::-;8695:122;8849:6;8836:20;8826:30;;8879:18;8871:6;8868:30;8865:117;;;8901:79;;:::i;:::-;8865:117;9015:4;9007:6;9003:17;8991:29;;9069:3;9061:4;9053:6;9049:17;9039:8;9035:32;9032:41;9029:128;;;9076:79;;:::i;:::-;9029:128;8595:568;;;;;:::o;9169:698::-;9261:6;9269;9277;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9645:80;9717:7;9708:6;9697:9;9693:22;9645:80;:::i;:::-;9627:98;;;;9423:312;9774:2;9800:50;9842:7;9833:6;9822:9;9818:22;9800:50;:::i;:::-;9790:60;;9745:115;9169:698;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:182::-;10493:34;10489:1;10481:6;10477:14;10470:58;10353:182;:::o;10541:366::-;10683:3;10704:67;10768:2;10763:3;10704:67;:::i;:::-;10697:74;;10780:93;10869:3;10780:93;:::i;:::-;10898:2;10893:3;10889:12;10882:19;;10541:366;;;:::o;10913:419::-;11079:4;11117:2;11106:9;11102:18;11094:26;;11166:9;11160:4;11156:20;11152:1;11141:9;11137:17;11130:47;11194:131;11320:4;11194:131;:::i;:::-;11186:139;;10913:419;;;:::o;11338:180::-;11386:77;11383:1;11376:88;11483:4;11480:1;11473:15;11507:4;11504:1;11497:15;11524:225;11664:34;11660:1;11652:6;11648:14;11641:58;11733:8;11728:2;11720:6;11716:15;11709:33;11524:225;:::o;11755:366::-;11897:3;11918:67;11982:2;11977:3;11918:67;:::i;:::-;11911:74;;11994:93;12083:3;11994:93;:::i;:::-;12112:2;12107:3;12103:12;12096:19;;11755:366;;;:::o;12127:419::-;12293:4;12331:2;12320:9;12316:18;12308:26;;12380:9;12374:4;12370:20;12366:1;12355:9;12351:17;12344:47;12408:131;12534:4;12408:131;:::i;:::-;12400:139;;12127:419;;;:::o;12552:223::-;12692:34;12688:1;12680:6;12676:14;12669:58;12761:6;12756:2;12748:6;12744:15;12737:31;12552:223;:::o;12781:366::-;12923:3;12944:67;13008:2;13003:3;12944:67;:::i;:::-;12937:74;;13020:93;13109:3;13020:93;:::i;:::-;13138:2;13133:3;13129:12;13122:19;;12781:366;;;:::o;13153:419::-;13319:4;13357:2;13346:9;13342:18;13334:26;;13406:9;13400:4;13396:20;13392:1;13381:9;13377:17;13370:47;13434:131;13560:4;13434:131;:::i;:::-;13426:139;;13153:419;;;:::o;13578:221::-;13718:34;13714:1;13706:6;13702:14;13695:58;13787:4;13782:2;13774:6;13770:15;13763:29;13578:221;:::o;13805:366::-;13947:3;13968:67;14032:2;14027:3;13968:67;:::i;:::-;13961:74;;14044:93;14133:3;14044:93;:::i;:::-;14162:2;14157:3;14153:12;14146:19;;13805:366;;;:::o;14177:419::-;14343:4;14381:2;14370:9;14366:18;14358:26;;14430:9;14424:4;14420:20;14416:1;14405:9;14401:17;14394:47;14458:131;14584:4;14458:131;:::i;:::-;14450:139;;14177:419;;;:::o;14602:224::-;14742:34;14738:1;14730:6;14726:14;14719:58;14811:7;14806:2;14798:6;14794:15;14787:32;14602:224;:::o;14832:366::-;14974:3;14995:67;15059:2;15054:3;14995:67;:::i;:::-;14988:74;;15071:93;15160:3;15071:93;:::i;:::-;15189:2;15184:3;15180:12;15173:19;;14832:366;;;:::o;15204:419::-;15370:4;15408:2;15397:9;15393:18;15385:26;;15457:9;15451:4;15447:20;15443:1;15432:9;15428:17;15421:47;15485:131;15611:4;15485:131;:::i;:::-;15477:139;;15204:419;;;:::o;15629:222::-;15769:34;15765:1;15757:6;15753:14;15746:58;15838:5;15833:2;15825:6;15821:15;15814:30;15629:222;:::o;15857:366::-;15999:3;16020:67;16084:2;16079:3;16020:67;:::i;:::-;16013:74;;16096:93;16185:3;16096:93;:::i;:::-;16214:2;16209:3;16205:12;16198:19;;15857:366;;;:::o;16229:419::-;16395:4;16433:2;16422:9;16418:18;16410:26;;16482:9;16476:4;16472:20;16468:1;16457:9;16453:17;16446:47;16510:131;16636:4;16510:131;:::i;:::-;16502:139;;16229:419;;;:::o;16654:228::-;16794:34;16790:1;16782:6;16778:14;16771:58;16863:11;16858:2;16850:6;16846:15;16839:36;16654:228;:::o;16888:366::-;17030:3;17051:67;17115:2;17110:3;17051:67;:::i;:::-;17044:74;;17127:93;17216:3;17127:93;:::i;:::-;17245:2;17240:3;17236:12;17229:19;;16888:366;;;:::o;17260:419::-;17426:4;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17260:419;;;:::o;17685:250::-;17825:34;17821:1;17813:6;17809:14;17802:58;17894:33;17889:2;17881:6;17877:15;17870:58;17685:250;:::o;17941:366::-;18083:3;18104:67;18168:2;18163:3;18104:67;:::i;:::-;18097:74;;18180:93;18269:3;18180:93;:::i;:::-;18298:2;18293:3;18289:12;18282:19;;17941:366;;;:::o;18313:419::-;18479:4;18517:2;18506:9;18502:18;18494:26;;18566:9;18560:4;18556:20;18552:1;18541:9;18537:17;18530:47;18594:131;18720:4;18594:131;:::i;:::-;18586:139;;18313:419;;;:::o;18738:178::-;18878:30;18874:1;18866:6;18862:14;18855:54;18738:178;:::o;18922:366::-;19064:3;19085:67;19149:2;19144:3;19085:67;:::i;:::-;19078:74;;19161:93;19250:3;19161:93;:::i;:::-;19279:2;19274:3;19270:12;19263:19;;18922:366;;;:::o;19294:419::-;19460:4;19498:2;19487:9;19483:18;19475:26;;19547:9;19541:4;19537:20;19533:1;19522:9;19518:17;19511:47;19575:131;19701:4;19575:131;:::i;:::-;19567:139;;19294:419;;;:::o;19719:180::-;19767:77;19764:1;19757:88;19864:4;19861:1;19854:15;19888:4;19885:1;19878:15;19905:191;19945:3;19964:20;19982:1;19964:20;:::i;:::-;19959:25;;19998:20;20016:1;19998:20;:::i;:::-;19993:25;;20041:1;20038;20034:9;20027:16;;20062:3;20059:1;20056:10;20053:36;;;20069:18;;:::i;:::-;20053:36;19905:191;;;;:::o;20102:222::-;20242:34;20238:1;20230:6;20226:14;20219:58;20311:5;20306:2;20298:6;20294:15;20287:30;20102:222;:::o;20330:366::-;20472:3;20493:67;20557:2;20552:3;20493:67;:::i;:::-;20486:74;;20569:93;20658:3;20569:93;:::i;:::-;20687:2;20682:3;20678:12;20671:19;;20330:366;;;:::o;20702:419::-;20868:4;20906:2;20895:9;20891:18;20883:26;;20955:9;20949:4;20945:20;20941:1;20930:9;20926:17;20919:47;20983:131;21109:4;20983:131;:::i;:::-;20975:139;;20702:419;;;:::o;21127:194::-;21167:4;21187:20;21205:1;21187:20;:::i;:::-;21182:25;;21221:20;21239:1;21221:20;:::i;:::-;21216:25;;21265:1;21262;21258:9;21250:17;;21289:1;21283:4;21280:11;21277:37;;;21294:18;;:::i;:::-;21277:37;21127:194;;;;:::o;21327:229::-;21467:34;21463:1;21455:6;21451:14;21444:58;21536:12;21531:2;21523:6;21519:15;21512:37;21327:229;:::o;21562:366::-;21704:3;21725:67;21789:2;21784:3;21725:67;:::i;:::-;21718:74;;21801:93;21890:3;21801:93;:::i;:::-;21919:2;21914:3;21910:12;21903:19;;21562:366;;;:::o;21934:419::-;22100:4;22138:2;22127:9;22123:18;22115:26;;22187:9;22181:4;22177:20;22173:1;22162:9;22158:17;22151:47;22215:131;22341:4;22215:131;:::i;:::-;22207:139;;21934:419;;;:::o;22359:180::-;22407:77;22404:1;22397:88;22504:4;22501:1;22494:15;22528:4;22525:1;22518:15;22545:143;22602:5;22633:6;22627:13;22618:22;;22649:33;22676:5;22649:33;:::i;:::-;22545:143;;;;:::o;22694:351::-;22764:6;22813:2;22801:9;22792:7;22788:23;22784:32;22781:119;;;22819:79;;:::i;:::-;22781:119;22939:1;22964:64;23020:7;23011:6;23000:9;22996:22;22964:64;:::i;:::-;22954:74;;22910:128;22694:351;;;;:::o;23051:85::-;23096:7;23125:5;23114:16;;23051:85;;;:::o;23142:158::-;23200:9;23233:61;23251:42;23260:32;23286:5;23260:32;:::i;:::-;23251:42;:::i;:::-;23233:61;:::i;:::-;23220:74;;23142:158;;;:::o;23306:147::-;23401:45;23440:5;23401:45;:::i;:::-;23396:3;23389:58;23306:147;;:::o;23459:114::-;23526:6;23560:5;23554:12;23544:22;;23459:114;;;:::o;23579:184::-;23678:11;23712:6;23707:3;23700:19;23752:4;23747:3;23743:14;23728:29;;23579:184;;;;:::o;23769:132::-;23836:4;23859:3;23851:11;;23889:4;23884:3;23880:14;23872:22;;23769:132;;;:::o;23907:108::-;23984:24;24002:5;23984:24;:::i;:::-;23979:3;23972:37;23907:108;;:::o;24021:179::-;24090:10;24111:46;24153:3;24145:6;24111:46;:::i;:::-;24189:4;24184:3;24180:14;24166:28;;24021:179;;;;:::o;24206:113::-;24276:4;24308;24303:3;24299:14;24291:22;;24206:113;;;:::o;24355:732::-;24474:3;24503:54;24551:5;24503:54;:::i;:::-;24573:86;24652:6;24647:3;24573:86;:::i;:::-;24566:93;;24683:56;24733:5;24683:56;:::i;:::-;24762:7;24793:1;24778:284;24803:6;24800:1;24797:13;24778:284;;;24879:6;24873:13;24906:63;24965:3;24950:13;24906:63;:::i;:::-;24899:70;;24992:60;25045:6;24992:60;:::i;:::-;24982:70;;24838:224;24825:1;24822;24818:9;24813:14;;24778:284;;;24782:14;25078:3;25071:10;;24479:608;;;24355:732;;;;:::o;25093:831::-;25356:4;25394:3;25383:9;25379:19;25371:27;;25408:71;25476:1;25465:9;25461:17;25452:6;25408:71;:::i;:::-;25489:80;25565:2;25554:9;25550:18;25541:6;25489:80;:::i;:::-;25616:9;25610:4;25606:20;25601:2;25590:9;25586:18;25579:48;25644:108;25747:4;25738:6;25644:108;:::i;:::-;25636:116;;25762:72;25830:2;25819:9;25815:18;25806:6;25762:72;:::i;:::-;25844:73;25912:3;25901:9;25897:19;25888:6;25844:73;:::i;:::-;25093:831;;;;;;;;:::o;25930:180::-;25978:77;25975:1;25968:88;26075:4;26072:1;26065:15;26099:4;26096:1;26089:15;26116:185;26156:1;26173:20;26191:1;26173:20;:::i;:::-;26168:25;;26207:20;26225:1;26207:20;:::i;:::-;26202:25;;26246:1;26236:35;;26251:18;;:::i;:::-;26236:35;26293:1;26290;26286:9;26281:14;;26116:185;;;;:::o;26307:177::-;26447:29;26443:1;26435:6;26431:14;26424:53;26307:177;:::o;26490:366::-;26632:3;26653:67;26717:2;26712:3;26653:67;:::i;:::-;26646:74;;26729:93;26818:3;26729:93;:::i;:::-;26847:2;26842:3;26838:12;26831:19;;26490:366;;;:::o;26862:419::-;27028:4;27066:2;27055:9;27051:18;27043:26;;27115:9;27109:4;27105:20;27101:1;27090:9;27086:17;27079:47;27143:131;27269:4;27143:131;:::i;:::-;27135:139;;26862:419;;;:::o;27287:410::-;27327:7;27350:20;27368:1;27350:20;:::i;:::-;27345:25;;27384:20;27402:1;27384:20;:::i;:::-;27379:25;;27439:1;27436;27432:9;27461:30;27479:11;27461:30;:::i;:::-;27450:41;;27640:1;27631:7;27627:15;27624:1;27621:22;27601:1;27594:9;27574:83;27551:139;;27670:18;;:::i;:::-;27551:139;27335:362;27287:410;;;;:::o;27703:220::-;27843:34;27839:1;27831:6;27827:14;27820:58;27912:3;27907:2;27899:6;27895:15;27888:28;27703:220;:::o;27929:366::-;28071:3;28092:67;28156:2;28151:3;28092:67;:::i;:::-;28085:74;;28168:93;28257:3;28168:93;:::i;:::-;28286:2;28281:3;28277:12;28270:19;;27929:366;;;:::o;28301:419::-;28467:4;28505:2;28494:9;28490:18;28482:26;;28554:9;28548:4;28544:20;28540:1;28529:9;28525:17;28518:47;28582:131;28708:4;28582:131;:::i;:::-;28574:139;;28301:419;;;:::o

Swarm Source

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