ETH Price: $2,453.65 (+0.10%)
Gas: 2.5 Gwei

Token

Giga Factory (GIGA)
 

Overview

Max Total Supply

420,690,000,000,000 GIGA

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,517,250,000,000 GIGA

Value
$0.00
0x22dd81f3d2b56260900dca069bf2bdb31fbc28e6
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:
GIGA

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-16
*/

/**
 *Submitted for verification at Etherscan.io on 2024-05-11
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/*

                                                                                                         

Website: 
Telegram: 
Linktree: 
X/Twitter: 
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    constructor() {
        _transferOwnership(_msgSender());
    }


    modifier onlyOwner() {
        _checkOwner();
        _;
    }


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


    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }


    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


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


    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract GIGA is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public blackListed;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 420690000000000 * 10**_decimals; 
    string private constant _name = unicode"Giga Factory";  
    string private constant _symbol = unicode"GIGA"; 
    uint256 public _taxSwapThreshold= 4206900000000 * 10**_decimals;
    uint256 public antiWhaleLimit = 4206900000000 * 10 ** decimals();

    uint256 public _buyFee = 50; //Buy tax
    uint256 public _sellFee = 50; // Sell tax
    uint256 public _transferFee = 0; //Transfer tax

    uint256 public _SharesForLp = 2; // LP Tax Share
    uint256 public _SharesForDev = 3; // ETH Share For Dev
    uint256 public _SharesForToken = 3; // Shares allocated to buy another token

    address public utilityToken;

    address payable public feeCollectorWallet = payable(0x0f649539Aee57e88D9A2a8298FfE3Fce3E8fdf90);

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

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet router address
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeCollectorWallet] = 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 _balances[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 _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");
        require(!blackListed[from] && !blackListed[to],"Sender or Recipient Blacklisted");
        uint256 taxAmount=0;
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            if(to != uniswapV2Pair){
               require(balanceOf(to) + amount <= antiWhaleLimit, "Exceeds the antiWhaleLimit.");
            }

            if(_transferFee > 0) {
            if(to != uniswapV2Pair && from != uniswapV2Pair) {
                taxAmount = amount.mul(_transferFee).div(100);
            }
            }

            if(_buyFee > 0) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                taxAmount = amount.mul(_buyFee).div(100);
            }
            }

            if(_sellFee > 0) {
            if(to == uniswapV2Pair){
                taxAmount = amount.mul(_sellFee).div(100);
            }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                uint256 total = _SharesForDev + _SharesForLp + _SharesForToken;

                uint256 LPAllocation = contractTokenBalance * _SharesForLp / total / 2;
                uint256 DevAllocation = contractTokenBalance * _SharesForDev / total;
                uint256 TokenAllocation = contractTokenBalance * _SharesForToken / total;
                uint256 TotalSwap = LPAllocation + DevAllocation + TokenAllocation;

                swapTokensForEth(TotalSwap);

                if(LPAllocation > 0){
                    uint256 ETHForLP = estimateSwap(LPAllocation);
                    _addLiquidity(LPAllocation,ETHForLP);
                }
                if(TokenAllocation > 0){
                    uint256 ETHForToken = estimateSwap(TokenAllocation);
                    swapETHForTokens(ETHForToken);
                }

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function setLiquidityDistribution(uint256 _LPShare, uint256 _DevShare, uint256 _TokenShare) public onlyOwner{
        _SharesForLp = _LPShare; // LP Tax Share
        _SharesForDev = _DevShare; // ETH Share For Dev
        _SharesForToken = _TokenShare; // Shares allocated to buy another token
    }

    function addToBotlist(address[] memory _address) public onlyOwner{
        for(uint i = 0; i < _address.length; i++){
            blackListed[_address[i]] = true;
        }
    }

    function removeFromBotlist(address[] memory _address) public onlyOwner{
        for(uint i = 0; i < _address.length; i++){
            blackListed[_address[i]] = false;
        }
    }

    function setUtilityToken(address _token) public onlyOwner{
        utilityToken = _token;
    }

    function estimateSwap(uint256 _amount) internal view returns(uint256){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uint[] memory ETHReceived = uniswapV2Router.getAmountsOut(_amount,path);
        return(ETHReceived[1]);
    }

    function _addLiquidity(uint256 tokenAmount,uint256 ETHAmount) internal lockTheSwap{
        if(tokenAmount==0){return;}
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            feeCollectorWallet,
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        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 swapETHForTokens(uint256 ETHAmount) private lockTheSwap{
        if(ETHAmount==0){return;}
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = utilityToken;
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ETHAmount}(
            0,
            path,
            feeCollectorWallet,
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
       (bool callSuccess, ) = payable(feeCollectorWallet).call{value: amount}("");
        require(callSuccess, "Call failed");
    }


    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==feeCollectorWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function changeAntiWhaleLimit(uint256 _maxLimit) public onlyOwner{
        require(_maxLimit > totalSupply().div(200),"Limit too less");
        antiWhaleLimit = _maxLimit;
    }

    function changeBuyTaxes(uint256 _fee) public onlyOwner {
        _buyFee = _fee;
    }

    function changeSellTaxes(uint256 _fee) public onlyOwner {
        _sellFee = _fee;
    }

    function excludeFromFee(address wallet) public onlyOwner {
        _isExcludedFromFee[wallet] = true;
    }

    function subjectToFee(address wallet) public onlyOwner {
        _isExcludedFromFee[wallet] = false;
    }
    
    }

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_SharesForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_SharesForLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_SharesForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"addToBotlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleLimit","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":"","type":"address"}],"name":"blackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxLimit","type":"uint256"}],"name":"changeAntiWhaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCollectorWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"removeFromBotlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_LPShare","type":"uint256"},{"internalType":"uint256","name":"_DevShare","type":"uint256"},{"internalType":"uint256","name":"_TokenShare","type":"uint256"}],"name":"setLiquidityDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setUtilityToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"subjectToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utilityToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620007f2565b6503d37ec7b50062000027919062000842565b6005556200003a6200056960201b60201c565b600a620000489190620007f2565b6503d37ec7b5006200005b919062000842565b600655603260075560326008555f6009556002600a556003600b556003600c55730f649539aee57e88d9a2a8298ffe3fce3e8fdf90600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601060146101000a81548160ff0219169083151502179055506001601060156101000a81548160ff02191690831515021790555034801562000110575f80fd5b5062000131620001256200057160201b60201c565b6200057860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000193573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b99190620008f1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002459190620008f1565b6040518363ffffffff1660e01b81526004016200026492919062000932565b6020604051808303815f875af115801562000281573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a79190620008f1565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620003369190620007f2565b66017e9d8602b4006200034a919062000842565b60015f6200035d6200057160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003af6200063960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004d96200057160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005379190620007f2565b66017e9d8602b4006200054b919062000842565b6040516200055a91906200096e565b60405180910390a35062000989565b5f6012905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006ea57808604811115620006c257620006c162000660565b5b6001851615620006d25780820291505b8081029050620006e2856200068d565b9450620006a2565b94509492505050565b5f82620007045760019050620007d6565b8162000713575f9050620007d6565b81600181146200072c576002811462000737576200076d565b6001915050620007d6565b60ff8411156200074c576200074b62000660565b5b8360020a91508482111562000766576200076562000660565b5b50620007d6565b5060208310610133831016604e8410600b8410161715620007a75782820a905083811115620007a157620007a062000660565b5b620007d6565b620007b6848484600162000699565b92509050818404811115620007d057620007cf62000660565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007fe82620007dd565b91506200080b83620007e6565b92506200083a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006f3565b905092915050565b5f6200084e82620007dd565b91506200085b83620007dd565b92508282026200086b81620007dd565b9150828204841483151762000885576200088462000660565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008bb8262000890565b9050919050565b620008cd81620008af565b8114620008d8575f80fd5b50565b5f81519050620008eb81620008c2565b92915050565b5f602082840312156200090957620009086200088c565b5b5f6200091884828501620008db565b91505092915050565b6200092c81620008af565b82525050565b5f604082019050620009475f83018562000921565b62000956602083018462000921565b9392505050565b6200096881620007dd565b82525050565b5f602082019050620009835f8301846200095d565b92915050565b613ac480620009975f395ff3fe6080604052600436106101fc575f3560e01c8063768dc7101161010c578063a9059cbb1161009f578063bf474bed1161006e578063bf474bed146106fd578063cafdc37b14610727578063dd62ed3e1461074f578063ea049f641461078b578063f2fde38b146107b557610203565b8063a9059cbb14610633578063ae86ed891461066f578063af3b5b0414610699578063bbde5b25146106c157610203565b806393d89a0c116100db57806393d89a0c1461058f57806394ff4122146105b757806395d89b41146105e1578063a3cdf0231461060b57610203565b8063768dc710146104d95780638da5cb5b146105155780639013ae081461053f57806393114b1d1461056757610203565b8063313ce5671161018f578063506dc6921161015e578063506dc6921461041d57806351bc3c8514610447578063590f897e1461045d57806370a0823114610487578063715018a6146104c357610203565b8063313ce567146103775780633df9a8d2146103a157806340b9a54b146103cb578063437823ec146103f557610203565b806318160ddd116101cb57806318160ddd146102bf5780631e0117bd146102e95780631fafa8bc1461031157806323b872dd1461033b57610203565b806306fdde0314610207578063095ea7b3146102315780631234f8681461026d57806314e829f61461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107dd565b6040516102289190612831565b60405180910390f35b34801561023c575f80fd5b50610257600480360381019061025291906128ef565b61081a565b6040516102649190612947565b60405180910390f35b348015610278575f80fd5b50610281610837565b60405161028e919061296f565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b89190612ac8565b61083d565b005b3480156102ca575f80fd5b506102d36108d0565b6040516102e0919061296f565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190612b0f565b6108f6565b005b34801561031c575f80fd5b50610325610955565b6040516103329190612b5a565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c9190612b73565b61097a565b60405161036e9190612947565b60405180910390f35b348015610382575f80fd5b5061038b610a4e565b6040516103989190612bde565b60405180910390f35b3480156103ac575f80fd5b506103b5610a56565b6040516103c2919061296f565b60405180910390f35b3480156103d6575f80fd5b506103df610a5c565b6040516103ec919061296f565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612b0f565b610a62565b005b348015610428575f80fd5b50610431610ac2565b60405161043e919061296f565b60405180910390f35b348015610452575f80fd5b5061045b610ac8565b005b348015610468575f80fd5b50610471610b5f565b60405161047e919061296f565b60405180910390f35b348015610492575f80fd5b506104ad60048036038101906104a89190612b0f565b610b65565b6040516104ba919061296f565b60405180910390f35b3480156104ce575f80fd5b506104d7610bab565b005b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612b0f565b610bbe565b60405161050c9190612947565b60405180910390f35b348015610520575f80fd5b50610529610bdb565b6040516105369190612c06565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612b0f565b610c02565b005b348015610572575f80fd5b5061058d60048036038101906105889190612c1f565b610c4d565b005b34801561059a575f80fd5b506105b560048036038101906105b09190612c1f565b610cbb565b005b3480156105c2575f80fd5b506105cb610ccd565b6040516105d8919061296f565b60405180910390f35b3480156105ec575f80fd5b506105f5610cd3565b6040516106029190612831565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612c1f565b610d10565b005b34801561063e575f80fd5b50610659600480360381019061065491906128ef565b610d22565b6040516106669190612947565b60405180910390f35b34801561067a575f80fd5b50610683610d3f565b6040516106909190612c06565b60405180910390f35b3480156106a4575f80fd5b506106bf60048036038101906106ba9190612ac8565b610d64565b005b3480156106cc575f80fd5b506106e760048036038101906106e29190612b0f565b610df6565b6040516106f49190612947565b60405180910390f35b348015610708575f80fd5b50610711610e13565b60405161071e919061296f565b60405180910390f35b348015610732575f80fd5b5061074d60048036038101906107489190612c4a565b610e19565b005b34801561075a575f80fd5b5061077560048036038101906107709190612c9a565b610e3b565b604051610782919061296f565b60405180910390f35b348015610796575f80fd5b5061079f610ebd565b6040516107ac919061296f565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d69190612b0f565b610ec3565b005b60606040518060400160405280600c81526020017f4769676120466163746f72790000000000000000000000000000000000000000815250905090565b5f61082d610826610f45565b8484610f4c565b6001905092915050565b60065481565b61084561110f565b5f5b81518110156108cc57600160045f84848151811061086857610867612cd8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610847565b5050565b5f6012600a6108df9190612e61565b66017e9d8602b4006108f19190612eab565b905090565b6108fe61110f565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61098684848461118d565b610a4384610992610f45565b610a3e85604051806060016040528060288152602001613a676028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f5610f45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b7c9092919063ffffffff16565b610f4c565b600190509392505050565b5f6012905090565b60095481565b60075481565b610a6a61110f565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600a5481565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b08610f45565b73ffffffffffffffffffffffffffffffffffffffff1614610b27575f80fd5b5f610b3130610b65565b90505f811115610b4557610b4481611bde565b5b5f4790505f811115610b5b57610b5a81611e52565b5b5050565b60085481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bb361110f565b610bbc5f611f1f565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c0a61110f565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c5561110f565b610c7060c8610c626108d0565b611fe090919063ffffffff16565b8111610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca890612f36565b60405180910390fd5b8060068190555050565b610cc361110f565b8060088190555050565b600c5481565b60606040518060400160405280600481526020017f4749474100000000000000000000000000000000000000000000000000000000815250905090565b610d1861110f565b8060078190555050565b5f610d35610d2e610f45565b848461118d565b6001905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d6c61110f565b5f5b8151811015610df2575f60045f848481518110610d8e57610d8d612cd8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d6e565b5050565b6004602052805f5260405f205f915054906101000a900460ff1681565b60055481565b610e2161110f565b82600a8190555081600b8190555080600c81905550505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610ecb61110f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090612fc4565b60405180910390fd5b610f4281611f1f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190613052565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906130e0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611102919061296f565b60405180910390a3505050565b611117610f45565b73ffffffffffffffffffffffffffffffffffffffff16611135610bdb565b73ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613148565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f2906131d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126090613264565b60405180910390fd5b5f81116112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906132f2565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611349575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f9061335a565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611427575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118cc5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146114d9576006548261148d85610b65565b6114979190613378565b11156114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf906133f5565b60405180910390fd5b5b5f60095411156115be5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561158d575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115bd576115ba60646115ac6009548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f60075411156116a25760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116715750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116a15761169e60646116906007548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f600854111561172c5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361172b57611728606461171a6008548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f61173630610b65565b9050601060149054906101000a900460ff161580156117a1575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117b95750601060159054906101000a900460ff165b80156117c6575060055481115b156118ca575f600c54600a54600b546117df9190613378565b6117e99190613378565b90505f600282600a54856117fd9190612eab565b6118079190613440565b6118119190613440565b90505f82600b54856118239190612eab565b61182d9190613440565b90505f83600c548661183f9190612eab565b6118499190613440565b90505f8183856118599190613378565b6118639190613378565b905061186e81611bde565b5f84111561188e575f611880856120a0565b905061188c85826122de565b505b5f8211156118ad575f6118a0836120a0565b90506118ab81612416565b505b5f4790505f8111156118c3576118c247611e52565b5b5050505050505b505b5f8111156119cb576119248160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126a090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c2919061296f565b60405180910390a35b611a1b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611abe611a7282846126fd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126a090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b6184866126fd90919063ffffffff16565b604051611b6e919061296f565b60405180910390a350505050565b5f838311158290611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba9190612831565b60405180910390fd5b505f8385611bd19190613470565b9050809150509392505050565b6001601060146101000a81548160ff0219169083151502179055505f810315611e35575f600267ffffffffffffffff811115611c1d57611c1c61298c565b5b604051908082528060200260200182016040528015611c4b5781602001602082028036833780820191505090505b50905030815f81518110611c6257611c61612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2a91906134b7565b81600181518110611d3e57611d3d612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611da430600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f4c565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e069594939291906135db565b5f604051808303815f87803b158015611e1d575f80fd5b505af1158015611e2f573d5f803e3d5ffd5b50505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e9890613660565b5f6040518083038185875af1925050503d805f8114611ed2576040519150601f19603f3d011682016040523d82523d5f602084013e611ed7565b606091505b5050905080611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f12906136be565b60405180910390fd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61202183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612746565b905092915050565b5f808303612039575f905061209a565b5f82846120469190612eab565b90508284826120559190613440565b14612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c9061374c565b60405180910390fd5b809150505b92915050565b5f80600267ffffffffffffffff8111156120bd576120bc61298c565b5b6040519080825280602002602001820160405280156120eb5781602001602082028036833780820191505090505b50905030815f8151811061210257612101612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ca91906134b7565b816001815181106121de576121dd612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b815260040161227592919061376a565b5f60405180830381865afa15801561228f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122b7919061386c565b9050806001815181106122cd576122cc612cd8565b5b602002602001015192505050919050565b6001601060146101000a81548160ff0219169083151502179055505f8203156123f85761232d30600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f4c565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123b396959493929190613905565b60606040518083038185885af11580156123cf573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906123f49190613964565b5050505b5f601060146101000a81548160ff0219169083151502179055505050565b6001601060146101000a81548160ff0219169083151502179055505f810315612683575f600267ffffffffffffffff8111156124555761245461298c565b5b6040519080825280602002602001820160405280156124835781602001602082028036833780820191505090505b509050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251491906134b7565b815f8151811061252757612526612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061259757612596612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f84600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161265394939291906139b4565b5f604051808303818588803b15801561266a575f80fd5b505af115801561267c573d5f803e3d5ffd5b5050505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f8082846126ae9190613378565b9050838110156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea90613a48565b60405180910390fd5b8091505092915050565b5f61273e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b7c565b905092915050565b5f808311829061278c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127839190612831565b60405180910390fd5b505f838561279a9190613440565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127de5780820151818401526020810190506127c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612803826127a7565b61280d81856127b1565b935061281d8185602086016127c1565b612826816127e9565b840191505092915050565b5f6020820190508181035f83015261284981846127f9565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288b82612862565b9050919050565b61289b81612881565b81146128a5575f80fd5b50565b5f813590506128b681612892565b92915050565b5f819050919050565b6128ce816128bc565b81146128d8575f80fd5b50565b5f813590506128e9816128c5565b92915050565b5f80604083850312156129055761290461285a565b5b5f612912858286016128a8565b9250506020612923858286016128db565b9150509250929050565b5f8115159050919050565b6129418161292d565b82525050565b5f60208201905061295a5f830184612938565b92915050565b612969816128bc565b82525050565b5f6020820190506129825f830184612960565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129c2826127e9565b810181811067ffffffffffffffff821117156129e1576129e061298c565b5b80604052505050565b5f6129f3612851565b90506129ff82826129b9565b919050565b5f67ffffffffffffffff821115612a1e57612a1d61298c565b5b602082029050602081019050919050565b5f80fd5b5f612a45612a4084612a04565b6129ea565b90508083825260208201905060208402830185811115612a6857612a67612a2f565b5b835b81811015612a915780612a7d88826128a8565b845260208401935050602081019050612a6a565b5050509392505050565b5f82601f830112612aaf57612aae612988565b5b8135612abf848260208601612a33565b91505092915050565b5f60208284031215612add57612adc61285a565b5b5f82013567ffffffffffffffff811115612afa57612af961285e565b5b612b0684828501612a9b565b91505092915050565b5f60208284031215612b2457612b2361285a565b5b5f612b31848285016128a8565b91505092915050565b5f612b4482612862565b9050919050565b612b5481612b3a565b82525050565b5f602082019050612b6d5f830184612b4b565b92915050565b5f805f60608486031215612b8a57612b8961285a565b5b5f612b97868287016128a8565b9350506020612ba8868287016128a8565b9250506040612bb9868287016128db565b9150509250925092565b5f60ff82169050919050565b612bd881612bc3565b82525050565b5f602082019050612bf15f830184612bcf565b92915050565b612c0081612881565b82525050565b5f602082019050612c195f830184612bf7565b92915050565b5f60208284031215612c3457612c3361285a565b5b5f612c41848285016128db565b91505092915050565b5f805f60608486031215612c6157612c6061285a565b5b5f612c6e868287016128db565b9350506020612c7f868287016128db565b9250506040612c90868287016128db565b9150509250925092565b5f8060408385031215612cb057612caf61285a565b5b5f612cbd858286016128a8565b9250506020612cce858286016128a8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d8757808604811115612d6357612d62612d05565b5b6001851615612d725780820291505b8081029050612d8085612d32565b9450612d47565b94509492505050565b5f82612d9f5760019050612e5a565b81612dac575f9050612e5a565b8160018114612dc25760028114612dcc57612dfb565b6001915050612e5a565b60ff841115612dde57612ddd612d05565b5b8360020a915084821115612df557612df4612d05565b5b50612e5a565b5060208310610133831016604e8410600b8410161715612e305782820a905083811115612e2b57612e2a612d05565b5b612e5a565b612e3d8484846001612d3e565b92509050818404811115612e5457612e53612d05565b5b81810290505b9392505050565b5f612e6b826128bc565b9150612e7683612bc3565b9250612ea37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d90565b905092915050565b5f612eb5826128bc565b9150612ec0836128bc565b9250828202612ece816128bc565b91508282048414831517612ee557612ee4612d05565b5b5092915050565b7f4c696d697420746f6f206c6573730000000000000000000000000000000000005f82015250565b5f612f20600e836127b1565b9150612f2b82612eec565b602082019050919050565b5f6020820190508181035f830152612f4d81612f14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fae6026836127b1565b9150612fb982612f54565b604082019050919050565b5f6020820190508181035f830152612fdb81612fa2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61303c6024836127b1565b915061304782612fe2565b604082019050919050565b5f6020820190508181035f83015261306981613030565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130ca6022836127b1565b91506130d582613070565b604082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131326020836127b1565b915061313d826130fe565b602082019050919050565b5f6020820190508181035f83015261315f81613126565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131c06025836127b1565b91506131cb82613166565b604082019050919050565b5f6020820190508181035f8301526131ed816131b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61324e6023836127b1565b9150613259826131f4565b604082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132dc6029836127b1565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b7f53656e646572206f7220526563697069656e7420426c61636b6c6973746564005f82015250565b5f613344601f836127b1565b915061334f82613310565b602082019050919050565b5f6020820190508181035f83015261337181613338565b9050919050565b5f613382826128bc565b915061338d836128bc565b92508282019050808211156133a5576133a4612d05565b5b92915050565b7f457863656564732074686520616e74695768616c654c696d69742e00000000005f82015250565b5f6133df601b836127b1565b91506133ea826133ab565b602082019050919050565b5f6020820190508181035f83015261340c816133d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61344a826128bc565b9150613455836128bc565b92508261346557613464613413565b5b828204905092915050565b5f61347a826128bc565b9150613485836128bc565b925082820390508181111561349d5761349c612d05565b5b92915050565b5f815190506134b181612892565b92915050565b5f602082840312156134cc576134cb61285a565b5b5f6134d9848285016134a3565b91505092915050565b5f819050919050565b5f819050919050565b5f61350e613509613504846134e2565b6134eb565b6128bc565b9050919050565b61351e816134f4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355681612881565b82525050565b5f613567838361354d565b60208301905092915050565b5f602082019050919050565b5f61358982613524565b613593818561352e565b935061359e8361353e565b805f5b838110156135ce5781516135b5888261355c565b97506135c083613573565b9250506001810190506135a1565b5085935050505092915050565b5f60a0820190506135ee5f830188612960565b6135fb6020830187613515565b818103604083015261360d818661357f565b905061361c6060830185612bf7565b6136296080830184612960565b9695505050505050565b5f81905092915050565b50565b5f61364b5f83613633565b91506136568261363d565b5f82019050919050565b5f61366a82613640565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6136a8600b836127b1565b91506136b382613674565b602082019050919050565b5f6020820190508181035f8301526136d58161369c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137366021836127b1565b9150613741826136dc565b604082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b5f60408201905061377d5f830185612960565b818103602083015261378f818461357f565b90509392505050565b5f67ffffffffffffffff8211156137b2576137b161298c565b5b602082029050602081019050919050565b5f815190506137d1816128c5565b92915050565b5f6137e96137e484613798565b6129ea565b9050808382526020820190506020840283018581111561380c5761380b612a2f565b5b835b81811015613835578061382188826137c3565b84526020840193505060208101905061380e565b5050509392505050565b5f82601f83011261385357613852612988565b5b81516138638482602086016137d7565b91505092915050565b5f602082840312156138815761388061285a565b5b5f82015167ffffffffffffffff81111561389e5761389d61285e565b5b6138aa8482850161383f565b91505092915050565b5f6138cd6138c86138c384612862565b6134eb565b612862565b9050919050565b5f6138de826138b3565b9050919050565b5f6138ef826138d4565b9050919050565b6138ff816138e5565b82525050565b5f60c0820190506139185f830189612bf7565b6139256020830188612960565b6139326040830187613515565b61393f6060830186613515565b61394c60808301856138f6565b61395960a0830184612960565b979650505050505050565b5f805f6060848603121561397b5761397a61285a565b5b5f613988868287016137c3565b9350506020613999868287016137c3565b92505060406139aa868287016137c3565b9150509250925092565b5f6080820190506139c75f830187613515565b81810360208301526139d9818661357f565b90506139e860408301856138f6565b6139f56060830184612960565b95945050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a32601b836127b1565b9150613a3d826139fe565b602082019050919050565b5f6020820190508181035f830152613a5f81613a26565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ccc70f019cecd8c32113e58c0406ceeb7c680df7080277aaf9347b9750d8c28264736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c8063768dc7101161010c578063a9059cbb1161009f578063bf474bed1161006e578063bf474bed146106fd578063cafdc37b14610727578063dd62ed3e1461074f578063ea049f641461078b578063f2fde38b146107b557610203565b8063a9059cbb14610633578063ae86ed891461066f578063af3b5b0414610699578063bbde5b25146106c157610203565b806393d89a0c116100db57806393d89a0c1461058f57806394ff4122146105b757806395d89b41146105e1578063a3cdf0231461060b57610203565b8063768dc710146104d95780638da5cb5b146105155780639013ae081461053f57806393114b1d1461056757610203565b8063313ce5671161018f578063506dc6921161015e578063506dc6921461041d57806351bc3c8514610447578063590f897e1461045d57806370a0823114610487578063715018a6146104c357610203565b8063313ce567146103775780633df9a8d2146103a157806340b9a54b146103cb578063437823ec146103f557610203565b806318160ddd116101cb57806318160ddd146102bf5780631e0117bd146102e95780631fafa8bc1461031157806323b872dd1461033b57610203565b806306fdde0314610207578063095ea7b3146102315780631234f8681461026d57806314e829f61461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107dd565b6040516102289190612831565b60405180910390f35b34801561023c575f80fd5b50610257600480360381019061025291906128ef565b61081a565b6040516102649190612947565b60405180910390f35b348015610278575f80fd5b50610281610837565b60405161028e919061296f565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b89190612ac8565b61083d565b005b3480156102ca575f80fd5b506102d36108d0565b6040516102e0919061296f565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190612b0f565b6108f6565b005b34801561031c575f80fd5b50610325610955565b6040516103329190612b5a565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c9190612b73565b61097a565b60405161036e9190612947565b60405180910390f35b348015610382575f80fd5b5061038b610a4e565b6040516103989190612bde565b60405180910390f35b3480156103ac575f80fd5b506103b5610a56565b6040516103c2919061296f565b60405180910390f35b3480156103d6575f80fd5b506103df610a5c565b6040516103ec919061296f565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612b0f565b610a62565b005b348015610428575f80fd5b50610431610ac2565b60405161043e919061296f565b60405180910390f35b348015610452575f80fd5b5061045b610ac8565b005b348015610468575f80fd5b50610471610b5f565b60405161047e919061296f565b60405180910390f35b348015610492575f80fd5b506104ad60048036038101906104a89190612b0f565b610b65565b6040516104ba919061296f565b60405180910390f35b3480156104ce575f80fd5b506104d7610bab565b005b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612b0f565b610bbe565b60405161050c9190612947565b60405180910390f35b348015610520575f80fd5b50610529610bdb565b6040516105369190612c06565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612b0f565b610c02565b005b348015610572575f80fd5b5061058d60048036038101906105889190612c1f565b610c4d565b005b34801561059a575f80fd5b506105b560048036038101906105b09190612c1f565b610cbb565b005b3480156105c2575f80fd5b506105cb610ccd565b6040516105d8919061296f565b60405180910390f35b3480156105ec575f80fd5b506105f5610cd3565b6040516106029190612831565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612c1f565b610d10565b005b34801561063e575f80fd5b50610659600480360381019061065491906128ef565b610d22565b6040516106669190612947565b60405180910390f35b34801561067a575f80fd5b50610683610d3f565b6040516106909190612c06565b60405180910390f35b3480156106a4575f80fd5b506106bf60048036038101906106ba9190612ac8565b610d64565b005b3480156106cc575f80fd5b506106e760048036038101906106e29190612b0f565b610df6565b6040516106f49190612947565b60405180910390f35b348015610708575f80fd5b50610711610e13565b60405161071e919061296f565b60405180910390f35b348015610732575f80fd5b5061074d60048036038101906107489190612c4a565b610e19565b005b34801561075a575f80fd5b5061077560048036038101906107709190612c9a565b610e3b565b604051610782919061296f565b60405180910390f35b348015610796575f80fd5b5061079f610ebd565b6040516107ac919061296f565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d69190612b0f565b610ec3565b005b60606040518060400160405280600c81526020017f4769676120466163746f72790000000000000000000000000000000000000000815250905090565b5f61082d610826610f45565b8484610f4c565b6001905092915050565b60065481565b61084561110f565b5f5b81518110156108cc57600160045f84848151811061086857610867612cd8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610847565b5050565b5f6012600a6108df9190612e61565b66017e9d8602b4006108f19190612eab565b905090565b6108fe61110f565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61098684848461118d565b610a4384610992610f45565b610a3e85604051806060016040528060288152602001613a676028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f5610f45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b7c9092919063ffffffff16565b610f4c565b600190509392505050565b5f6012905090565b60095481565b60075481565b610a6a61110f565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600a5481565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b08610f45565b73ffffffffffffffffffffffffffffffffffffffff1614610b27575f80fd5b5f610b3130610b65565b90505f811115610b4557610b4481611bde565b5b5f4790505f811115610b5b57610b5a81611e52565b5b5050565b60085481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bb361110f565b610bbc5f611f1f565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c0a61110f565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c5561110f565b610c7060c8610c626108d0565b611fe090919063ffffffff16565b8111610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca890612f36565b60405180910390fd5b8060068190555050565b610cc361110f565b8060088190555050565b600c5481565b60606040518060400160405280600481526020017f4749474100000000000000000000000000000000000000000000000000000000815250905090565b610d1861110f565b8060078190555050565b5f610d35610d2e610f45565b848461118d565b6001905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d6c61110f565b5f5b8151811015610df2575f60045f848481518110610d8e57610d8d612cd8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d6e565b5050565b6004602052805f5260405f205f915054906101000a900460ff1681565b60055481565b610e2161110f565b82600a8190555081600b8190555080600c81905550505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610ecb61110f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090612fc4565b60405180910390fd5b610f4281611f1f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190613052565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906130e0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611102919061296f565b60405180910390a3505050565b611117610f45565b73ffffffffffffffffffffffffffffffffffffffff16611135610bdb565b73ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613148565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f2906131d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126090613264565b60405180910390fd5b5f81116112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906132f2565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611349575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f9061335a565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611427575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118cc5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146114d9576006548261148d85610b65565b6114979190613378565b11156114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf906133f5565b60405180910390fd5b5b5f60095411156115be5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561158d575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115bd576115ba60646115ac6009548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f60075411156116a25760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116715750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116a15761169e60646116906007548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f600854111561172c5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361172b57611728606461171a6008548561202990919063ffffffff16565b611fe090919063ffffffff16565b90505b5b5f61173630610b65565b9050601060149054906101000a900460ff161580156117a1575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117b95750601060159054906101000a900460ff165b80156117c6575060055481115b156118ca575f600c54600a54600b546117df9190613378565b6117e99190613378565b90505f600282600a54856117fd9190612eab565b6118079190613440565b6118119190613440565b90505f82600b54856118239190612eab565b61182d9190613440565b90505f83600c548661183f9190612eab565b6118499190613440565b90505f8183856118599190613378565b6118639190613378565b905061186e81611bde565b5f84111561188e575f611880856120a0565b905061188c85826122de565b505b5f8211156118ad575f6118a0836120a0565b90506118ab81612416565b505b5f4790505f8111156118c3576118c247611e52565b5b5050505050505b505b5f8111156119cb576119248160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126a090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c2919061296f565b60405180910390a35b611a1b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611abe611a7282846126fd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126a090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b6184866126fd90919063ffffffff16565b604051611b6e919061296f565b60405180910390a350505050565b5f838311158290611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba9190612831565b60405180910390fd5b505f8385611bd19190613470565b9050809150509392505050565b6001601060146101000a81548160ff0219169083151502179055505f810315611e35575f600267ffffffffffffffff811115611c1d57611c1c61298c565b5b604051908082528060200260200182016040528015611c4b5781602001602082028036833780820191505090505b50905030815f81518110611c6257611c61612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2a91906134b7565b81600181518110611d3e57611d3d612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611da430600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f4c565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e069594939291906135db565b5f604051808303815f87803b158015611e1d575f80fd5b505af1158015611e2f573d5f803e3d5ffd5b50505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e9890613660565b5f6040518083038185875af1925050503d805f8114611ed2576040519150601f19603f3d011682016040523d82523d5f602084013e611ed7565b606091505b5050905080611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f12906136be565b60405180910390fd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61202183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612746565b905092915050565b5f808303612039575f905061209a565b5f82846120469190612eab565b90508284826120559190613440565b14612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c9061374c565b60405180910390fd5b809150505b92915050565b5f80600267ffffffffffffffff8111156120bd576120bc61298c565b5b6040519080825280602002602001820160405280156120eb5781602001602082028036833780820191505090505b50905030815f8151811061210257612101612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ca91906134b7565b816001815181106121de576121dd612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b815260040161227592919061376a565b5f60405180830381865afa15801561228f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122b7919061386c565b9050806001815181106122cd576122cc612cd8565b5b602002602001015192505050919050565b6001601060146101000a81548160ff0219169083151502179055505f8203156123f85761232d30600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f4c565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123b396959493929190613905565b60606040518083038185885af11580156123cf573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906123f49190613964565b5050505b5f601060146101000a81548160ff0219169083151502179055505050565b6001601060146101000a81548160ff0219169083151502179055505f810315612683575f600267ffffffffffffffff8111156124555761245461298c565b5b6040519080825280602002602001820160405280156124835781602001602082028036833780820191505090505b509050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251491906134b7565b815f8151811061252757612526612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061259757612596612cd8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f84600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161265394939291906139b4565b5f604051808303818588803b15801561266a575f80fd5b505af115801561267c573d5f803e3d5ffd5b5050505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f8082846126ae9190613378565b9050838110156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea90613a48565b60405180910390fd5b8091505092915050565b5f61273e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b7c565b905092915050565b5f808311829061278c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127839190612831565b60405180910390fd5b505f838561279a9190613440565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127de5780820151818401526020810190506127c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612803826127a7565b61280d81856127b1565b935061281d8185602086016127c1565b612826816127e9565b840191505092915050565b5f6020820190508181035f83015261284981846127f9565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288b82612862565b9050919050565b61289b81612881565b81146128a5575f80fd5b50565b5f813590506128b681612892565b92915050565b5f819050919050565b6128ce816128bc565b81146128d8575f80fd5b50565b5f813590506128e9816128c5565b92915050565b5f80604083850312156129055761290461285a565b5b5f612912858286016128a8565b9250506020612923858286016128db565b9150509250929050565b5f8115159050919050565b6129418161292d565b82525050565b5f60208201905061295a5f830184612938565b92915050565b612969816128bc565b82525050565b5f6020820190506129825f830184612960565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129c2826127e9565b810181811067ffffffffffffffff821117156129e1576129e061298c565b5b80604052505050565b5f6129f3612851565b90506129ff82826129b9565b919050565b5f67ffffffffffffffff821115612a1e57612a1d61298c565b5b602082029050602081019050919050565b5f80fd5b5f612a45612a4084612a04565b6129ea565b90508083825260208201905060208402830185811115612a6857612a67612a2f565b5b835b81811015612a915780612a7d88826128a8565b845260208401935050602081019050612a6a565b5050509392505050565b5f82601f830112612aaf57612aae612988565b5b8135612abf848260208601612a33565b91505092915050565b5f60208284031215612add57612adc61285a565b5b5f82013567ffffffffffffffff811115612afa57612af961285e565b5b612b0684828501612a9b565b91505092915050565b5f60208284031215612b2457612b2361285a565b5b5f612b31848285016128a8565b91505092915050565b5f612b4482612862565b9050919050565b612b5481612b3a565b82525050565b5f602082019050612b6d5f830184612b4b565b92915050565b5f805f60608486031215612b8a57612b8961285a565b5b5f612b97868287016128a8565b9350506020612ba8868287016128a8565b9250506040612bb9868287016128db565b9150509250925092565b5f60ff82169050919050565b612bd881612bc3565b82525050565b5f602082019050612bf15f830184612bcf565b92915050565b612c0081612881565b82525050565b5f602082019050612c195f830184612bf7565b92915050565b5f60208284031215612c3457612c3361285a565b5b5f612c41848285016128db565b91505092915050565b5f805f60608486031215612c6157612c6061285a565b5b5f612c6e868287016128db565b9350506020612c7f868287016128db565b9250506040612c90868287016128db565b9150509250925092565b5f8060408385031215612cb057612caf61285a565b5b5f612cbd858286016128a8565b9250506020612cce858286016128a8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d8757808604811115612d6357612d62612d05565b5b6001851615612d725780820291505b8081029050612d8085612d32565b9450612d47565b94509492505050565b5f82612d9f5760019050612e5a565b81612dac575f9050612e5a565b8160018114612dc25760028114612dcc57612dfb565b6001915050612e5a565b60ff841115612dde57612ddd612d05565b5b8360020a915084821115612df557612df4612d05565b5b50612e5a565b5060208310610133831016604e8410600b8410161715612e305782820a905083811115612e2b57612e2a612d05565b5b612e5a565b612e3d8484846001612d3e565b92509050818404811115612e5457612e53612d05565b5b81810290505b9392505050565b5f612e6b826128bc565b9150612e7683612bc3565b9250612ea37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d90565b905092915050565b5f612eb5826128bc565b9150612ec0836128bc565b9250828202612ece816128bc565b91508282048414831517612ee557612ee4612d05565b5b5092915050565b7f4c696d697420746f6f206c6573730000000000000000000000000000000000005f82015250565b5f612f20600e836127b1565b9150612f2b82612eec565b602082019050919050565b5f6020820190508181035f830152612f4d81612f14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fae6026836127b1565b9150612fb982612f54565b604082019050919050565b5f6020820190508181035f830152612fdb81612fa2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61303c6024836127b1565b915061304782612fe2565b604082019050919050565b5f6020820190508181035f83015261306981613030565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130ca6022836127b1565b91506130d582613070565b604082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131326020836127b1565b915061313d826130fe565b602082019050919050565b5f6020820190508181035f83015261315f81613126565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131c06025836127b1565b91506131cb82613166565b604082019050919050565b5f6020820190508181035f8301526131ed816131b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61324e6023836127b1565b9150613259826131f4565b604082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132dc6029836127b1565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b7f53656e646572206f7220526563697069656e7420426c61636b6c6973746564005f82015250565b5f613344601f836127b1565b915061334f82613310565b602082019050919050565b5f6020820190508181035f83015261337181613338565b9050919050565b5f613382826128bc565b915061338d836128bc565b92508282019050808211156133a5576133a4612d05565b5b92915050565b7f457863656564732074686520616e74695768616c654c696d69742e00000000005f82015250565b5f6133df601b836127b1565b91506133ea826133ab565b602082019050919050565b5f6020820190508181035f83015261340c816133d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61344a826128bc565b9150613455836128bc565b92508261346557613464613413565b5b828204905092915050565b5f61347a826128bc565b9150613485836128bc565b925082820390508181111561349d5761349c612d05565b5b92915050565b5f815190506134b181612892565b92915050565b5f602082840312156134cc576134cb61285a565b5b5f6134d9848285016134a3565b91505092915050565b5f819050919050565b5f819050919050565b5f61350e613509613504846134e2565b6134eb565b6128bc565b9050919050565b61351e816134f4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355681612881565b82525050565b5f613567838361354d565b60208301905092915050565b5f602082019050919050565b5f61358982613524565b613593818561352e565b935061359e8361353e565b805f5b838110156135ce5781516135b5888261355c565b97506135c083613573565b9250506001810190506135a1565b5085935050505092915050565b5f60a0820190506135ee5f830188612960565b6135fb6020830187613515565b818103604083015261360d818661357f565b905061361c6060830185612bf7565b6136296080830184612960565b9695505050505050565b5f81905092915050565b50565b5f61364b5f83613633565b91506136568261363d565b5f82019050919050565b5f61366a82613640565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6136a8600b836127b1565b91506136b382613674565b602082019050919050565b5f6020820190508181035f8301526136d58161369c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137366021836127b1565b9150613741826136dc565b604082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b5f60408201905061377d5f830185612960565b818103602083015261378f818461357f565b90509392505050565b5f67ffffffffffffffff8211156137b2576137b161298c565b5b602082029050602081019050919050565b5f815190506137d1816128c5565b92915050565b5f6137e96137e484613798565b6129ea565b9050808382526020820190506020840283018581111561380c5761380b612a2f565b5b835b81811015613835578061382188826137c3565b84526020840193505060208101905061380e565b5050509392505050565b5f82601f83011261385357613852612988565b5b81516138638482602086016137d7565b91505092915050565b5f602082840312156138815761388061285a565b5b5f82015167ffffffffffffffff81111561389e5761389d61285e565b5b6138aa8482850161383f565b91505092915050565b5f6138cd6138c86138c384612862565b6134eb565b612862565b9050919050565b5f6138de826138b3565b9050919050565b5f6138ef826138d4565b9050919050565b6138ff816138e5565b82525050565b5f60c0820190506139185f830189612bf7565b6139256020830188612960565b6139326040830187613515565b61393f6060830186613515565b61394c60808301856138f6565b61395960a0830184612960565b979650505050505050565b5f805f6060848603121561397b5761397a61285a565b5b5f613988868287016137c3565b9350506020613999868287016137c3565b92505060406139aa868287016137c3565b9150509250925092565b5f6080820190506139c75f830187613515565b81810360208301526139d9818661357f565b90506139e860408301856138f6565b6139f56060830184612960565b95945050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a32601b836127b1565b9150613a3d826139fe565b602082019050919050565b5f6020820190508181035f830152613a5f81613a26565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ccc70f019cecd8c32113e58c0406ceeb7c680df7080277aaf9347b9750d8c28264736f6c63430008180033

Deployed Bytecode Sourcemap

4529:10501:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6687:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7520:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5158:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11593:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6964:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14909:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5611:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7689:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6873:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5322:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5231:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14792:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5377:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14045:356;;;;;;;;;;;;;:::i;:::-;;5275:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7067:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:103;;;;;;;;;;;;;:::i;:::-;;4742:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2579:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11979:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14409:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14694:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5491:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6778:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14598:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7194:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5575:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11783:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4800:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5088:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11281:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7369:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5431:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2931:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6687:83;6724:13;6757:5;;;;;;;;;;;;;;;;;6750:12;;6687:83;:::o;7520:161::-;7595:4;7612:39;7621:12;:10;:12::i;:::-;7635:7;7644:6;7612:8;:39::i;:::-;7669:4;7662:11;;7520:161;;;;:::o;5158:64::-;;;;:::o;11593:182::-;2536:13;:11;:13::i;:::-;11673:6:::1;11669:99;11689:8;:15;11685:1;:19;11669:99;;;11752:4;11725:11;:24;11737:8;11746:1;11737:11;;;;;;;;:::i;:::-;;;;;;;;11725:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;11706:3;;;;;;;11669:99;;;;11593:182:::0;:::o;6964:95::-;7017:7;4888:2;4950;:13;;;;:::i;:::-;4932:15;:31;;;;:::i;:::-;7037:14;;6964:95;:::o;14909:108::-;2536:13;:11;:13::i;:::-;15004:5:::1;14975:18;:26;14994:6;14975:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14909:108:::0;:::o;5611:95::-;;;;;;;;;;;;;:::o;7689:313::-;7787:4;7804:36;7814:6;7822:9;7833:6;7804:9;:36::i;:::-;7851:121;7860:6;7868:12;:10;:12::i;:::-;7882:89;7920:6;7882:89;;;;;;;;;;;;;;;;;:11;:19;7894:6;7882:19;;;;;;;;;;;;;;;:33;7902:12;:10;:12::i;:::-;7882:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7851:8;:121::i;:::-;7990:4;7983:11;;7689:313;;;;;:::o;6873:83::-;6914:5;4888:2;6932:16;;6873:83;:::o;5322:31::-;;;;:::o;5231:27::-;;;;:::o;14792:109::-;2536:13;:11;:13::i;:::-;14889:4:::1;14860:18;:26;14879:6;14860:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14792:109:::0;:::o;5377:31::-;;;;:::o;14045:356::-;14109:18;;;;;;;;;;;14095:32;;:12;:10;:12::i;:::-;:32;;;14087:41;;;;;;14139:20;14160:24;14178:4;14160:9;:24::i;:::-;14139:45;;14211:1;14198:12;:14;14195:73;;;14226:30;14243:12;14226:16;:30::i;:::-;14195:73;14278:18;14297:21;14278:40;;14343:1;14332:10;:12;14329:65;;;14358:24;14371:10;14358:12;:24::i;:::-;14329:65;14076:325;;14045:356::o;5275:28::-;;;;:::o;7067:119::-;7133:7;7160:9;:18;7170:7;7160:18;;;;;;;;;;;;;;;;7153:25;;7067:119;;;:::o;2818:103::-;2536:13;:11;:13::i;:::-;2883:30:::1;2910:1;2883:18;:30::i;:::-;2818:103::o:0;4742:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;2579:87::-;2625:7;2652:6;;;;;;;;;;;2645:13;;2579:87;:::o;11979:97::-;2536:13;:11;:13::i;:::-;12062:6:::1;12047:12;;:21;;;;;;;;;;;;;;;;;;11979:97:::0;:::o;14409:181::-;2536:13;:11;:13::i;:::-;14505:22:::1;14523:3;14505:13;:11;:13::i;:::-;:17;;:22;;;;:::i;:::-;14493:9;:34;14485:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14573:9;14556:14;:26;;;;14409:181:::0;:::o;14694:90::-;2536:13;:11;:13::i;:::-;14772:4:::1;14761:8;:15;;;;14694:90:::0;:::o;5491:34::-;;;;:::o;6778:87::-;6817:13;6850:7;;;;;;;;;;;;;;;;;6843:14;;6778:87;:::o;14598:88::-;2536:13;:11;:13::i;:::-;14674:4:::1;14664:7;:14;;;;14598:88:::0;:::o;7194:167::-;7272:4;7289:42;7299:12;:10;:12::i;:::-;7313:9;7324:6;7289:9;:42::i;:::-;7349:4;7342:11;;7194:167;;;;:::o;5575:27::-;;;;;;;;;;;;;:::o;11783:188::-;2536:13;:11;:13::i;:::-;11868:6:::1;11864:100;11884:8;:15;11880:1;:19;11864:100;;;11947:5;11920:11;:24;11932:8;11941:1;11932:11;;;;;;;;:::i;:::-;;;;;;;;11920:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11901:3;;;;;;;11864:100;;;;11783:188:::0;:::o;4800:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5088:63::-;;;;:::o;11281:304::-;2536:13;:11;:13::i;:::-;11415:8:::1;11400:12;:23;;;;11466:9;11450:13;:25;;;;11525:11;11507:15;:29;;;;11281:304:::0;;;:::o;7369:143::-;7450:7;7477:11;:18;7489:5;7477:18;;;;;;;;;;;;;;;:27;7496:7;7477:27;;;;;;;;;;;;;;;;7470:34;;7369:143;;;;:::o;5431:32::-;;;;:::o;2931:201::-;2536:13;:11;:13::i;:::-;3040:1:::1;3020:22;;:8;:22;;::::0;3012:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3096:28;3115:8;3096:18;:28::i;:::-;2931:201:::0;:::o;333:98::-;386:7;413:10;406:17;;333:98;:::o;8010:335::-;8120:1;8103:19;;:5;:19;;;8095:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:1;8182:21;;:7;:21;;;8174:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8283:6;8253:11;:18;8265:5;8253:18;;;;;;;;;;;;;;;:27;8272:7;8253:27;;;;;;;;;;;;;;;:36;;;;8321:7;8305:32;;8314:5;8305:32;;;8330:6;8305:32;;;;;;:::i;:::-;;;;;;;;8010:335;;;:::o;2676:132::-;2751:12;:10;:12::i;:::-;2740:23;;:7;:5;:7::i;:::-;:23;;;2732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2676:132::o;8353:2812::-;8457:1;8441:18;;:4;:18;;;8433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8534:1;8520:16;;:2;:16;;;8512:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8604:1;8595:6;:10;8587:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8671:11;:17;8683:4;8671:17;;;;;;;;;;;;;;;;;;;;;;;;;8670:18;:38;;;;;8693:11;:15;8705:2;8693:15;;;;;;;;;;;;;;;;;;;;;;;;;8692:16;8670:38;8662:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8754:17;8789:18;:24;8808:4;8789:24;;;;;;;;;;;;;;;;;;;;;;;;;8788:25;:52;;;;;8818:18;:22;8837:2;8818:22;;;;;;;;;;;;;;;;;;;;;;;;;8817:23;8788:52;8784:2025;;;8868:13;;;;;;;;;;;8862:19;;:2;:19;;;8859:137;;8934:14;;8924:6;8908:13;8918:2;8908:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8900:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8859:137;9030:1;9015:12;;:16;9012:180;;;9057:13;;;;;;;;;;;9051:19;;:2;:19;;;;:44;;;;;9082:13;;;;;;;;;;;9074:21;;:4;:21;;;;9051:44;9048:129;;;9128:33;9157:3;9128:24;9139:12;;9128:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;9116:45;;9048:129;9012:180;9221:1;9211:7;;:11;9208:182;;;9251:13;;;;;;;;;;;9243:21;;:4;:21;;;:55;;;;;9282:15;;;;;;;;;;;9268:30;;:2;:30;;;;9243:55;9239:136;;;9331:28;9355:3;9331:19;9342:7;;9331:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9319:40;;9239:136;9208:182;9420:1;9409:8;;:12;9406:146;;;9447:13;;;;;;;;;;;9441:19;;:2;:19;;;9438:99;;9492:29;9517:3;9492:20;9503:8;;9492:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9480:41;;9438:99;9406:146;9568:28;9599:24;9617:4;9599:9;:24::i;:::-;9568:55;;9643:6;;;;;;;;;;;9642:7;:30;;;;;9659:13;;;;;;;;;;;9653:19;;:2;:19;;;9642:30;:45;;;;;9676:11;;;;;;;;;;;9642:45;:87;;;;;9712:17;;9691:20;:38;9642:87;9638:1160;;;9750:13;9797:15;;9782:12;;9766:13;;:28;;;;:::i;:::-;:46;;;;:::i;:::-;9750:62;;9833:20;9902:1;9894:5;9879:12;;9856:20;:35;;;;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;9833:70;;9922:21;9985:5;9969:13;;9946:20;:36;;;;:::i;:::-;:44;;;;:::i;:::-;9922:68;;10009:23;10076:5;10058:15;;10035:20;:38;;;;:::i;:::-;:46;;;;:::i;:::-;10009:72;;10100:17;10151:15;10135:13;10120:12;:28;;;;:::i;:::-;:46;;;;:::i;:::-;10100:66;;10187:27;10204:9;10187:16;:27::i;:::-;10253:1;10238:12;:16;10235:167;;;10278:16;10297:26;10310:12;10297;:26::i;:::-;10278:45;;10346:36;10360:12;10373:8;10346:13;:36::i;:::-;10255:147;10235:167;10441:1;10423:15;:19;10420:169;;;10466:19;10488:29;10501:15;10488:12;:29::i;:::-;10466:51;;10540:29;10557:11;10540:16;:29::i;:::-;10443:146;10420:169;10609:26;10638:21;10609:50;;10702:1;10681:18;:22;10678:105;;;10728:35;10741:21;10728:12;:35::i;:::-;10678:105;9731:1067;;;;;;9638:1160;8842:1967;8784:2025;10834:1;10824:9;:11;10821:161;;;10874:39;10903:9;10874;:24;10892:4;10874:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10849:9;:24;10867:4;10849:24;;;;;;;;;;;;;;;:64;;;;10954:4;10931:39;;10940:4;10931:39;;;10960:9;10931:39;;;;;;:::i;:::-;;;;;;;;10821:161;11008:27;11028:6;11008:9;:15;11018:4;11008:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10992:9;:15;11002:4;10992:15;;;;;;;;;;;;;;;:43;;;;11060:40;11078:21;11089:9;11078:6;:10;;:21;;;;:::i;:::-;11060:9;:13;11070:2;11060:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11046:9;:13;11056:2;11046:13;;;;;;;;;;;;;;;:54;;;;11131:2;11116:41;;11125:4;11116:41;;;11135:21;11146:9;11135:6;:10;;:21;;;;:::i;:::-;11116:41;;;;;;:::i;:::-;;;;;;;;8422:2743;8353:2812;;;:::o;1470:190::-;1556:7;1589:1;1584;:6;;1592:12;1576:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1616:9;1632:1;1628;:5;;;;:::i;:::-;1616:17;;1651:1;1644:8;;;1470:190;;;;;:::o;12840:520::-;5915:4;5906:6;;:13;;;;;;;;;;;;;;;;;;12934:1:::1;12921:11;:14:::0;12918:27;12937:7:::1;12918:27;12955:21;12993:1;12979:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12955:40;;13024:4;13006;13011:1;13006:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13050:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13040:4;13045:1;13040:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13083:62;13100:4;13115:15;;;;;;;;;;;13133:11;13083:8;:62::i;:::-;13156:15;;;;;;;;;;;:66;;;13237:11;13263:1;13279:4;13306;13326:15;13156:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12907:453;5930:1;5951:5:::0;5942:6;;:14;;;;;;;;;;;;;;;;;;12840:520;:::o;13814:184::-;13871:16;13901:18;;;;;;;;;;;13893:32;;13933:6;13893:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:74;;;13963:11;13955:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;13860:138;13814:184;:::o;3142:191::-;3216:16;3235:6;;;;;;;;;;;3216:25;;3261:8;3252:6;;:17;;;;;;;;;;;;;;;;;;3316:8;3285:40;;3306:8;3285:40;;;;;;;;;;;;3205:128;3142:191;:::o;1922:132::-;1980:7;2007:39;2011:1;2014;2007:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2000:46;;1922:132;;;;:::o;1668:246::-;1726:7;1755:1;1750;:6;1746:47;;1780:1;1773:8;;;;1746:47;1803:9;1819:1;1815;:5;;;;:::i;:::-;1803:17;;1848:1;1843;1839;:5;;;;:::i;:::-;:10;1831:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1905:1;1898:8;;;1668:246;;;;;:::o;12084:320::-;12145:7;12164:21;12202:1;12188:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12164:40;;12233:4;12215;12220:1;12215:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12259:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12249:4;12254:1;12249:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;12292:25;12320:15;;;;;;;;;;;:29;;;12350:7;12358:4;12320:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12292:71;;12381:11;12393:1;12381:14;;;;;;;;:::i;:::-;;;;;;;;12374:22;;;;12084:320;;;:::o;12412:420::-;5915:4;5906:6;;:13;;;;;;;;;;;;;;;;;;12521:1:::1;12508:11;:14:::0;12505:27;12524:7:::1;12505:27;12542:62;12559:4;12574:15;;;;;;;;;;;12592:11;12542:8;:62::i;:::-;12615:15;;;;;;;;;;;:31;;;12654:9;12687:4;12707:11;12733:1;12749::::0;12765:18:::1;;;;;;;;;;;12798:15;12615:209;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5930:1;5951:5:::0;5942:6;;:14;;;;;;;;;;;;;;;;;;12412:420;;:::o;13368:438::-;5915:4;5906:6;;:13;;;;;;;;;;;;;;;;;;13457:1:::1;13446:9;:12:::0;13443:25;13460:7:::1;13443:25;13478:21;13516:1;13502:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13478:40;;13539:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13529:4;13534:1;13529:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13582:12;;;;;;;;;;;13572:4;13577:1;13572:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;::::0;::::1;13605:15;;;;;;;;;;;:66;;;13679:9;13704:1;13720:4;13739:18;;;;;;;;;;;13772:15;13605:193;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13432:374;5930:1;5951:5:::0;5942:6;;:14;;;;;;;;;;;;;;;;;;13368:438;:::o;1139:179::-;1197:7;1217:9;1233:1;1229;:5;;;;:::i;:::-;1217:17;;1258:1;1253;:6;;1245:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1309:1;1302:8;;;1139:179;;;;:::o;1326:136::-;1384:7;1411:43;1415:1;1418;1411:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1404:50;;1326:136;;;;:::o;2062:189::-;2148:7;2180:1;2176;:5;2183:12;2168:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2207:9;2223:1;2219;:5;;;;:::i;:::-;2207:17;;2242:1;2235:8;;;2062:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:180;3969:77;3966:1;3959:88;4066:4;4063:1;4056:15;4090:4;4087:1;4080:15;4107:281;4190:27;4212:4;4190:27;:::i;:::-;4182:6;4178:40;4320:6;4308:10;4305:22;4284:18;4272:10;4269:34;4266:62;4263:88;;;4331:18;;:::i;:::-;4263:88;4371:10;4367:2;4360:22;4150:238;4107:281;;:::o;4394:129::-;4428:6;4455:20;;:::i;:::-;4445:30;;4484:33;4512:4;4504:6;4484:33;:::i;:::-;4394:129;;;:::o;4529:311::-;4606:4;4696:18;4688:6;4685:30;4682:56;;;4718:18;;:::i;:::-;4682:56;4768:4;4760:6;4756:17;4748:25;;4828:4;4822;4818:15;4810:23;;4529:311;;;:::o;4846:117::-;4955:1;4952;4945:12;4986:710;5082:5;5107:81;5123:64;5180:6;5123:64;:::i;:::-;5107:81;:::i;:::-;5098:90;;5208:5;5237:6;5230:5;5223:21;5271:4;5264:5;5260:16;5253:23;;5324:4;5316:6;5312:17;5304:6;5300:30;5353:3;5345:6;5342:15;5339:122;;;5372:79;;:::i;:::-;5339:122;5487:6;5470:220;5504:6;5499:3;5496:15;5470:220;;;5579:3;5608:37;5641:3;5629:10;5608:37;:::i;:::-;5603:3;5596:50;5675:4;5670:3;5666:14;5659:21;;5546:144;5530:4;5525:3;5521:14;5514:21;;5470:220;;;5474:21;5088:608;;4986:710;;;;;:::o;5719:370::-;5790:5;5839:3;5832:4;5824:6;5820:17;5816:27;5806:122;;5847:79;;:::i;:::-;5806:122;5964:6;5951:20;5989:94;6079:3;6071:6;6064:4;6056:6;6052:17;5989:94;:::i;:::-;5980:103;;5796:293;5719:370;;;;:::o;6095:539::-;6179:6;6228:2;6216:9;6207:7;6203:23;6199:32;6196:119;;;6234:79;;:::i;:::-;6196:119;6382:1;6371:9;6367:17;6354:31;6412:18;6404:6;6401:30;6398:117;;;6434:79;;:::i;:::-;6398:117;6539:78;6609:7;6600:6;6589:9;6585:22;6539:78;:::i;:::-;6529:88;;6325:302;6095:539;;;;:::o;6640:329::-;6699:6;6748:2;6736:9;6727:7;6723:23;6719:32;6716:119;;;6754:79;;:::i;:::-;6716:119;6874:1;6899:53;6944:7;6935:6;6924:9;6920:22;6899:53;:::i;:::-;6889:63;;6845:117;6640:329;;;;:::o;6975:104::-;7020:7;7049:24;7067:5;7049:24;:::i;:::-;7038:35;;6975:104;;;:::o;7085:142::-;7188:32;7214:5;7188:32;:::i;:::-;7183:3;7176:45;7085:142;;:::o;7233:254::-;7342:4;7380:2;7369:9;7365:18;7357:26;;7393:87;7477:1;7466:9;7462:17;7453:6;7393:87;:::i;:::-;7233:254;;;;:::o;7493:619::-;7570:6;7578;7586;7635:2;7623:9;7614:7;7610:23;7606:32;7603:119;;;7641:79;;:::i;:::-;7603:119;7761:1;7786:53;7831:7;7822:6;7811:9;7807:22;7786:53;:::i;:::-;7776:63;;7732:117;7888:2;7914:53;7959:7;7950:6;7939:9;7935:22;7914:53;:::i;:::-;7904:63;;7859:118;8016:2;8042:53;8087:7;8078:6;8067:9;8063:22;8042:53;:::i;:::-;8032:63;;7987:118;7493:619;;;;;:::o;8118:86::-;8153:7;8193:4;8186:5;8182:16;8171:27;;8118:86;;;:::o;8210:112::-;8293:22;8309:5;8293:22;:::i;:::-;8288:3;8281:35;8210:112;;:::o;8328:214::-;8417:4;8455:2;8444:9;8440:18;8432:26;;8468:67;8532:1;8521:9;8517:17;8508:6;8468:67;:::i;:::-;8328:214;;;;:::o;8548:118::-;8635:24;8653:5;8635:24;:::i;:::-;8630:3;8623:37;8548:118;;:::o;8672:222::-;8765:4;8803:2;8792:9;8788:18;8780:26;;8816:71;8884:1;8873:9;8869:17;8860:6;8816:71;:::i;:::-;8672:222;;;;:::o;8900:329::-;8959:6;9008:2;8996:9;8987:7;8983:23;8979:32;8976:119;;;9014:79;;:::i;:::-;8976:119;9134:1;9159:53;9204:7;9195:6;9184:9;9180:22;9159:53;:::i;:::-;9149:63;;9105:117;8900:329;;;;:::o;9235:619::-;9312:6;9320;9328;9377:2;9365:9;9356:7;9352:23;9348:32;9345:119;;;9383:79;;:::i;:::-;9345:119;9503:1;9528:53;9573:7;9564:6;9553:9;9549:22;9528:53;:::i;:::-;9518:63;;9474:117;9630:2;9656:53;9701:7;9692:6;9681:9;9677:22;9656:53;:::i;:::-;9646:63;;9601:118;9758:2;9784:53;9829:7;9820:6;9809:9;9805:22;9784:53;:::i;:::-;9774:63;;9729:118;9235:619;;;;;:::o;9860:474::-;9928:6;9936;9985:2;9973:9;9964:7;9960:23;9956:32;9953:119;;;9991:79;;:::i;:::-;9953:119;10111:1;10136:53;10181:7;10172:6;10161:9;10157:22;10136:53;:::i;:::-;10126:63;;10082:117;10238:2;10264:53;10309:7;10300:6;10289:9;10285:22;10264:53;:::i;:::-;10254:63;;10209:118;9860:474;;;;;:::o;10340:180::-;10388:77;10385:1;10378:88;10485:4;10482:1;10475:15;10509:4;10506:1;10499:15;10526:180;10574:77;10571:1;10564:88;10671:4;10668:1;10661:15;10695:4;10692:1;10685:15;10712:102;10754:8;10801:5;10798:1;10794:13;10773:34;;10712:102;;;:::o;10820:848::-;10881:5;10888:4;10912:6;10903:15;;10936:5;10927:14;;10950:712;10971:1;10961:8;10958:15;10950:712;;;11066:4;11061:3;11057:14;11051:4;11048:24;11045:50;;;11075:18;;:::i;:::-;11045:50;11125:1;11115:8;11111:16;11108:451;;;11540:4;11533:5;11529:16;11520:25;;11108:451;11590:4;11584;11580:15;11572:23;;11620:32;11643:8;11620:32;:::i;:::-;11608:44;;10950:712;;;10820:848;;;;;;;:::o;11674:1073::-;11728:5;11919:8;11909:40;;11940:1;11931:10;;11942:5;;11909:40;11968:4;11958:36;;11985:1;11976:10;;11987:5;;11958:36;12054:4;12102:1;12097:27;;;;12138:1;12133:191;;;;12047:277;;12097:27;12115:1;12106:10;;12117:5;;;12133:191;12178:3;12168:8;12165:17;12162:43;;;12185:18;;:::i;:::-;12162:43;12234:8;12231:1;12227:16;12218:25;;12269:3;12262:5;12259:14;12256:40;;;12276:18;;:::i;:::-;12256:40;12309:5;;;12047:277;;12433:2;12423:8;12420:16;12414:3;12408:4;12405:13;12401:36;12383:2;12373:8;12370:16;12365:2;12359:4;12356:12;12352:35;12336:111;12333:246;;;12489:8;12483:4;12479:19;12470:28;;12524:3;12517:5;12514:14;12511:40;;;12531:18;;:::i;:::-;12511:40;12564:5;;12333:246;12604:42;12642:3;12632:8;12626:4;12623:1;12604:42;:::i;:::-;12589:57;;;;12678:4;12673:3;12669:14;12662:5;12659:25;12656:51;;;12687:18;;:::i;:::-;12656:51;12736:4;12729:5;12725:16;12716:25;;11674:1073;;;;;;:::o;12753:281::-;12811:5;12835:23;12853:4;12835:23;:::i;:::-;12827:31;;12879:25;12895:8;12879:25;:::i;:::-;12867:37;;12923:104;12960:66;12950:8;12944:4;12923:104;:::i;:::-;12914:113;;12753:281;;;;:::o;13040:410::-;13080:7;13103:20;13121:1;13103:20;:::i;:::-;13098:25;;13137:20;13155:1;13137:20;:::i;:::-;13132:25;;13192:1;13189;13185:9;13214:30;13232:11;13214:30;:::i;:::-;13203:41;;13393:1;13384:7;13380:15;13377:1;13374:22;13354:1;13347:9;13327:83;13304:139;;13423:18;;:::i;:::-;13304:139;13088:362;13040:410;;;;:::o;13456:164::-;13596:16;13592:1;13584:6;13580:14;13573:40;13456:164;:::o;13626:366::-;13768:3;13789:67;13853:2;13848:3;13789:67;:::i;:::-;13782:74;;13865:93;13954:3;13865:93;:::i;:::-;13983:2;13978:3;13974:12;13967:19;;13626:366;;;:::o;13998:419::-;14164:4;14202:2;14191:9;14187:18;14179:26;;14251:9;14245:4;14241:20;14237:1;14226:9;14222:17;14215:47;14279:131;14405:4;14279:131;:::i;:::-;14271:139;;13998:419;;;:::o;14423:225::-;14563:34;14559:1;14551:6;14547:14;14540:58;14632:8;14627:2;14619:6;14615:15;14608:33;14423:225;:::o;14654:366::-;14796:3;14817:67;14881:2;14876:3;14817:67;:::i;:::-;14810:74;;14893:93;14982:3;14893:93;:::i;:::-;15011:2;15006:3;15002:12;14995:19;;14654:366;;;:::o;15026:419::-;15192:4;15230:2;15219:9;15215:18;15207:26;;15279:9;15273:4;15269:20;15265:1;15254:9;15250:17;15243:47;15307:131;15433:4;15307:131;:::i;:::-;15299:139;;15026:419;;;:::o;15451:223::-;15591:34;15587:1;15579:6;15575:14;15568:58;15660:6;15655:2;15647:6;15643:15;15636:31;15451:223;:::o;15680:366::-;15822:3;15843:67;15907:2;15902:3;15843:67;:::i;:::-;15836:74;;15919:93;16008:3;15919:93;:::i;:::-;16037:2;16032:3;16028:12;16021:19;;15680:366;;;:::o;16052:419::-;16218:4;16256:2;16245:9;16241:18;16233:26;;16305:9;16299:4;16295:20;16291:1;16280:9;16276:17;16269:47;16333:131;16459:4;16333:131;:::i;:::-;16325:139;;16052:419;;;:::o;16477:221::-;16617:34;16613:1;16605:6;16601:14;16594:58;16686:4;16681:2;16673:6;16669:15;16662:29;16477:221;:::o;16704:366::-;16846:3;16867:67;16931:2;16926:3;16867:67;:::i;:::-;16860:74;;16943:93;17032:3;16943:93;:::i;:::-;17061:2;17056:3;17052:12;17045:19;;16704:366;;;:::o;17076:419::-;17242:4;17280:2;17269:9;17265:18;17257:26;;17329:9;17323:4;17319:20;17315:1;17304:9;17300:17;17293:47;17357:131;17483:4;17357:131;:::i;:::-;17349:139;;17076:419;;;:::o;17501:182::-;17641:34;17637:1;17629:6;17625:14;17618:58;17501:182;:::o;17689:366::-;17831:3;17852:67;17916:2;17911:3;17852:67;:::i;:::-;17845:74;;17928:93;18017:3;17928:93;:::i;:::-;18046:2;18041:3;18037:12;18030:19;;17689:366;;;:::o;18061:419::-;18227:4;18265:2;18254:9;18250:18;18242:26;;18314:9;18308:4;18304:20;18300:1;18289:9;18285:17;18278:47;18342:131;18468:4;18342:131;:::i;:::-;18334:139;;18061:419;;;:::o;18486:224::-;18626:34;18622:1;18614:6;18610:14;18603:58;18695:7;18690:2;18682:6;18678:15;18671:32;18486:224;:::o;18716:366::-;18858:3;18879:67;18943:2;18938:3;18879:67;:::i;:::-;18872:74;;18955:93;19044:3;18955:93;:::i;:::-;19073:2;19068:3;19064:12;19057:19;;18716:366;;;:::o;19088:419::-;19254:4;19292:2;19281:9;19277:18;19269:26;;19341:9;19335:4;19331:20;19327:1;19316:9;19312:17;19305:47;19369:131;19495:4;19369:131;:::i;:::-;19361:139;;19088:419;;;:::o;19513:222::-;19653:34;19649:1;19641:6;19637:14;19630:58;19722:5;19717:2;19709:6;19705:15;19698:30;19513:222;:::o;19741:366::-;19883:3;19904:67;19968:2;19963:3;19904:67;:::i;:::-;19897:74;;19980:93;20069:3;19980:93;:::i;:::-;20098:2;20093:3;20089:12;20082:19;;19741:366;;;:::o;20113:419::-;20279:4;20317:2;20306:9;20302:18;20294:26;;20366:9;20360:4;20356:20;20352:1;20341:9;20337:17;20330:47;20394:131;20520:4;20394:131;:::i;:::-;20386:139;;20113:419;;;:::o;20538:228::-;20678:34;20674:1;20666:6;20662:14;20655:58;20747:11;20742:2;20734:6;20730:15;20723:36;20538:228;:::o;20772:366::-;20914:3;20935:67;20999:2;20994:3;20935:67;:::i;:::-;20928:74;;21011:93;21100:3;21011:93;:::i;:::-;21129:2;21124:3;21120:12;21113:19;;20772:366;;;:::o;21144:419::-;21310:4;21348:2;21337:9;21333:18;21325:26;;21397:9;21391:4;21387:20;21383:1;21372:9;21368:17;21361:47;21425:131;21551:4;21425:131;:::i;:::-;21417:139;;21144:419;;;:::o;21569:181::-;21709:33;21705:1;21697:6;21693:14;21686:57;21569:181;:::o;21756:366::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:419::-;22294:4;22332:2;22321:9;22317:18;22309:26;;22381:9;22375:4;22371:20;22367:1;22356:9;22352:17;22345:47;22409:131;22535:4;22409:131;:::i;:::-;22401:139;;22128:419;;;:::o;22553:191::-;22593:3;22612:20;22630:1;22612:20;:::i;:::-;22607:25;;22646:20;22664:1;22646:20;:::i;:::-;22641:25;;22689:1;22686;22682:9;22675:16;;22710:3;22707:1;22704:10;22701:36;;;22717:18;;:::i;:::-;22701:36;22553:191;;;;:::o;22750:177::-;22890:29;22886:1;22878:6;22874:14;22867:53;22750:177;:::o;22933:366::-;23075:3;23096:67;23160:2;23155:3;23096:67;:::i;:::-;23089:74;;23172:93;23261:3;23172:93;:::i;:::-;23290:2;23285:3;23281:12;23274:19;;22933:366;;;:::o;23305:419::-;23471:4;23509:2;23498:9;23494:18;23486:26;;23558:9;23552:4;23548:20;23544:1;23533:9;23529:17;23522:47;23586:131;23712:4;23586:131;:::i;:::-;23578:139;;23305:419;;;:::o;23730:180::-;23778:77;23775:1;23768:88;23875:4;23872:1;23865:15;23899:4;23896:1;23889:15;23916:185;23956:1;23973:20;23991:1;23973:20;:::i;:::-;23968:25;;24007:20;24025:1;24007:20;:::i;:::-;24002:25;;24046:1;24036:35;;24051:18;;:::i;:::-;24036:35;24093:1;24090;24086:9;24081:14;;23916:185;;;;:::o;24107:194::-;24147:4;24167:20;24185:1;24167:20;:::i;:::-;24162:25;;24201:20;24219:1;24201:20;:::i;:::-;24196:25;;24245:1;24242;24238:9;24230:17;;24269:1;24263:4;24260:11;24257:37;;;24274:18;;:::i;:::-;24257:37;24107:194;;;;:::o;24307:143::-;24364:5;24395:6;24389:13;24380:22;;24411:33;24438:5;24411:33;:::i;:::-;24307:143;;;;:::o;24456:351::-;24526:6;24575:2;24563:9;24554:7;24550:23;24546:32;24543:119;;;24581:79;;:::i;:::-;24543:119;24701:1;24726:64;24782:7;24773:6;24762:9;24758:22;24726:64;:::i;:::-;24716:74;;24672:128;24456:351;;;;:::o;24813:85::-;24858:7;24887:5;24876:16;;24813:85;;;:::o;24904:60::-;24932:3;24953:5;24946:12;;24904:60;;;:::o;24970:158::-;25028:9;25061:61;25079:42;25088:32;25114:5;25088:32;:::i;:::-;25079:42;:::i;:::-;25061:61;:::i;:::-;25048:74;;24970:158;;;:::o;25134:147::-;25229:45;25268:5;25229:45;:::i;:::-;25224:3;25217:58;25134:147;;:::o;25287:114::-;25354:6;25388:5;25382:12;25372:22;;25287:114;;;:::o;25407:184::-;25506:11;25540:6;25535:3;25528:19;25580:4;25575:3;25571:14;25556:29;;25407:184;;;;:::o;25597:132::-;25664:4;25687:3;25679:11;;25717:4;25712:3;25708:14;25700:22;;25597:132;;;:::o;25735:108::-;25812:24;25830:5;25812:24;:::i;:::-;25807:3;25800:37;25735:108;;:::o;25849:179::-;25918:10;25939:46;25981:3;25973:6;25939:46;:::i;:::-;26017:4;26012:3;26008:14;25994:28;;25849:179;;;;:::o;26034:113::-;26104:4;26136;26131:3;26127:14;26119:22;;26034:113;;;:::o;26183:732::-;26302:3;26331:54;26379:5;26331:54;:::i;:::-;26401:86;26480:6;26475:3;26401:86;:::i;:::-;26394:93;;26511:56;26561:5;26511:56;:::i;:::-;26590:7;26621:1;26606:284;26631:6;26628:1;26625:13;26606:284;;;26707:6;26701:13;26734:63;26793:3;26778:13;26734:63;:::i;:::-;26727:70;;26820:60;26873:6;26820:60;:::i;:::-;26810:70;;26666:224;26653:1;26650;26646:9;26641:14;;26606:284;;;26610:14;26906:3;26899:10;;26307:608;;;26183:732;;;;:::o;26921:831::-;27184:4;27222:3;27211:9;27207:19;27199:27;;27236:71;27304:1;27293:9;27289:17;27280:6;27236:71;:::i;:::-;27317:80;27393:2;27382:9;27378:18;27369:6;27317:80;:::i;:::-;27444:9;27438:4;27434:20;27429:2;27418:9;27414:18;27407:48;27472:108;27575:4;27566:6;27472:108;:::i;:::-;27464:116;;27590:72;27658:2;27647:9;27643:18;27634:6;27590:72;:::i;:::-;27672:73;27740:3;27729:9;27725:19;27716:6;27672:73;:::i;:::-;26921:831;;;;;;;;:::o;27758:147::-;27859:11;27896:3;27881:18;;27758:147;;;;:::o;27911:114::-;;:::o;28031:398::-;28190:3;28211:83;28292:1;28287:3;28211:83;:::i;:::-;28204:90;;28303:93;28392:3;28303:93;:::i;:::-;28421:1;28416:3;28412:11;28405:18;;28031:398;;;:::o;28435:379::-;28619:3;28641:147;28784:3;28641:147;:::i;:::-;28634:154;;28805:3;28798:10;;28435:379;;;:::o;28820:161::-;28960:13;28956:1;28948:6;28944:14;28937:37;28820:161;:::o;28987:366::-;29129:3;29150:67;29214:2;29209:3;29150:67;:::i;:::-;29143:74;;29226:93;29315:3;29226:93;:::i;:::-;29344:2;29339:3;29335:12;29328:19;;28987:366;;;:::o;29359:419::-;29525:4;29563:2;29552:9;29548:18;29540:26;;29612:9;29606:4;29602:20;29598:1;29587:9;29583:17;29576:47;29640:131;29766:4;29640:131;:::i;:::-;29632:139;;29359:419;;;:::o;29784:220::-;29924:34;29920:1;29912:6;29908:14;29901:58;29993:3;29988:2;29980:6;29976:15;29969:28;29784:220;:::o;30010:366::-;30152:3;30173:67;30237:2;30232:3;30173:67;:::i;:::-;30166:74;;30249:93;30338:3;30249:93;:::i;:::-;30367:2;30362:3;30358:12;30351:19;;30010:366;;;:::o;30382:419::-;30548:4;30586:2;30575:9;30571:18;30563:26;;30635:9;30629:4;30625:20;30621:1;30610:9;30606:17;30599:47;30663:131;30789:4;30663:131;:::i;:::-;30655:139;;30382:419;;;:::o;30807:483::-;30978:4;31016:2;31005:9;31001:18;30993:26;;31029:71;31097:1;31086:9;31082:17;31073:6;31029:71;:::i;:::-;31147:9;31141:4;31137:20;31132:2;31121:9;31117:18;31110:48;31175:108;31278:4;31269:6;31175:108;:::i;:::-;31167:116;;30807:483;;;;;:::o;31296:311::-;31373:4;31463:18;31455:6;31452:30;31449:56;;;31485:18;;:::i;:::-;31449:56;31535:4;31527:6;31523:17;31515:25;;31595:4;31589;31585:15;31577:23;;31296:311;;;:::o;31613:143::-;31670:5;31701:6;31695:13;31686:22;;31717:33;31744:5;31717:33;:::i;:::-;31613:143;;;;:::o;31779:732::-;31886:5;31911:81;31927:64;31984:6;31927:64;:::i;:::-;31911:81;:::i;:::-;31902:90;;32012:5;32041:6;32034:5;32027:21;32075:4;32068:5;32064:16;32057:23;;32128:4;32120:6;32116:17;32108:6;32104:30;32157:3;32149:6;32146:15;32143:122;;;32176:79;;:::i;:::-;32143:122;32291:6;32274:231;32308:6;32303:3;32300:15;32274:231;;;32383:3;32412:48;32456:3;32444:10;32412:48;:::i;:::-;32407:3;32400:61;32490:4;32485:3;32481:14;32474:21;;32350:155;32334:4;32329:3;32325:14;32318:21;;32274:231;;;32278:21;31892:619;;31779:732;;;;;:::o;32534:385::-;32616:5;32665:3;32658:4;32650:6;32646:17;32642:27;32632:122;;32673:79;;:::i;:::-;32632:122;32783:6;32777:13;32808:105;32909:3;32901:6;32894:4;32886:6;32882:17;32808:105;:::i;:::-;32799:114;;32622:297;32534:385;;;;:::o;32925:554::-;33020:6;33069:2;33057:9;33048:7;33044:23;33040:32;33037:119;;;33075:79;;:::i;:::-;33037:119;33216:1;33205:9;33201:17;33195:24;33246:18;33238:6;33235:30;33232:117;;;33268:79;;:::i;:::-;33232:117;33373:89;33454:7;33445:6;33434:9;33430:22;33373:89;:::i;:::-;33363:99;;33166:306;32925:554;;;;:::o;33485:142::-;33535:9;33568:53;33586:34;33595:24;33613:5;33595:24;:::i;:::-;33586:34;:::i;:::-;33568:53;:::i;:::-;33555:66;;33485:142;;;:::o;33633:126::-;33683:9;33716:37;33747:5;33716:37;:::i;:::-;33703:50;;33633:126;;;:::o;33765:134::-;33823:9;33856:37;33887:5;33856:37;:::i;:::-;33843:50;;33765:134;;;:::o;33905:147::-;34000:45;34039:5;34000:45;:::i;:::-;33995:3;33988:58;33905:147;;:::o;34058:823::-;34315:4;34353:3;34342:9;34338:19;34330:27;;34367:71;34435:1;34424:9;34420:17;34411:6;34367:71;:::i;:::-;34448:72;34516:2;34505:9;34501:18;34492:6;34448:72;:::i;:::-;34530:80;34606:2;34595:9;34591:18;34582:6;34530:80;:::i;:::-;34620;34696:2;34685:9;34681:18;34672:6;34620:80;:::i;:::-;34710:81;34786:3;34775:9;34771:19;34762:6;34710:81;:::i;:::-;34801:73;34869:3;34858:9;34854:19;34845:6;34801:73;:::i;:::-;34058:823;;;;;;;;;:::o;34887:663::-;34975:6;34983;34991;35040:2;35028:9;35019:7;35015:23;35011:32;35008:119;;;35046:79;;:::i;:::-;35008:119;35166:1;35191:64;35247:7;35238:6;35227:9;35223:22;35191:64;:::i;:::-;35181:74;;35137:128;35304:2;35330:64;35386:7;35377:6;35366:9;35362:22;35330:64;:::i;:::-;35320:74;;35275:129;35443:2;35469:64;35525:7;35516:6;35505:9;35501:22;35469:64;:::i;:::-;35459:74;;35414:129;34887:663;;;;;:::o;35556:736::-;35799:4;35837:3;35826:9;35822:19;35814:27;;35851:79;35927:1;35916:9;35912:17;35903:6;35851:79;:::i;:::-;35977:9;35971:4;35967:20;35962:2;35951:9;35947:18;35940:48;36005:108;36108:4;36099:6;36005:108;:::i;:::-;35997:116;;36123:80;36199:2;36188:9;36184:18;36175:6;36123:80;:::i;:::-;36213:72;36281:2;36270:9;36266:18;36257:6;36213:72;:::i;:::-;35556:736;;;;;;;:::o;36298:177::-;36438:29;36434:1;36426:6;36422:14;36415:53;36298:177;:::o;36481:366::-;36623:3;36644:67;36708:2;36703:3;36644:67;:::i;:::-;36637:74;;36720:93;36809:3;36720:93;:::i;:::-;36838:2;36833:3;36829:12;36822:19;;36481:366;;;:::o;36853:419::-;37019:4;37057:2;37046:9;37042:18;37034:26;;37106:9;37100:4;37096:20;37092:1;37081:9;37077:17;37070:47;37134:131;37260:4;37134:131;:::i;:::-;37126:139;;36853:419;;;:::o

Swarm Source

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