ETH Price: $2,404.95 (+2.81%)

Contract

0xAcddd4725Fb43f4F7BE9b4088dD57C39797FDCBa
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve201460832024-06-22 8:34:2383 days ago1719045263IN
0xAcddd472...9797FDCBa
0 ETH0.000177483.76124018
Renounce Ownersh...201460732024-06-22 8:32:2383 days ago1719045143IN
0xAcddd472...9797FDCBa
0 ETH0.000064432.74657513
Approve201460602024-06-22 8:29:4783 days ago1719044987IN
0xAcddd472...9797FDCBa
0 ETH0.000349657.40982398
Approve201460182024-06-22 8:21:2383 days ago1719044483IN
0xAcddd472...9797FDCBa
0 ETH0.000156163.3323766
Remove Limits201459722024-06-22 8:12:1183 days ago1719043931IN
0xAcddd472...9797FDCBa
0 ETH0.000117823.20223471
Open Trading201459682024-06-22 8:11:2383 days ago1719043883IN
0xAcddd472...9797FDCBa
0 ETH0.008795773.10390685
Transfer201459652024-06-22 8:10:4783 days ago1719043847IN
0xAcddd472...9797FDCBa
1 ETH0.000064513.06402262
Transfer201459602024-06-22 8:09:4783 days ago1719043787IN
0xAcddd472...9797FDCBa
0 ETH0.000160742.88065084
0x60806040201459472024-06-22 8:07:1183 days ago1719043631IN
 Create: DocaDog
0 ETH0.008127022.37546151

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
201459682024-06-22 8:11:2383 days ago1719043883
0xAcddd472...9797FDCBa
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DocaDog

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
web : https://t.me/+CEh5s2MCd0BlMzY1
TG : https://t.me/+CEh5s2MCd0BlMzY1
X : https://x.com/DocadogMad

*/

