ETH Price: $2,325.47 (-0.91%)

Token

Anunnaki (GOD)
 

Overview

Max Total Supply

1,000,000,000 GOD

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.00000006 GOD

Value
$0.00
0xab8833021c6359c3949cc488aa0f0c9e832d3446
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:
Anunnaki

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-14
*/

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

        using SafeMath for uint256;

        string private constant _name = "Anunnaki";
        string private constant _symbol = "GOD";
        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 = 15;

        //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"}]

6080604052670de0b6b3a76400006000196200001c919062000701565b6000196200002b919062000768565b600655600060085560056009556000600a55600f600b55600a54600c55600b54600d55600c54600e55600d54600f5533601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200015957600080fd5b5060006200016c6200069760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002216200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b91906200080d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b991906200080d565b6040518363ffffffff1660e01b8152600401620003d892919062000850565b6020604051808303816000875af1158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e91906200080d565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004746200069f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006216200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200068891906200088e565b60405180910390a350620008ab565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200070e82620006c8565b91506200071b83620006c8565b9250826200072e576200072d620006d2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077582620006c8565b91506200078283620006c8565b92508282039050818111156200079d576200079c62000739565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d582620007a8565b9050919050565b620007e781620007c8565b8114620007f357600080fd5b50565b6000815190506200080781620007dc565b92915050565b600060208284031215620008265762000825620007a3565b5b60006200083684828501620007f6565b91505092915050565b6200084a81620007c8565b82525050565b60006040820190506200086760008301856200083f565b6200087660208301846200083f565b9392505050565b6200088881620006c8565b82525050565b6000602082019050620008a560008301846200087d565b92915050565b6140fa80620008bb6000396000f3fe6080604052600436106101e65760003560e01c806374010ece116101025780639f2ecf3411610095578063c492f04611610064578063c492f046146106b2578063dd62ed3e146106db578063ea1644d514610718578063f2fde38b14610741576101ed565b80639f2ecf341461060a578063a9059cbb14610621578063bfd792841461065e578063c3c8cd801461069b576101ed565b80638f70ccf7116100d15780638f70ccf7146105625780638f9a55c01461058b57806395d89b41146105b657806398a5c315146105e1576101ed565b806374010ece146104a65780637d1db4a5146104cf5780637f2feddc146104fa5780638da5cb5b14610537576101ed565b806349bd5a5e1161017a5780636d8aa8f8116101495780636d8aa8f8146104125780636fc3eaec1461043b57806370a0823114610452578063715018a61461048f576101ed565b806349bd5a5e1461036c57806352f7c98814610397578063555d55dd146103c05780636b999053146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612ff3565b61076a565b005b34801561022757600080fd5b50610230610894565b60405161023d91906130bb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613113565b6108d1565b60405161027a919061316e565b60405180910390f35b34801561028f57600080fd5b506102986108ef565b6040516102a591906131e8565b60405180910390f35b3480156102ba57600080fd5b506102c3610915565b6040516102d09190613212565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061322d565b610925565b60405161030d919061316e565b60405180910390f35b34801561032257600080fd5b5061032b6109fe565b6040516103389190613212565b60405180910390f35b34801561034d57600080fd5b50610356610a04565b604051610363919061329c565b60405180910390f35b34801561037857600080fd5b50610381610a0d565b60405161038e91906132c6565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906132e1565b610a33565b005b3480156103cc57600080fd5b506103e760048036038101906103e291906132e1565b610b60565b005b3480156103f557600080fd5b50610410600480360381019061040b9190613321565b610c8d565b005b34801561041e57600080fd5b506104396004803603810190610434919061337a565b610d7d565b005b34801561044757600080fd5b50610450610e2f565b005b34801561045e57600080fd5b5061047960048036038101906104749190613321565b610f00565b6040516104869190613212565b60405180910390f35b34801561049b57600080fd5b506104a4610f51565b005b3480156104b257600080fd5b506104cd60048036038101906104c891906133a7565b6110a4565b005b3480156104db57600080fd5b506104e4611143565b6040516104f19190613212565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613321565b611149565b60405161052e9190613212565b60405180910390f35b34801561054357600080fd5b5061054c611161565b60405161055991906132c6565b60405180910390f35b34801561056e57600080fd5b506105896004803603810190610584919061337a565b61118a565b005b34801561059757600080fd5b506105a061123c565b6040516105ad9190613212565b60405180910390f35b3480156105c257600080fd5b506105cb611242565b6040516105d891906130bb565b60405180910390f35b3480156105ed57600080fd5b50610608600480360381019061060391906133a7565b61127f565b005b34801561061657600080fd5b5061061f61131e565b005b34801561062d57600080fd5b5061064860048036038101906106439190613113565b6113c7565b604051610655919061316e565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613321565b6113e5565b604051610692919061316e565b60405180910390f35b3480156106a757600080fd5b506106b0611405565b005b3480156106be57600080fd5b506106d960048036038101906106d4919061342f565b6114de565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061348f565b611618565b60405161070f9190613212565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906133a7565b61169f565b005b34801561074d57600080fd5b5061076860048036038101906107639190613321565b61173e565b005b6107726118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f69061351b565b60405180910390fd5b60005b8151811015610890576001601060008484815181106108245761082361353b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061088890613599565b915050610802565b5050565b60606040518060400160405280600881526020017f416e756e6e616b69000000000000000000000000000000000000000000000000815250905090565b60006108e56108de6118ff565b8484611907565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610932848484611ad0565b6109f38461093e6118ff565b6109ee8560405180606001604052806028815260200161409d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a46118ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123539092919063ffffffff16565b611907565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3b6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf9061351b565b60405180910390fd5b600a8210610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b029061362d565b60405180910390fd5b600a8110610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906136bf565b60405180910390fd5b8160098190555080600b819055505050565b610b686118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061351b565b60405180910390fd5b600a8210610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061362d565b60405180910390fd5b600a8110610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906136bf565b60405180910390fd5b8160088190555080600a819055505050565b610c956118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061351b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d856118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e099061351b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706118ff565b73ffffffffffffffffffffffffffffffffffffffff161480610ee65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ece6118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610eef57600080fd5b6000479050610efd816123b7565b50565b6000610f4a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612423565b9050919050565b610f596118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ac6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061351b565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111926118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112169061351b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f474f440000000000000000000000000000000000000000000000000000000000815250905090565b6112876118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061351b565b60405180910390fd5b8060188190555050565b6113266118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa9061351b565b60405180910390fd5b600019601681905550600019601781905550565b60006113db6113d46118ff565b8484611ad0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114466118ff565b73ffffffffffffffffffffffffffffffffffffffff1614806114bc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a46118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6114c557600080fd5b60006114d030610f00565b90506114db81612491565b50565b6114e66118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061351b565b60405180910390fd5b60005b838390508110156116125781600560008686858181106115995761159861353b565b5b90506020020160208101906115ae9190613321565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160a90613599565b915050611576565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a76118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b9061351b565b60405180910390fd5b8060178190555050565b6117466118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990613751565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906137e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613875565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac39190613212565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613999565b60405180910390fd5b60008111611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613a2b565b60405180910390fd5b611bf9611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c675750611c37611161565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561205257601560149054906101000a900460ff16611cf657611c88611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613abd565b60405180910390fd5b5b601654811115611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613b29565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ddf5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613bbb565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ecb5760175481611e8084610f00565b611e8a9190613bdb565b10611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613c81565b60405180910390fd5b5b6000611ed630610f00565b9050600060185482101590506016548210611ef15760165491505b808015611f09575060158054906101000a900460ff16155b8015611f635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7b5750601560169054906101000a900460ff165b8015611fd15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204f5761203582612491565b6000479050600081111561204d5761204c476123b7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ac5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121ab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ba5760009050612341565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122655750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227d57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561234057600a54600c81905550600b54600d819055505b5b61234d84848484612708565b50505050565b600083831115829061239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239291906130bb565b60405180910390fd5b50600083856123aa9190613ca1565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561241f573d6000803e3d6000fd5b5050565b600060065482111561246a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246190613d47565b60405180910390fd5b6000612474612735565b9050612489818461276090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c8576124c7612e52565b5b6040519080825280602002602001820160405280156124f65781602001602082028036833780820191505090505b509050308160008151811061250e5761250d61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d99190613d7c565b816001815181106125ed576125ec61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611907565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b8959493929190613ea2565b600060405180830381600087803b1580156126d257600080fd5b505af11580156126e6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612716576127156127aa565b5b6127218484846127e7565b8061272f5761272e6129b2565b5b50505050565b60008060006127426129c6565b91509150612759818361276090919063ffffffff16565b9250505090565b60006127a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127be57506000600d54145b6127e557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f987612a88565b95509550955095509550955061285786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293881612b98565b6129428483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299f9190613212565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506129fa670de0b6b3a764000060065461276090919063ffffffff16565b821015612a1857600654670de0b6b3a7640000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6391906130bb565b60405180910390fd5b5060008385612a7b9190613f2b565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab5612735565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612353565b905092915050565b6000808284612b499190613bdb565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613fa8565b60405180910390fd5b8091505092915050565b6000612ba2612735565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce9190613fc8565b9050828482612ddd9190613f2b565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e149061407c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e8a82612e41565b810181811067ffffffffffffffff82111715612ea957612ea8612e52565b5b80604052505050565b6000612ebc612e28565b9050612ec88282612e81565b919050565b600067ffffffffffffffff821115612ee857612ee7612e52565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2982612efe565b9050919050565b612f3981612f1e565b8114612f4457600080fd5b50565b600081359050612f5681612f30565b92915050565b6000612f6f612f6a84612ecd565b612eb2565b90508083825260208201905060208402830185811115612f9257612f91612ef9565b5b835b81811015612fbb5780612fa78882612f47565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612e3c565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612e32565b5b600082013567ffffffffffffffff81111561302757613026612e37565b5b61303384828501612fc5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b600061308d8261303c565b6130978185613047565b93506130a7818560208601613058565b6130b081612e41565b840191505092915050565b600060208201905081810360008301526130d58184613082565b905092915050565b6000819050919050565b6130f0816130dd565b81146130fb57600080fd5b50565b60008135905061310d816130e7565b92915050565b6000806040838503121561312a57613129612e32565b5b600061313885828601612f47565b9250506020613149858286016130fe565b9150509250929050565b60008115159050919050565b61316881613153565b82525050565b6000602082019050613183600083018461315f565b92915050565b6000819050919050565b60006131ae6131a96131a484612efe565b613189565b612efe565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b61320c816130dd565b82525050565b60006020820190506132276000830184613203565b92915050565b60008060006060848603121561324657613245612e32565b5b600061325486828701612f47565b935050602061326586828701612f47565b9250506040613276868287016130fe565b9150509250925092565b600060ff82169050919050565b61329681613280565b82525050565b60006020820190506132b1600083018461328d565b92915050565b6132c081612f1e565b82525050565b60006020820190506132db60008301846132b7565b92915050565b600080604083850312156132f8576132f7612e32565b5b6000613306858286016130fe565b9250506020613317858286016130fe565b9150509250929050565b60006020828403121561333757613336612e32565b5b600061334584828501612f47565b91505092915050565b61335781613153565b811461336257600080fd5b50565b6000813590506133748161334e565b92915050565b6000602082840312156133905761338f612e32565b5b600061339e84828501613365565b91505092915050565b6000602082840312156133bd576133bc612e32565b5b60006133cb848285016130fe565b91505092915050565b600080fd5b60008083601f8401126133ef576133ee612e3c565b5b8235905067ffffffffffffffff81111561340c5761340b6133d4565b5b60208301915083602082028301111561342857613427612ef9565b5b9250929050565b60008060006040848603121561344857613447612e32565b5b600084013567ffffffffffffffff81111561346657613465612e37565b5b613472868287016133d9565b9350935050602061348586828701613365565b9150509250925092565b600080604083850312156134a6576134a5612e32565b5b60006134b485828601612f47565b92505060206134c585828601612f47565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613505602083613047565b9150613510826134cf565b602082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135a4826130dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d6576135d561356a565b5b600182019050919050565b7f4275792074617820666565206d757374206265206c657373207468616e203130600082015250565b6000613617602083613047565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b9050919050565b7f53656c6c2074617820666565206d757374206265206c657373207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a9602183613047565b91506136b48261364d565b604082019050919050565b600060208201905081810360008301526136d88161369c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061373b602683613047565b9150613746826136df565b604082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137cd602483613047565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385f602283613047565b915061386a82613803565b604082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138f1602583613047565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613983602383613047565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a15602983613047565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa7603f83613047565b9150613ab282613a4b565b604082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b13601c83613047565b9150613b1e82613add565b602082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba5602383613047565b9150613bb082613b49565b604082019050919050565b60006020820190508181036000830152613bd481613b98565b9050919050565b6000613be6826130dd565b9150613bf1836130dd565b9250828201905080821115613c0957613c0861356a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b602383613047565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826130dd565b9150613cb7836130dd565b9250828203905081811115613ccf57613cce61356a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d31602a83613047565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b600081519050613d7681612f30565b92915050565b600060208284031215613d9257613d91612e32565b5b6000613da084828501613d67565b91505092915050565b6000819050919050565b6000613dce613dc9613dc484613da9565b613189565b6130dd565b9050919050565b613dde81613db3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1981612f1e565b82525050565b6000613e2b8383613e10565b60208301905092915050565b6000602082019050919050565b6000613e4f82613de4565b613e598185613def565b9350613e6483613e00565b8060005b83811015613e95578151613e7c8882613e1f565b9750613e8783613e37565b925050600181019050613e68565b5085935050505092915050565b600060a082019050613eb76000830188613203565b613ec46020830187613dd5565b8181036040830152613ed68186613e44565b9050613ee560608301856132b7565b613ef26080830184613203565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f36826130dd565b9150613f41836130dd565b925082613f5157613f50613efc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f92601b83613047565b9150613f9d82613f5c565b602082019050919050565b60006020820190508181036000830152613fc181613f85565b9050919050565b6000613fd3826130dd565b9150613fde836130dd565b9250828202613fec816130dd565b915082820484148315176140035761400261356a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614066602183613047565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb274323fd599484babf1ac9092c74abdd6a6b65b52e9f34d3905949d946d9e964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c806374010ece116101025780639f2ecf3411610095578063c492f04611610064578063c492f046146106b2578063dd62ed3e146106db578063ea1644d514610718578063f2fde38b14610741576101ed565b80639f2ecf341461060a578063a9059cbb14610621578063bfd792841461065e578063c3c8cd801461069b576101ed565b80638f70ccf7116100d15780638f70ccf7146105625780638f9a55c01461058b57806395d89b41146105b657806398a5c315146105e1576101ed565b806374010ece146104a65780637d1db4a5146104cf5780637f2feddc146104fa5780638da5cb5b14610537576101ed565b806349bd5a5e1161017a5780636d8aa8f8116101495780636d8aa8f8146104125780636fc3eaec1461043b57806370a0823114610452578063715018a61461048f576101ed565b806349bd5a5e1461036c57806352f7c98814610397578063555d55dd146103c05780636b999053146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612ff3565b61076a565b005b34801561022757600080fd5b50610230610894565b60405161023d91906130bb565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613113565b6108d1565b60405161027a919061316e565b60405180910390f35b34801561028f57600080fd5b506102986108ef565b6040516102a591906131e8565b60405180910390f35b3480156102ba57600080fd5b506102c3610915565b6040516102d09190613212565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061322d565b610925565b60405161030d919061316e565b60405180910390f35b34801561032257600080fd5b5061032b6109fe565b6040516103389190613212565b60405180910390f35b34801561034d57600080fd5b50610356610a04565b604051610363919061329c565b60405180910390f35b34801561037857600080fd5b50610381610a0d565b60405161038e91906132c6565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906132e1565b610a33565b005b3480156103cc57600080fd5b506103e760048036038101906103e291906132e1565b610b60565b005b3480156103f557600080fd5b50610410600480360381019061040b9190613321565b610c8d565b005b34801561041e57600080fd5b506104396004803603810190610434919061337a565b610d7d565b005b34801561044757600080fd5b50610450610e2f565b005b34801561045e57600080fd5b5061047960048036038101906104749190613321565b610f00565b6040516104869190613212565b60405180910390f35b34801561049b57600080fd5b506104a4610f51565b005b3480156104b257600080fd5b506104cd60048036038101906104c891906133a7565b6110a4565b005b3480156104db57600080fd5b506104e4611143565b6040516104f19190613212565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613321565b611149565b60405161052e9190613212565b60405180910390f35b34801561054357600080fd5b5061054c611161565b60405161055991906132c6565b60405180910390f35b34801561056e57600080fd5b506105896004803603810190610584919061337a565b61118a565b005b34801561059757600080fd5b506105a061123c565b6040516105ad9190613212565b60405180910390f35b3480156105c257600080fd5b506105cb611242565b6040516105d891906130bb565b60405180910390f35b3480156105ed57600080fd5b50610608600480360381019061060391906133a7565b61127f565b005b34801561061657600080fd5b5061061f61131e565b005b34801561062d57600080fd5b5061064860048036038101906106439190613113565b6113c7565b604051610655919061316e565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613321565b6113e5565b604051610692919061316e565b60405180910390f35b3480156106a757600080fd5b506106b0611405565b005b3480156106be57600080fd5b506106d960048036038101906106d4919061342f565b6114de565b005b3480156106e757600080fd5b5061070260048036038101906106fd919061348f565b611618565b60405161070f9190613212565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906133a7565b61169f565b005b34801561074d57600080fd5b5061076860048036038101906107639190613321565b61173e565b005b6107726118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f69061351b565b60405180910390fd5b60005b8151811015610890576001601060008484815181106108245761082361353b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061088890613599565b915050610802565b5050565b60606040518060400160405280600881526020017f416e756e6e616b69000000000000000000000000000000000000000000000000815250905090565b60006108e56108de6118ff565b8484611907565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610932848484611ad0565b6109f38461093e6118ff565b6109ee8560405180606001604052806028815260200161409d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a46118ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123539092919063ffffffff16565b611907565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3b6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf9061351b565b60405180910390fd5b600a8210610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b029061362d565b60405180910390fd5b600a8110610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906136bf565b60405180910390fd5b8160098190555080600b819055505050565b610b686118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061351b565b60405180910390fd5b600a8210610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061362d565b60405180910390fd5b600a8110610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906136bf565b60405180910390fd5b8160088190555080600a819055505050565b610c956118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061351b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d856118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e099061351b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706118ff565b73ffffffffffffffffffffffffffffffffffffffff161480610ee65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ece6118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610eef57600080fd5b6000479050610efd816123b7565b50565b6000610f4a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612423565b9050919050565b610f596118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ac6118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061351b565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111926118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112169061351b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f474f440000000000000000000000000000000000000000000000000000000000815250905090565b6112876118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b9061351b565b60405180910390fd5b8060188190555050565b6113266118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa9061351b565b60405180910390fd5b600019601681905550600019601781905550565b60006113db6113d46118ff565b8484611ad0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114466118ff565b73ffffffffffffffffffffffffffffffffffffffff1614806114bc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a46118ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6114c557600080fd5b60006114d030610f00565b90506114db81612491565b50565b6114e66118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061351b565b60405180910390fd5b60005b838390508110156116125781600560008686858181106115995761159861353b565b5b90506020020160208101906115ae9190613321565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160a90613599565b915050611576565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a76118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b9061351b565b60405180910390fd5b8060178190555050565b6117466118ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca9061351b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990613751565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906137e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613875565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac39190613212565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613999565b60405180910390fd5b60008111611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613a2b565b60405180910390fd5b611bf9611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c675750611c37611161565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561205257601560149054906101000a900460ff16611cf657611c88611161565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613abd565b60405180910390fd5b5b601654811115611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613b29565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ddf5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613bbb565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ecb5760175481611e8084610f00565b611e8a9190613bdb565b10611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613c81565b60405180910390fd5b5b6000611ed630610f00565b9050600060185482101590506016548210611ef15760165491505b808015611f09575060158054906101000a900460ff16155b8015611f635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7b5750601560169054906101000a900460ff165b8015611fd15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204f5761203582612491565b6000479050600081111561204d5761204c476123b7565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ac5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121ab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ba5760009050612341565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122655750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227d57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561234057600a54600c81905550600b54600d819055505b5b61234d84848484612708565b50505050565b600083831115829061239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239291906130bb565b60405180910390fd5b50600083856123aa9190613ca1565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561241f573d6000803e3d6000fd5b5050565b600060065482111561246a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246190613d47565b60405180910390fd5b6000612474612735565b9050612489818461276090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c8576124c7612e52565b5b6040519080825280602002602001820160405280156124f65781602001602082028036833780820191505090505b509050308160008151811061250e5761250d61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d99190613d7c565b816001815181106125ed576125ec61353b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611907565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b8959493929190613ea2565b600060405180830381600087803b1580156126d257600080fd5b505af11580156126e6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612716576127156127aa565b5b6127218484846127e7565b8061272f5761272e6129b2565b5b50505050565b60008060006127426129c6565b91509150612759818361276090919063ffffffff16565b9250505090565b60006127a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127be57506000600d54145b6127e557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f987612a88565b95509550955095509550955061285786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ec85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293881612b98565b6129428483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299f9190613212565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506129fa670de0b6b3a764000060065461276090919063ffffffff16565b821015612a1857600654670de0b6b3a7640000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6391906130bb565b60405180910390fd5b5060008385612a7b9190613f2b565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab5612735565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612353565b905092915050565b6000808284612b499190613bdb565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590613fa8565b60405180910390fd5b8091505092915050565b6000612ba2612735565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61276090919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce9190613fc8565b9050828482612ddd9190613f2b565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e149061407c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e8a82612e41565b810181811067ffffffffffffffff82111715612ea957612ea8612e52565b5b80604052505050565b6000612ebc612e28565b9050612ec88282612e81565b919050565b600067ffffffffffffffff821115612ee857612ee7612e52565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2982612efe565b9050919050565b612f3981612f1e565b8114612f4457600080fd5b50565b600081359050612f5681612f30565b92915050565b6000612f6f612f6a84612ecd565b612eb2565b90508083825260208201905060208402830185811115612f9257612f91612ef9565b5b835b81811015612fbb5780612fa78882612f47565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612e3c565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612e32565b5b600082013567ffffffffffffffff81111561302757613026612e37565b5b61303384828501612fc5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b600061308d8261303c565b6130978185613047565b93506130a7818560208601613058565b6130b081612e41565b840191505092915050565b600060208201905081810360008301526130d58184613082565b905092915050565b6000819050919050565b6130f0816130dd565b81146130fb57600080fd5b50565b60008135905061310d816130e7565b92915050565b6000806040838503121561312a57613129612e32565b5b600061313885828601612f47565b9250506020613149858286016130fe565b9150509250929050565b60008115159050919050565b61316881613153565b82525050565b6000602082019050613183600083018461315f565b92915050565b6000819050919050565b60006131ae6131a96131a484612efe565b613189565b612efe565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b61320c816130dd565b82525050565b60006020820190506132276000830184613203565b92915050565b60008060006060848603121561324657613245612e32565b5b600061325486828701612f47565b935050602061326586828701612f47565b9250506040613276868287016130fe565b9150509250925092565b600060ff82169050919050565b61329681613280565b82525050565b60006020820190506132b1600083018461328d565b92915050565b6132c081612f1e565b82525050565b60006020820190506132db60008301846132b7565b92915050565b600080604083850312156132f8576132f7612e32565b5b6000613306858286016130fe565b9250506020613317858286016130fe565b9150509250929050565b60006020828403121561333757613336612e32565b5b600061334584828501612f47565b91505092915050565b61335781613153565b811461336257600080fd5b50565b6000813590506133748161334e565b92915050565b6000602082840312156133905761338f612e32565b5b600061339e84828501613365565b91505092915050565b6000602082840312156133bd576133bc612e32565b5b60006133cb848285016130fe565b91505092915050565b600080fd5b60008083601f8401126133ef576133ee612e3c565b5b8235905067ffffffffffffffff81111561340c5761340b6133d4565b5b60208301915083602082028301111561342857613427612ef9565b5b9250929050565b60008060006040848603121561344857613447612e32565b5b600084013567ffffffffffffffff81111561346657613465612e37565b5b613472868287016133d9565b9350935050602061348586828701613365565b9150509250925092565b600080604083850312156134a6576134a5612e32565b5b60006134b485828601612f47565b92505060206134c585828601612f47565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613505602083613047565b9150613510826134cf565b602082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135a4826130dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d6576135d561356a565b5b600182019050919050565b7f4275792074617820666565206d757374206265206c657373207468616e203130600082015250565b6000613617602083613047565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b9050919050565b7f53656c6c2074617820666565206d757374206265206c657373207468616e203160008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a9602183613047565b91506136b48261364d565b604082019050919050565b600060208201905081810360008301526136d88161369c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061373b602683613047565b9150613746826136df565b604082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137cd602483613047565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385f602283613047565b915061386a82613803565b604082019050919050565b6000602082019050818103600083015261388e81613852565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138f1602583613047565b91506138fc82613895565b604082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613983602383613047565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a15602983613047565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa7603f83613047565b9150613ab282613a4b565b604082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b13601c83613047565b9150613b1e82613add565b602082019050919050565b60006020820190508181036000830152613b4281613b06565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba5602383613047565b9150613bb082613b49565b604082019050919050565b60006020820190508181036000830152613bd481613b98565b9050919050565b6000613be6826130dd565b9150613bf1836130dd565b9250828201905080821115613c0957613c0861356a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c6b602383613047565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac826130dd565b9150613cb7836130dd565b9250828203905081811115613ccf57613cce61356a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d31602a83613047565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b600081519050613d7681612f30565b92915050565b600060208284031215613d9257613d91612e32565b5b6000613da084828501613d67565b91505092915050565b6000819050919050565b6000613dce613dc9613dc484613da9565b613189565b6130dd565b9050919050565b613dde81613db3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1981612f1e565b82525050565b6000613e2b8383613e10565b60208301905092915050565b6000602082019050919050565b6000613e4f82613de4565b613e598185613def565b9350613e6483613e00565b8060005b83811015613e95578151613e7c8882613e1f565b9750613e8783613e37565b925050600181019050613e68565b5085935050505092915050565b600060a082019050613eb76000830188613203565b613ec46020830187613dd5565b8181036040830152613ed68186613e44565b9050613ee560608301856132b7565b613ef26080830184613203565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f36826130dd565b9150613f41836130dd565b925082613f5157613f50613efc565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f92601b83613047565b9150613f9d82613f5c565b602082019050919050565b60006020820190508181036000830152613fc181613f85565b9050919050565b6000613fd3826130dd565b9150613fde836130dd565b9250828202613fec816130dd565b915082820484148315176140035761400261356a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614066602183613047565b91506140718261400a565b604082019050919050565b6000602082019050818103600083015261409581614059565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb274323fd599484babf1ac9092c74abdd6a6b65b52e9f34d3905949d946d9e964736f6c63430008110033

