ETH Price: $3,208.30 (-1.43%)
Gas: 1 Gwei

Token

BuySexual (BuySex)
 

Overview

Max Total Supply

1,000,000,000 BuySex

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*💩️👨🏻‍⚕️.eth
Balance
17,846,215.11576885 BuySex

Value
$0.00
0x3f46cb3461625fde3e15f55d8b740e0b6f6b77ee
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:
BuySexual

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-22
*/

// SPDX-License-Identifier: Unlicensed
    pragma solidity ^0.8.9;

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

        using SafeMath for uint256;

        string private constant _name = "BuySexual";
        string private constant _symbol = "BuySex";
        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 = 1000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;
        uint256 private _redisFeeOnBuy = 0;
        uint256 private _taxFeeOnBuy = 5; 
        uint256 private _redisFeeOnSell = 0;
        uint256 private _taxFeeOnSell = 5;

        //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;
        address payable private _developmentAddress = payable(msg.sender);
        address payable private _marketingAddress = payable(msg.sender);

        IUniswapV2Router02 public uniswapV2Router;
        address public uniswapV2Pair;

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

        uint256 public _maxTxAmount = 20000000 * 10**9;
        uint256 public _maxWalletSize = 20000000 * 10**9;
        uint256 public _swapTokensAtAmount = 10000 * 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()) {

                //Trade start check
                if (!tradingOpen) {
                    require(from == owner(), "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 setTrading(bool _tradingOpen) public onlyOwner {
            tradingOpen = _tradingOpen;
        }

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

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

        function blockBots(address[] memory bots_) public onlyOwner {
            for (uint256 i = 0; i < bots_.length; i++) {
                bots[bots_[i]] = true;
            }
        }

        function unblockBot(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 setFee( uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
            require(taxFeeOnBuy < 10, "Buy tax fee must be less than 10");
            require(taxFeeOnSell < 10, "Sell tax fee must be less than 10");
            _taxFeeOnBuy = taxFeeOnBuy;
            _taxFeeOnSell = taxFeeOnSell;
        }

        function setReflectionFee( uint256 reflectBuy, uint256 reflectSell) public onlyOwner {
            require(reflectBuy < 10, "Buy tax fee must be less than 10");
            require(reflectSell < 10, "Sell tax fee must be less than 10");
            _redisFeeOnBuy = reflectBuy;
            _redisFeeOnSell = reflectSell;
        }


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

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

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

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

        function setMaximums() public onlyOwner {
            _maxTxAmount = MAX;
            _maxWalletSize = MAX;
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"blockBots","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMaximums","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectBuy","type":"uint256"},{"internalType":"uint256","name":"reflectSell","type":"uint256"}],"name":"setReflectionFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"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":"unblockBot","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"}]

6080604052670de0b6b3a76400006000196200001c919062000701565b6000196200002b919062000768565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5533601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200015957600080fd5b5060006200016c6200069760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002216200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b91906200080d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b991906200080d565b6040518363ffffffff1660e01b8152600401620003d892919062000850565b6020604051808303816000875af1158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e91906200080d565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004746200069f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006216200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200068891906200088e565b60405180910390a350620008ab565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200070e82620006c8565b91506200071b83620006c8565b9250826200072e576200072d620006d2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077582620006c8565b91506200078283620006c8565b92508282039050818111156200079d576200079c62000739565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d582620007a8565b9050919050565b620007e781620007c8565b8114620007f357600080fd5b50565b6000815190506200080781620007dc565b92915050565b600060208284031215620008265762000825620007a3565b5b60006200083684828501620007f6565b91505092915050565b6200084a81620007c8565b82525050565b60006040820190506200086760008301856200083f565b6200087660208301846200083f565b9392505050565b6200088881620006c8565b82525050565b6000602082019050620008a560008301846200087d565b92915050565b6140fa80620008bb6000396000f3fe6080604052600436106101e65760003560e01c806374010ece116101025780639f2ecf3411610095578063c492f04611610064578063c492f046146106b2578063dd62ed3e146106db578063ea1644d514610718578063f2fde38b14610741576101ed565b80639f2ecf341461060a578063a9059cbb14610621578063bfd792841461065e578063c3c8cd801461069b576101ed565b80638f70ccf7116100d15780638f70ccf7146105625780638f9a55c01461058b57806395d89b41146105b657806398a5c315146105e1576101ed565b806374010ece146104a65780637d1db4a5146104cf5780637f2feddc146104fa5780638da5cb5b14610537576101ed565b806349bd5a5e1161017a5780636d8aa8f8116101495780636d8aa8f8146104125780636fc3eaec1461043b57806370a0823114610452578063715018a61461048f576101ed565b806349bd5a5e1461036c57806352f7c98814610397578063555d55dd146103c05780636b999053146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612ff3565b61076a565b005b34801561022757600080fd5b50610230610894565b60405161023d91906130bb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613113565b6108d1565b60405161027a919061316e565b60405180910390f35b34801561028f57600080fd5b506102986108ef565b6040516102a591906131e8565b60405180910390f35b3480156102ba57600080fd5b506102c3610915565b6040516102d09190613212565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061322d565b610925565b60405161030d919061316e565b60405180910390f35b34801561032257600080fd5b5061032b6109fe565b6040516103389190613212565b60405180910390f35b34801561034d57600080fd5b50610356610a04565b604051610363919061329c565b60405180910390f35b34801561037857600080fd5b50610381610a0d565b60405161038e91906132c6565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906132e1565b610a33565b005b3480156103cc57600080fd5b506103e760048036038101906103e291906132e1565b610b60565b005b3480156103f557600080fd5b50610410600480360381019061040b9190613321565b610c8d565b005b34801561041e57600080fd5b506104396004803603810190610434919061337a565b610d7d565b005b34801561044757600080fd5b50610450610e2f565b005b34801561045e57600080fd5b5061047960048036038101906104749190613321565b610f00565b6040516104869190613212565b60405180910390f35b34801561049b57600080fd5b506104a4610f51565b005b3480156104b257600080fd5b506104cd60048036038101906104c891906133a7565b6110a4565b005b3480156104db57600080fd5b506104e4611143565b6040516104f19190613212565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613321565b611149565b60405161052e9190613212565b60405180910390f35b34801561054357600080fd5b5061054c611161565b60405161055991906132c6565b60405180910390f35b34801561056e57600080fd5b506105896004803603810190610584919061337a565b61118a565b005b34801561059757600080fd5b506105a061123c565b6040516105ad9190613212565b60405180910390f35b3480156105c257600080fd5b506105cb611242565b6040516105d891906130bb565b60405180910390f35b3480156105ed57600080fd5b50610608600480360381019061060391906133a7565b61127f565b005b34801561061657600080fd5b5061061f61131e565b005b34801561062d57600080fd5b5061064860048036038101906106439190613113565b6113c7565b604051610655919061316e565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613321565b6113e5565b604051610692919061316e565b60405180910390f35b3480156106a757600080fd5b506106b0611405565b005b3480156106be57600080fd5b506106d960048036038101906106d4919061342f565b6114de565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061348f565b611618565b60405161070f9190613212565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906133a7565b61169f565b005b34801561074d57600080fd5b5061076860048036038101906107639190613321565b61173e565b005b6107726118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f69061351b565b60405180910390fd5b60005b8151811015610890576001601060008484815181106108245761082361353b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061088890613599565b915050610802565b5050565b60606040518060400160405280600981526020017f42757953657875616c0000000000000000000000000000000000000000000000815250905090565b60006108e56108de6118ff565b8484611907565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610932848484611ad0565b6109f38461093e6118ff565b6109ee8560405180606001604052806028815260200161409d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a46118ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123539092919063ffffffff16565b611907565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3b6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf9061351b565b60405180910390fd5b600a8210610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b029061362d565b60405180910390fd5b600a8110610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906136bf565b60405180910390fd5b8160098190555080600b819055505050565b610b686118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061351b565b60405180910390fd5b600a8210610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061362d565b60405180910390fd5b600a8110610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906136bf565b60405180910390fd5b8160088190555080600a819055505050565b610c956118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061351b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d856118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e099061351b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706118ff565b73ffffffffffffffffffffffffffffffffffffffff161480610ee65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ece6118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610eef57600080fd5b6000479050610efd816123b7565b50565b6000610f4a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612423565b9050919050565b610f596118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ac6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061351b565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111926118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112169061351b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4275795365780000000000000000000000000000000000000000000000000000815250905090565b6112876118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061351b565b60405180910390fd5b8060188190555050565b6113266118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa9061351b565b60405180910390fd5b600019601681905550600019601781905550565b60006113db6113d46118ff565b8484611ad0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114466118ff565b73ffffffffffffffffffffffffffffffffffffffff1614806114bc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a46118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6114c557600080fd5b60006114d030610f00565b90506114db81612491565b50565b6114e66118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061351b565b60405180910390fd5b60005b838390508110156116125781600560008686858181106115995761159861353b565b5b90506020020160208101906115ae9190613321565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160a90613599565b915050611576565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a76118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b9061351b565b60405180910390fd5b8060178190555050565b6117466118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990613751565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906137e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613875565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac39190613212565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613999565b60405180910390fd5b60008111611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613a2b565b60405180910390fd5b611bf9611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c675750611c37611161565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561205257601560149054906101000a900460ff16611cf657611c88611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613abd565b60405180910390fd5b5b601654811115611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613b29565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ddf5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613bbb565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ecb5760175481611e8084610f00565b611e8a9190613bdb565b10611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613c81565b60405180910390fd5b5b6000611ed630610f00565b9050600060185482101590506016548210611ef15760165491505b808015611f09575060158054906101000a900460ff16155b8015611f635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7b5750601560169054906101000a900460ff165b8015611fd15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204f5761203582612491565b6000479050600081111561204d5761204c476123b7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ac5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121ab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ba5760009050612341565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122655750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227d57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561234057600a54600c81905550600b54600d819055505b5b61234d84848484612708565b50505050565b600083831115829061239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239291906130bb565b60405180910390fd5b50600083856123aa9190613ca1565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561241f573d6000803e3d6000fd5b5050565b600060065482111561246a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246190613d47565b60405180910390fd5b6000612474612735565b9050612489818461276090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c8576124c7612e52565b5b6040519080825280602002602001820160405280156124f65781602001602082028036833780820191505090505b509050308160008151811061250e5761250d61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d99190613d7c565b816001815181106125ed576125ec61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611907565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b8959493929190613ea2565b600060405180830381600087803b1580156126d257600080fd5b505af11580156126e6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612716576127156127aa565b5b6127218484846127e7565b8061272f5761272e6129b2565b5b50505050565b60008060006127426129c6565b91509150612759818361276090919063ffffffff16565b9250505090565b60006127a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127be57506000600d54145b6127e557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f987612a88565b95509550955095509550955061285786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293881612b98565b6129428483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299f9190613212565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506129fa670de0b6b3a764000060065461276090919063ffffffff16565b821015612a1857600654670de0b6b3a7640000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6391906130bb565b60405180910390fd5b5060008385612a7b9190613f2b565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab5612735565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612353565b905092915050565b6000808284612b499190613bdb565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613fa8565b60405180910390fd5b8091505092915050565b6000612ba2612735565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce9190613fc8565b9050828482612ddd9190613f2b565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e149061407c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e8a82612e41565b810181811067ffffffffffffffff82111715612ea957612ea8612e52565b5b80604052505050565b6000612ebc612e28565b9050612ec88282612e81565b919050565b600067ffffffffffffffff821115612ee857612ee7612e52565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2982612efe565b9050919050565b612f3981612f1e565b8114612f4457600080fd5b50565b600081359050612f5681612f30565b92915050565b6000612f6f612f6a84612ecd565b612eb2565b90508083825260208201905060208402830185811115612f9257612f91612ef9565b5b835b81811015612fbb5780612fa78882612f47565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612e3c565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612e32565b5b600082013567ffffffffffffffff81111561302757613026612e37565b5b61303384828501612fc5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b600061308d8261303c565b6130978185613047565b93506130a7818560208601613058565b6130b081612e41565b840191505092915050565b600060208201905081810360008301526130d58184613082565b905092915050565b6000819050919050565b6130f0816130dd565b81146130fb57600080fd5b50565b60008135905061310d816130e7565b92915050565b6000806040838503121561312a57613129612e32565b5b600061313885828601612f47565b9250506020613149858286016130fe565b9150509250929050565b60008115159050919050565b61316881613153565b82525050565b6000602082019050613183600083018461315f565b92915050565b6000819050919050565b60006131ae6131a96131a484612efe565b613189565b612efe565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b61320c816130dd565b82525050565b60006020820190506132276000830184613203565b92915050565b60008060006060848603121561324657613245612e32565b5b600061325486828701612f47565b935050602061326586828701612f47565b9250506040613276868287016130fe565b9150509250925092565b600060ff82169050919050565b61329681613280565b82525050565b60006020820190506132b1600083018461328d565b92915050565b6132c081612f1e565b82525050565b60006020820190506132db60008301846132b7565b92915050565b600080604083850312156132f8576132f7612e32565b5b6000613306858286016130fe565b9250506020613317858286016130fe565b9150509250929050565b60006020828403121561333757613336612e32565b5b600061334584828501612f47565b91505092915050565b61335781613153565b811461336257600080fd5b50565b6000813590506133748161334e565b92915050565b6000602082840312156133905761338f612e32565b5b600061339e84828501613365565b91505092915050565b6000602082840312156133bd576133bc612e32565b5b60006133cb848285016130fe565b91505092915050565b600080fd5b60008083601f8401126133ef576133ee612e3c565b5b8235905067ffffffffffffffff81111561340c5761340b6133d4565b5b60208301915083602082028301111561342857613427612ef9565b5b9250929050565b60008060006040848603121561344857613447612e32565b5b600084013567ffffffffffffffff81111561346657613465612e37565b5b613472868287016133d9565b9350935050602061348586828701613365565b9150509250925092565b600080604083850312156134a6576134a5612e32565b5b60006134b485828601612f47565b92505060206134c585828601612f47565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613505602083613047565b9150613510826134cf565b602082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135a4826130dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d6576135d561356a565b5b600182019050919050565b7f4275792074617820666565206d757374206265206c657373207468616e203130600082015250565b6000613617602083613047565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b9050919050565b7f53656c6c2074617820666565206d757374206265206c657373207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a9602183613047565b91506136b48261364d565b604082019050919050565b600060208201905081810360008301526136d88161369c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061373b602683613047565b9150613746826136df565b604082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137cd602483613047565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385f602283613047565b915061386a82613803565b604082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138f1602583613047565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613983602383613047565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a15602983613047565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa7603f83613047565b9150613ab282613a4b565b604082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b13601c83613047565b9150613b1e82613add565b602082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba5602383613047565b9150613bb082613b49565b604082019050919050565b60006020820190508181036000830152613bd481613b98565b9050919050565b6000613be6826130dd565b9150613bf1836130dd565b9250828201905080821115613c0957613c0861356a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b602383613047565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826130dd565b9150613cb7836130dd565b9250828203905081811115613ccf57613cce61356a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d31602a83613047565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b600081519050613d7681612f30565b92915050565b600060208284031215613d9257613d91612e32565b5b6000613da084828501613d67565b91505092915050565b6000819050919050565b6000613dce613dc9613dc484613da9565b613189565b6130dd565b9050919050565b613dde81613db3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1981612f1e565b82525050565b6000613e2b8383613e10565b60208301905092915050565b6000602082019050919050565b6000613e4f82613de4565b613e598185613def565b9350613e6483613e00565b8060005b83811015613e95578151613e7c8882613e1f565b9750613e8783613e37565b925050600181019050613e68565b5085935050505092915050565b600060a082019050613eb76000830188613203565b613ec46020830187613dd5565b8181036040830152613ed68186613e44565b9050613ee560608301856132b7565b613ef26080830184613203565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f36826130dd565b9150613f41836130dd565b925082613f5157613f50613efc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f92601b83613047565b9150613f9d82613f5c565b602082019050919050565b60006020820190508181036000830152613fc181613f85565b9050919050565b6000613fd3826130dd565b9150613fde836130dd565b9250828202613fec816130dd565b915082820484148315176140035761400261356a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614066602183613047565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8cd7db705b0dc6ae9b2b9f0d6b9f7c1d30db90325cecb9e255a1ea70cab4c2064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c806374010ece116101025780639f2ecf3411610095578063c492f04611610064578063c492f046146106b2578063dd62ed3e146106db578063ea1644d514610718578063f2fde38b14610741576101ed565b80639f2ecf341461060a578063a9059cbb14610621578063bfd792841461065e578063c3c8cd801461069b576101ed565b80638f70ccf7116100d15780638f70ccf7146105625780638f9a55c01461058b57806395d89b41146105b657806398a5c315146105e1576101ed565b806374010ece146104a65780637d1db4a5146104cf5780637f2feddc146104fa5780638da5cb5b14610537576101ed565b806349bd5a5e1161017a5780636d8aa8f8116101495780636d8aa8f8146104125780636fc3eaec1461043b57806370a0823114610452578063715018a61461048f576101ed565b806349bd5a5e1461036c57806352f7c98814610397578063555d55dd146103c05780636b999053146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612ff3565b61076a565b005b34801561022757600080fd5b50610230610894565b60405161023d91906130bb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613113565b6108d1565b60405161027a919061316e565b60405180910390f35b34801561028f57600080fd5b506102986108ef565b6040516102a591906131e8565b60405180910390f35b3480156102ba57600080fd5b506102c3610915565b6040516102d09190613212565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061322d565b610925565b60405161030d919061316e565b60405180910390f35b34801561032257600080fd5b5061032b6109fe565b6040516103389190613212565b60405180910390f35b34801561034d57600080fd5b50610356610a04565b604051610363919061329c565b60405180910390f35b34801561037857600080fd5b50610381610a0d565b60405161038e91906132c6565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906132e1565b610a33565b005b3480156103cc57600080fd5b506103e760048036038101906103e291906132e1565b610b60565b005b3480156103f557600080fd5b50610410600480360381019061040b9190613321565b610c8d565b005b34801561041e57600080fd5b506104396004803603810190610434919061337a565b610d7d565b005b34801561044757600080fd5b50610450610e2f565b005b34801561045e57600080fd5b5061047960048036038101906104749190613321565b610f00565b6040516104869190613212565b60405180910390f35b34801561049b57600080fd5b506104a4610f51565b005b3480156104b257600080fd5b506104cd60048036038101906104c891906133a7565b6110a4565b005b3480156104db57600080fd5b506104e4611143565b6040516104f19190613212565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613321565b611149565b60405161052e9190613212565b60405180910390f35b34801561054357600080fd5b5061054c611161565b60405161055991906132c6565b60405180910390f35b34801561056e57600080fd5b506105896004803603810190610584919061337a565b61118a565b005b34801561059757600080fd5b506105a061123c565b6040516105ad9190613212565b60405180910390f35b3480156105c257600080fd5b506105cb611242565b6040516105d891906130bb565b60405180910390f35b3480156105ed57600080fd5b50610608600480360381019061060391906133a7565b61127f565b005b34801561061657600080fd5b5061061f61131e565b005b34801561062d57600080fd5b5061064860048036038101906106439190613113565b6113c7565b604051610655919061316e565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613321565b6113e5565b604051610692919061316e565b60405180910390f35b3480156106a757600080fd5b506106b0611405565b005b3480156106be57600080fd5b506106d960048036038101906106d4919061342f565b6114de565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061348f565b611618565b60405161070f9190613212565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906133a7565b61169f565b005b34801561074d57600080fd5b5061076860048036038101906107639190613321565b61173e565b005b6107726118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f69061351b565b60405180910390fd5b60005b8151811015610890576001601060008484815181106108245761082361353b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061088890613599565b915050610802565b5050565b60606040518060400160405280600981526020017f42757953657875616c0000000000000000000000000000000000000000000000815250905090565b60006108e56108de6118ff565b8484611907565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610932848484611ad0565b6109f38461093e6118ff565b6109ee8560405180606001604052806028815260200161409d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a46118ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123539092919063ffffffff16565b611907565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3b6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf9061351b565b60405180910390fd5b600a8210610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b029061362d565b60405180910390fd5b600a8110610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906136bf565b60405180910390fd5b8160098190555080600b819055505050565b610b686118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061351b565b60405180910390fd5b600a8210610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061362d565b60405180910390fd5b600a8110610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906136bf565b60405180910390fd5b8160088190555080600a819055505050565b610c956118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061351b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d856118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e099061351b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706118ff565b73ffffffffffffffffffffffffffffffffffffffff161480610ee65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ece6118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610eef57600080fd5b6000479050610efd816123b7565b50565b6000610f4a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612423565b9050919050565b610f596118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ac6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061351b565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111926118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112169061351b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4275795365780000000000000000000000000000000000000000000000000000815250905090565b6112876118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061351b565b60405180910390fd5b8060188190555050565b6113266118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa9061351b565b60405180910390fd5b600019601681905550600019601781905550565b60006113db6113d46118ff565b8484611ad0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114466118ff565b73ffffffffffffffffffffffffffffffffffffffff1614806114bc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a46118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6114c557600080fd5b60006114d030610f00565b90506114db81612491565b50565b6114e66118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061351b565b60405180910390fd5b60005b838390508110156116125781600560008686858181106115995761159861353b565b5b90506020020160208101906115ae9190613321565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160a90613599565b915050611576565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a76118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b9061351b565b60405180910390fd5b8060178190555050565b6117466118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990613751565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906137e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613875565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac39190613212565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613999565b60405180910390fd5b60008111611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613a2b565b60405180910390fd5b611bf9611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c675750611c37611161565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561205257601560149054906101000a900460ff16611cf657611c88611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613abd565b60405180910390fd5b5b601654811115611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613b29565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ddf5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613bbb565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ecb5760175481611e8084610f00565b611e8a9190613bdb565b10611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613c81565b60405180910390fd5b5b6000611ed630610f00565b9050600060185482101590506016548210611ef15760165491505b808015611f09575060158054906101000a900460ff16155b8015611f635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7b5750601560169054906101000a900460ff165b8015611fd15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204f5761203582612491565b6000479050600081111561204d5761204c476123b7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ac5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121ab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ba5760009050612341565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122655750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227d57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561234057600a54600c81905550600b54600d819055505b5b61234d84848484612708565b50505050565b600083831115829061239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239291906130bb565b60405180910390fd5b50600083856123aa9190613ca1565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561241f573d6000803e3d6000fd5b5050565b600060065482111561246a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246190613d47565b60405180910390fd5b6000612474612735565b9050612489818461276090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c8576124c7612e52565b5b6040519080825280602002602001820160405280156124f65781602001602082028036833780820191505090505b509050308160008151811061250e5761250d61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d99190613d7c565b816001815181106125ed576125ec61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611907565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b8959493929190613ea2565b600060405180830381600087803b1580156126d257600080fd5b505af11580156126e6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612716576127156127aa565b5b6127218484846127e7565b8061272f5761272e6129b2565b5b50505050565b60008060006127426129c6565b91509150612759818361276090919063ffffffff16565b9250505090565b60006127a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127be57506000600d54145b6127e557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f987612a88565b95509550955095509550955061285786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293881612b98565b6129428483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299f9190613212565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506129fa670de0b6b3a764000060065461276090919063ffffffff16565b821015612a1857600654670de0b6b3a7640000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6391906130bb565b60405180910390fd5b5060008385612a7b9190613f2b565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab5612735565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612353565b905092915050565b6000808284612b499190613bdb565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613fa8565b60405180910390fd5b8091505092915050565b6000612ba2612735565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce9190613fc8565b9050828482612ddd9190613f2b565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e149061407c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e8a82612e41565b810181811067ffffffffffffffff82111715612ea957612ea8612e52565b5b80604052505050565b6000612ebc612e28565b9050612ec88282612e81565b919050565b600067ffffffffffffffff821115612ee857612ee7612e52565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2982612efe565b9050919050565b612f3981612f1e565b8114612f4457600080fd5b50565b600081359050612f5681612f30565b92915050565b6000612f6f612f6a84612ecd565b612eb2565b90508083825260208201905060208402830185811115612f9257612f91612ef9565b5b835b81811015612fbb5780612fa78882612f47565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612e3c565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612e32565b5b600082013567ffffffffffffffff81111561302757613026612e37565b5b61303384828501612fc5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b600061308d8261303c565b6130978185613047565b93506130a7818560208601613058565b6130b081612e41565b840191505092915050565b600060208201905081810360008301526130d58184613082565b905092915050565b6000819050919050565b6130f0816130dd565b81146130fb57600080fd5b50565b60008135905061310d816130e7565b92915050565b6000806040838503121561312a57613129612e32565b5b600061313885828601612f47565b9250506020613149858286016130fe565b9150509250929050565b60008115159050919050565b61316881613153565b82525050565b6000602082019050613183600083018461315f565b92915050565b6000819050919050565b60006131ae6131a96131a484612efe565b613189565b612efe565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b61320c816130dd565b82525050565b60006020820190506132276000830184613203565b92915050565b60008060006060848603121561324657613245612e32565b5b600061325486828701612f47565b935050602061326586828701612f47565b9250506040613276868287016130fe565b9150509250925092565b600060ff82169050919050565b61329681613280565b82525050565b60006020820190506132b1600083018461328d565b92915050565b6132c081612f1e565b82525050565b60006020820190506132db60008301846132b7565b92915050565b600080604083850312156132f8576132f7612e32565b5b6000613306858286016130fe565b9250506020613317858286016130fe565b9150509250929050565b60006020828403121561333757613336612e32565b5b600061334584828501612f47565b91505092915050565b61335781613153565b811461336257600080fd5b50565b6000813590506133748161334e565b92915050565b6000602082840312156133905761338f612e32565b5b600061339e84828501613365565b91505092915050565b6000602082840312156133bd576133bc612e32565b5b60006133cb848285016130fe565b91505092915050565b600080fd5b60008083601f8401126133ef576133ee612e3c565b5b8235905067ffffffffffffffff81111561340c5761340b6133d4565b5b60208301915083602082028301111561342857613427612ef9565b5b9250929050565b60008060006040848603121561344857613447612e32565b5b600084013567ffffffffffffffff81111561346657613465612e37565b5b613472868287016133d9565b9350935050602061348586828701613365565b9150509250925092565b600080604083850312156134a6576134a5612e32565b5b60006134b485828601612f47565b92505060206134c585828601612f47565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613505602083613047565b9150613510826134cf565b602082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135a4826130dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d6576135d561356a565b5b600182019050919050565b7f4275792074617820666565206d757374206265206c657373207468616e203130600082015250565b6000613617602083613047565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b9050919050565b7f53656c6c2074617820666565206d757374206265206c657373207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a9602183613047565b91506136b48261364d565b604082019050919050565b600060208201905081810360008301526136d88161369c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061373b602683613047565b9150613746826136df565b604082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137cd602483613047565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385f602283613047565b915061386a82613803565b604082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138f1602583613047565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613983602383613047565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a15602983613047565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa7603f83613047565b9150613ab282613a4b565b604082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b13601c83613047565b9150613b1e82613add565b602082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba5602383613047565b9150613bb082613b49565b604082019050919050565b60006020820190508181036000830152613bd481613b98565b9050919050565b6000613be6826130dd565b9150613bf1836130dd565b9250828201905080821115613c0957613c0861356a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b602383613047565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826130dd565b9150613cb7836130dd565b9250828203905081811115613ccf57613cce61356a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d31602a83613047565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b600081519050613d7681612f30565b92915050565b600060208284031215613d9257613d91612e32565b5b6000613da084828501613d67565b91505092915050565b6000819050919050565b6000613dce613dc9613dc484613da9565b613189565b6130dd565b9050919050565b613dde81613db3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1981612f1e565b82525050565b6000613e2b8383613e10565b60208301905092915050565b6000602082019050919050565b6000613e4f82613de4565b613e598185613def565b9350613e6483613e00565b8060005b83811015613e95578151613e7c8882613e1f565b9750613e8783613e37565b925050600181019050613e68565b5085935050505092915050565b600060a082019050613eb76000830188613203565b613ec46020830187613dd5565b8181036040830152613ed68186613e44565b9050613ee560608301856132b7565b613ef26080830184613203565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f36826130dd565b9150613f41836130dd565b925082613f5157613f50613efc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f92601b83613047565b9150613f9d82613f5c565b602082019050919050565b60006020820190508181036000830152613fc181613f85565b9050919050565b6000613fd3826130dd565b9150613fde836130dd565b9250828202613fec816130dd565b915082820484148315176140035761400261356a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614066602183613047565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8cd7db705b0dc6ae9b2b9f0d6b9f7c1d30db90325cecb9e255a1ea70cab4c2064736f6c63430008110033

Deployed Bytecode Sourcemap

4562:15369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14045:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7205:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8254:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5944:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7518:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8487:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6277:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7415:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18176:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18515:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14242:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19119:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13782:251;;;;;;;;;;;;;:::i;:::-;;7633:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1729:160;;;;;;;;;;;;;:::i;:::-;;19275:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6161:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5738:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13397:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6218:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7308:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18912:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19538:120;;;;;;;;;;;;;:::i;:::-;;7791:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5700:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13518:252;;;;;;;;;;;;;:::i;:::-;;19670:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8030:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19403:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1901:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14045:185;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14125:9:::1;14120:99;14144:5;:12;14140:1;:16;14120:99;;;14199:4;14182;:14;14187:5;14193:1;14187:8;;;;;;;;:::i;:::-;;;;;;;;14182:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14158:3;;;;;:::i;:::-;;;;14120:99;;;;14045:185:::0;:::o;7205:91::-;7242:13;7279:5;;;;;;;;;;;;;;;;;7272:12;;7205:91;:::o;8254:221::-;8368:4;8398:39;8407:12;:10;:12::i;:::-;8421:7;8430:6;8398:8;:39::i;:::-;8459:4;8452:11;;8254:221;;;;:::o;5944:41::-;;;;;;;;;;;;;:::o;7518:103::-;7571:7;5153:18;7595:14;;7518:103;:::o;8487:506::-;8635:4;8656:36;8666:6;8674:9;8685:6;8656:9;:36::i;:::-;8707:248;8734:6;8759:12;:10;:12::i;:::-;8790:150;8850:6;8790:150;;;;;;;;;;;;;;;;;:11;:19;8802:6;8790:19;;;;;;;;;;;;;;;:33;8810:12;:10;:12::i;:::-;8790:33;;;;;;;;;;;;;;;;:37;;:150;;;;;:::i;:::-;8707:8;:248::i;:::-;8977:4;8970:11;;8487:506;;;;;:::o;6277:50::-;;;;:::o;7415:91::-;7456:5;4803:1;7478:16;;7415:91;:::o;5996:28::-;;;;;;;;;;;;;:::o;18176:327::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18290:2:::1;18276:11;:16;18268:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18367:2;18352:12;:17;18344:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;18437:11;18422:12;:26;;;;18479:12;18463:13;:28;;;;18176:327:::0;;:::o;18515:335::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18636:2:::1;18623:10;:15;18615:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18712:2;18698:11;:16;18690:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18784:10;18767:14;:27;;;;18827:11;18809:15;:29;;;;18515:335:::0;;:::o;14242:100::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:5:::1;14310:4;:12;14315:6;14310:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14242:100:::0;:::o;19119:109::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19204:12:::1;19190:11;;:26;;;;;;;;;;;;;;;;;;19119:109:::0;:::o;13782:251::-;13852:19;;;;;;;;;;;13836:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13891:17;;;;;;;;;;;13875:33;;:12;:10;:12::i;:::-;:33;;;13836:72;13828:81;;;;;;13924:26;13953:21;13924:50;;13989:32;14002:18;13989:12;:32::i;:::-;13813:220;13782:251::o;7633:146::-;7699:7;7730:37;7750:7;:16;7758:7;7750:16;;;;;;;;;;;;;;;;7730:19;:37::i;:::-;7723:44;;7633:146;;;:::o;1729:160::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1840:1:::1;1803:40;;1824:6;::::0;::::1;;;;;;;;1803:40;;;;;;;;;;;;1875:1;1858:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1729:160::o:0;19275:116::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19368:11:::1;19353:12;:26;;;;19275:116:::0;:::o;6161:46::-;;;;:::o;5738:43::-;;;;;;;;;;;;;;;;;:::o;1487:87::-;1525:7;1556:6;;;;;;;;;;;1549:13;;1487:87;:::o;13397:109::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13482:12:::1;13468:11;;:26;;;;;;;;;;;;;;;;;;13397:109:::0;:::o;6218:48::-;;;;:::o;7308:95::-;7347:13;7384:7;;;;;;;;;;;;;;;;;7377:14;;7308:95;:::o;18912:147::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19029:18:::1;19007:19;:40;;;;18912:147:::0;:::o;19538:120::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5105:1:::1;5096:11;19593:12;:18;;;;5105:1;5096:11;19626:14;:20;;;;19538:120::o:0;7791:227::-;7908:4;7938:42;7948:12;:10;:12::i;:::-;7962:9;7973:6;7938:9;:42::i;:::-;8002:4;7995:11;;7791:227;;;;:::o;5700:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13518:252::-;13588:19;;;;;;;;;;;13572:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13627:17;;;;;;;;;;;13611:33;;:12;:10;:12::i;:::-;:33;;;13572:72;13564:81;;;;;;13660:23;13686:24;13704:4;13686:9;:24::i;:::-;13660:50;;13725:33;13742:15;13725:16;:33::i;:::-;13549:221;13518:252::o;19670:250::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19791:9:::1;19787:122;19810:8;;:15;;19806:1;:19;19787:122;;;19885:8;19851:18;:31;19870:8;;19879:1;19870:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19851:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19827:3;;;;;:::i;:::-;;;;19787:122;;;;19670:250:::0;;;:::o;8030:212::-;8163:7;8203:11;:18;8215:5;8203:18;;;;;;;;;;;;;;;:27;8222:7;8203:27;;;;;;;;;;;;;;;;8196:34;;8030:212;;;;:::o;19403:123::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19501:13:::1;19484:14;:30;;;;19403:123:::0;:::o;1901:260::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2014:1:::1;1994:22;;:8;:22;;::::0;1986:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2108:8;2079:38;;2100:6;::::0;::::1;;;;;;;;2079:38;;;;;;;;;;;;2141:8;2132:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1901:260:::0;:::o;112:106::-;165:7;196:10;189:17;;112:106;:::o;9780:405::-;9944:1;9927:19;;:5;:19;;;9919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:1;10010:21;;:7;:21;;;10002:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10115:6;10085:11;:18;10097:5;10085:18;;;;;;;;;;;;;;;:27;10104:7;10085:27;;;;;;;;;;;;;;;:36;;;;10157:7;10141:32;;10150:5;10141:32;;;10166:6;10141:32;;;;;;:::i;:::-;;;;;;;;9780:405;;;:::o;10197:2526::-;10355:1;10339:18;;:4;:18;;;10331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10436:1;10422:16;;:2;:16;;;10414:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10510:1;10501:6;:10;10493:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10586:7;:5;:7::i;:::-;10578:15;;:4;:15;;;;:32;;;;;10603:7;:5;:7::i;:::-;10597:13;;:2;:13;;;;10578:32;10574:1351;;;10675:11;;;;;;;;;;;10670:152;;10727:7;:5;:7::i;:::-;10719:15;;:4;:15;;;10711:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10670:152;10860:12;;10850:6;:22;;10842:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10933:4;:10;10938:4;10933:10;;;;;;;;;;;;;;;;;;;;;;;;;10932:11;:24;;;;;10948:4;:8;10953:2;10948:8;;;;;;;;;;;;;;;;;;;;;;;;;10947:9;10932:24;10924:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11026:13;;;;;;;;;;;11020:19;;:2;:19;;;11017:154;;11097:14;;11088:6;11072:13;11082:2;11072:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11064:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11017:154;11191:28;11222:24;11240:4;11222:9;:24::i;:::-;11191:55;;11265:12;11304:19;;11280:20;:43;;11265:58;;11371:12;;11347:20;:36;11344:136;;11448:12;;11425:35;;11344:136;11504:7;:18;;;;;11516:6;;;;;;;;;;11515:7;11504:18;:43;;;;;11534:13;;;;;;;;;;;11526:21;;:4;:21;;;;11504:43;:58;;;;;11551:11;;;;;;;;;;;11504:58;:87;;;;;11567:18;:24;11586:4;11567:24;;;;;;;;;;;;;;;;;;;;;;;;;11566:25;11504:87;:114;;;;;11596:18;:22;11615:2;11596:22;;;;;;;;;;;;;;;;;;;;;;;;;11595:23;11504:114;11500:410;;;11643:38;11660:20;11643:16;:38::i;:::-;11704:26;11733:21;11704:50;;11802:1;11781:18;:22;11777:114;;;11832:35;11845:21;11832:12;:35::i;:::-;11777:114;11620:290;11500:410;10612:1313;;10574:1351;11941:12;11956:4;11941:19;;12013:18;:24;12032:4;12013:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12041:18;:22;12060:2;12041:22;;;;;;;;;;;;;;;;;;;;;;;;;12013:50;12012:102;;;;12077:13;;;;;;;;;;;12069:21;;:4;:21;;;;:44;;;;;12100:13;;;;;;;;;;;12094:19;;:2;:19;;;;12069:44;12012:102;12008:646;;;12145:5;12135:15;;12008:646;;;12240:13;;;;;;;;;;;12232:21;;:4;:21;;;:55;;;;;12271:15;;;;;;;;;;;12257:30;;:2;:30;;;;12232:55;12229:174;;;12324:14;;12312:9;:26;;;;12371:12;;12361:7;:22;;;;12229:174;12470:13;;;;;;;;;;;12464:19;;:2;:19;;;:55;;;;;12503:15;;;;;;;;;;;12487:32;;:4;:32;;;;12464:55;12460:177;;;12556:15;;12544:9;:27;;;;12604:13;;12594:7;:23;;;;12460:177;12008:646;12670:41;12685:4;12691:2;12695:6;12703:7;12670:14;:41::i;:::-;10316:2407;10197:2526;;;:::o;2569:256::-;2705:7;2742:1;2737;:6;;2745:12;2729:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2773:9;2789:1;2785;:5;;;;:::i;:::-;2773:17;;2812:1;2805:8;;;2569:256;;;;;:::o;13278:107::-;13339:17;;;;;;;;;;;:26;;:34;13366:6;13339:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13278:107;:::o;9005:367::-;9112:7;9182;;9171;:18;;9145:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9282:19;9304:10;:8;:10::i;:::-;9282:32;;9336:24;9348:11;9336:7;:11;;:24;;;;:::i;:::-;9329:31;;;9005:367;;;:::o;12735:531::-;6442:4;6433:6;;:13;;;;;;;;;;;;;;;;;;12817:21:::1;12855:1;12841:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12817:40;;12890:4;12872;12877:1;12872:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12920:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12910:4;12915:1;12910:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12957:62;12974:4;12989:15;;;;;;;;;;;13007:11;12957:8;:62::i;:::-;13034:15;;;;;;;;;;;:66;;;13119:11;13149:1;13169:4;13200;13224:15;13034:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12802:464;6486:5:::0;6477:6;;:14;;;;;;;;;;;;;;;;;;12735:531;:::o;14354:318::-;14534:7;14529:28;;14543:14;:12;:14::i;:::-;14529:28;14572:44;14590:6;14598:9;14609:6;14572:17;:44::i;:::-;14636:7;14631:29;;14645:15;:13;:15::i;:::-;14631:29;14354:318;;;;:::o;17699:176::-;17741:7;17766:15;17783;17802:19;:17;:19::i;:::-;17765:56;;;;17843:20;17855:7;17843;:11;;:20;;;;:::i;:::-;17836:27;;;;17699:176;:::o;3123:140::-;3181:7;3212:39;3216:1;3219;3212:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3205:46;;3123:140;;;;:::o;9384:243::-;9448:1;9435:9;;:14;:30;;;;;9464:1;9453:7;;:12;9435:30;9467:7;9431:43;9510:9;;9490:17;:29;;;;9552:7;;9534:15;:25;;;;9588:1;9576:9;:13;;;;9614:1;9604:7;:11;;;;9384:243;:::o;14684:682::-;14855:15;14889:23;14931:12;14962:23;15004:12;15035:13;15066:19;15077:7;15066:10;:19::i;:::-;14836:249;;;;;;;;;;;;15118:28;15138:7;15118;:15;15126:6;15118:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15100:7;:15;15108:6;15100:15;;;;;;;;;;;;;;;:46;;;;15182:39;15205:15;15182:7;:18;15190:9;15182:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15161:7;:18;15169:9;15161:18;;;;;;;;;;;;;;;:60;;;;15236:16;15246:5;15236:9;:16::i;:::-;15267:23;15279:4;15285;15267:11;:23::i;:::-;15327:9;15310:44;;15319:6;15310:44;;;15338:15;15310:44;;;;;;:::i;:::-;;;;;;;;14821:545;;;;;;14684:682;;;:::o;9639:129::-;9699:17;;9687:9;:29;;;;9741:15;;9731:7;:25;;;;9639:129::o;17887:277::-;17938:7;17947;17971:15;17989:7;;17971:25;;18011:15;5153:18;18011:25;;18065:20;5153:18;18065:7;;:11;;:20;;;;:::i;:::-;18055:7;:30;18051:61;;;18095:7;;5153:18;18087:25;;;;;;;;18051:61;18135:7;18144;18127:25;;;;;;17887:277;;;:::o;3275:255::-;3411:7;3447:1;3443;:5;3450:12;3435:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3478:9;3494:1;3490;:5;;;;:::i;:::-;3478:17;;3517:1;3510:8;;;3275:255;;;;;:::o;15829:687::-;15945:7;15971;15997;16023;16049;16075;16123:23;16148:12;16162:13;16196:40;16208:7;16217:9;;16228:7;;16196:11;:40::i;:::-;16122:114;;;;;;16251:19;16273:10;:8;:10::i;:::-;16251:32;;16299:15;16316:23;16341:12;16374:46;16386:7;16395:4;16401:5;16408:11;16374;:46::i;:::-;16298:122;;;;;;16443:7;16452:15;16469:4;16475:15;16492:4;16498:5;16435:69;;;;;;;;;;;;;;;;;;;15829:687;;;;;;;:::o;2413:144::-;2471:7;2502:43;2506:1;2509;2502:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2495:50;;2413:144;;;;:::o;2206:195::-;2264:7;2288:9;2304:1;2300;:5;;;;:::i;:::-;2288:17;;2333:1;2328;:6;;2320:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2388:1;2381:8;;;2206:195;;;;:::o;15378:227::-;15435:19;15457:10;:8;:10::i;:::-;15435:32;;15482:13;15498:22;15508:11;15498:5;:9;;:22;;;;:::i;:::-;15482:38;;15560:33;15587:5;15560:7;:22;15576:4;15560:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15535:7;:22;15551:4;15535:22;;;;;;;;;;;;;;;:58;;;;15420:185;;15378:227;:::o;15617:159::-;15699:17;15711:4;15699:7;;:11;;:17;;;;:::i;:::-;15689:7;:27;;;;15744:20;15759:4;15744:10;;:14;;:20;;;;:::i;:::-;15731:10;:33;;;;15617:159;;:::o;16528:537::-;16729:7;16755;16781;16828:12;16843:30;16869:3;16843:21;16855:8;16843:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16828:45;;16888:13;16904:28;16928:3;16904:19;16916:6;16904:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16888:44;;16947:23;16973:28;16995:5;16973:17;16985:4;16973:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16947:54;;17024:15;17041:4;17047:5;17016:37;;;;;;;;;16528:537;;;;;;;:::o;17077:610::-;17307:7;17333;17359;17406:15;17424:24;17436:11;17424:7;:11;;:24;;;;:::i;:::-;17406:42;;17463:12;17478:21;17487:11;17478:4;:8;;:21;;;;:::i;:::-;17463:36;;17514:13;17530:22;17540:11;17530:5;:9;;:22;;;;:::i;:::-;17514:38;;17567:23;17593:28;17615:5;17593:17;17605:4;17593:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17567:54;;17644:7;17653:15;17670:4;17636:39;;;;;;;;;;17077:610;;;;;;;;:::o;2837:274::-;2895:7;2928:1;2923;:6;2919:55;;2957:1;2950:8;;;;2919:55;2988:9;3004:1;3000;:5;;;;:::i;:::-;2988:17;;3037:1;3032;3028;:5;;;;:::i;:::-;:10;3020:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3098:1;3091:8;;;2837:274;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:474::-;9088:6;9096;9145:2;9133:9;9124:7;9120:23;9116:32;9113:119;;;9151:79;;:::i;:::-;9113:119;9271:1;9296:53;9341:7;9332:6;9321:9;9317:22;9296:53;:::i;:::-;9286:63;;9242:117;9398:2;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9369:118;9020:474;;;;;:::o;9500:329::-;9559:6;9608:2;9596:9;9587:7;9583:23;9579:32;9576:119;;;9614:79;;:::i;:::-;9576:119;9734:1;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9705:117;9500:329;;;;:::o;9835:116::-;9905:21;9920:5;9905:21;:::i;:::-;9898:5;9895:32;9885:60;;9941:1;9938;9931:12;9885:60;9835:116;:::o;9957:133::-;10000:5;10038:6;10025:20;10016:29;;10054:30;10078:5;10054:30;:::i;:::-;9957:133;;;;:::o;10096:323::-;10152:6;10201:2;10189:9;10180:7;10176:23;10172:32;10169:119;;;10207:79;;:::i;:::-;10169:119;10327:1;10352:50;10394:7;10385:6;10374:9;10370:22;10352:50;:::i;:::-;10342:60;;10298:114;10096:323;;;;:::o;10425:329::-;10484:6;10533:2;10521:9;10512:7;10508:23;10504:32;10501:119;;;10539:79;;:::i;:::-;10501:119;10659:1;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10630:117;10425:329;;;;:::o;10760:117::-;10869:1;10866;10859:12;10900:568;10973:8;10983:6;11033:3;11026:4;11018:6;11014:17;11010:27;11000:122;;11041:79;;:::i;:::-;11000:122;11154:6;11141:20;11131:30;;11184:18;11176:6;11173:30;11170:117;;;11206:79;;:::i;:::-;11170:117;11320:4;11312:6;11308:17;11296:29;;11374:3;11366:4;11358:6;11354:17;11344:8;11340:32;11337:41;11334:128;;;11381:79;;:::i;:::-;11334:128;10900:568;;;;;:::o;11474:698::-;11566:6;11574;11582;11631:2;11619:9;11610:7;11606:23;11602:32;11599:119;;;11637:79;;:::i;:::-;11599:119;11785:1;11774:9;11770:17;11757:31;11815:18;11807:6;11804:30;11801:117;;;11837:79;;:::i;:::-;11801:117;11950:80;12022:7;12013:6;12002:9;11998:22;11950:80;:::i;:::-;11932:98;;;;11728:312;12079:2;12105:50;12147:7;12138:6;12127:9;12123:22;12105:50;:::i;:::-;12095:60;;12050:115;11474:698;;;;;:::o;12178:474::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:182::-;12798:34;12794:1;12786:6;12782:14;12775:58;12658:182;:::o;12846:366::-;12988:3;13009:67;13073:2;13068:3;13009:67;:::i;:::-;13002:74;;13085:93;13174:3;13085:93;:::i;:::-;13203:2;13198:3;13194:12;13187:19;;12846:366;;;:::o;13218:419::-;13384:4;13422:2;13411:9;13407:18;13399:26;;13471:9;13465:4;13461:20;13457:1;13446:9;13442:17;13435:47;13499:131;13625:4;13499:131;:::i;:::-;13491:139;;13218:419;;;:::o;13643:180::-;13691:77;13688:1;13681:88;13788:4;13785:1;13778:15;13812:4;13809:1;13802:15;13829:180;13877:77;13874:1;13867:88;13974:4;13971:1;13964:15;13998:4;13995:1;13988:15;14015:233;14054:3;14077:24;14095:5;14077:24;:::i;:::-;14068:33;;14123:66;14116:5;14113:77;14110:103;;14193:18;;:::i;:::-;14110:103;14240:1;14233:5;14229:13;14222:20;;14015:233;;;:::o;14254:182::-;14394:34;14390:1;14382:6;14378:14;14371:58;14254:182;:::o;14442:366::-;14584:3;14605:67;14669:2;14664:3;14605:67;:::i;:::-;14598:74;;14681:93;14770:3;14681:93;:::i;:::-;14799:2;14794:3;14790:12;14783:19;;14442:366;;;:::o;14814:419::-;14980:4;15018:2;15007:9;15003:18;14995:26;;15067:9;15061:4;15057:20;15053:1;15042:9;15038:17;15031:47;15095:131;15221:4;15095:131;:::i;:::-;15087:139;;14814:419;;;:::o;15239:220::-;15379:34;15375:1;15367:6;15363:14;15356:58;15448:3;15443:2;15435:6;15431:15;15424:28;15239:220;:::o;15465:366::-;15607:3;15628:67;15692:2;15687:3;15628:67;:::i;:::-;15621:74;;15704:93;15793:3;15704:93;:::i;:::-;15822:2;15817:3;15813:12;15806:19;;15465:366;;;:::o;15837:419::-;16003:4;16041:2;16030:9;16026:18;16018:26;;16090:9;16084:4;16080:20;16076:1;16065:9;16061:17;16054:47;16118:131;16244:4;16118:131;:::i;:::-;16110:139;;15837:419;;;:::o;16262:225::-;16402:34;16398:1;16390:6;16386:14;16379:58;16471:8;16466:2;16458:6;16454:15;16447:33;16262:225;:::o;16493:366::-;16635:3;16656:67;16720:2;16715:3;16656:67;:::i;:::-;16649:74;;16732:93;16821:3;16732:93;:::i;:::-;16850:2;16845:3;16841:12;16834:19;;16493:366;;;:::o;16865:419::-;17031:4;17069:2;17058:9;17054:18;17046:26;;17118:9;17112:4;17108:20;17104:1;17093:9;17089:17;17082:47;17146:131;17272:4;17146:131;:::i;:::-;17138:139;;16865:419;;;:::o;17290:223::-;17430:34;17426:1;17418:6;17414:14;17407:58;17499:6;17494:2;17486:6;17482:15;17475:31;17290:223;:::o;17519:366::-;17661:3;17682:67;17746:2;17741:3;17682:67;:::i;:::-;17675:74;;17758:93;17847:3;17758:93;:::i;:::-;17876:2;17871:3;17867:12;17860:19;;17519:366;;;:::o;17891:419::-;18057:4;18095:2;18084:9;18080:18;18072:26;;18144:9;18138:4;18134:20;18130:1;18119:9;18115:17;18108:47;18172:131;18298:4;18172:131;:::i;:::-;18164:139;;17891:419;;;:::o;18316:221::-;18456:34;18452:1;18444:6;18440:14;18433:58;18525:4;18520:2;18512:6;18508:15;18501:29;18316:221;:::o;18543:366::-;18685:3;18706:67;18770:2;18765:3;18706:67;:::i;:::-;18699:74;;18782:93;18871:3;18782:93;:::i;:::-;18900:2;18895:3;18891:12;18884:19;;18543:366;;;:::o;18915:419::-;19081:4;19119:2;19108:9;19104:18;19096:26;;19168:9;19162:4;19158:20;19154:1;19143:9;19139:17;19132:47;19196:131;19322:4;19196:131;:::i;:::-;19188:139;;18915:419;;;:::o;19340:224::-;19480:34;19476:1;19468:6;19464:14;19457:58;19549:7;19544:2;19536:6;19532:15;19525:32;19340:224;:::o;19570:366::-;19712:3;19733:67;19797:2;19792:3;19733:67;:::i;:::-;19726:74;;19809:93;19898:3;19809:93;:::i;:::-;19927:2;19922:3;19918:12;19911:19;;19570:366;;;:::o;19942:419::-;20108:4;20146:2;20135:9;20131:18;20123:26;;20195:9;20189:4;20185:20;20181:1;20170:9;20166:17;20159:47;20223:131;20349:4;20223:131;:::i;:::-;20215:139;;19942:419;;;:::o;20367:222::-;20507:34;20503:1;20495:6;20491:14;20484:58;20576:5;20571:2;20563:6;20559:15;20552:30;20367:222;:::o;20595:366::-;20737:3;20758:67;20822:2;20817:3;20758:67;:::i;:::-;20751:74;;20834:93;20923:3;20834:93;:::i;:::-;20952:2;20947:3;20943:12;20936:19;;20595:366;;;:::o;20967:419::-;21133:4;21171:2;21160:9;21156:18;21148:26;;21220:9;21214:4;21210:20;21206:1;21195:9;21191:17;21184:47;21248:131;21374:4;21248:131;:::i;:::-;21240:139;;20967:419;;;:::o;21392:228::-;21532:34;21528:1;21520:6;21516:14;21509:58;21601:11;21596:2;21588:6;21584:15;21577:36;21392:228;:::o;21626:366::-;21768:3;21789:67;21853:2;21848:3;21789:67;:::i;:::-;21782:74;;21865:93;21954:3;21865:93;:::i;:::-;21983:2;21978:3;21974:12;21967:19;;21626:366;;;:::o;21998:419::-;22164:4;22202:2;22191:9;22187:18;22179:26;;22251:9;22245:4;22241:20;22237:1;22226:9;22222:17;22215:47;22279:131;22405:4;22279:131;:::i;:::-;22271:139;;21998:419;;;:::o;22423:250::-;22563:34;22559:1;22551:6;22547:14;22540:58;22632:33;22627:2;22619:6;22615:15;22608:58;22423:250;:::o;22679:366::-;22821:3;22842:67;22906:2;22901:3;22842:67;:::i;:::-;22835:74;;22918:93;23007:3;22918:93;:::i;:::-;23036:2;23031:3;23027:12;23020:19;;22679:366;;;:::o;23051:419::-;23217:4;23255:2;23244:9;23240:18;23232:26;;23304:9;23298:4;23294:20;23290:1;23279:9;23275:17;23268:47;23332:131;23458:4;23332:131;:::i;:::-;23324:139;;23051:419;;;:::o;23476:178::-;23616:30;23612:1;23604:6;23600:14;23593:54;23476:178;:::o;23660:366::-;23802:3;23823:67;23887:2;23882:3;23823:67;:::i;:::-;23816:74;;23899:93;23988:3;23899:93;:::i;:::-;24017:2;24012:3;24008:12;24001:19;;23660:366;;;:::o;24032:419::-;24198:4;24236:2;24225:9;24221:18;24213:26;;24285:9;24279:4;24275:20;24271:1;24260:9;24256:17;24249:47;24313:131;24439:4;24313:131;:::i;:::-;24305:139;;24032:419;;;:::o;24457:222::-;24597:34;24593:1;24585:6;24581:14;24574:58;24666:5;24661:2;24653:6;24649:15;24642:30;24457:222;:::o;24685:366::-;24827:3;24848:67;24912:2;24907:3;24848:67;:::i;:::-;24841:74;;24924:93;25013:3;24924:93;:::i;:::-;25042:2;25037:3;25033:12;25026:19;;24685:366;;;:::o;25057:419::-;25223:4;25261:2;25250:9;25246:18;25238:26;;25310:9;25304:4;25300:20;25296:1;25285:9;25281:17;25274:47;25338:131;25464:4;25338:131;:::i;:::-;25330:139;;25057:419;;;:::o;25482:191::-;25522:3;25541:20;25559:1;25541:20;:::i;:::-;25536:25;;25575:20;25593:1;25575:20;:::i;:::-;25570:25;;25618:1;25615;25611:9;25604:16;;25639:3;25636:1;25633:10;25630:36;;;25646:18;;:::i;:::-;25630:36;25482:191;;;;:::o;25679:222::-;25819:34;25815:1;25807:6;25803:14;25796:58;25888:5;25883:2;25875:6;25871:15;25864:30;25679:222;:::o;25907:366::-;26049:3;26070:67;26134:2;26129:3;26070:67;:::i;:::-;26063:74;;26146:93;26235:3;26146:93;:::i;:::-;26264:2;26259:3;26255:12;26248:19;;25907:366;;;:::o;26279:419::-;26445:4;26483:2;26472:9;26468:18;26460:26;;26532:9;26526:4;26522:20;26518:1;26507:9;26503:17;26496:47;26560:131;26686:4;26560:131;:::i;:::-;26552:139;;26279:419;;;:::o;26704:194::-;26744:4;26764:20;26782:1;26764:20;:::i;:::-;26759:25;;26798:20;26816:1;26798:20;:::i;:::-;26793:25;;26842:1;26839;26835:9;26827:17;;26866:1;26860:4;26857:11;26854:37;;;26871:18;;:::i;:::-;26854:37;26704:194;;;;:::o;26904:229::-;27044:34;27040:1;27032:6;27028:14;27021:58;27113:12;27108:2;27100:6;27096:15;27089:37;26904:229;:::o;27139:366::-;27281:3;27302:67;27366:2;27361:3;27302:67;:::i;:::-;27295:74;;27378:93;27467:3;27378:93;:::i;:::-;27496:2;27491:3;27487:12;27480:19;;27139:366;;;:::o;27511:419::-;27677:4;27715:2;27704:9;27700:18;27692:26;;27764:9;27758:4;27754:20;27750:1;27739:9;27735:17;27728:47;27792:131;27918:4;27792:131;:::i;:::-;27784:139;;27511:419;;;:::o;27936:143::-;27993:5;28024:6;28018:13;28009:22;;28040:33;28067:5;28040:33;:::i;:::-;27936:143;;;;:::o;28085:351::-;28155:6;28204:2;28192:9;28183:7;28179:23;28175:32;28172:119;;;28210:79;;:::i;:::-;28172:119;28330:1;28355:64;28411:7;28402:6;28391:9;28387:22;28355:64;:::i;:::-;28345:74;;28301:128;28085:351;;;;:::o;28442:85::-;28487:7;28516:5;28505:16;;28442:85;;;:::o;28533:158::-;28591:9;28624:61;28642:42;28651:32;28677:5;28651:32;:::i;:::-;28642:42;:::i;:::-;28624:61;:::i;:::-;28611:74;;28533:158;;;:::o;28697:147::-;28792:45;28831:5;28792:45;:::i;:::-;28787:3;28780:58;28697:147;;:::o;28850:114::-;28917:6;28951:5;28945:12;28935:22;;28850:114;;;:::o;28970:184::-;29069:11;29103:6;29098:3;29091:19;29143:4;29138:3;29134:14;29119:29;;28970:184;;;;:::o;29160:132::-;29227:4;29250:3;29242:11;;29280:4;29275:3;29271:14;29263:22;;29160:132;;;:::o;29298:108::-;29375:24;29393:5;29375:24;:::i;:::-;29370:3;29363:37;29298:108;;:::o;29412:179::-;29481:10;29502:46;29544:3;29536:6;29502:46;:::i;:::-;29580:4;29575:3;29571:14;29557:28;;29412:179;;;;:::o;29597:113::-;29667:4;29699;29694:3;29690:14;29682:22;;29597:113;;;:::o;29746:732::-;29865:3;29894:54;29942:5;29894:54;:::i;:::-;29964:86;30043:6;30038:3;29964:86;:::i;:::-;29957:93;;30074:56;30124:5;30074:56;:::i;:::-;30153:7;30184:1;30169:284;30194:6;30191:1;30188:13;30169:284;;;30270:6;30264:13;30297:63;30356:3;30341:13;30297:63;:::i;:::-;30290:70;;30383:60;30436:6;30383:60;:::i;:::-;30373:70;;30229:224;30216:1;30213;30209:9;30204:14;;30169:284;;;30173:14;30469:3;30462:10;;29870:608;;;29746:732;;;;:::o;30484:831::-;30747:4;30785:3;30774:9;30770:19;30762:27;;30799:71;30867:1;30856:9;30852:17;30843:6;30799:71;:::i;:::-;30880:80;30956:2;30945:9;30941:18;30932:6;30880:80;:::i;:::-;31007:9;31001:4;30997:20;30992:2;30981:9;30977:18;30970:48;31035:108;31138:4;31129:6;31035:108;:::i;:::-;31027:116;;31153:72;31221:2;31210:9;31206:18;31197:6;31153:72;:::i;:::-;31235:73;31303:3;31292:9;31288:19;31279:6;31235:73;:::i;:::-;30484:831;;;;;;;;:::o;31321:180::-;31369:77;31366:1;31359:88;31466:4;31463:1;31456:15;31490:4;31487:1;31480:15;31507:185;31547:1;31564:20;31582:1;31564:20;:::i;:::-;31559:25;;31598:20;31616:1;31598:20;:::i;:::-;31593:25;;31637:1;31627:35;;31642:18;;:::i;:::-;31627:35;31684:1;31681;31677:9;31672:14;;31507:185;;;;:::o;31698:177::-;31838:29;31834:1;31826:6;31822:14;31815:53;31698:177;:::o;31881:366::-;32023:3;32044:67;32108:2;32103:3;32044:67;:::i;:::-;32037:74;;32120:93;32209:3;32120:93;:::i;:::-;32238:2;32233:3;32229:12;32222:19;;31881:366;;;:::o;32253:419::-;32419:4;32457:2;32446:9;32442:18;32434:26;;32506:9;32500:4;32496:20;32492:1;32481:9;32477:17;32470:47;32534:131;32660:4;32534:131;:::i;:::-;32526:139;;32253:419;;;:::o;32678:410::-;32718:7;32741:20;32759:1;32741:20;:::i;:::-;32736:25;;32775:20;32793:1;32775:20;:::i;:::-;32770:25;;32830:1;32827;32823:9;32852:30;32870:11;32852:30;:::i;:::-;32841:41;;33031:1;33022:7;33018:15;33015:1;33012:22;32992:1;32985:9;32965:83;32942:139;;33061:18;;:::i;:::-;32942:139;32726:362;32678:410;;;;:::o;33094:220::-;33234:34;33230:1;33222:6;33218:14;33211:58;33303:3;33298:2;33290:6;33286:15;33279:28;33094:220;:::o;33320:366::-;33462:3;33483:67;33547:2;33542:3;33483:67;:::i;:::-;33476:74;;33559:93;33648:3;33559:93;:::i;:::-;33677:2;33672:3;33668:12;33661:19;;33320:366;;;:::o;33692:419::-;33858:4;33896:2;33885:9;33881:18;33873:26;;33945:9;33939:4;33935:20;33931:1;33920:9;33916:17;33909:47;33973:131;34099:4;33973:131;:::i;:::-;33965:139;;33692:419;;;:::o

Swarm Source

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