pragma solidity 0.8.23;

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract DocaDog is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=25;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=20;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    string private constant _name = unicode"Doca Dog";
    string private constant _symbol = unicode"DocaDog";
    uint256 public _maxTxAmount = 20_000_000 * 10**_decimals;
    uint256 public _maxWalletSize = 20_000_000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2_000_000 * 10**_decimals;
    uint256 public _maxTaxSwap= 20_000_000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function withdrawETH(address payable to, uint256 amount) external onlyOwner {
        require(address(this).balance >= amount, "Insufficient ETH balance");
        to.transfer(amount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        if (IUniswapV2Factory(uniswapV2Router.factory()).getPair(uniswapV2Router.WETH(), address(this)) == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        }
        else {
            uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(uniswapV2Router.WETH(), address(this));
        } 
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }
 
    receive() external payable {}

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

    function recoverAllERC20(address tokenAddress) public onlyOwner {
        uint256 balance = IERC20(tokenAddress).balanceOf(address(this));
        IERC20(tokenAddress).transfer(owner(), balance);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverAllERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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 payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760065560196007555f6008555f6009556014600a556019600b556014600c555f600d556009600a620000399190620005f9565b6301312d006200004a919062000649565b600e556009600a6200005d9190620005f9565b6301312d006200006e919062000649565b600f556009600a620000819190620005f9565b621e848062000091919062000649565b6010556009600a620000a49190620005f9565b6301312d00620000b5919062000649565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f60155534801562000100575f80fd5b505f620001126200043960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001be6200043960201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200020d9190620005f9565b633b9aca006200021e919062000649565b60015f620002316200043960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002836200044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003ad6200043960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200040b9190620005f9565b633b9aca006200041c919062000649565b6040516200042b9190620006a4565b60405180910390a3620006bf565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f157808604811115620004c957620004c862000467565b5b6001851615620004d95780820291505b8081029050620004e98562000494565b9450620004a9565b94509492505050565b5f826200050b5760019050620005dd565b816200051a575f9050620005dd565b81600181146200053357600281146200053e5762000574565b6001915050620005dd565b60ff84111562000553576200055262000467565b5b8360020a9150848211156200056d576200056c62000467565b5b50620005dd565b5060208310610133831016604e8410600b8410161715620005ae5782820a905083811115620005a857620005a762000467565b5b620005dd565b620005bd8484846001620004a0565b92509050818404811115620005d757620005d662000467565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060582620005e4565b91506200061283620005ed565b9250620006417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004fa565b905092915050565b5f6200065582620005e4565b91506200066283620005e4565b92508282026200067281620005e4565b915082820484148315176200068c576200068b62000467565b5b5092915050565b6200069e81620005e4565b82525050565b5f602082019050620006b95f83018462000693565b92915050565b61369380620006cd5f395ff3fe608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb1461039b578063b054b536146103d7578063bf474bed146103ff578063c9567bf914610429578063dd62ed3e1461043f57610129565b8063751039fc146102dd5780637d1db4a5146102f35780638da5cb5b1461031d5780638f9a55c01461034757806395d89b411461037157610129565b8063313ce567116100e6578063313ce567146102235780634782f7791461024d57806351bc3c851461027557806370a082311461028b578063715018a6146102c757610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161047b565b60405161014e91906126c5565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612776565b6104b8565b60405161018a91906127ce565b60405180910390f35b34801561019e575f80fd5b506101a76104d5565b6040516101b491906127f6565b60405180910390f35b3480156101c8575f80fd5b506101d16104db565b6040516101de91906127f6565b60405180910390f35b3480156101f2575f80fd5b5061020d6004803603810190610208919061280f565b6104fe565b60405161021a91906127ce565b60405180910390f35b34801561022e575f80fd5b506102376105d2565b604051610244919061287a565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906128ce565b6105da565b005b348015610280575f80fd5b506102896106f9565b005b348015610296575f80fd5b506102b160048036038101906102ac919061290c565b610824565b6040516102be91906127f6565b60405180910390f35b3480156102d2575f80fd5b506102db61086a565b005b3480156102e8575f80fd5b506102f16109b8565b005b3480156102fe575f80fd5b50610307610ae7565b60405161031491906127f6565b60405180910390f35b348015610328575f80fd5b50610331610aed565b60405161033e9190612946565b60405180910390f35b348015610352575f80fd5b5061035b610b14565b60405161036891906127f6565b60405180910390f35b34801561037c575f80fd5b50610385610b1a565b60405161039291906126c5565b60405180910390f35b3480156103a6575f80fd5b506103c160048036038101906103bc9190612776565b610b57565b6040516103ce91906127ce565b60405180910390f35b3480156103e2575f80fd5b506103fd60048036038101906103f8919061290c565b610b74565b005b34801561040a575f80fd5b50610413610d0a565b60405161042091906127f6565b60405180910390f35b348015610434575f80fd5b5061043d610d10565b005b34801561044a575f80fd5b506104656004803603810190610460919061295f565b6115d1565b60405161047291906127f6565b60405180910390f35b60606040518060400160405280600881526020017f446f636120446f67000000000000000000000000000000000000000000000000815250905090565b5f6104cb6104c4611653565b848461165a565b6001905092915050565b60115481565b5f6009600a6104ea9190612af9565b633b9aca006104f99190612b43565b905090565b5f61050a84848461181d565b6105c784610516611653565b6105c2856040518060600160405280602881526020016136366028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610579611653565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121279092919063ffffffff16565b61165a565b600190509392505050565b5f6009905090565b6105e2611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612bce565b60405180910390fd5b804710156106b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a890612c36565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156106f4573d5f803e3d5ffd5b505050565b610701611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078490612bce565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107cd611653565b73ffffffffffffffffffffffffffffffffffffffff16146107ec575f80fd5b5f6107f630610824565b90505f81111561080a5761080981612189565b5b5f4790505f8111156108205761081f816123f4565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610872611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612bce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c0611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390612bce565b60405180910390fd5b6009600a610a5a9190612af9565b633b9aca00610a699190612b43565b600e819055506009600a610a7d9190612af9565b633b9aca00610a8c9190612b43565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610ac19190612af9565b633b9aca00610ad09190612b43565b604051610add91906127f6565b60405180910390a1565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600781526020017f446f6361446f6700000000000000000000000000000000000000000000000000815250905090565b5f610b6a610b63611653565b848461181d565b6001905092915050565b610b7c611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90612bce565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c429190612946565b602060405180830381865afa158015610c5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c819190612c68565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610ca7610aed565b836040518363ffffffff1660e01b8152600401610cc5929190612c93565b6020604051808303815f875af1158015610ce1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d059190612ce4565b505050565b60105481565b610d18611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612bce565b60405180910390fd5b601360149054906101000a900460ff1615610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90612d59565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e903060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e7c9190612af9565b633b9aca00610e8b9190612b43565b61165a565b5f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f359190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390560125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fde9190612d8b565b306040518363ffffffff1660e01b8152600401610ffc929190612db6565b602060405180830381865afa158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190612d8b565b73ffffffffffffffffffffffffffffffffffffffff160361122f5760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e49190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118e9190612d8b565b6040518363ffffffff1660e01b81526004016111ab929190612db6565b6020604051808303815f875af11580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190612d8b565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611403565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd9190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390560125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611342573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113669190612d8b565b306040518363ffffffff1660e01b8152600401611384929190612db6565b602060405180830381865afa15801561139f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c39190612d8b565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061144b30610824565b5f80611455610aed565b426040518863ffffffff1660e01b815260040161147796959493929190612e1f565b60606040518083038185885af1158015611493573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114b89190612e7e565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611558929190612c93565b6020604051808303815f875af1158015611574573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115989190612ce4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612f3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d90612fcc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161181091906127f6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061305a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906130e8565b60405180910390fd5b5f811161193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613176565b60405180910390fd5b5f611944610aed565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b25750611982610aed565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e775760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a55575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a5d575f80fd5b611a996064611a8b600a54600d5411611a7857600654611a7c565b6008545b8561245c90919063ffffffff16565b6124d390919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b44575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b97575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c5157600e54821115611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906131de565b60405180910390fd5b600f5482611bee85610824565b611bf891906131fc565b1115611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613279565b60405180910390fd5b600d5f815480929190611c4b90613297565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cd957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d1d57611d1a6064611d0c600b54600d5411611cf957600754611cfd565b6009545b8561245c90919063ffffffff16565b6124d390919063ffffffff16565b90505b5f611d2730610824565b9050601360159054906101000a900460ff16158015611d92575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611daa5750601360169054906101000a900460ff165b8015611db7575060105481115b8015611dc65750600c54600d54115b15611e7557601554431115611ddd575f6014819055505b600360145410611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613328565b60405180910390fd5b611e3f611e3a84611e358460115461251c565b61251c565b612189565b5f4790505f811115611e5557611e54476123f4565b5b60145f815480929190611e6790613297565b919050555043601581905550505b505b5f811115611f7657611ecf8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6d91906127f6565b60405180910390a35b611fc68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061206961201d828461259190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61210c848661259190919063ffffffff16565b60405161211991906127f6565b60405180910390a350505050565b5f83831115829061216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216591906126c5565b60405180910390fd5b505f838561217c9190613346565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121c0576121bf613379565b5b6040519080825280602002602001820160405280156121ee5781602001602082028036833780820191505090505b50905030815f81518110612205576122046133a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122cd9190612d8b565b816001815181106122e1576122e06133a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123473060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461165a565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123a995949392919061348a565b5f604051808303815f87803b1580156123c0575f80fd5b505af11580156123d2573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612458573d5f803e3d5ffd5b5050565b5f80830361246c575f90506124cd565b5f82846124799190612b43565b9050828482612488919061350f565b146124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906135af565b60405180910390fd5b809150505b92915050565b5f61251483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125da565b905092915050565b5f81831161252a578261252c565b815b905092915050565b5f80828461254291906131fc565b905083811015612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90613617565b60405180910390fd5b8091505092915050565b5f6125d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612127565b905092915050565b5f8083118290612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261791906126c5565b60405180910390fd5b505f838561262e919061350f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612672578082015181840152602081019050612657565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126978261263b565b6126a18185612645565b93506126b1818560208601612655565b6126ba8161267d565b840191505092915050565b5f6020820190508181035f8301526126dd818461268d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612712826126e9565b9050919050565b61272281612708565b811461272c575f80fd5b50565b5f8135905061273d81612719565b92915050565b5f819050919050565b61275581612743565b811461275f575f80fd5b50565b5f813590506127708161274c565b92915050565b5f806040838503121561278c5761278b6126e5565b5b5f6127998582860161272f565b92505060206127aa85828601612762565b9150509250929050565b5f8115159050919050565b6127c8816127b4565b82525050565b5f6020820190506127e15f8301846127bf565b92915050565b6127f081612743565b82525050565b5f6020820190506128095f8301846127e7565b92915050565b5f805f60608486031215612826576128256126e5565b5b5f6128338682870161272f565b93505060206128448682870161272f565b925050604061285586828701612762565b9150509250925092565b5f60ff82169050919050565b6128748161285f565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f61289d826126e9565b9050919050565b6128ad81612893565b81146128b7575f80fd5b50565b5f813590506128c8816128a4565b92915050565b5f80604083850312156128e4576128e36126e5565b5b5f6128f1858286016128ba565b925050602061290285828601612762565b9150509250929050565b5f60208284031215612921576129206126e5565b5b5f61292e8482850161272f565b91505092915050565b61294081612708565b82525050565b5f6020820190506129595f830184612937565b92915050565b5f8060408385031215612975576129746126e5565b5b5f6129828582860161272f565b92505060206129938582860161272f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a1f578086048111156129fb576129fa61299d565b5b6001851615612a0a5780820291505b8081029050612a18856129ca565b94506129df565b94509492505050565b5f82612a375760019050612af2565b81612a44575f9050612af2565b8160018114612a5a5760028114612a6457612a93565b6001915050612af2565b60ff841115612a7657612a7561299d565b5b8360020a915084821115612a8d57612a8c61299d565b5b50612af2565b5060208310610133831016604e8410600b8410161715612ac85782820a905083811115612ac357612ac261299d565b5b612af2565b612ad584848460016129d6565b92509050818404811115612aec57612aeb61299d565b5b81810290505b9392505050565b5f612b0382612743565b9150612b0e8361285f565b9250612b3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a28565b905092915050565b5f612b4d82612743565b9150612b5883612743565b9250828202612b6681612743565b91508282048414831517612b7d57612b7c61299d565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb8602083612645565b9150612bc382612b84565b602082019050919050565b5f6020820190508181035f830152612be581612bac565b9050919050565b7f496e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f612c20601883612645565b9150612c2b82612bec565b602082019050919050565b5f6020820190508181035f830152612c4d81612c14565b9050919050565b5f81519050612c628161274c565b92915050565b5f60208284031215612c7d57612c7c6126e5565b5b5f612c8a84828501612c54565b91505092915050565b5f604082019050612ca65f830185612937565b612cb360208301846127e7565b9392505050565b612cc3816127b4565b8114612ccd575f80fd5b50565b5f81519050612cde81612cba565b92915050565b5f60208284031215612cf957612cf86126e5565b5b5f612d0684828501612cd0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612d43601783612645565b9150612d4e82612d0f565b602082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b5f81519050612d8581612719565b92915050565b5f60208284031215612da057612d9f6126e5565b5b5f612dad84828501612d77565b91505092915050565b5f604082019050612dc95f830185612937565b612dd66020830184612937565b9392505050565b5f819050919050565b5f819050919050565b5f612e09612e04612dff84612ddd565b612de6565b612743565b9050919050565b612e1981612def565b82525050565b5f60c082019050612e325f830189612937565b612e3f60208301886127e7565b612e4c6040830187612e10565b612e596060830186612e10565b612e666080830185612937565b612e7360a08301846127e7565b979650505050505050565b5f805f60608486031215612e9557612e946126e5565b5b5f612ea286828701612c54565b9350506020612eb386828701612c54565b9250506040612ec486828701612c54565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f28602483612645565b9150612f3382612ece565b604082019050919050565b5f6020820190508181035f830152612f5581612f1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fb6602283612645565b9150612fc182612f5c565b604082019050919050565b5f6020820190508181035f830152612fe381612faa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613044602583612645565b915061304f82612fea565b604082019050919050565b5f6020820190508181035f83015261307181613038565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d2602383612645565b91506130dd82613078565b604082019050919050565b5f6020820190508181035f8301526130ff816130c6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613160602983612645565b915061316b82613106565b604082019050919050565b5f6020820190508181035f83015261318d81613154565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131c8601983612645565b91506131d382613194565b602082019050919050565b5f6020820190508181035f8301526131f5816131bc565b9050919050565b5f61320682612743565b915061321183612743565b92508282019050808211156132295761322861299d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613263601a83612645565b915061326e8261322f565b602082019050919050565b5f6020820190508181035f83015261329081613257565b9050919050565b5f6132a182612743565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132d3576132d261299d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613312601783612645565b915061331d826132de565b602082019050919050565b5f6020820190508181035f83015261333f81613306565b9050919050565b5f61335082612743565b915061335b83612743565b92508282039050818111156133735761337261299d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61340581612708565b82525050565b5f61341683836133fc565b60208301905092915050565b5f602082019050919050565b5f613438826133d3565b61344281856133dd565b935061344d836133ed565b805f5b8381101561347d578151613464888261340b565b975061346f83613422565b925050600181019050613450565b5085935050505092915050565b5f60a08201905061349d5f8301886127e7565b6134aa6020830187612e10565b81810360408301526134bc818661342e565b90506134cb6060830185612937565b6134d860808301846127e7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61351982612743565b915061352483612743565b925082613534576135336134e2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613599602183612645565b91506135a48261353f565b604082019050919050565b5f6020820190508181035f8301526135c68161358d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613601601b83612645565b915061360c826135cd565b602082019050919050565b5f6020820190508181035f83015261362e816135f5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206cda695d023a4446e535f02fd855d8f65877fffe711a7a86619bcfa465b49eb664736f6c63430008170033

Deployed Bytecode

0x608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb1461039b578063b054b536146103d7578063bf474bed146103ff578063c9567bf914610429578063dd62ed3e1461043f57610129565b8063751039fc146102dd5780637d1db4a5146102f35780638da5cb5b1461031d5780638f9a55c01461034757806395d89b411461037157610129565b8063313ce567116100e6578063313ce567146102235780634782f7791461024d57806351bc3c851461027557806370a082311461028b578063715018a6146102c757610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161047b565b60405161014e91906126c5565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612776565b6104b8565b60405161018a91906127ce565b60405180910390f35b34801561019e575f80fd5b506101a76104d5565b6040516101b491906127f6565b60405180910390f35b3480156101c8575f80fd5b506101d16104db565b6040516101de91906127f6565b60405180910390f35b3480156101f2575f80fd5b5061020d6004803603810190610208919061280f565b6104fe565b60405161021a91906127ce565b60405180910390f35b34801561022e575f80fd5b506102376105d2565b604051610244919061287a565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906128ce565b6105da565b005b348015610280575f80fd5b506102896106f9565b005b348015610296575f80fd5b506102b160048036038101906102ac919061290c565b610824565b6040516102be91906127f6565b60405180910390f35b3480156102d2575f80fd5b506102db61086a565b005b3480156102e8575f80fd5b506102f16109b8565b005b3480156102fe575f80fd5b50610307610ae7565b60405161031491906127f6565b60405180910390f35b348015610328575f80fd5b50610331610aed565b60405161033e9190612946565b60405180910390f35b348015610352575f80fd5b5061035b610b14565b60405161036891906127f6565b60405180910390f35b34801561037c575f80fd5b50610385610b1a565b60405161039291906126c5565b60405180910390f35b3480156103a6575f80fd5b506103c160048036038101906103bc9190612776565b610b57565b6040516103ce91906127ce565b60405180910390f35b3480156103e2575f80fd5b506103fd60048036038101906103f8919061290c565b610b74565b005b34801561040a575f80fd5b50610413610d0a565b60405161042091906127f6565b60405180910390f35b348015610434575f80fd5b5061043d610d10565b005b34801561044a575f80fd5b506104656004803603810190610460919061295f565b6115d1565b60405161047291906127f6565b60405180910390f35b60606040518060400160405280600881526020017f446f636120446f67000000000000000000000000000000000000000000000000815250905090565b5f6104cb6104c4611653565b848461165a565b6001905092915050565b60115481565b5f6009600a6104ea9190612af9565b633b9aca006104f99190612b43565b905090565b5f61050a84848461181d565b6105c784610516611653565b6105c2856040518060600160405280602881526020016136366028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610579611653565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121279092919063ffffffff16565b61165a565b600190509392505050565b5f6009905090565b6105e2611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612bce565b60405180910390fd5b804710156106b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a890612c36565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156106f4573d5f803e3d5ffd5b505050565b610701611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078490612bce565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107cd611653565b73ffffffffffffffffffffffffffffffffffffffff16146107ec575f80fd5b5f6107f630610824565b90505f81111561080a5761080981612189565b5b5f4790505f8111156108205761081f816123f4565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610872611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612bce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c0611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390612bce565b60405180910390fd5b6009600a610a5a9190612af9565b633b9aca00610a699190612b43565b600e819055506009600a610a7d9190612af9565b633b9aca00610a8c9190612b43565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610ac19190612af9565b633b9aca00610ad09190612b43565b604051610add91906127f6565b60405180910390a1565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600781526020017f446f6361446f6700000000000000000000000000000000000000000000000000815250905090565b5f610b6a610b63611653565b848461181d565b6001905092915050565b610b7c611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90612bce565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c429190612946565b602060405180830381865afa158015610c5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c819190612c68565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610ca7610aed565b836040518363ffffffff1660e01b8152600401610cc5929190612c93565b6020604051808303815f875af1158015610ce1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d059190612ce4565b505050565b60105481565b610d18611653565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612bce565b60405180910390fd5b601360149054906101000a900460ff1615610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90612d59565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e903060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e7c9190612af9565b633b9aca00610e8b9190612b43565b61165a565b5f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f359190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390560125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fde9190612d8b565b306040518363ffffffff1660e01b8152600401610ffc929190612db6565b602060405180830381865afa158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190612d8b565b73ffffffffffffffffffffffffffffffffffffffff160361122f5760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e49190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118e9190612d8b565b6040518363ffffffff1660e01b81526004016111ab929190612db6565b6020604051808303815f875af11580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190612d8b565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611403565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd9190612d8b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390560125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611342573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113669190612d8b565b306040518363ffffffff1660e01b8152600401611384929190612db6565b602060405180830381865afa15801561139f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c39190612d8b565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061144b30610824565b5f80611455610aed565b426040518863ffffffff1660e01b815260040161147796959493929190612e1f565b60606040518083038185885af1158015611493573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114b89190612e7e565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611558929190612c93565b6020604051808303815f875af1158015611574573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115989190612ce4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612f3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d90612fcc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161181091906127f6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061305a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906130e8565b60405180910390fd5b5f811161193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613176565b60405180910390fd5b5f611944610aed565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b25750611982610aed565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e775760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a55575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a5d575f80fd5b611a996064611a8b600a54600d5411611a7857600654611a7c565b6008545b8561245c90919063ffffffff16565b6124d390919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b44575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b97575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c5157600e54821115611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906131de565b60405180910390fd5b600f5482611bee85610824565b611bf891906131fc565b1115611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613279565b60405180910390fd5b600d5f815480929190611c4b90613297565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cd957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d1d57611d1a6064611d0c600b54600d5411611cf957600754611cfd565b6009545b8561245c90919063ffffffff16565b6124d390919063ffffffff16565b90505b5f611d2730610824565b9050601360159054906101000a900460ff16158015611d92575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611daa5750601360169054906101000a900460ff165b8015611db7575060105481115b8015611dc65750600c54600d54115b15611e7557601554431115611ddd575f6014819055505b600360145410611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613328565b60405180910390fd5b611e3f611e3a84611e358460115461251c565b61251c565b612189565b5f4790505f811115611e5557611e54476123f4565b5b60145f815480929190611e6790613297565b919050555043601581905550505b505b5f811115611f7657611ecf8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6d91906127f6565b60405180910390a35b611fc68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061206961201d828461259190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61210c848661259190919063ffffffff16565b60405161211991906127f6565b60405180910390a350505050565b5f83831115829061216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216591906126c5565b60405180910390fd5b505f838561217c9190613346565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121c0576121bf613379565b5b6040519080825280602002602001820160405280156121ee5781602001602082028036833780820191505090505b50905030815f81518110612205576122046133a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122cd9190612d8b565b816001815181106122e1576122e06133a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123473060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461165a565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123a995949392919061348a565b5f604051808303815f87803b1580156123c0575f80fd5b505af11580156123d2573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612458573d5f803e3d5ffd5b5050565b5f80830361246c575f90506124cd565b5f82846124799190612b43565b9050828482612488919061350f565b146124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf906135af565b60405180910390fd5b809150505b92915050565b5f61251483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125da565b905092915050565b5f81831161252a578261252c565b815b905092915050565b5f80828461254291906131fc565b905083811015612587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257e90613617565b60405180910390fd5b8091505092915050565b5f6125d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612127565b905092915050565b5f8083118290612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261791906126c5565b60405180910390fd5b505f838561262e919061350f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612672578082015181840152602081019050612657565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126978261263b565b6126a18185612645565b93506126b1818560208601612655565b6126ba8161267d565b840191505092915050565b5f6020820190508181035f8301526126dd818461268d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612712826126e9565b9050919050565b61272281612708565b811461272c575f80fd5b50565b5f8135905061273d81612719565b92915050565b5f819050919050565b61275581612743565b811461275f575f80fd5b50565b5f813590506127708161274c565b92915050565b5f806040838503121561278c5761278b6126e5565b5b5f6127998582860161272f565b92505060206127aa85828601612762565b9150509250929050565b5f8115159050919050565b6127c8816127b4565b82525050565b5f6020820190506127e15f8301846127bf565b92915050565b6127f081612743565b82525050565b5f6020820190506128095f8301846127e7565b92915050565b5f805f60608486031215612826576128256126e5565b5b5f6128338682870161272f565b93505060206128448682870161272f565b925050604061285586828701612762565b9150509250925092565b5f60ff82169050919050565b6128748161285f565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f61289d826126e9565b9050919050565b6128ad81612893565b81146128b7575f80fd5b50565b5f813590506128c8816128a4565b92915050565b5f80604083850312156128e4576128e36126e5565b5b5f6128f1858286016128ba565b925050602061290285828601612762565b9150509250929050565b5f60208284031215612921576129206126e5565b5b5f61292e8482850161272f565b91505092915050565b61294081612708565b82525050565b5f6020820190506129595f830184612937565b92915050565b5f8060408385031215612975576129746126e5565b5b5f6129828582860161272f565b92505060206129938582860161272f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a1f578086048111156129fb576129fa61299d565b5b6001851615612a0a5780820291505b8081029050612a18856129ca565b94506129df565b94509492505050565b5f82612a375760019050612af2565b81612a44575f9050612af2565b8160018114612a5a5760028114612a6457612a93565b6001915050612af2565b60ff841115612a7657612a7561299d565b5b8360020a915084821115612a8d57612a8c61299d565b5b50612af2565b5060208310610133831016604e8410600b8410161715612ac85782820a905083811115612ac357612ac261299d565b5b612af2565b612ad584848460016129d6565b92509050818404811115612aec57612aeb61299d565b5b81810290505b9392505050565b5f612b0382612743565b9150612b0e8361285f565b9250612b3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a28565b905092915050565b5f612b4d82612743565b9150612b5883612743565b9250828202612b6681612743565b91508282048414831517612b7d57612b7c61299d565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bb8602083612645565b9150612bc382612b84565b602082019050919050565b5f6020820190508181035f830152612be581612bac565b9050919050565b7f496e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f612c20601883612645565b9150612c2b82612bec565b602082019050919050565b5f6020820190508181035f830152612c4d81612c14565b9050919050565b5f81519050612c628161274c565b92915050565b5f60208284031215612c7d57612c7c6126e5565b5b5f612c8a84828501612c54565b91505092915050565b5f604082019050612ca65f830185612937565b612cb360208301846127e7565b9392505050565b612cc3816127b4565b8114612ccd575f80fd5b50565b5f81519050612cde81612cba565b92915050565b5f60208284031215612cf957612cf86126e5565b5b5f612d0684828501612cd0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612d43601783612645565b9150612d4e82612d0f565b602082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b5f81519050612d8581612719565b92915050565b5f60208284031215612da057612d9f6126e5565b5b5f612dad84828501612d77565b91505092915050565b5f604082019050612dc95f830185612937565b612dd66020830184612937565b9392505050565b5f819050919050565b5f819050919050565b5f612e09612e04612dff84612ddd565b612de6565b612743565b9050919050565b612e1981612def565b82525050565b5f60c082019050612e325f830189612937565b612e3f60208301886127e7565b612e4c6040830187612e10565b612e596060830186612e10565b612e666080830185612937565b612e7360a08301846127e7565b979650505050505050565b5f805f60608486031215612e9557612e946126e5565b5b5f612ea286828701612c54565b9350506020612eb386828701612c54565b9250506040612ec486828701612c54565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f28602483612645565b9150612f3382612ece565b604082019050919050565b5f6020820190508181035f830152612f5581612f1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fb6602283612645565b9150612fc182612f5c565b604082019050919050565b5f6020820190508181035f830152612fe381612faa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613044602583612645565b915061304f82612fea565b604082019050919050565b5f6020820190508181035f83015261307181613038565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d2602383612645565b91506130dd82613078565b604082019050919050565b5f6020820190508181035f8301526130ff816130c6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613160602983612645565b915061316b82613106565b604082019050919050565b5f6020820190508181035f83015261318d81613154565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131c8601983612645565b91506131d382613194565b602082019050919050565b5f6020820190508181035f8301526131f5816131bc565b9050919050565b5f61320682612743565b915061321183612743565b92508282019050808211156132295761322861299d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613263601a83612645565b915061326e8261322f565b602082019050919050565b5f6020820190508181035f83015261329081613257565b9050919050565b5f6132a182612743565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132d3576132d261299d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613312601783612645565b915061331d826132de565b602082019050919050565b5f6020820190508181035f83015261333f81613306565b9050919050565b5f61335082612743565b915061335b83612743565b92508282039050818111156133735761337261299d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61340581612708565b82525050565b5f61341683836133fc565b60208301905092915050565b5f602082019050919050565b5f613438826133d3565b61344281856133dd565b935061344d836133ed565b805f5b8381101561347d578151613464888261340b565b975061346f83613422565b925050600181019050613450565b5085935050505092915050565b5f60a08201905061349d5f8301886127e7565b6134aa6020830187612e10565b81810360408301526134bc818661342e565b90506134cb6060830185612937565b6134d860808301846127e7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61351982612743565b915061352483612743565b925082613534576135336134e2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613599602183612645565b91506135a48261353f565b604082019050919050565b5f6020820190508181035f8301526135c68161358d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613601601b83612645565b915061360c826135cd565b602082019050919050565b5f6020820190508181035f83015261362e816135f5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206cda695d023a4446e535f02fd855d8f65877fffe711a7a86619bcfa465b49eb664736f6c63430008170033

Deployed Bytecode Sourcemap

3682:8408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5588:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6421:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4783:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5865:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6590:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5774:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10308:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11513:360;;;;;;;;;;;;;:::i;:::-;;5968:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2671:148;;;;;;;;;;;;;:::i;:::-;;10041:159;;;;;;;;;;;;;:::i;:::-;;4589:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2457:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4652:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5679:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6095:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11881:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4717:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10509:958;;;;;;;;;;;;;:::i;:::-;;6270:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5588:83;5625:13;5658:5;;;;;;;;;;;;;;;;;5651:12;;5588:83;:::o;6421:161::-;6496:4;6513:39;6522:12;:10;:12::i;:::-;6536:7;6545:6;6513:8;:39::i;:::-;6570:4;6563:11;;6421:161;;;;:::o;4783:54::-;;;;:::o;5865:95::-;5918:7;4397:1;4456:2;:13;;;;:::i;:::-;4440;:29;;;;:::i;:::-;5938:14;;5865:95;:::o;6590:313::-;6688:4;6705:36;6715:6;6723:9;6734:6;6705:9;:36::i;:::-;6752:121;6761:6;6769:12;:10;:12::i;:::-;6783:89;6821:6;6783:89;;;;;;;;;;;;;;;;;:11;:19;6795:6;6783:19;;;;;;;;;;;;;;;:33;6803:12;:10;:12::i;:::-;6783:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6752:8;:121::i;:::-;6891:4;6884:11;;6590:313;;;;;:::o;5774:83::-;5815:5;4397:1;5833:16;;5774:83;:::o;10308:193::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10428:6:::1;10403:21;:31;;10395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10474:2;:11;;:19;10486:6;10474:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10308:193:::0;;:::o;11513:360::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11589:10:::1;;;;;;;;;;;11575:24;;:12;:10;:12::i;:::-;:24;;;11567:33;;;::::0;::::1;;11611:20;11632:24;11650:4;11632:9;:24::i;:::-;11611:45;;11683:1;11670:12;:14;11667:73;;;11698:30;11715:12;11698:16;:30::i;:::-;11667:73;11750:18;11769:21;11750:40;;11815:1;11804:10;:12;11801:65;;;11830:24;11843:10;11830:12;:24::i;:::-;11801:65;11556:317;;11513:360::o:0;5968:119::-;6034:7;6061:9;:18;6071:7;6061:18;;;;;;;;;;;;;;;;6054:25;;5968:119;;;:::o;2671:148::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2778:1:::1;2741:40;;2762:6;::::0;::::1;;;;;;;;2741:40;;;;;;;;;;;;2809:1;2792:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2671:148::o:0;10041:159::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4397:1:::1;4456:2;:13;;;;:::i;:::-;4440;:29;;;;:::i;:::-;10094:12;:22;;;;4397:1;4456:2;:13;;;;:::i;:::-;4440;:29;;;;:::i;:::-;10127:14;:22;;;;10165:27;4397:1;4456:2;:13;;;;:::i;:::-;4440;:29;;;;:::i;:::-;10165:27;;;;;;:::i;:::-;;;;;;;;10041:159::o:0;4589:56::-;;;;:::o;2457:79::-;2495:7;2522:6;;;;;;;;;;;2515:13;;2457:79;:::o;4652:58::-;;;;:::o;5679:87::-;5718:13;5751:7;;;;;;;;;;;;;;;;;5744:14;;5679:87;:::o;6095:167::-;6173:4;6190:42;6200:12;:10;:12::i;:::-;6214:9;6225:6;6190:9;:42::i;:::-;6250:4;6243:11;;6095:167;;;;:::o;11881:204::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:15:::1;11981:12;11974:30;;;12013:4;11974:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11956:63;;12037:12;12030:29;;;12060:7;:5;:7::i;:::-;12069;12030:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11945:140;11881:204:::0;:::o;4717:59::-;;;;:::o;10509:958::-;2594:12;:10;:12::i;:::-;2584:22;;:6;;;;;;;;;;:22;;;2576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10573:11:::1;;;;;;;;;;;10572:12;10564:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10659:42;10622:15;;:80;;;;;;;;;;;;;;;;;;10713:58;10730:4;10745:15;;;;;;;;;;;4397:1;4456:2;:13;;;;:::i;:::-;4440;:29;;;;:::i;:::-;10713:8;:58::i;:::-;10889:1;10786:105;;10804:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10786:52;;;10839:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10871:4;10786:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:105;;::::0;10782:397:::1;;10942:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10924:55;;;10988:4;10995:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10924:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10908:13;;:110;;;;;;;;;;;;;;;;;;10782:397;;;11094:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11076:52;;;11129:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11161:4;11076:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11060:13;;:107;;;;;;;;;;;;;;;;;;10782:397;11190:15;;;;;;;;;;;:31;;;11229:21;11260:4;11266:24;11284:4;11266:9;:24::i;:::-;11291:1;11293::::0;11295:7:::1;:5;:7::i;:::-;11303:15;11190:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11337:13;;;;;;;;;;;11330:29;;;11368:15;;;;;;;;;;;11386:14;11330:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11426:4;11412:11;;:18;;;;;;;;;;;;;;;;;;11455:4;11441:11;;:18;;;;;;;;;;;;;;;;;;10509:958::o:0;6270:143::-;6351:7;6378:11;:18;6390:5;6378:18;;;;;;;;;;;;;;;:27;6397:7;6378:27;;;;;;;;;;;;;;;;6371:34;;6270:143;;;;:::o;212:98::-;265:7;292:10;285:17;;212:98;:::o;6911:335::-;7021:1;7004:19;;:5;:19;;;6996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7102:1;7083:21;;:7;:21;;;7075:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7184:6;7154:11;:18;7166:5;7154:18;;;;;;;;;;;;;;;:27;7173:7;7154:27;;;;;;;;;;;;;;;:36;;;;7222:7;7206:32;;7215:5;7206:32;;;7231:6;7206:32;;;;;;:::i;:::-;;;;;;;;6911:335;;;:::o;7254:2180::-;7358:1;7342:18;;:4;:18;;;7334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7435:1;7421:16;;:2;:16;;;7413:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7505:1;7496:6;:10;7488:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7563:17;7605:7;:5;:7::i;:::-;7597:15;;:4;:15;;;;:32;;;;;7622:7;:5;:7::i;:::-;7616:13;;:2;:13;;;;7597:32;7593:1485;;;7655:4;:10;7660:4;7655:10;;;;;;;;;;;;;;;;;;;;;;;;;7654:11;:24;;;;;7670:4;:8;7675:2;7670:8;;;;;;;;;;;;;;;;;;;;;;;;;7669:9;7654:24;7646:33;;;;;;7706:76;7778:3;7706:67;7728:15;;7718:9;;:25;7717:55;;7758:14;;7717:55;;;7745:12;;7717:55;7706:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7694:88;;7811:13;;;;;;;;;;;7803:21;;:4;:21;;;:55;;;;;7842:15;;;;;;;;;;;7828:30;;:2;:30;;;;7803:55;:83;;;;;7864:18;:22;7883:2;7864:22;;;;;;;;;;;;;;;;;;;;;;;;;7862:24;7803:83;7799:313;;;7926:12;;7916:6;:22;;7908:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8021:14;;8011:6;7995:13;8005:2;7995:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7987:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8085:9;;:11;;;;;;;;;:::i;:::-;;;;;;7799:313;8137:13;;;;;;;;;;;8131:19;;:2;:19;;;:43;;;;;8169:4;8154:20;;:4;:20;;;;8131:43;8128:174;;;8207:79;8282:3;8207:70;8229:16;;8219:9;;:26;8218:58;;8261:15;;8218:58;;;8247:13;;8218:58;8207:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8195:91;;8128:174;8318:28;8349:24;8367:4;8349:9;:24::i;:::-;8318:55;;8393:6;;;;;;;;;;;8392:7;:30;;;;;8409:13;;;;;;;;;;;8403:19;;:2;:19;;;8392:30;:45;;;;;8426:11;;;;;;;;;;;8392:45;:89;;;;;8464:17;;8441:20;:40;8392:89;:123;;;;;8497:18;;8485:9;;:30;8392:123;8388:679;;;8555:13;;8540:12;:28;8536:90;;;8605:1;8593:9;:13;;;;8536:90;8664:1;8652:9;;:13;8644:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8712:69;8729:51;8733:6;8741:38;8745:20;8767:11;;8741:3;:38::i;:::-;8729:3;:51::i;:::-;8712:16;:69::i;:::-;8800:26;8829:21;8800:50;;8894:1;8873:18;:22;8869:106;;;8920:35;8933:21;8920:12;:35::i;:::-;8869:106;8993:9;;:11;;;;;;;;;:::i;:::-;;;;;;9039:12;9023:13;:28;;;;8517:550;8388:679;7631:1447;7593:1485;9103:1;9093:9;:11;9090:161;;;9143:39;9172:9;9143;:24;9161:4;9143:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9118:9;:24;9136:4;9118:24;;;;;;;;;;;;;;;:64;;;;9223:4;9200:39;;9209:4;9200:39;;;9229:9;9200:39;;;;;;:::i;:::-;;;;;;;;9090:161;9277:27;9297:6;9277:9;:15;9287:4;9277:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9261:9;:15;9271:4;9261:15;;;;;;;;;;;;;;;:43;;;;9329:40;9347:21;9358:9;9347:6;:10;;:21;;;;:::i;:::-;9329:9;:13;9339:2;9329:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9315:9;:13;9325:2;9315:13;;;;;;;;;;;;;;;:54;;;;9400:2;9385:41;;9394:4;9385:41;;;9404:21;9415:9;9404:6;:10;;:21;;;;:::i;:::-;9385:41;;;;;;:::i;:::-;;;;;;;;7323:2111;7254:2180;;;:::o;1349:190::-;1435:7;1468:1;1463;:6;;1471:12;1455:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1495:9;1511:1;1507;:5;;;;:::i;:::-;1495:17;;1530:1;1523:8;;;1349:190;;;;;:::o;9550:483::-;5206:4;5197:6;;:13;;;;;;;;;;;;;;;;;;9628:21:::1;9666:1;9652:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9628:40;;9697:4;9679;9684:1;9679:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9723:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9713:4;9718:1;9713:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9756:62;9773:4;9788:15;;;;;;;;;;;9806:11;9756:8;:62::i;:::-;9829:15;;;;;;;;;;;:66;;;9910:11;9936:1;9952:4;9979;9999:15;9829:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9617:416;5242:5:::0;5233:6;;:14;;;;;;;;;;;;;;;;;;9550:483;:::o;10208:92::-;10265:10;;;;;;;;;;;:19;;:27;10285:6;10265:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10208:92;:::o;1547:246::-;1605:7;1634:1;1629;:6;1625:47;;1659:1;1652:8;;;;1625:47;1682:9;1698:1;1694;:5;;;;:::i;:::-;1682:17;;1727:1;1722;1718;:5;;;;:::i;:::-;:10;1710:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1784:1;1777:8;;;1547:246;;;;;:::o;1801:132::-;1859:7;1886:39;1890:1;1893;1886:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1879:46;;1801:132;;;;:::o;9444:98::-;9501:7;9528:1;9526;:3;9525:9;;9533:1;9525:9;;;9531:1;9525:9;9518:16;;9444:98;;;;:::o;1018:179::-;1076:7;1096:9;1112:1;1108;:5;;;;:::i;:::-;1096:17;;1137:1;1132;:6;;1124:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1188:1;1181:8;;;1018:179;;;;:::o;1205:136::-;1263:7;1290:43;1294:1;1297;1290:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1283:50;;1205:136;;;;:::o;1941:189::-;2027:7;2059:1;2055;:5;2062:12;2047:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2086:9;2102:1;2098;:5;;;;:::i;:::-;2086:17;;2121:1;2114:8;;;1941: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;1430:117::-;1539:1;1536;1529: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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:104::-;4898:7;4927:24;4945:5;4927:24;:::i;:::-;4916:35;;4853:104;;;:::o;4963:138::-;5044:32;5070:5;5044:32;:::i;:::-;5037:5;5034:43;5024:71;;5091:1;5088;5081:12;5024:71;4963:138;:::o;5107:155::-;5161:5;5199:6;5186:20;5177:29;;5215:41;5250:5;5215:41;:::i;:::-;5107:155;;;;:::o;5268:490::-;5344:6;5352;5401:2;5389:9;5380:7;5376:23;5372:32;5369:119;;;5407:79;;:::i;:::-;5369:119;5527:1;5552:61;5605:7;5596:6;5585:9;5581:22;5552:61;:::i;:::-;5542:71;;5498:125;5662:2;5688:53;5733:7;5724:6;5713:9;5709:22;5688:53;:::i;:::-;5678:63;;5633:118;5268:490;;;;;:::o;5764:329::-;5823:6;5872:2;5860:9;5851:7;5847:23;5843:32;5840:119;;;5878:79;;:::i;:::-;5840:119;5998:1;6023:53;6068:7;6059:6;6048:9;6044:22;6023:53;:::i;:::-;6013:63;;5969:117;5764:329;;;;:::o;6099:118::-;6186:24;6204:5;6186:24;:::i;:::-;6181:3;6174:37;6099:118;;:::o;6223:222::-;6316:4;6354:2;6343:9;6339:18;6331:26;;6367:71;6435:1;6424:9;6420:17;6411:6;6367:71;:::i;:::-;6223:222;;;;:::o;6451:474::-;6519:6;6527;6576:2;6564:9;6555:7;6551:23;6547:32;6544:119;;;6582:79;;:::i;:::-;6544:119;6702:1;6727:53;6772:7;6763:6;6752:9;6748:22;6727:53;:::i;:::-;6717:63;;6673:117;6829:2;6855:53;6900:7;6891:6;6880:9;6876:22;6855:53;:::i;:::-;6845:63;;6800:118;6451:474;;;;;:::o;6931:180::-;6979:77;6976:1;6969:88;7076:4;7073:1;7066:15;7100:4;7097:1;7090:15;7117:102;7159:8;7206:5;7203:1;7199:13;7178:34;;7117:102;;;:::o;7225:848::-;7286:5;7293:4;7317:6;7308:15;;7341:5;7332:14;;7355:712;7376:1;7366:8;7363:15;7355:712;;;7471:4;7466:3;7462:14;7456:4;7453:24;7450:50;;;7480:18;;:::i;:::-;7450:50;7530:1;7520:8;7516:16;7513:451;;;7945:4;7938:5;7934:16;7925:25;;7513:451;7995:4;7989;7985:15;7977:23;;8025:32;8048:8;8025:32;:::i;:::-;8013:44;;7355:712;;;7225:848;;;;;;;:::o;8079:1073::-;8133:5;8324:8;8314:40;;8345:1;8336:10;;8347:5;;8314:40;8373:4;8363:36;;8390:1;8381:10;;8392:5;;8363:36;8459:4;8507:1;8502:27;;;;8543:1;8538:191;;;;8452:277;;8502:27;8520:1;8511:10;;8522:5;;;8538:191;8583:3;8573:8;8570:17;8567:43;;;8590:18;;:::i;:::-;8567:43;8639:8;8636:1;8632:16;8623:25;;8674:3;8667:5;8664:14;8661:40;;;8681:18;;:::i;:::-;8661:40;8714:5;;;8452:277;;8838:2;8828:8;8825:16;8819:3;8813:4;8810:13;8806:36;8788:2;8778:8;8775:16;8770:2;8764:4;8761:12;8757:35;8741:111;8738:246;;;8894:8;8888:4;8884:19;8875:28;;8929:3;8922:5;8919:14;8916:40;;;8936:18;;:::i;:::-;8916:40;8969:5;;8738:246;9009:42;9047:3;9037:8;9031:4;9028:1;9009:42;:::i;:::-;8994:57;;;;9083:4;9078:3;9074:14;9067:5;9064:25;9061:51;;;9092:18;;:::i;:::-;9061:51;9141:4;9134:5;9130:16;9121:25;;8079:1073;;;;;;:::o;9158:281::-;9216:5;9240:23;9258:4;9240:23;:::i;:::-;9232:31;;9284:25;9300:8;9284:25;:::i;:::-;9272:37;;9328:104;9365:66;9355:8;9349:4;9328:104;:::i;:::-;9319:113;;9158:281;;;;:::o;9445:410::-;9485:7;9508:20;9526:1;9508:20;:::i;:::-;9503:25;;9542:20;9560:1;9542:20;:::i;:::-;9537:25;;9597:1;9594;9590:9;9619:30;9637:11;9619:30;:::i;:::-;9608:41;;9798:1;9789:7;9785:15;9782:1;9779:22;9759:1;9752:9;9732:83;9709:139;;9828:18;;:::i;:::-;9709:139;9493:362;9445:410;;;;:::o;9861:182::-;10001:34;9997:1;9989:6;9985:14;9978:58;9861:182;:::o;10049:366::-;10191:3;10212:67;10276:2;10271:3;10212:67;:::i;:::-;10205:74;;10288:93;10377:3;10288:93;:::i;:::-;10406:2;10401:3;10397:12;10390:19;;10049:366;;;:::o;10421:419::-;10587:4;10625:2;10614:9;10610:18;10602:26;;10674:9;10668:4;10664:20;10660:1;10649:9;10645:17;10638:47;10702:131;10828:4;10702:131;:::i;:::-;10694:139;;10421:419;;;:::o;10846:174::-;10986:26;10982:1;10974:6;10970:14;10963:50;10846:174;:::o;11026:366::-;11168:3;11189:67;11253:2;11248:3;11189:67;:::i;:::-;11182:74;;11265:93;11354:3;11265:93;:::i;:::-;11383:2;11378:3;11374:12;11367:19;;11026:366;;;:::o;11398:419::-;11564:4;11602:2;11591:9;11587:18;11579:26;;11651:9;11645:4;11641:20;11637:1;11626:9;11622:17;11615:47;11679:131;11805:4;11679:131;:::i;:::-;11671:139;;11398:419;;;:::o;11823:143::-;11880:5;11911:6;11905:13;11896:22;;11927:33;11954:5;11927:33;:::i;:::-;11823:143;;;;:::o;11972:351::-;12042:6;12091:2;12079:9;12070:7;12066:23;12062:32;12059:119;;;12097:79;;:::i;:::-;12059:119;12217:1;12242:64;12298:7;12289:6;12278:9;12274:22;12242:64;:::i;:::-;12232:74;;12188:128;11972:351;;;;:::o;12329:332::-;12450:4;12488:2;12477:9;12473:18;12465:26;;12501:71;12569:1;12558:9;12554:17;12545:6;12501:71;:::i;:::-;12582:72;12650:2;12639:9;12635:18;12626:6;12582:72;:::i;:::-;12329:332;;;;;:::o;12667:116::-;12737:21;12752:5;12737:21;:::i;:::-;12730:5;12727:32;12717:60;;12773:1;12770;12763:12;12717:60;12667:116;:::o;12789:137::-;12843:5;12874:6;12868:13;12859:22;;12890:30;12914:5;12890:30;:::i;:::-;12789:137;;;;:::o;12932:345::-;12999:6;13048:2;13036:9;13027:7;13023:23;13019:32;13016:119;;;13054:79;;:::i;:::-;13016:119;13174:1;13199:61;13252:7;13243:6;13232:9;13228:22;13199:61;:::i;:::-;13189:71;;13145:125;12932:345;;;;:::o;13283:173::-;13423:25;13419:1;13411:6;13407:14;13400:49;13283:173;:::o;13462:366::-;13604:3;13625:67;13689:2;13684:3;13625:67;:::i;:::-;13618:74;;13701:93;13790:3;13701:93;:::i;:::-;13819:2;13814:3;13810:12;13803:19;;13462:366;;;:::o;13834:419::-;14000:4;14038:2;14027:9;14023:18;14015:26;;14087:9;14081:4;14077:20;14073:1;14062:9;14058:17;14051:47;14115:131;14241:4;14115:131;:::i;:::-;14107:139;;13834:419;;;:::o;14259:143::-;14316:5;14347:6;14341:13;14332:22;;14363:33;14390:5;14363:33;:::i;:::-;14259:143;;;;:::o;14408:351::-;14478:6;14527:2;14515:9;14506:7;14502:23;14498:32;14495:119;;;14533:79;;:::i;:::-;14495:119;14653:1;14678:64;14734:7;14725:6;14714:9;14710:22;14678:64;:::i;:::-;14668:74;;14624:128;14408:351;;;;:::o;14765:332::-;14886:4;14924:2;14913:9;14909:18;14901:26;;14937:71;15005:1;14994:9;14990:17;14981:6;14937:71;:::i;:::-;15018:72;15086:2;15075:9;15071:18;15062:6;15018:72;:::i;:::-;14765:332;;;;;:::o;15103:85::-;15148:7;15177:5;15166:16;;15103:85;;;:::o;15194:60::-;15222:3;15243:5;15236:12;;15194:60;;;:::o;15260:158::-;15318:9;15351:61;15369:42;15378:32;15404:5;15378:32;:::i;:::-;15369:42;:::i;:::-;15351:61;:::i;:::-;15338:74;;15260:158;;;:::o;15424:147::-;15519:45;15558:5;15519:45;:::i;:::-;15514:3;15507:58;15424:147;;:::o;15577:807::-;15826:4;15864:3;15853:9;15849:19;15841:27;;15878:71;15946:1;15935:9;15931:17;15922:6;15878:71;:::i;:::-;15959:72;16027:2;16016:9;16012:18;16003:6;15959:72;:::i;:::-;16041:80;16117:2;16106:9;16102:18;16093:6;16041:80;:::i;:::-;16131;16207:2;16196:9;16192:18;16183:6;16131:80;:::i;:::-;16221:73;16289:3;16278:9;16274:19;16265:6;16221:73;:::i;:::-;16304;16372:3;16361:9;16357:19;16348:6;16304:73;:::i;:::-;15577:807;;;;;;;;;:::o;16390:663::-;16478:6;16486;16494;16543:2;16531:9;16522:7;16518:23;16514:32;16511:119;;;16549:79;;:::i;:::-;16511:119;16669:1;16694:64;16750:7;16741:6;16730:9;16726:22;16694:64;:::i;:::-;16684:74;;16640:128;16807:2;16833:64;16889:7;16880:6;16869:9;16865:22;16833:64;:::i;:::-;16823:74;;16778:129;16946:2;16972:64;17028:7;17019:6;17008:9;17004:22;16972:64;:::i;:::-;16962:74;;16917:129;16390:663;;;;;:::o;17059:223::-;17199:34;17195:1;17187:6;17183:14;17176:58;17268:6;17263:2;17255:6;17251:15;17244:31;17059:223;:::o;17288:366::-;17430:3;17451:67;17515:2;17510:3;17451:67;:::i;:::-;17444:74;;17527:93;17616:3;17527:93;:::i;:::-;17645:2;17640:3;17636:12;17629:19;;17288:366;;;:::o;17660:419::-;17826:4;17864:2;17853:9;17849:18;17841:26;;17913:9;17907:4;17903:20;17899:1;17888:9;17884:17;17877:47;17941:131;18067:4;17941:131;:::i;:::-;17933:139;;17660:419;;;:::o;18085:221::-;18225:34;18221:1;18213:6;18209:14;18202:58;18294:4;18289:2;18281:6;18277:15;18270:29;18085:221;:::o;18312:366::-;18454:3;18475:67;18539:2;18534:3;18475:67;:::i;:::-;18468:74;;18551:93;18640:3;18551:93;:::i;:::-;18669:2;18664:3;18660:12;18653:19;;18312:366;;;:::o;18684:419::-;18850:4;18888:2;18877:9;18873:18;18865:26;;18937:9;18931:4;18927:20;18923:1;18912:9;18908:17;18901:47;18965:131;19091:4;18965:131;:::i;:::-;18957:139;;18684:419;;;:::o;19109:224::-;19249:34;19245:1;19237:6;19233:14;19226:58;19318:7;19313:2;19305:6;19301:15;19294:32;19109:224;:::o;19339:366::-;19481:3;19502:67;19566:2;19561:3;19502:67;:::i;:::-;19495:74;;19578:93;19667:3;19578:93;:::i;:::-;19696:2;19691:3;19687:12;19680:19;;19339:366;;;:::o;19711:419::-;19877:4;19915:2;19904:9;19900:18;19892:26;;19964:9;19958:4;19954:20;19950:1;19939:9;19935:17;19928:47;19992:131;20118:4;19992:131;:::i;:::-;19984:139;;19711:419;;;:::o;20136:222::-;20276:34;20272:1;20264:6;20260:14;20253:58;20345:5;20340:2;20332:6;20328:15;20321:30;20136:222;:::o;20364:366::-;20506:3;20527:67;20591:2;20586:3;20527:67;:::i;:::-;20520:74;;20603:93;20692:3;20603:93;:::i;:::-;20721:2;20716:3;20712:12;20705:19;;20364:366;;;:::o;20736:419::-;20902:4;20940:2;20929:9;20925:18;20917:26;;20989:9;20983:4;20979:20;20975:1;20964:9;20960:17;20953:47;21017:131;21143:4;21017:131;:::i;:::-;21009:139;;20736:419;;;:::o;21161:228::-;21301:34;21297:1;21289:6;21285:14;21278:58;21370:11;21365:2;21357:6;21353:15;21346:36;21161:228;:::o;21395:366::-;21537:3;21558:67;21622:2;21617:3;21558:67;:::i;:::-;21551:74;;21634:93;21723:3;21634:93;:::i;:::-;21752:2;21747:3;21743:12;21736:19;;21395:366;;;:::o;21767:419::-;21933:4;21971:2;21960:9;21956:18;21948:26;;22020:9;22014:4;22010:20;22006:1;21995:9;21991:17;21984:47;22048:131;22174:4;22048:131;:::i;:::-;22040:139;;21767:419;;;:::o;22192:175::-;22332:27;22328:1;22320:6;22316:14;22309:51;22192:175;:::o;22373:366::-;22515:3;22536:67;22600:2;22595:3;22536:67;:::i;:::-;22529:74;;22612:93;22701:3;22612:93;:::i;:::-;22730:2;22725:3;22721:12;22714:19;;22373:366;;;:::o;22745:419::-;22911:4;22949:2;22938:9;22934:18;22926:26;;22998:9;22992:4;22988:20;22984:1;22973:9;22969:17;22962:47;23026:131;23152:4;23026:131;:::i;:::-;23018:139;;22745:419;;;:::o;23170:191::-;23210:3;23229:20;23247:1;23229:20;:::i;:::-;23224:25;;23263:20;23281:1;23263:20;:::i;:::-;23258:25;;23306:1;23303;23299:9;23292:16;;23327:3;23324:1;23321:10;23318:36;;;23334:18;;:::i;:::-;23318:36;23170:191;;;;:::o;23367:176::-;23507:28;23503:1;23495:6;23491:14;23484:52;23367:176;:::o;23549:366::-;23691:3;23712:67;23776:2;23771:3;23712:67;:::i;:::-;23705:74;;23788:93;23877:3;23788:93;:::i;:::-;23906:2;23901:3;23897:12;23890:19;;23549:366;;;:::o;23921:419::-;24087:4;24125:2;24114:9;24110:18;24102:26;;24174:9;24168:4;24164:20;24160:1;24149:9;24145:17;24138:47;24202:131;24328:4;24202:131;:::i;:::-;24194:139;;23921:419;;;:::o;24346:233::-;24385:3;24408:24;24426:5;24408:24;:::i;:::-;24399:33;;24454:66;24447:5;24444:77;24441:103;;24524:18;;:::i;:::-;24441:103;24571:1;24564:5;24560:13;24553:20;;24346:233;;;:::o;24585:173::-;24725:25;24721:1;24713:6;24709:14;24702:49;24585:173;:::o;24764:366::-;24906:3;24927:67;24991:2;24986:3;24927:67;:::i;:::-;24920:74;;25003:93;25092:3;25003:93;:::i;:::-;25121:2;25116:3;25112:12;25105:19;;24764:366;;;:::o;25136:419::-;25302:4;25340:2;25329:9;25325:18;25317:26;;25389:9;25383:4;25379:20;25375:1;25364:9;25360:17;25353:47;25417:131;25543:4;25417:131;:::i;:::-;25409:139;;25136:419;;;:::o;25561:194::-;25601:4;25621:20;25639:1;25621:20;:::i;:::-;25616:25;;25655:20;25673:1;25655:20;:::i;:::-;25650:25;;25699:1;25696;25692:9;25684:17;;25723:1;25717:4;25714:11;25711:37;;;25728:18;;:::i;:::-;25711:37;25561:194;;;;:::o;25761:180::-;25809:77;25806:1;25799:88;25906:4;25903:1;25896:15;25930:4;25927:1;25920:15;25947:180;25995:77;25992:1;25985:88;26092:4;26089:1;26082:15;26116:4;26113:1;26106:15;26133:114;26200:6;26234:5;26228:12;26218:22;;26133:114;;;:::o;26253:184::-;26352:11;26386:6;26381:3;26374:19;26426:4;26421:3;26417:14;26402:29;;26253:184;;;;:::o;26443:132::-;26510:4;26533:3;26525:11;;26563:4;26558:3;26554:14;26546:22;;26443:132;;;:::o;26581:108::-;26658:24;26676:5;26658:24;:::i;:::-;26653:3;26646:37;26581:108;;:::o;26695:179::-;26764:10;26785:46;26827:3;26819:6;26785:46;:::i;:::-;26863:4;26858:3;26854:14;26840:28;;26695:179;;;;:::o;26880:113::-;26950:4;26982;26977:3;26973:14;26965:22;;26880:113;;;:::o;27029:732::-;27148:3;27177:54;27225:5;27177:54;:::i;:::-;27247:86;27326:6;27321:3;27247:86;:::i;:::-;27240:93;;27357:56;27407:5;27357:56;:::i;:::-;27436:7;27467:1;27452:284;27477:6;27474:1;27471:13;27452:284;;;27553:6;27547:13;27580:63;27639:3;27624:13;27580:63;:::i;:::-;27573:70;;27666:60;27719:6;27666:60;:::i;:::-;27656:70;;27512:224;27499:1;27496;27492:9;27487:14;;27452:284;;;27456:14;27752:3;27745:10;;27153:608;;;27029:732;;;;:::o;27767:831::-;28030:4;28068:3;28057:9;28053:19;28045:27;;28082:71;28150:1;28139:9;28135:17;28126:6;28082:71;:::i;:::-;28163:80;28239:2;28228:9;28224:18;28215:6;28163:80;:::i;:::-;28290:9;28284:4;28280:20;28275:2;28264:9;28260:18;28253:48;28318:108;28421:4;28412:6;28318:108;:::i;:::-;28310:116;;28436:72;28504:2;28493:9;28489:18;28480:6;28436:72;:::i;:::-;28518:73;28586:3;28575:9;28571:19;28562:6;28518:73;:::i;:::-;27767:831;;;;;;;;:::o;28604:180::-;28652:77;28649:1;28642:88;28749:4;28746:1;28739:15;28773:4;28770:1;28763:15;28790:185;28830:1;28847:20;28865:1;28847:20;:::i;:::-;28842:25;;28881:20;28899:1;28881:20;:::i;:::-;28876:25;;28920:1;28910:35;;28925:18;;:::i;:::-;28910:35;28967:1;28964;28960:9;28955:14;;28790:185;;;;:::o;28981:220::-;29121:34;29117:1;29109:6;29105:14;29098:58;29190:3;29185:2;29177:6;29173:15;29166:28;28981:220;:::o;29207:366::-;29349:3;29370:67;29434:2;29429:3;29370:67;:::i;:::-;29363:74;;29446:93;29535:3;29446:93;:::i;:::-;29564:2;29559:3;29555:12;29548:19;;29207:366;;;:::o;29579:419::-;29745:4;29783:2;29772:9;29768:18;29760:26;;29832:9;29826:4;29822:20;29818:1;29807:9;29803:17;29796:47;29860:131;29986:4;29860:131;:::i;:::-;29852:139;;29579:419;;;:::o;30004:177::-;30144:29;30140:1;30132:6;30128:14;30121:53;30004:177;:::o;30187:366::-;30329:3;30350:67;30414:2;30409:3;30350:67;:::i;:::-;30343:74;;30426:93;30515:3;30426:93;:::i;:::-;30544:2;30539:3;30535:12;30528:19;;30187:366;;;:::o;30559:419::-;30725:4;30763:2;30752:9;30748:18;30740:26;;30812:9;30806:4;30802:20;30798:1;30787:9;30783:17;30776:47;30840:131;30966:4;30840:131;:::i;:::-;30832:139;;30559:419;;;:::o

Swarm Source

ipfs://6cda695d023a4446e535f02fd855d8f65877fffe711a7a86619bcfa465b49eb6

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.