Deployed Bytecode Sourcemap

4562:15365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14041:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7201:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8250:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5940:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7514:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8483:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6273:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7411:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5992:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18172:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18511:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14238:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19115:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13778:251;;;;;;;;;;;;;:::i;:::-;;7629:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1729:160;;;;;;;;;;;;;:::i;:::-;;19271:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6157:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13393:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6214:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7304:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18908:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19534:120;;;;;;;;;;;;;:::i;:::-;;7787:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5696:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13514:252;;;;;;;;;;;;;:::i;:::-;;19666:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8026:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19399:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1901:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14041:185;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14121:9:::1;14116:99;14140:5;:12;14136:1;:16;14116:99;;;14195:4;14178;:14;14183:5;14189:1;14183:8;;;;;;;;:::i;:::-;;;;;;;;14178:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14154:3;;;;;:::i;:::-;;;;14116:99;;;;14041:185:::0;:::o;7201:91::-;7238:13;7275:5;;;;;;;;;;;;;;;;;7268:12;;7201:91;:::o;8250:221::-;8364:4;8394:39;8403:12;:10;:12::i;:::-;8417:7;8426:6;8394:8;:39::i;:::-;8455:4;8448:11;;8250:221;;;;:::o;5940:41::-;;;;;;;;;;;;;:::o;7514:103::-;7567:7;5148:18;7591:14;;7514:103;:::o;8483:506::-;8631:4;8652:36;8662:6;8670:9;8681:6;8652:9;:36::i;:::-;8703:248;8730:6;8755:12;:10;:12::i;:::-;8786:150;8846:6;8786:150;;;;;;;;;;;;;;;;;:11;:19;8798:6;8786:19;;;;;;;;;;;;;;;:33;8806:12;:10;:12::i;:::-;8786:33;;;;;;;;;;;;;;;;:37;;:150;;;;;:::i;:::-;8703:8;:248::i;:::-;8973:4;8966:11;;8483:506;;;;;:::o;6273:50::-;;;;:::o;7411:91::-;7452:5;4798:1;7474:16;;7411:91;:::o;5992:28::-;;;;;;;;;;;;;:::o;18172:327::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18286:2:::1;18272:11;:16;18264:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18363:2;18348:12;:17;18340:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;18433:11;18418:12;:26;;;;18475:12;18459:13;:28;;;;18172:327:::0;;:::o;18511:335::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18632:2:::1;18619:10;:15;18611:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18708:2;18694:11;:16;18686:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18780:10;18763:14;:27;;;;18823:11;18805:15;:29;;;;18511:335:::0;;:::o;14238:100::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14321:5:::1;14306:4;:12;14311:6;14306:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14238:100:::0;:::o;19115:109::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19200:12:::1;19186:11;;:26;;;;;;;;;;;;;;;;;;19115:109:::0;:::o;13778:251::-;13848:19;;;;;;;;;;;13832:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13887:17;;;;;;;;;;;13871:33;;:12;:10;:12::i;:::-;:33;;;13832:72;13824:81;;;;;;13920:26;13949:21;13920:50;;13985:32;13998:18;13985:12;:32::i;:::-;13809:220;13778:251::o;7629:146::-;7695:7;7726:37;7746:7;:16;7754:7;7746:16;;;;;;;;;;;;;;;;7726:19;:37::i;:::-;7719:44;;7629: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;19271:116::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19364:11:::1;19349:12;:26;;;;19271:116:::0;:::o;6157:46::-;;;;:::o;5734:43::-;;;;;;;;;;;;;;;;;:::o;1487:87::-;1525:7;1556:6;;;;;;;;;;;1549:13;;1487:87;:::o;13393:109::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13478:12:::1;13464:11;;:26;;;;;;;;;;;;;;;;;;13393:109:::0;:::o;6214:48::-;;;;:::o;7304:95::-;7343:13;7380:7;;;;;;;;;;;;;;;;;7373:14;;7304:95;:::o;18908:147::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19025:18:::1;19003:19;:40;;;;18908:147:::0;:::o;19534:120::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5100:1:::1;5091:11;19589:12;:18;;;;5100:1;5091:11;19622:14;:20;;;;19534:120::o:0;7787:227::-;7904:4;7934:42;7944:12;:10;:12::i;:::-;7958:9;7969:6;7934:9;:42::i;:::-;7998:4;7991:11;;7787:227;;;;:::o;5696:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13514:252::-;13584:19;;;;;;;;;;;13568:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13623:17;;;;;;;;;;;13607:33;;:12;:10;:12::i;:::-;:33;;;13568:72;13560:81;;;;;;13656:23;13682:24;13700:4;13682:9;:24::i;:::-;13656:50;;13721:33;13738:15;13721:16;:33::i;:::-;13545:221;13514:252::o;19666:250::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19787:9:::1;19783:122;19806:8;;:15;;19802:1;:19;19783:122;;;19881:8;19847:18;:31;19866:8;;19875:1;19866:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19847:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19823:3;;;;;:::i;:::-;;;;19783:122;;;;19666:250:::0;;;:::o;8026:212::-;8159:7;8199:11;:18;8211:5;8199:18;;;;;;;;;;;;;;;:27;8218:7;8199:27;;;;;;;;;;;;;;;;8192:34;;8026:212;;;;:::o;19399:123::-;1640:12;:10;:12::i;:::-;1630:22;;:6;;;;;;;;;;:22;;;1622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19497:13:::1;19480:14;:30;;;;19399: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;9776:405::-;9940:1;9923:19;;:5;:19;;;9915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10025:1;10006:21;;:7;:21;;;9998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10111:6;10081:11;:18;10093:5;10081:18;;;;;;;;;;;;;;;:27;10100:7;10081:27;;;;;;;;;;;;;;;:36;;;;10153:7;10137:32;;10146:5;10137:32;;;10162:6;10137:32;;;;;;:::i;:::-;;;;;;;;9776:405;;;:::o;10193:2526::-;10351:1;10335:18;;:4;:18;;;10327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10432:1;10418:16;;:2;:16;;;10410:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10506:1;10497:6;:10;10489:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10582:7;:5;:7::i;:::-;10574:15;;:4;:15;;;;:32;;;;;10599:7;:5;:7::i;:::-;10593:13;;:2;:13;;;;10574:32;10570:1351;;;10671:11;;;;;;;;;;;10666:152;;10723:7;:5;:7::i;:::-;10715:15;;:4;:15;;;10707:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10666:152;10856:12;;10846:6;:22;;10838:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10929:4;:10;10934:4;10929:10;;;;;;;;;;;;;;;;;;;;;;;;;10928:11;:24;;;;;10944:4;:8;10949:2;10944:8;;;;;;;;;;;;;;;;;;;;;;;;;10943:9;10928:24;10920:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11022:13;;;;;;;;;;;11016:19;;:2;:19;;;11013:154;;11093:14;;11084:6;11068:13;11078:2;11068:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11060:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11013:154;11187:28;11218:24;11236:4;11218:9;:24::i;:::-;11187:55;;11261:12;11300:19;;11276:20;:43;;11261:58;;11367:12;;11343:20;:36;11340:136;;11444:12;;11421:35;;11340:136;11500:7;:18;;;;;11512:6;;;;;;;;;;11511:7;11500:18;:43;;;;;11530:13;;;;;;;;;;;11522:21;;:4;:21;;;;11500:43;:58;;;;;11547:11;;;;;;;;;;;11500:58;:87;;;;;11563:18;:24;11582:4;11563:24;;;;;;;;;;;;;;;;;;;;;;;;;11562:25;11500:87;:114;;;;;11592:18;:22;11611:2;11592:22;;;;;;;;;;;;;;;;;;;;;;;;;11591:23;11500:114;11496:410;;;11639:38;11656:20;11639:16;:38::i;:::-;11700:26;11729:21;11700:50;;11798:1;11777:18;:22;11773:114;;;11828:35;11841:21;11828:12;:35::i;:::-;11773:114;11616:290;11496:410;10608:1313;;10570:1351;11937:12;11952:4;11937:19;;12009:18;:24;12028:4;12009:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12037:18;:22;12056:2;12037:22;;;;;;;;;;;;;;;;;;;;;;;;;12009:50;12008:102;;;;12073:13;;;;;;;;;;;12065:21;;:4;:21;;;;:44;;;;;12096:13;;;;;;;;;;;12090:19;;:2;:19;;;;12065:44;12008:102;12004:646;;;12141:5;12131:15;;12004:646;;;12236:13;;;;;;;;;;;12228:21;;:4;:21;;;:55;;;;;12267:15;;;;;;;;;;;12253:30;;:2;:30;;;;12228:55;12225:174;;;12320:14;;12308:9;:26;;;;12367:12;;12357:7;:22;;;;12225:174;12466:13;;;;;;;;;;;12460:19;;:2;:19;;;:55;;;;;12499:15;;;;;;;;;;;12483:32;;:4;:32;;;;12460:55;12456:177;;;12552:15;;12540:9;:27;;;;12600:13;;12590:7;:23;;;;12456:177;12004:646;12666:41;12681:4;12687:2;12691:6;12699:7;12666:14;:41::i;:::-;10312:2407;10193: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;13274:107::-;13335:17;;;;;;;;;;;:26;;:34;13362:6;13335:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13274:107;:::o;9001:367::-;9108:7;9178;;9167;:18;;9141:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9278:19;9300:10;:8;:10::i;:::-;9278:32;;9332:24;9344:11;9332:7;:11;;:24;;;;:::i;:::-;9325:31;;;9001:367;;;:::o;12731:531::-;6438:4;6429:6;;:13;;;;;;;;;;;;;;;;;;12813:21:::1;12851:1;12837:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12813:40;;12886:4;12868;12873:1;12868:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12916:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12906:4;12911:1;12906:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12953:62;12970:4;12985:15;;;;;;;;;;;13003:11;12953:8;:62::i;:::-;13030:15;;;;;;;;;;;:66;;;13115:11;13145:1;13165:4;13196;13220:15;13030:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12798:464;6482:5:::0;6473:6;;:14;;;;;;;;;;;;;;;;;;12731:531;:::o;14350:318::-;14530:7;14525:28;;14539:14;:12;:14::i;:::-;14525:28;14568:44;14586:6;14594:9;14605:6;14568:17;:44::i;:::-;14632:7;14627:29;;14641:15;:13;:15::i;:::-;14627:29;14350:318;;;;:::o;17695:176::-;17737:7;17762:15;17779;17798:19;:17;:19::i;:::-;17761:56;;;;17839:20;17851:7;17839;:11;;:20;;;;:::i;:::-;17832:27;;;;17695:176;:::o;3123:140::-;3181:7;3212:39;3216:1;3219;3212:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3205:46;;3123:140;;;;:::o;9380:243::-;9444:1;9431:9;;:14;:30;;;;;9460:1;9449:7;;:12;9431:30;9463:7;9427:43;9506:9;;9486:17;:29;;;;9548:7;;9530:15;:25;;;;9584:1;9572:9;:13;;;;9610:1;9600:7;:11;;;;9380:243;:::o;14680:682::-;14851:15;14885:23;14927:12;14958:23;15000:12;15031:13;15062:19;15073:7;15062:10;:19::i;:::-;14832:249;;;;;;;;;;;;15114:28;15134:7;15114;:15;15122:6;15114:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15096:7;:15;15104:6;15096:15;;;;;;;;;;;;;;;:46;;;;15178:39;15201:15;15178:7;:18;15186:9;15178:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15157:7;:18;15165:9;15157:18;;;;;;;;;;;;;;;:60;;;;15232:16;15242:5;15232:9;:16::i;:::-;15263:23;15275:4;15281;15263:11;:23::i;:::-;15323:9;15306:44;;15315:6;15306:44;;;15334:15;15306:44;;;;;;:::i;:::-;;;;;;;;14817:545;;;;;;14680:682;;;:::o;9635:129::-;9695:17;;9683:9;:29;;;;9737:15;;9727:7;:25;;;;9635:129::o;17883:277::-;17934:7;17943;17967:15;17985:7;;17967:25;;18007:15;5148:18;18007:25;;18061:20;5148:18;18061:7;;:11;;:20;;;;:::i;:::-;18051:7;:30;18047:61;;;18091:7;;5148:18;18083:25;;;;;;;;18047:61;18131:7;18140;18123:25;;;;;;17883: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;15825:687::-;15941:7;15967;15993;16019;16045;16071;16119:23;16144:12;16158:13;16192:40;16204:7;16213:9;;16224:7;;16192:11;:40::i;:::-;16118:114;;;;;;16247:19;16269:10;:8;:10::i;:::-;16247:32;;16295:15;16312:23;16337:12;16370:46;16382:7;16391:4;16397:5;16404:11;16370;:46::i;:::-;16294:122;;;;;;16439:7;16448:15;16465:4;16471:15;16488:4;16494:5;16431:69;;;;;;;;;;;;;;;;;;;15825: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;15374:227::-;15431:19;15453:10;:8;:10::i;:::-;15431:32;;15478:13;15494:22;15504:11;15494:5;:9;;:22;;;;:::i;:::-;15478:38;;15556:33;15583:5;15556:7;:22;15572:4;15556:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15531:7;:22;15547:4;15531:22;;;;;;;;;;;;;;;:58;;;;15416:185;;15374:227;:::o;15613:159::-;15695:17;15707:4;15695:7;;:11;;:17;;;;:::i;:::-;15685:7;:27;;;;15740:20;15755:4;15740:10;;:14;;:20;;;;:::i;:::-;15727:10;:33;;;;15613:159;;:::o;16524:537::-;16725:7;16751;16777;16824:12;16839:30;16865:3;16839:21;16851:8;16839:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16824:45;;16884:13;16900:28;16924:3;16900:19;16912:6;16900:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16884:44;;16943:23;16969:28;16991:5;16969:17;16981:4;16969:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16943:54;;17020:15;17037:4;17043:5;17012:37;;;;;;;;;16524:537;;;;;;;:::o;17073:610::-;17303:7;17329;17355;17402:15;17420:24;17432:11;17420:7;:11;;:24;;;;:::i;:::-;17402:42;;17459:12;17474:21;17483:11;17474:4;:8;;:21;;;;:::i;:::-;17459:36;;17510:13;17526:22;17536:11;17526:5;:9;;:22;;;;:::i;:::-;17510:38;;17563:23;17589:28;17611:5;17589:17;17601:4;17589:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17563:54;;17640:7;17649:15;17666:4;17632:39;;;;;;;;;;17073: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://cb274323fd599484babf1ac9092c74abdd6a6b65b52e9f34d3905949d946d9e9
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.