ETH Price: $3,327.06 (+2.60%)
Gas: 7.3 Gwei

Token

Humanizer AI (HUMAI)
 

Overview

Max Total Supply

100,000,000 HUMAI

Holders

103

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
302,105.747651704 HUMAI

Value
$0.00
0x10d80575e25a75ec053a12850ac218cb7ef95589
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:
HumanizerAI

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-22
*/

/**
    Socials:

    https://linktr.ee/humanizer_ai
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;
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 HumanizerAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Humanizer AI";
    string private constant _symbol = "HUMAI";
    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 = 100000000     * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0xFb374af97A5fDb3f97549E9940658D3d69AFBCd0);
    address payable private _marketingAddress = payable(0xFb374af97A5fDb3f97549E9940658D3d69AFBCd0);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000000 * 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 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() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            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;

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

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            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 enableTrading() external onlyOwner {
        tradingOpen = true;
    }

    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 blockBotsHumanizer(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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

    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 setFeeHumanizer(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 setMinSwapTokensThresholdHumanizer(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

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

    function excludeMultipleAccountsFromFeesHumanizer(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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBotsHumanizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFeesHumanizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTransactionSetterHumanizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"maxWalletSetterHumanizer","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":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"setFeeHumanizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThresholdHumanizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBotHumanizer","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"}]

608060405267016345785d8a00006000196200001c91906200070f565b6000196200002b919062000776565b600655600060085560196009556000600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f5573fb374af97a5fdb3f97549e9940658d3d69afbcd0601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fb374af97a5fdb3f97549e9940658d3d69afbcd0601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066071afd498d000060175566071afd498d000060185566038d7ea4c680006019553480156200016757600080fd5b5060006200017a620006a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033991906200081b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c791906200081b565b6040518363ffffffff1660e01b8152600401620003e69291906200085e565b6020604051808303816000875af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c91906200081b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000482620006ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200069691906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071c82620006d6565b91506200072983620006d6565b9250826200073c576200073b620006e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078382620006d6565b91506200079083620006d6565b925082821015620007a657620007a562000747565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b600060208284031215620008345762000833620007b1565b5b6000620008448482850162000804565b91505092915050565b6200085881620007d6565b82525050565b60006040820190506200087560008301856200084d565b6200088460208301846200084d565b9392505050565b6200089681620006d6565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b613dcd80620008c96000396000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd8014610671578063dd62ed3e14610688578063df46f416146106c5578063f2fde38b146106ee576101d8565b806395d89b411461058f578063a9059cbb146105ba578063bdd795ef146105f7578063bfd7928414610634576101d8565b80637f2feddc116100d15780637f2feddc146104e55780638a8c523c146105225780638da5cb5b146105395780638f9a55c014610564576101d8565b8063715018a61461047a57806371eefbef146104915780637d1db4a5146104ba576101d8565b80632fd689e31161016f5780634c8908b91161013e5780634c8908b9146103d45780635196eee6146103fd5780636fc3eaec1461042657806370a082311461043d576101d8565b80632fd689e31461032a578063313ce567146103555780633cede4311461038057806349bd5a5e146103a9576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c457806323e118c514610301576101d8565b806306fdde03146101dd578063095ea7b314610208578063153857d214610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612c55565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d1f565b610754565b60405161023c9190612d7a565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612d95565b610772565b005b34801561027a57600080fd5b50610283610862565b6040516102909190612e21565b60405180910390f35b3480156102a557600080fd5b506102ae610888565b6040516102bb9190612e4b565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190612e66565b610898565b6040516102f89190612d7a565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612eb9565b610971565b005b34801561033657600080fd5b5061033f610a10565b60405161034c9190612e4b565b60405180910390f35b34801561036157600080fd5b5061036a610a16565b6040516103779190612f02565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612eb9565b610a1f565b005b3480156103b557600080fd5b506103be610abe565b6040516103cb9190612f2c565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190612fd8565b610ae4565b005b34801561040957600080fd5b50610424600480360381019061041f9190613176565b610c1e565b005b34801561043257600080fd5b5061043b610d48565b005b34801561044957600080fd5b50610464600480360381019061045f9190612d95565b610e19565b6040516104719190612e4b565b60405180910390f35b34801561048657600080fd5b5061048f610e6a565b005b34801561049d57600080fd5b506104b860048036038101906104b39190612eb9565b610fbd565b005b3480156104c657600080fd5b506104cf61105c565b6040516104dc9190612e4b565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612d95565b611062565b6040516105199190612e4b565b60405180910390f35b34801561052e57600080fd5b5061053761107a565b005b34801561054557600080fd5b5061054e61112c565b60405161055b9190612f2c565b60405180910390f35b34801561057057600080fd5b50610579611155565b6040516105869190612e4b565b60405180910390f35b34801561059b57600080fd5b506105a461115b565b6040516105b19190612c55565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612d1f565b611198565b6040516105ee9190612d7a565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612d95565b6111b6565b60405161062b9190612d7a565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190612d95565b6111d6565b6040516106689190612d7a565b60405180910390f35b34801561067d57600080fd5b506106866111f6565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131bf565b6112cf565b6040516106bc9190612e4b565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906131ff565b611356565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612d95565b61140d565b005b60606040518060400160405280600c81526020017f48756d616e697a65722041490000000000000000000000000000000000000000815250905090565b60006107686107616115ce565b84846115d6565b6001905092915050565b61077a6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe906132b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108a584848461179f565b610966846108b16115ce565b61096185604051806060016040528060288152602001613d7060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109176115ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e59092919063ffffffff16565b6115d6565b600190509392505050565b6109796115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd906132b2565b60405180910390fd5b8060198190555050565b60195481565b60006009905090565b610a276115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab906132b2565b60405180910390fd5b8060178190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aec6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b70906132b2565b60405180910390fd5b60005b83839050811015610c18578160056000868685818110610b9f57610b9e6132d2565b5b9050602002016020810190610bb49190612d95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c1090613330565b915050610b7c565b50505050565b610c266115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa906132b2565b60405180910390fd5b60005b8151811015610d4457600160106000848481518110610cd857610cd76132d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3c90613330565b915050610cb6565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d896115ce565b73ffffffffffffffffffffffffffffffffffffffff161480610dff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de76115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b610e0857600080fd5b6000479050610e1681612149565b50565b6000610e63600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b5565b9050919050565b610e726115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef6906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fc56115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906132b2565b60405180910390fd5b8060188190555050565b60175481565b60116020528060005260406000206000915090505481565b6110826115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906132b2565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600581526020017f48554d4149000000000000000000000000000000000000000000000000000000815250905090565b60006111ac6111a56115ce565b848461179f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112376115ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112ad5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112956115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b6112b657600080fd5b60006112c130610e19565b90506112cc81612223565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135e6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e2906132b2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6114156115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611508906133ea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c9061347c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061350e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117929190612e4b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611805906135a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613632565b60405180910390fd5b600081116118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b7906136c4565b60405180910390fd5b6118c861112c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611936575061190661112c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119e25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de457601660149054906101000a900460ff16611a8857601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90613756565b60405180910390fd5b5b601754811115611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137c2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613854565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c5d5760185481611c1284610e19565b611c1c9190613874565b10611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061393c565b60405180910390fd5b5b6000611c6830610e19565b9050600060195482101590506017548210611c835760175491505b808015611c9d5750601660159054906101000a900460ff16155b8015611cf75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0d575060168054906101000a900460ff165b8015611d635750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de157611dc782612223565b60004790506000811115611ddf57611dde47612149565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f3e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f3d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4c57600090506120d3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ff75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200f57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120d257600a54600c81905550600b54600d819055505b5b6120df8484848461249c565b50505050565b600083831115829061212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249190612c55565b60405180910390fd5b506000838561213c919061395c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b1573d6000803e3d6000fd5b5050565b60006006548211156121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613a02565b60405180910390fd5b60006122066124c9565b905061221b81846124f490919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225b5761225a613038565b5b6040519080825280602002602001820160405280156122895781602001602082028036833780820191505090505b50905030816000815181106122a1576122a06132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c9190613a37565b816001815181106123805761237f6132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115d6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244b959493929190613b5d565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124aa576124a961253e565b5b6124b584848461257b565b806124c3576124c2612746565b5b50505050565b60008060006124d661275a565b915091506124ed81836124f490919063ffffffff16565b9250505090565b600061253683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b9565b905092915050565b6000600c5414801561255257506000600d54145b61257957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258d8761281c565b9550955095509550955095506125eb86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126cc8161292c565b6126d684836129e9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612e4b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061278e67016345785d8a00006006546124f490919063ffffffff16565b8210156127ac5760065467016345785d8a00009350935050506127b5565b81819350935050505b9091565b60008083118290612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79190612c55565b60405180910390fd5b506000838561280f9190613be6565b9050809150509392505050565b60008060008060008060008060006128398a600c54600d54612a23565b92509250925060006128496124c9565b9050600080600061285c8e878787612ab9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e5565b905092915050565b60008082846128dd9190613874565b905083811015612922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291990613c63565b60405180910390fd5b8091505092915050565b60006129366124c9565b9050600061294d8284612b4290919063ffffffff16565b90506129a181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129fe8260065461288490919063ffffffff16565b600681905550612a19816007546128ce90919063ffffffff16565b6007819055505050565b600080600080612a4f6064612a41888a612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612a796064612a6b888b612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612aa282612a94858c61288490919063ffffffff16565b61288490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ad28589612b4290919063ffffffff16565b90506000612ae98689612b4290919063ffffffff16565b90506000612b008789612b4290919063ffffffff16565b90506000612b2982612b1b858761288490919063ffffffff16565b61288490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b545760009050612bb6565b60008284612b629190613c83565b9050828482612b719190613be6565b14612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba890613d4f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bf6578082015181840152602081019050612bdb565b83811115612c05576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c2782612bbc565b612c318185612bc7565b9350612c41818560208601612bd8565b612c4a81612c0b565b840191505092915050565b60006020820190508181036000830152612c6f8184612c1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000819050919050565b612cfc81612ce9565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b60008060408385031215612d3657612d35612c81565b5b6000612d4485828601612cd4565b9250506020612d5585828601612d0a565b9150509250929050565b60008115159050919050565b612d7481612d5f565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b600060208284031215612dab57612daa612c81565b5b6000612db984828501612cd4565b91505092915050565b6000819050919050565b6000612de7612de2612ddd84612c8b565b612dc2565b612c8b565b9050919050565b6000612df982612dcc565b9050919050565b6000612e0b82612dee565b9050919050565b612e1b81612e00565b82525050565b6000602082019050612e366000830184612e12565b92915050565b612e4581612ce9565b82525050565b6000602082019050612e606000830184612e3c565b92915050565b600080600060608486031215612e7f57612e7e612c81565b5b6000612e8d86828701612cd4565b9350506020612e9e86828701612cd4565b9250506040612eaf86828701612d0a565b9150509250925092565b600060208284031215612ecf57612ece612c81565b5b6000612edd84828501612d0a565b91505092915050565b600060ff82169050919050565b612efc81612ee6565b82525050565b6000602082019050612f176000830184612ef3565b92915050565b612f2681612cab565b82525050565b6000602082019050612f416000830184612f1d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612f6c57612f6b612f47565b5b8235905067ffffffffffffffff811115612f8957612f88612f4c565b5b602083019150836020820283011115612fa557612fa4612f51565b5b9250929050565b612fb581612d5f565b8114612fc057600080fd5b50565b600081359050612fd281612fac565b92915050565b600080600060408486031215612ff157612ff0612c81565b5b600084013567ffffffffffffffff81111561300f5761300e612c86565b5b61301b86828701612f56565b9350935050602061302e86828701612fc3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61307082612c0b565b810181811067ffffffffffffffff8211171561308f5761308e613038565b5b80604052505050565b60006130a2612c77565b90506130ae8282613067565b919050565b600067ffffffffffffffff8211156130ce576130cd613038565b5b602082029050602081019050919050565b60006130f26130ed846130b3565b613098565b9050808382526020820190506020840283018581111561311557613114612f51565b5b835b8181101561313e578061312a8882612cd4565b845260208401935050602081019050613117565b5050509392505050565b600082601f83011261315d5761315c612f47565b5b813561316d8482602086016130df565b91505092915050565b60006020828403121561318c5761318b612c81565b5b600082013567ffffffffffffffff8111156131aa576131a9612c86565b5b6131b684828501613148565b91505092915050565b600080604083850312156131d6576131d5612c81565b5b60006131e485828601612cd4565b92505060206131f585828601612cd4565b9150509250929050565b6000806000806080858703121561321957613218612c81565b5b600061322787828801612d0a565b945050602061323887828801612d0a565b935050604061324987828801612d0a565b925050606061325a87828801612d0a565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329c602083612bc7565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333b82612ce9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336d5761336c613301565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133d4602683612bc7565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613466602483612bc7565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602283612bc7565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061358a602583612bc7565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061361c602383612bc7565b9150613627826135c0565b604082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136ae602983612bc7565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613740603f83612bc7565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137ac601c83612bc7565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061383e602383612bc7565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b600061387f82612ce9565b915061388a83612ce9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bf576138be613301565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613926602383612bc7565b9150613931826138ca565b604082019050919050565b6000602082019050818103600083015261395581613919565b9050919050565b600061396782612ce9565b915061397283612ce9565b92508282101561398557613984613301565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ec602a83612bc7565b91506139f782613990565b604082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b600081519050613a3181612cbd565b92915050565b600060208284031215613a4d57613a4c612c81565b5b6000613a5b84828501613a22565b91505092915050565b6000819050919050565b6000613a89613a84613a7f84613a64565b612dc2565b612ce9565b9050919050565b613a9981613a6e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ad481612cab565b82525050565b6000613ae68383613acb565b60208301905092915050565b6000602082019050919050565b6000613b0a82613a9f565b613b148185613aaa565b9350613b1f83613abb565b8060005b83811015613b50578151613b378882613ada565b9750613b4283613af2565b925050600181019050613b23565b5085935050505092915050565b600060a082019050613b726000830188612e3c565b613b7f6020830187613a90565b8181036040830152613b918186613aff565b9050613ba06060830185612f1d565b613bad6080830184612e3c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612ce9565b9150613bfc83612ce9565b925082613c0c57613c0b613bb7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c4d601b83612bc7565b9150613c5882613c17565b602082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b6000613c8e82612ce9565b9150613c9983612ce9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd257613cd1613301565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d39602183612bc7565b9150613d4482613cdd565b604082019050919050565b60006020820190508181036000830152613d6881613d2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a61a0de6a5a264acb2fc552f554efefdb51ce0599a3f7e64d3702d4f7318b72964736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd8014610671578063dd62ed3e14610688578063df46f416146106c5578063f2fde38b146106ee576101d8565b806395d89b411461058f578063a9059cbb146105ba578063bdd795ef146105f7578063bfd7928414610634576101d8565b80637f2feddc116100d15780637f2feddc146104e55780638a8c523c146105225780638da5cb5b146105395780638f9a55c014610564576101d8565b8063715018a61461047a57806371eefbef146104915780637d1db4a5146104ba576101d8565b80632fd689e31161016f5780634c8908b91161013e5780634c8908b9146103d45780635196eee6146103fd5780636fc3eaec1461042657806370a082311461043d576101d8565b80632fd689e31461032a578063313ce567146103555780633cede4311461038057806349bd5a5e146103a9576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c457806323e118c514610301576101d8565b806306fdde03146101dd578063095ea7b314610208578063153857d214610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612c55565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d1f565b610754565b60405161023c9190612d7a565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612d95565b610772565b005b34801561027a57600080fd5b50610283610862565b6040516102909190612e21565b60405180910390f35b3480156102a557600080fd5b506102ae610888565b6040516102bb9190612e4b565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190612e66565b610898565b6040516102f89190612d7a565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612eb9565b610971565b005b34801561033657600080fd5b5061033f610a10565b60405161034c9190612e4b565b60405180910390f35b34801561036157600080fd5b5061036a610a16565b6040516103779190612f02565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612eb9565b610a1f565b005b3480156103b557600080fd5b506103be610abe565b6040516103cb9190612f2c565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190612fd8565b610ae4565b005b34801561040957600080fd5b50610424600480360381019061041f9190613176565b610c1e565b005b34801561043257600080fd5b5061043b610d48565b005b34801561044957600080fd5b50610464600480360381019061045f9190612d95565b610e19565b6040516104719190612e4b565b60405180910390f35b34801561048657600080fd5b5061048f610e6a565b005b34801561049d57600080fd5b506104b860048036038101906104b39190612eb9565b610fbd565b005b3480156104c657600080fd5b506104cf61105c565b6040516104dc9190612e4b565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612d95565b611062565b6040516105199190612e4b565b60405180910390f35b34801561052e57600080fd5b5061053761107a565b005b34801561054557600080fd5b5061054e61112c565b60405161055b9190612f2c565b60405180910390f35b34801561057057600080fd5b50610579611155565b6040516105869190612e4b565b60405180910390f35b34801561059b57600080fd5b506105a461115b565b6040516105b19190612c55565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612d1f565b611198565b6040516105ee9190612d7a565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612d95565b6111b6565b60405161062b9190612d7a565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190612d95565b6111d6565b6040516106689190612d7a565b60405180910390f35b34801561067d57600080fd5b506106866111f6565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131bf565b6112cf565b6040516106bc9190612e4b565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906131ff565b611356565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612d95565b61140d565b005b60606040518060400160405280600c81526020017f48756d616e697a65722041490000000000000000000000000000000000000000815250905090565b60006107686107616115ce565b84846115d6565b6001905092915050565b61077a6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe906132b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108a584848461179f565b610966846108b16115ce565b61096185604051806060016040528060288152602001613d7060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109176115ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e59092919063ffffffff16565b6115d6565b600190509392505050565b6109796115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd906132b2565b60405180910390fd5b8060198190555050565b60195481565b60006009905090565b610a276115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab906132b2565b60405180910390fd5b8060178190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aec6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b70906132b2565b60405180910390fd5b60005b83839050811015610c18578160056000868685818110610b9f57610b9e6132d2565b5b9050602002016020810190610bb49190612d95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c1090613330565b915050610b7c565b50505050565b610c266115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa906132b2565b60405180910390fd5b60005b8151811015610d4457600160106000848481518110610cd857610cd76132d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3c90613330565b915050610cb6565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d896115ce565b73ffffffffffffffffffffffffffffffffffffffff161480610dff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de76115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b610e0857600080fd5b6000479050610e1681612149565b50565b6000610e63600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b5565b9050919050565b610e726115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef6906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fc56115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906132b2565b60405180910390fd5b8060188190555050565b60175481565b60116020528060005260406000206000915090505481565b6110826115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906132b2565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600581526020017f48554d4149000000000000000000000000000000000000000000000000000000815250905090565b60006111ac6111a56115ce565b848461179f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112376115ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112ad5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112956115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b6112b657600080fd5b60006112c130610e19565b90506112cc81612223565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61135e6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e2906132b2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6114156115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611508906133ea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c9061347c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061350e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117929190612e4b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611805906135a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613632565b60405180910390fd5b600081116118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b7906136c4565b60405180910390fd5b6118c861112c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611936575061190661112c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119e25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de457601660149054906101000a900460ff16611a8857601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90613756565b60405180910390fd5b5b601754811115611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137c2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613854565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c5d5760185481611c1284610e19565b611c1c9190613874565b10611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061393c565b60405180910390fd5b5b6000611c6830610e19565b9050600060195482101590506017548210611c835760175491505b808015611c9d5750601660159054906101000a900460ff16155b8015611cf75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0d575060168054906101000a900460ff165b8015611d635750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de157611dc782612223565b60004790506000811115611ddf57611dde47612149565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f3e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f3d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4c57600090506120d3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ff75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200f57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120d257600a54600c81905550600b54600d819055505b5b6120df8484848461249c565b50505050565b600083831115829061212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249190612c55565b60405180910390fd5b506000838561213c919061395c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b1573d6000803e3d6000fd5b5050565b60006006548211156121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613a02565b60405180910390fd5b60006122066124c9565b905061221b81846124f490919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225b5761225a613038565b5b6040519080825280602002602001820160405280156122895781602001602082028036833780820191505090505b50905030816000815181106122a1576122a06132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c9190613a37565b816001815181106123805761237f6132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115d6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244b959493929190613b5d565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124aa576124a961253e565b5b6124b584848461257b565b806124c3576124c2612746565b5b50505050565b60008060006124d661275a565b915091506124ed81836124f490919063ffffffff16565b9250505090565b600061253683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b9565b905092915050565b6000600c5414801561255257506000600d54145b61257957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258d8761281c565b9550955095509550955095506125eb86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126cc8161292c565b6126d684836129e9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612e4b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061278e67016345785d8a00006006546124f490919063ffffffff16565b8210156127ac5760065467016345785d8a00009350935050506127b5565b81819350935050505b9091565b60008083118290612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79190612c55565b60405180910390fd5b506000838561280f9190613be6565b9050809150509392505050565b60008060008060008060008060006128398a600c54600d54612a23565b92509250925060006128496124c9565b9050600080600061285c8e878787612ab9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e5565b905092915050565b60008082846128dd9190613874565b905083811015612922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291990613c63565b60405180910390fd5b8091505092915050565b60006129366124c9565b9050600061294d8284612b4290919063ffffffff16565b90506129a181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129fe8260065461288490919063ffffffff16565b600681905550612a19816007546128ce90919063ffffffff16565b6007819055505050565b600080600080612a4f6064612a41888a612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612a796064612a6b888b612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612aa282612a94858c61288490919063ffffffff16565b61288490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ad28589612b4290919063ffffffff16565b90506000612ae98689612b4290919063ffffffff16565b90506000612b008789612b4290919063ffffffff16565b90506000612b2982612b1b858761288490919063ffffffff16565b61288490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b545760009050612bb6565b60008284612b629190613c83565b9050828482612b719190613be6565b14612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba890613d4f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bf6578082015181840152602081019050612bdb565b83811115612c05576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c2782612bbc565b612c318185612bc7565b9350612c41818560208601612bd8565b612c4a81612c0b565b840191505092915050565b60006020820190508181036000830152612c6f8184612c1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000819050919050565b612cfc81612ce9565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b60008060408385031215612d3657612d35612c81565b5b6000612d4485828601612cd4565b9250506020612d5585828601612d0a565b9150509250929050565b60008115159050919050565b612d7481612d5f565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b600060208284031215612dab57612daa612c81565b5b6000612db984828501612cd4565b91505092915050565b6000819050919050565b6000612de7612de2612ddd84612c8b565b612dc2565b612c8b565b9050919050565b6000612df982612dcc565b9050919050565b6000612e0b82612dee565b9050919050565b612e1b81612e00565b82525050565b6000602082019050612e366000830184612e12565b92915050565b612e4581612ce9565b82525050565b6000602082019050612e606000830184612e3c565b92915050565b600080600060608486031215612e7f57612e7e612c81565b5b6000612e8d86828701612cd4565b9350506020612e9e86828701612cd4565b9250506040612eaf86828701612d0a565b9150509250925092565b600060208284031215612ecf57612ece612c81565b5b6000612edd84828501612d0a565b91505092915050565b600060ff82169050919050565b612efc81612ee6565b82525050565b6000602082019050612f176000830184612ef3565b92915050565b612f2681612cab565b82525050565b6000602082019050612f416000830184612f1d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612f6c57612f6b612f47565b5b8235905067ffffffffffffffff811115612f8957612f88612f4c565b5b602083019150836020820283011115612fa557612fa4612f51565b5b9250929050565b612fb581612d5f565b8114612fc057600080fd5b50565b600081359050612fd281612fac565b92915050565b600080600060408486031215612ff157612ff0612c81565b5b600084013567ffffffffffffffff81111561300f5761300e612c86565b5b61301b86828701612f56565b9350935050602061302e86828701612fc3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61307082612c0b565b810181811067ffffffffffffffff8211171561308f5761308e613038565b5b80604052505050565b60006130a2612c77565b90506130ae8282613067565b919050565b600067ffffffffffffffff8211156130ce576130cd613038565b5b602082029050602081019050919050565b60006130f26130ed846130b3565b613098565b9050808382526020820190506020840283018581111561311557613114612f51565b5b835b8181101561313e578061312a8882612cd4565b845260208401935050602081019050613117565b5050509392505050565b600082601f83011261315d5761315c612f47565b5b813561316d8482602086016130df565b91505092915050565b60006020828403121561318c5761318b612c81565b5b600082013567ffffffffffffffff8111156131aa576131a9612c86565b5b6131b684828501613148565b91505092915050565b600080604083850312156131d6576131d5612c81565b5b60006131e485828601612cd4565b92505060206131f585828601612cd4565b9150509250929050565b6000806000806080858703121561321957613218612c81565b5b600061322787828801612d0a565b945050602061323887828801612d0a565b935050604061324987828801612d0a565b925050606061325a87828801612d0a565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329c602083612bc7565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333b82612ce9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336d5761336c613301565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133d4602683612bc7565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613466602483612bc7565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602283612bc7565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061358a602583612bc7565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061361c602383612bc7565b9150613627826135c0565b604082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136ae602983612bc7565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613740603f83612bc7565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137ac601c83612bc7565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061383e602383612bc7565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b600061387f82612ce9565b915061388a83612ce9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bf576138be613301565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613926602383612bc7565b9150613931826138ca565b604082019050919050565b6000602082019050818103600083015261395581613919565b9050919050565b600061396782612ce9565b915061397283612ce9565b92508282101561398557613984613301565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ec602a83612bc7565b91506139f782613990565b604082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b600081519050613a3181612cbd565b92915050565b600060208284031215613a4d57613a4c612c81565b5b6000613a5b84828501613a22565b91505092915050565b6000819050919050565b6000613a89613a84613a7f84613a64565b612dc2565b612ce9565b9050919050565b613a9981613a6e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ad481612cab565b82525050565b6000613ae68383613acb565b60208301905092915050565b6000602082019050919050565b6000613b0a82613a9f565b613b148185613aaa565b9350613b1f83613abb565b8060005b83811015613b50578151613b378882613ada565b9750613b4283613af2565b925050600181019050613b23565b5085935050505092915050565b600060a082019050613b726000830188612e3c565b613b7f6020830187613a90565b8181036040830152613b918186613aff565b9050613ba06060830185612f1d565b613bad6080830184612e3c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612ce9565b9150613bfc83612ce9565b925082613c0c57613c0b613bb7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c4d601b83612bc7565b9150613c5882613c17565b602082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b6000613c8e82612ce9565b9150613c9983612ce9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd257613cd1613301565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d39602183612bc7565b9150613d4482613cdd565b604082019050919050565b60006020820190508181036000830152613d6881613d2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a61a0de6a5a264acb2fc552f554efefdb51ce0599a3f7e64d3702d4f7318b72964736f6c634300080e0033

Deployed Bytecode Sourcemap

4130:13483:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7608:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13060:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5533:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6960:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16919:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5829:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6869:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17106:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5581:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17367:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12874:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12631:235;;;;;;;;;;;;;:::i;:::-;;7063:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1617:148;;;;;;;;;;;;;:::i;:::-;;17236:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5723:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5226:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12298:81;;;;;;;;;;;;;:::i;:::-;;1403:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5775:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5276:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5188:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12387:236;;;;;;;;;;;;;:::i;:::-;;7416:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16567:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1773:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6683:83;6720:13;6753:5;;;;;;;;;;;;;;;;;6746:12;;6683:83;:::o;7608:193::-;7710:4;7732:39;7741:12;:10;:12::i;:::-;7755:7;7764:6;7732:8;:39::i;:::-;7789:4;7782:11;;7608:193;;;;:::o;13060:101::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13148:5:::1;13133:4;:12;13138:6;13133:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13060:101:::0;:::o;5533:41::-;;;;;;;;;;;;;:::o;6960:95::-;7013:7;4685:21;7033:14;;6960:95;:::o;7809:446::-;7941:4;7958:36;7968:6;7976:9;7987:6;7958:9;:36::i;:::-;8005:220;8028:6;8049:12;:10;:12::i;:::-;8076:138;8132:6;8076:138;;;;;;;;;;;;;;;;;:11;:19;8088:6;8076:19;;;;;;;;;;;;;;;:33;8096:12;:10;:12::i;:::-;8076:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8005:8;:220::i;:::-;8243:4;8236:11;;7809:446;;;;;:::o;16919:148::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17041:18:::1;17019:19;:40;;;;16919:148:::0;:::o;5829:52::-;;;;:::o;6869:83::-;6910:5;4359:1;6928:16;;6869:83;:::o;17106:122::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17209:11:::1;17194:12;:26;;;;17106:122:::0;:::o;5581:28::-;;;;;;;;;;;;;:::o;17367:243::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17493:9:::1;17489:114;17512:8;;:15;;17508:1;:19;17489:114;;;17583:8;17549:18;:31;17568:8;;17577:1;17568:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17549:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17529:3;;;;;:::i;:::-;;;;17489:114;;;;17367:243:::0;;;:::o;12874:178::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12959:9:::1;12954:91;12978:5;:12;12974:1;:16;12954:91;;;13029:4;13012;:14;13017:5;13023:1;13017:8;;;;;;;;:::i;:::-;;;;;;;;13012:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12992:3;;;;;:::i;:::-;;;;12954:91;;;;12874:178:::0;:::o;12631:235::-;12697:19;;;;;;;;;;;12681:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12736:17;;;;;;;;;;;12720:33;;:12;:10;:12::i;:::-;:33;;;12681:72;12673:81;;;;;;12765:26;12794:21;12765:50;;12826:32;12839:18;12826:12;:32::i;:::-;12662:204;12631:235::o;7063:138::-;7129:7;7156:37;7176:7;:16;7184:7;7176:16;;;;;;;;;;;;;;;;7156:19;:37::i;:::-;7149:44;;7063:138;;;:::o;1617:148::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1724:1:::1;1687:40;;1708:6;::::0;::::1;;;;;;;;1687:40;;;;;;;;;;;;1755:1;1738:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1617:148::o:0;17236:123::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17338:13:::1;17321:14;:30;;;;17236:123:::0;:::o;5723:45::-;;;;:::o;5226:43::-;;;;;;;;;;;;;;;;;:::o;12298:81::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12367:4:::1;12353:11;;:18;;;;;;;;;;;;;;;;;;12298:81::o:0;1403:79::-;1441:7;1468:6;;;;;;;;;;;1461:13;;1403:79;:::o;5775:47::-;;;;:::o;6774:87::-;6813:13;6846:7;;;;;;;;;;;;;;;;;6839:14;;6774:87;:::o;7209:199::-;7314:4;7336:42;7346:12;:10;:12::i;:::-;7360:9;7371:6;7336:9;:42::i;:::-;7396:4;7389:11;;7209:199;;;;:::o;5276:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5188:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12387:236::-;12453:19;;;;;;;;;;;12437:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12492:17;;;;;;;;;;;12476:33;;:12;:10;:12::i;:::-;:33;;;12437:72;12429:81;;;;;;12521:23;12547:24;12565:4;12547:9;:24::i;:::-;12521:50;;12582:33;12599:15;12582:16;:33::i;:::-;12418:205;12387:236::o;7416:184::-;7533:7;7565:11;:18;7577:5;7565:18;;;;;;;;;;;;;;;:27;7584:7;7565:27;;;;;;;;;;;;;;;;7558:34;;7416:184;;;;:::o;16567:300::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16727:13:::1;16710:14;:30;;;;16769:14;16751:15;:32;;;;16809:11;16794:12;:26;;;;16847:12;16831:13;:28;;;;16567:300:::0;;;;:::o;1773:244::-;1540:12;:10;:12::i;:::-;1530:22;;:6;;;;;;;;;;:22;;;1522:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1882:1:::1;1862:22;;:8;:22;;::::0;1854:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1972:8;1943:38;;1964:6;::::0;::::1;;;;;;;;1943:38;;;;;;;;;;;;2001:8;1992:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1773:244:::0;:::o;162:98::-;215:7;242:10;235:17;;162:98;:::o;8946:369::-;9090:1;9073:19;;:5;:19;;;9065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:1;9152:21;;:7;:21;;;9144:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9253:6;9223:11;:18;9235:5;9223:18;;;;;;;;;;;;;;;:27;9242:7;9223:27;;;;;;;;;;;;;;;:36;;;;9291:7;9275:32;;9284:5;9275:32;;;9300:6;9275:32;;;;;;:::i;:::-;;;;;;;;8946:369;;;:::o;9323:2369::-;9461:1;9445:18;;:4;:18;;;9437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1;9524:16;;:2;:16;;;9516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9599:6;:10;9591:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9681:7;:5;:7::i;:::-;9673:15;;:4;:15;;;;:32;;;;;9698:7;:5;:7::i;:::-;9692:13;;:2;:13;;;;9673:32;:52;;;;;9710:9;:15;9720:4;9710:15;;;;;;;;;;;;;;;;;;;;;;;;;9709:16;9673:52;:70;;;;;9730:9;:13;9740:2;9730:13;;;;;;;;;;;;;;;;;;;;;;;;;9729:14;9673:70;9669:1297;;;9800:11;;;;;;;;;;;9795:144;;9840:9;:15;9850:4;9840:15;;;;;;;;;;;;;;;;;;;;;;;;;9832:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9795:144;9973:12;;9963:6;:22;;9955:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10042:4;:10;10047:4;10042:10;;;;;;;;;;;;;;;;;;;;;;;;;10041:11;:24;;;;;10057:4;:8;10062:2;10057:8;;;;;;;;;;;;;;;;;;;;;;;;;10056:9;10041:24;10033:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:13;;;;;;;;;;;10125:19;;:2;:19;;;10122:146;;10198:14;;10189:6;10173:13;10183:2;10173:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10165:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10122:146;10284:28;10315:24;10333:4;10315:9;:24::i;:::-;10284:55;;10354:12;10393:19;;10369:20;:43;;10354:58;;10456:12;;10432:20;:36;10429:124;;10525:12;;10502:35;;10429:124;10573:7;:18;;;;;10585:6;;;;;;;;;;;10584:7;10573:18;:43;;;;;10603:13;;;;;;;;;;;10595:21;;:4;:21;;;;10573:43;:58;;;;;10620:11;;;;;;;;;;10573:58;:87;;;;;10636:18;:24;10655:4;10636:24;;;;;;;;;;;;;;;;;;;;;;;;;10635:25;10573:87;:114;;;;;10665:18;:22;10684:2;10665:22;;;;;;;;;;;;;;;;;;;;;;;;;10664:23;10573:114;10569:386;;;10708:38;10725:20;10708:16;:38::i;:::-;10765:26;10794:21;10765:50;;10859:1;10838:18;:22;10834:106;;;10885:35;10898:21;10885:12;:35::i;:::-;10834:106;10689:266;10569:386;9745:1221;;9669:1297;10978:12;10993:4;10978:19;;11042:18;:24;11061:4;11042:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11070:18;:22;11089:2;11070:22;;;;;;;;;;;;;;;;;;;;;;;;;11042:50;11041:102;;;;11106:13;;;;;;;;;;;11098:21;;:4;:21;;;;:44;;;;;11129:13;;;;;;;;;;;11123:19;;:2;:19;;;;11098:44;11041:102;11037:594;;;11170:5;11160:15;;11037:594;;;11253:13;;;;;;;;;;;11245:21;;:4;:21;;;:55;;;;;11284:15;;;;;;;;;;;11270:30;;:2;:30;;;;11245:55;11242:162;;;11333:14;;11321:9;:26;;;;11376:12;;11366:7;:22;;;;11242:162;11463:13;;;;;;;;;;;11457:19;;:2;:19;;;:55;;;;;11496:15;;;;;;;;;;;11480:32;;:4;:32;;;;11457:55;11453:165;;;11545:15;;11533:9;:27;;;;11589:13;;11579:7;:23;;;;11453:165;11037:594;11643:41;11658:4;11664:2;11668:6;11676:7;11643:14;:41::i;:::-;9426:2266;9323:2369;;;:::o;2381:224::-;2501:7;2534:1;2529;:6;;2537:12;2521:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2561:9;2577:1;2573;:5;;;;:::i;:::-;2561:17;;2596:1;2589:8;;;2381:224;;;;;:::o;12191:99::-;12248:17;;;;;;;;;;;:26;;:34;12275:6;12248:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12191:99;:::o;8263:323::-;8358:7;8416;;8405;:18;;8383:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8504:19;8526:10;:8;:10::i;:::-;8504:32;;8554:24;8566:11;8554:7;:11;;:24;;;;:::i;:::-;8547:31;;;8263:323;;;:::o;11700:483::-;5984:4;5975:6;;:13;;;;;;;;;;;;;;;;;;11778:21:::1;11816:1;11802:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11778:40;;11847:4;11829;11834:1;11829:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11873:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11863:4;11868:1;11863:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11906:62;11923:4;11938:15;;;;;;;;;;;11956:11;11906:8;:62::i;:::-;11979:15;;;;;;;;;;;:66;;;12060:11;12086:1;12102:4;12129;12149:15;11979:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11767:416;6020:5:::0;6011:6;;:14;;;;;;;;;;;;;;;;;;11700:483;:::o;13169:282::-;13325:7;13320:28;;13334:14;:12;:14::i;:::-;13320:28;13359:44;13377:6;13385:9;13396:6;13359:17;:44::i;:::-;13419:7;13414:29;;13428:15;:13;:15::i;:::-;13414:29;13169:282;;;;:::o;16130:164::-;16172:7;16193:15;16210;16229:19;:17;:19::i;:::-;16192:56;;;;16266:20;16278:7;16266;:11;;:20;;;;:::i;:::-;16259:27;;;;16130:164;:::o;2867:132::-;2925:7;2952:39;2956:1;2959;2952:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2945:46;;2867:132;;;;:::o;8594:219::-;8654:1;8641:9;;:14;:30;;;;;8670:1;8659:7;;:12;8641:30;8673:7;8637:43;8712:9;;8692:17;:29;;;;8750:7;;8732:15;:25;;;;8782:1;8770:9;:13;;;;8804:1;8794:7;:11;;;;8594:219;:::o;13459:610::-;13606:15;13636:23;13674:12;13701:23;13739:12;13766:13;13793:19;13804:7;13793:10;:19::i;:::-;13591:221;;;;;;;;;;;;13841:28;13861:7;13841;:15;13849:6;13841:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13823:7;:15;13831:6;13823:15;;;;;;;;;;;;;;;:46;;;;13901:39;13924:15;13901:7;:18;13909:9;13901:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13880:7;:18;13888:9;13880:18;;;;;;;;;;;;;;;:60;;;;13951:16;13961:5;13951:9;:16::i;:::-;13978:23;13990:4;13996;13978:11;:23::i;:::-;14034:9;14017:44;;14026:6;14017:44;;;14045:15;14017:44;;;;;;:::i;:::-;;;;;;;;13580:489;;;;;;13459:610;;;:::o;8821:117::-;8877:17;;8865:9;:29;;;;8915:15;;8905:7;:25;;;;8821:117::o;16302:257::-;16353:7;16362;16382:15;16400:7;;16382:25;;16418:15;4685:21;16418:25;;16468:20;4685:21;16468:7;;:11;;:20;;;;:::i;:::-;16458:7;:30;16454:61;;;16498:7;;4685:21;16490:25;;;;;;;;16454:61;16534:7;16543;16526:25;;;;;;16302:257;;;:::o;3007:223::-;3127:7;3159:1;3155;:5;3162:12;3147:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3186:9;3202:1;3198;:5;;;;:::i;:::-;3186:17;;3221:1;3214:8;;;3007:223;;;;;:::o;14488:615::-;14588:7;14610;14632;14654;14676;14698;14734:23;14759:12;14773:13;14803:40;14815:7;14824:9;;14835:7;;14803:11;:40::i;:::-;14733:110;;;;;;14854:19;14876:10;:8;:10::i;:::-;14854:32;;14898:15;14915:23;14940:12;14969:46;14981:7;14990:4;14996:5;15003:11;14969;:46::i;:::-;14897:118;;;;;;15034:7;15043:15;15060:4;15066:15;15083:4;15089:5;15026:69;;;;;;;;;;;;;;;;;;;14488:615;;;;;;;:::o;2237:136::-;2295:7;2322:43;2326:1;2329;2322:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2315:50;;2237:136;;;;:::o;2050:179::-;2108:7;2128:9;2144:1;2140;:5;;;;:::i;:::-;2128:17;;2169:1;2164;:6;;2156:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2220:1;2213:8;;;2050:179;;;;:::o;14077:211::-;14130:19;14152:10;:8;:10::i;:::-;14130:32;;14173:13;14189:22;14199:11;14189:5;:9;;:22;;;;:::i;:::-;14173:38;;14247:33;14274:5;14247:7;:22;14263:4;14247:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14222:7;:22;14238:4;14222:22;;;;;;;;;;;;;;;:58;;;;14119:169;;14077:211;:::o;14296:147::-;14374:17;14386:4;14374:7;;:11;;:17;;;;:::i;:::-;14364:7;:27;;;;14415:20;14430:4;14415:10;;:14;;:20;;;;:::i;:::-;14402:10;:33;;;;14296:147;;:::o;15111:469::-;15280:7;15302;15324;15359:12;15374:30;15400:3;15374:21;15386:8;15374:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15359:45;;15415:13;15431:28;15455:3;15431:19;15443:6;15431:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15415:44;;15470:23;15496:28;15518:5;15496:17;15508:4;15496:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15470:54;;15543:15;15560:4;15566:5;15535:37;;;;;;;;;15111:469;;;;;;;:::o;15588:534::-;15782:7;15804;15826;15861:15;15879:24;15891:11;15879:7;:11;;:24;;;;:::i;:::-;15861:42;;15914:12;15929:21;15938:11;15929:4;:8;;:21;;;;:::i;:::-;15914:36;;15961:13;15977:22;15987:11;15977:5;:9;;:22;;;;:::i;:::-;15961:38;;16010:23;16036:28;16058:5;16036:17;16048:4;16036:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16010:54;;16083:7;16092:15;16109:4;16075:39;;;;;;;;;;15588:534;;;;;;;;:::o;2613:246::-;2671:7;2700:1;2695;:6;2691:47;;2725:1;2718:8;;;;2691:47;2748:9;2764:1;2760;:5;;;;:::i;:::-;2748:17;;2793:1;2788;2784;:5;;;;:::i;:::-;:10;2776:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2850:1;2843:8;;;2613:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:329::-;5838:6;5887:2;5875:9;5866:7;5862:23;5858:32;5855:119;;;5893:79;;:::i;:::-;5855:119;6013:1;6038:53;6083:7;6074:6;6063:9;6059:22;6038:53;:::i;:::-;6028:63;;5984:117;5779:329;;;;:::o;6114:86::-;6149:7;6189:4;6182:5;6178:16;6167:27;;6114:86;;;:::o;6206:112::-;6289:22;6305:5;6289:22;:::i;:::-;6284:3;6277:35;6206:112;;:::o;6324:214::-;6413:4;6451:2;6440:9;6436:18;6428:26;;6464:67;6528:1;6517:9;6513:17;6504:6;6464:67;:::i;:::-;6324:214;;;;:::o;6544:118::-;6631:24;6649:5;6631:24;:::i;:::-;6626:3;6619:37;6544:118;;:::o;6668:222::-;6761:4;6799:2;6788:9;6784:18;6776:26;;6812:71;6880:1;6869:9;6865:17;6856:6;6812:71;:::i;:::-;6668:222;;;;:::o;6896:117::-;7005:1;7002;6995:12;7019:117;7128:1;7125;7118:12;7142:117;7251:1;7248;7241:12;7282:568;7355:8;7365:6;7415:3;7408:4;7400:6;7396:17;7392:27;7382:122;;7423:79;;:::i;:::-;7382:122;7536:6;7523:20;7513:30;;7566:18;7558:6;7555:30;7552:117;;;7588:79;;:::i;:::-;7552:117;7702:4;7694:6;7690:17;7678:29;;7756:3;7748:4;7740:6;7736:17;7726:8;7722:32;7719:41;7716:128;;;7763:79;;:::i;:::-;7716:128;7282:568;;;;;:::o;7856:116::-;7926:21;7941:5;7926:21;:::i;:::-;7919:5;7916:32;7906:60;;7962:1;7959;7952:12;7906:60;7856:116;:::o;7978:133::-;8021:5;8059:6;8046:20;8037:29;;8075:30;8099:5;8075:30;:::i;:::-;7978:133;;;;:::o;8117:698::-;8209:6;8217;8225;8274:2;8262:9;8253:7;8249:23;8245:32;8242:119;;;8280:79;;:::i;:::-;8242:119;8428:1;8417:9;8413:17;8400:31;8458:18;8450:6;8447:30;8444:117;;;8480:79;;:::i;:::-;8444:117;8593:80;8665:7;8656:6;8645:9;8641:22;8593:80;:::i;:::-;8575:98;;;;8371:312;8722:2;8748:50;8790:7;8781:6;8770:9;8766:22;8748:50;:::i;:::-;8738:60;;8693:115;8117:698;;;;;:::o;8821:180::-;8869:77;8866:1;8859:88;8966:4;8963:1;8956:15;8990:4;8987:1;8980:15;9007:281;9090:27;9112:4;9090:27;:::i;:::-;9082:6;9078:40;9220:6;9208:10;9205:22;9184:18;9172:10;9169:34;9166:62;9163:88;;;9231:18;;:::i;:::-;9163:88;9271:10;9267:2;9260:22;9050:238;9007:281;;:::o;9294:129::-;9328:6;9355:20;;:::i;:::-;9345:30;;9384:33;9412:4;9404:6;9384:33;:::i;:::-;9294:129;;;:::o;9429:311::-;9506:4;9596:18;9588:6;9585:30;9582:56;;;9618:18;;:::i;:::-;9582:56;9668:4;9660:6;9656:17;9648:25;;9728:4;9722;9718:15;9710:23;;9429:311;;;:::o;9763:710::-;9859:5;9884:81;9900:64;9957:6;9900:64;:::i;:::-;9884:81;:::i;:::-;9875:90;;9985:5;10014:6;10007:5;10000:21;10048:4;10041:5;10037:16;10030:23;;10101:4;10093:6;10089:17;10081:6;10077:30;10130:3;10122:6;10119:15;10116:122;;;10149:79;;:::i;:::-;10116:122;10264:6;10247:220;10281:6;10276:3;10273:15;10247:220;;;10356:3;10385:37;10418:3;10406:10;10385:37;:::i;:::-;10380:3;10373:50;10452:4;10447:3;10443:14;10436:21;;10323:144;10307:4;10302:3;10298:14;10291:21;;10247:220;;;10251:21;9865:608;;9763:710;;;;;:::o;10496:370::-;10567:5;10616:3;10609:4;10601:6;10597:17;10593:27;10583:122;;10624:79;;:::i;:::-;10583:122;10741:6;10728:20;10766:94;10856:3;10848:6;10841:4;10833:6;10829:17;10766:94;:::i;:::-;10757:103;;10573:293;10496:370;;;;:::o;10872:539::-;10956:6;11005:2;10993:9;10984:7;10980:23;10976:32;10973:119;;;11011:79;;:::i;:::-;10973:119;11159:1;11148:9;11144:17;11131:31;11189:18;11181:6;11178:30;11175:117;;;11211:79;;:::i;:::-;11175:117;11316:78;11386:7;11377:6;11366:9;11362:22;11316:78;:::i;:::-;11306:88;;11102:302;10872:539;;;;:::o;11417:474::-;11485:6;11493;11542:2;11530:9;11521:7;11517:23;11513:32;11510:119;;;11548:79;;:::i;:::-;11510:119;11668:1;11693:53;11738:7;11729:6;11718:9;11714:22;11693:53;:::i;:::-;11683:63;;11639:117;11795:2;11821:53;11866:7;11857:6;11846:9;11842:22;11821:53;:::i;:::-;11811:63;;11766:118;11417:474;;;;;:::o;11897:765::-;11983:6;11991;11999;12007;12056:3;12044:9;12035:7;12031:23;12027:33;12024:120;;;12063:79;;:::i;:::-;12024:120;12183:1;12208:53;12253:7;12244:6;12233:9;12229:22;12208:53;:::i;:::-;12198:63;;12154:117;12310:2;12336:53;12381:7;12372:6;12361:9;12357:22;12336:53;:::i;:::-;12326:63;;12281:118;12438:2;12464:53;12509:7;12500:6;12489:9;12485:22;12464:53;:::i;:::-;12454:63;;12409:118;12566:2;12592:53;12637:7;12628:6;12617:9;12613:22;12592:53;:::i;:::-;12582:63;;12537:118;11897:765;;;;;;;:::o;12668:182::-;12808:34;12804:1;12796:6;12792:14;12785:58;12668:182;:::o;12856:366::-;12998:3;13019:67;13083:2;13078:3;13019:67;:::i;:::-;13012:74;;13095:93;13184:3;13095:93;:::i;:::-;13213:2;13208:3;13204:12;13197:19;;12856:366;;;:::o;13228:419::-;13394:4;13432:2;13421:9;13417:18;13409:26;;13481:9;13475:4;13471:20;13467:1;13456:9;13452:17;13445:47;13509:131;13635:4;13509:131;:::i;:::-;13501:139;;13228:419;;;:::o;13653:180::-;13701:77;13698:1;13691:88;13798:4;13795:1;13788:15;13822:4;13819:1;13812:15;13839:180;13887:77;13884:1;13877:88;13984:4;13981:1;13974:15;14008:4;14005:1;13998:15;14025:233;14064:3;14087:24;14105:5;14087:24;:::i;:::-;14078:33;;14133:66;14126:5;14123:77;14120:103;;14203:18;;:::i;:::-;14120:103;14250:1;14243:5;14239:13;14232:20;;14025:233;;;:::o;14264:225::-;14404:34;14400:1;14392:6;14388:14;14381:58;14473:8;14468:2;14460:6;14456:15;14449:33;14264:225;:::o;14495:366::-;14637:3;14658:67;14722:2;14717:3;14658:67;:::i;:::-;14651:74;;14734:93;14823:3;14734:93;:::i;:::-;14852:2;14847:3;14843:12;14836:19;;14495:366;;;:::o;14867:419::-;15033:4;15071:2;15060:9;15056:18;15048:26;;15120:9;15114:4;15110:20;15106:1;15095:9;15091:17;15084:47;15148:131;15274:4;15148:131;:::i;:::-;15140:139;;14867:419;;;:::o;15292:223::-;15432:34;15428:1;15420:6;15416:14;15409:58;15501:6;15496:2;15488:6;15484:15;15477:31;15292:223;:::o;15521:366::-;15663:3;15684:67;15748:2;15743:3;15684:67;:::i;:::-;15677:74;;15760:93;15849:3;15760:93;:::i;:::-;15878:2;15873:3;15869:12;15862:19;;15521:366;;;:::o;15893:419::-;16059:4;16097:2;16086:9;16082:18;16074:26;;16146:9;16140:4;16136:20;16132:1;16121:9;16117:17;16110:47;16174:131;16300:4;16174:131;:::i;:::-;16166:139;;15893:419;;;:::o;16318:221::-;16458:34;16454:1;16446:6;16442:14;16435:58;16527:4;16522:2;16514:6;16510:15;16503:29;16318:221;:::o;16545:366::-;16687:3;16708:67;16772:2;16767:3;16708:67;:::i;:::-;16701:74;;16784:93;16873:3;16784:93;:::i;:::-;16902:2;16897:3;16893:12;16886:19;;16545:366;;;:::o;16917:419::-;17083:4;17121:2;17110:9;17106:18;17098:26;;17170:9;17164:4;17160:20;17156:1;17145:9;17141:17;17134:47;17198:131;17324:4;17198:131;:::i;:::-;17190:139;;16917:419;;;:::o;17342:224::-;17482:34;17478:1;17470:6;17466:14;17459:58;17551:7;17546:2;17538:6;17534:15;17527:32;17342:224;:::o;17572:366::-;17714:3;17735:67;17799:2;17794:3;17735:67;:::i;:::-;17728:74;;17811:93;17900:3;17811:93;:::i;:::-;17929:2;17924:3;17920:12;17913:19;;17572:366;;;:::o;17944:419::-;18110:4;18148:2;18137:9;18133:18;18125:26;;18197:9;18191:4;18187:20;18183:1;18172:9;18168:17;18161:47;18225:131;18351:4;18225:131;:::i;:::-;18217:139;;17944:419;;;:::o;18369:222::-;18509:34;18505:1;18497:6;18493:14;18486:58;18578:5;18573:2;18565:6;18561:15;18554:30;18369:222;:::o;18597:366::-;18739:3;18760:67;18824:2;18819:3;18760:67;:::i;:::-;18753:74;;18836:93;18925:3;18836:93;:::i;:::-;18954:2;18949:3;18945:12;18938:19;;18597:366;;;:::o;18969:419::-;19135:4;19173:2;19162:9;19158:18;19150:26;;19222:9;19216:4;19212:20;19208:1;19197:9;19193:17;19186:47;19250:131;19376:4;19250:131;:::i;:::-;19242:139;;18969:419;;;:::o;19394:228::-;19534:34;19530:1;19522:6;19518:14;19511:58;19603:11;19598:2;19590:6;19586:15;19579:36;19394:228;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:250::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:33;20629:2;20621:6;20617:15;20610:58;20425:250;:::o;20681:366::-;20823:3;20844:67;20908:2;20903:3;20844:67;:::i;:::-;20837:74;;20920:93;21009:3;20920:93;:::i;:::-;21038:2;21033:3;21029:12;21022:19;;20681:366;;;:::o;21053:419::-;21219:4;21257:2;21246:9;21242:18;21234:26;;21306:9;21300:4;21296:20;21292:1;21281:9;21277:17;21270:47;21334:131;21460:4;21334:131;:::i;:::-;21326:139;;21053:419;;;:::o;21478:178::-;21618:30;21614:1;21606:6;21602:14;21595:54;21478:178;:::o;21662:366::-;21804:3;21825:67;21889:2;21884:3;21825:67;:::i;:::-;21818:74;;21901:93;21990:3;21901:93;:::i;:::-;22019:2;22014:3;22010:12;22003:19;;21662:366;;;:::o;22034:419::-;22200:4;22238:2;22227:9;22223:18;22215:26;;22287:9;22281:4;22277:20;22273:1;22262:9;22258:17;22251:47;22315:131;22441:4;22315:131;:::i;:::-;22307:139;;22034:419;;;:::o;22459:222::-;22599:34;22595:1;22587:6;22583:14;22576:58;22668:5;22663:2;22655:6;22651:15;22644:30;22459:222;:::o;22687:366::-;22829:3;22850:67;22914:2;22909:3;22850:67;:::i;:::-;22843:74;;22926:93;23015:3;22926:93;:::i;:::-;23044:2;23039:3;23035:12;23028:19;;22687:366;;;:::o;23059:419::-;23225:4;23263:2;23252:9;23248:18;23240:26;;23312:9;23306:4;23302:20;23298:1;23287:9;23283:17;23276:47;23340:131;23466:4;23340:131;:::i;:::-;23332:139;;23059:419;;;:::o;23484:305::-;23524:3;23543:20;23561:1;23543:20;:::i;:::-;23538:25;;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23731:1;23663:66;23659:74;23656:1;23653:81;23650:107;;;23737:18;;:::i;:::-;23650:107;23781:1;23778;23774:9;23767:16;;23484:305;;;;:::o;23795:222::-;23935:34;23931:1;23923:6;23919:14;23912:58;24004:5;23999:2;23991:6;23987:15;23980:30;23795:222;:::o;24023:366::-;24165:3;24186:67;24250:2;24245:3;24186:67;:::i;:::-;24179:74;;24262:93;24351:3;24262:93;:::i;:::-;24380:2;24375:3;24371:12;24364:19;;24023:366;;;:::o;24395:419::-;24561:4;24599:2;24588:9;24584:18;24576:26;;24648:9;24642:4;24638:20;24634:1;24623:9;24619:17;24612:47;24676:131;24802:4;24676:131;:::i;:::-;24668:139;;24395:419;;;:::o;24820:191::-;24860:4;24880:20;24898:1;24880:20;:::i;:::-;24875:25;;24914:20;24932:1;24914:20;:::i;:::-;24909:25;;24953:1;24950;24947:8;24944:34;;;24958:18;;:::i;:::-;24944:34;25003:1;25000;24996:9;24988:17;;24820:191;;;;:::o;25017:229::-;25157:34;25153:1;25145:6;25141:14;25134:58;25226:12;25221:2;25213:6;25209:15;25202:37;25017:229;:::o;25252:366::-;25394:3;25415:67;25479:2;25474:3;25415:67;:::i;:::-;25408:74;;25491:93;25580:3;25491:93;:::i;:::-;25609:2;25604:3;25600:12;25593:19;;25252:366;;;:::o;25624:419::-;25790:4;25828:2;25817:9;25813:18;25805:26;;25877:9;25871:4;25867:20;25863:1;25852:9;25848:17;25841:47;25905:131;26031:4;25905:131;:::i;:::-;25897:139;;25624:419;;;:::o;26049:143::-;26106:5;26137:6;26131:13;26122:22;;26153:33;26180:5;26153:33;:::i;:::-;26049:143;;;;:::o;26198:351::-;26268:6;26317:2;26305:9;26296:7;26292:23;26288:32;26285:119;;;26323:79;;:::i;:::-;26285:119;26443:1;26468:64;26524:7;26515:6;26504:9;26500:22;26468:64;:::i;:::-;26458:74;;26414:128;26198:351;;;;:::o;26555:85::-;26600:7;26629:5;26618:16;;26555:85;;;:::o;26646:158::-;26704:9;26737:61;26755:42;26764:32;26790:5;26764:32;:::i;:::-;26755:42;:::i;:::-;26737:61;:::i;:::-;26724:74;;26646:158;;;:::o;26810:147::-;26905:45;26944:5;26905:45;:::i;:::-;26900:3;26893:58;26810:147;;:::o;26963:114::-;27030:6;27064:5;27058:12;27048:22;;26963:114;;;:::o;27083:184::-;27182:11;27216:6;27211:3;27204:19;27256:4;27251:3;27247:14;27232:29;;27083:184;;;;:::o;27273:132::-;27340:4;27363:3;27355:11;;27393:4;27388:3;27384:14;27376:22;;27273:132;;;:::o;27411:108::-;27488:24;27506:5;27488:24;:::i;:::-;27483:3;27476:37;27411:108;;:::o;27525:179::-;27594:10;27615:46;27657:3;27649:6;27615:46;:::i;:::-;27693:4;27688:3;27684:14;27670:28;;27525:179;;;;:::o;27710:113::-;27780:4;27812;27807:3;27803:14;27795:22;;27710:113;;;:::o;27859:732::-;27978:3;28007:54;28055:5;28007:54;:::i;:::-;28077:86;28156:6;28151:3;28077:86;:::i;:::-;28070:93;;28187:56;28237:5;28187:56;:::i;:::-;28266:7;28297:1;28282:284;28307:6;28304:1;28301:13;28282:284;;;28383:6;28377:13;28410:63;28469:3;28454:13;28410:63;:::i;:::-;28403:70;;28496:60;28549:6;28496:60;:::i;:::-;28486:70;;28342:224;28329:1;28326;28322:9;28317:14;;28282:284;;;28286:14;28582:3;28575:10;;27983:608;;;27859:732;;;;:::o;28597:831::-;28860:4;28898:3;28887:9;28883:19;28875:27;;28912:71;28980:1;28969:9;28965:17;28956:6;28912:71;:::i;:::-;28993:80;29069:2;29058:9;29054:18;29045:6;28993:80;:::i;:::-;29120:9;29114:4;29110:20;29105:2;29094:9;29090:18;29083:48;29148:108;29251:4;29242:6;29148:108;:::i;:::-;29140:116;;29266:72;29334:2;29323:9;29319:18;29310:6;29266:72;:::i;:::-;29348:73;29416:3;29405:9;29401:19;29392:6;29348:73;:::i;:::-;28597:831;;;;;;;;:::o;29434:180::-;29482:77;29479:1;29472:88;29579:4;29576:1;29569:15;29603:4;29600:1;29593:15;29620:185;29660:1;29677:20;29695:1;29677:20;:::i;:::-;29672:25;;29711:20;29729:1;29711:20;:::i;:::-;29706:25;;29750:1;29740:35;;29755:18;;:::i;:::-;29740:35;29797:1;29794;29790:9;29785:14;;29620:185;;;;:::o;29811:177::-;29951:29;29947:1;29939:6;29935:14;29928:53;29811:177;:::o;29994:366::-;30136:3;30157:67;30221:2;30216:3;30157:67;:::i;:::-;30150:74;;30233:93;30322:3;30233:93;:::i;:::-;30351:2;30346:3;30342:12;30335:19;;29994:366;;;:::o;30366:419::-;30532:4;30570:2;30559:9;30555:18;30547:26;;30619:9;30613:4;30609:20;30605:1;30594:9;30590:17;30583:47;30647:131;30773:4;30647:131;:::i;:::-;30639:139;;30366:419;;;:::o;30791:348::-;30831:7;30854:20;30872:1;30854:20;:::i;:::-;30849:25;;30888:20;30906:1;30888:20;:::i;:::-;30883:25;;31076:1;31008:66;31004:74;31001:1;30998:81;30993:1;30986:9;30979:17;30975:105;30972:131;;;31083:18;;:::i;:::-;30972:131;31131:1;31128;31124:9;31113:20;;30791:348;;;;:::o;31145:220::-;31285:34;31281:1;31273:6;31269:14;31262:58;31354:3;31349:2;31341:6;31337:15;31330:28;31145:220;:::o;31371:366::-;31513:3;31534:67;31598:2;31593:3;31534:67;:::i;:::-;31527:74;;31610:93;31699:3;31610:93;:::i;:::-;31728:2;31723:3;31719:12;31712:19;;31371:366;;;:::o;31743:419::-;31909:4;31947:2;31936:9;31932:18;31924:26;;31996:9;31990:4;31986:20;31982:1;31971:9;31967:17;31960:47;32024:131;32150:4;32024:131;:::i;:::-;32016:139;;31743:419;;;:::o

Swarm Source

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