ETH Price: $3,456.89 (-6.15%)
 

Overview

Max Total Supply

1,000,000,000 HAMA

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 HAMA

Value
$0.00
0xe77ae58b60e5557e6ad8ecf5136f41eba9292bd9
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HAMA

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-23
*/

/*

Twitter: https://twitter.com/hamacoin_eth
Telegram: https://t.me/hamacoinportal
Website: https://www.hamacoin.vip/
*/


// SPDX-License-Identifier: Unlicense

pragma solidity 0.8.10;


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

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 HAMA 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 _buyerMap;
    address payable private _taxWallet;


    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Saluting Frog";
    string private constant _symbol = unicode"HAMA";

    uint256 public feeOnBuying = 25;
    uint256 public feeOnSelling = 25;
    uint256 public maxTxnLimit = (_tTotal * 2) / (100);
    uint256 public maxHoldLimit = (_tTotal * 2) / (100);
    uint256 public maxBuyLimit = maxHoldLimit;
    uint256 public _minTaxSwap = 100000 * 10**_decimals;
    uint256 public _maxTaxSwap = 500000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    address public marketingAddress = 0xaAfcb8F9623D8DB00782b799718fd7565D1CC2A6;

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

    event MaxTxAmountUpdated(uint maxTxnLimit);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = (_tTotal * 1) / (100);
        _balances[marketingAddress] = (_tTotal * 5) / (100);
        _balances[address(this)] = (_tTotal * 94) / (100);

        _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 changeBuyTax(uint256 _fee) external onlyOwner{
        feeOnBuying = _fee;
    }

    function changeSellTax(uint256 _fee) external onlyOwner{
        feeOnSelling = _fee;
    }

    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()) {

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


            taxAmount = amount.mul(feeOnBuying).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= maxTxnLimit, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul(feeOnSelling).div(100);
                require(_buyerMap[from],"Seller is not buyer");
            }

            if(to == uniswapV2Pair && from == address(this) ){
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_minTaxSwap) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        maxTxnLimit = _tTotal;
        maxHoldLimit=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function changeMaxTxnLimit(uint256 _num) external onlyOwner{
        maxTxnLimit = _num;
    }

    function changeMaxHoldLimit(uint256 _num) external onlyOwner{
        maxHoldLimit = _num;
    }

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        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;
    }

    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

    
    
    
}

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":"maxTxnLimit","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":"_minTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"changeMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_num","type":"uint256"}],"name":"changeMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"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":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260196006556019600755606460026012600a620000229190620007c5565b633b9aca0062000033919062000816565b6200003f919062000816565b6200004b9190620008a6565b600855606460026012600a620000629190620007c5565b633b9aca0062000073919062000816565b6200007f919062000816565b6200008b9190620008a6565b600955600954600a556012600a620000a49190620007c5565b620186a0620000b4919062000816565b600b556012600a620000c79190620007c5565b6207a120620000d7919062000816565b600c5573aafcb8f9623d8db00782b799718fd7565d1cc2a6600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055503480156200017257600080fd5b50600062000185620005fa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000233620005fa60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460016012600a620002879190620007c5565b633b9aca0062000298919062000816565b620002a4919062000816565b620002b09190620008a6565b60016000620002c4620005fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606460056012600a620003169190620007c5565b633b9aca0062000327919062000816565b62000333919062000816565b6200033f9190620008a6565b60016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506064605e6012600a620003b89190620007c5565b633b9aca00620003c9919062000816565b620003d5919062000816565b620003e19190620008a6565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200043a6200060260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200056d620005fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005cc9190620007c5565b633b9aca00620005dd919062000816565b604051620005ec9190620008ef565b60405180910390a36200090c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006b9578086048111156200069157620006906200062b565b5b6001851615620006a15780820291505b8081029050620006b1856200065a565b945062000671565b94509492505050565b600082620006d45760019050620007a7565b81620006e45760009050620007a7565b8160018114620006fd576002811462000708576200073e565b6001915050620007a7565b60ff8411156200071d576200071c6200062b565b5b8360020a9150848211156200073757620007366200062b565b5b50620007a7565b5060208310610133831016604e8410600b8410161715620007785782820a9050838111156200077257620007716200062b565b5b620007a7565b62000787848484600162000667565b92509050818404811115620007a157620007a06200062b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007d282620007ae565b9150620007df83620007b8565b92506200080e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c2565b905092915050565b60006200082382620007ae565b91506200083083620007ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200086c576200086b6200062b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008b382620007ae565b9150620008c083620007ae565b925082620008d357620008d262000877565b5b828204905092915050565b620008e981620007ae565b82525050565b6000602082019050620009066000830184620008de565b92915050565b613795806200091c6000396000f3fe6080604052600436106101a05760003560e01c80636b099d6e116100ec5780639a36dfa11161008a578063a9059cbb11610064578063a9059cbb1461057b578063c9567bf9146105b8578063dd62ed3e146105cf578063debae15e1461060c576101a7565b80639a36dfa1146104fc5780639e281a9814610527578063a5ece94114610550576101a7565b8063751039fc116100c6578063751039fc1461046657806377d7f7251461047d5780638da5cb5b146104a657806395d89b41146104d1576101a7565b80636b099d6e146103e957806370a0823114610412578063715018a61461044f576101a7565b80632f9aee38116101595780633aef876d116101335780633aef876d1461035157806351bc3c851461037c578063681aa362146103935780636aa5b37f146103be576101a7565b80632f9aee38146102d0578063300d6217146102fb578063313ce56714610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780630faee56f1461021457806318160ddd1461023f57806323b872dd1461026a57806324c16b7f146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610635565b6040516101ce9190612721565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906127dc565b610672565b60405161020b9190612837565b60405180910390f35b34801561022057600080fd5b50610229610690565b6040516102369190612861565b60405180910390f35b34801561024b57600080fd5b50610254610696565b6040516102619190612861565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c919061287c565b6106ba565b60405161029e9190612837565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906128cf565b610793565b005b3480156102dc57600080fd5b506102e5610832565b6040516102f29190612861565b60405180910390f35b34801561030757600080fd5b50610310610838565b60405161031d9190612861565b60405180910390f35b34801561033257600080fd5b5061033b61083e565b6040516103489190612918565b60405180910390f35b34801561035d57600080fd5b50610366610847565b6040516103739190612861565b60405180910390f35b34801561038857600080fd5b5061039161084d565b005b34801561039f57600080fd5b506103a86108ea565b6040516103b59190612861565b60405180910390f35b3480156103ca57600080fd5b506103d36108f0565b6040516103e09190612861565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906128cf565b6108f6565b005b34801561041e57600080fd5b5061043960048036038101906104349190612933565b610995565b6040516104469190612861565b60405180910390f35b34801561045b57600080fd5b506104646109de565b005b34801561047257600080fd5b5061047b610b31565b005b34801561048957600080fd5b506104a4600480360381019061049f91906128cf565b610c61565b005b3480156104b257600080fd5b506104bb610d00565b6040516104c8919061296f565b60405180910390f35b3480156104dd57600080fd5b506104e6610d29565b6040516104f39190612721565b60405180910390f35b34801561050857600080fd5b50610511610d66565b60405161051e9190612861565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906129c8565b610d6c565b005b34801561055c57600080fd5b50610565610f40565b604051610572919061296f565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906127dc565b610f66565b6040516105af9190612837565b60405180910390f35b3480156105c457600080fd5b506105cd610f84565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612a08565b6114bc565b6040516106039190612861565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906128cf565b611543565b005b60606040518060400160405280600d81526020017f53616c7574696e672046726f6700000000000000000000000000000000000000815250905090565b600061068661067f6115e2565b84846115ea565b6001905092915050565b600c5481565b60006012600a6106a69190612baa565b633b9aca006106b59190612bf5565b905090565b60006106c78484846117b5565b610788846106d36115e2565b6107838560405180606001604052806028815260200161373860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107396115e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212e9092919063ffffffff16565b6115ea565b600190509392505050565b61079b6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f90612c9b565b60405180910390fd5b8060068190555050565b60075481565b600b5481565b60006012905090565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088e6115e2565b73ffffffffffffffffffffffffffffffffffffffff16146108ae57600080fd5b60006108b930610995565b905060008111156108ce576108cd81612192565b5b600047905060008111156108e6576108e581612433565b5b5050565b60085481565b600a5481565b6108fe6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290612c9b565b60405180910390fd5b8060098190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e66115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90612c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b396115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90612c9b565b60405180910390fd5b6012600a610bd49190612baa565b633b9aca00610be39190612bf5565b6008819055506012600a610bf79190612baa565b633b9aca00610c069190612bf5565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610c3b9190612baa565b633b9aca00610c4a9190612bf5565b604051610c579190612861565b60405180910390a1565b610c696115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90612c9b565b60405180910390fd5b8060088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f48414d4100000000000000000000000000000000000000000000000000000000815250905090565b60095481565b610d746115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612c9b565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3b919061296f565b602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190612cd0565b1015610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490612d49565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ef8929190612d69565b6020604051808303816000875af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612dbe565b505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f7a610f736115e2565b84846117b5565b6001905092915050565b610f8c6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090612c9b565b60405180910390fd5b600f60149054906101000a900460ff1615611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612e37565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061110730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6110f39190612baa565b633b9aca006111029190612bf5565b6115ea565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111989190612e6c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190612e6c565b6040518363ffffffff1660e01b8152600401611262929190612e99565b6020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190612e6c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061132e30610995565b600080611339610d00565b426040518863ffffffff1660e01b815260040161135b96959493929190612f07565b60606040518083038185885af1158015611379573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061139e9190612f68565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611440929190612d69565b6020604051808303816000875af115801561145f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114839190612dbe565b506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61154b6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90612c9b565b60405180910390fd5b8060078190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116519061302d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c1906130bf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a89190612861565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90613151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906131e3565b60405180910390fd5b600081116118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90613275565b60405180910390fd5b60006118e2610d00565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119505750611920610d00565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7157600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a005750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a565750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b5157600854821115611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a97906132e1565b60405180910390fd5b60095482611aad85610995565b611ab79190613301565b1115611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906133a3565b60405180910390fd5b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611b796064611b6b6006548561249f90919063ffffffff16565b61251a90919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c0457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d0557600854821115611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906132e1565b60405180910390fd5b611c766064611c686007548561249f90919063ffffffff16565b61251a90919063ffffffff16565b9050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061340f565b60405180910390fd5b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d9757600090505b6000611da230610995565b9050600f60159054906101000a900460ff16158015611e0e5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e265750600f60169054906101000a900460ff165b8015611e335750600b5481115b15611e6f57611e55611e5084611e4b84600c54612564565b612564565b612192565b60004790506000811115611e6d57611e6c47612433565b5b505b505b6000811115611f7557611ecc81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6c9190612861565b60405180910390a35b611fc782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125db90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206e61202082846125db90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61211384866125db90919063ffffffff16565b6040516121209190612861565b60405180910390a350505050565b6000838311158290612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9190612721565b60405180910390fd5b5060008385612185919061342f565b9050809150509392505050565b6001600f60156101000a81548160ff02191690831515021790555060008114156121bb57612415565b600f60149054906101000a900460ff166121d457612415565b6000600267ffffffffffffffff8111156121f1576121f0613463565b5b60405190808252806020026020018201604052801561221f5781602001602082028036833780820191505090505b509050308160008151811061223757612236613492565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190612e6c565b8160018151811061231657612315613492565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061237d30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ea565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123e195949392919061357f565b600060405180830381600087803b1580156123fb57600080fd5b505af115801561240f573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561249b573d6000803e3d6000fd5b5050565b6000808314156124b25760009050612514565b600082846124c09190612bf5565b90508284826124cf9190613608565b1461250f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612506906136ab565b60405180910390fd5b809150505b92915050565b600061255c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612625565b905092915050565b60008183116125735782612575565b815b905092915050565b600080828461258c9190613301565b9050838110156125d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c890613717565b60405180910390fd5b8091505092915050565b600061261d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061212e565b905092915050565b6000808311829061266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126639190612721565b60405180910390fd5b506000838561267b9190613608565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126c25780820151818401526020810190506126a7565b838111156126d1576000848401525b50505050565b6000601f19601f8301169050919050565b60006126f382612688565b6126fd8185612693565b935061270d8185602086016126a4565b612716816126d7565b840191505092915050565b6000602082019050818103600083015261273b81846126e8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061277382612748565b9050919050565b61278381612768565b811461278e57600080fd5b50565b6000813590506127a08161277a565b92915050565b6000819050919050565b6127b9816127a6565b81146127c457600080fd5b50565b6000813590506127d6816127b0565b92915050565b600080604083850312156127f3576127f2612743565b5b600061280185828601612791565b9250506020612812858286016127c7565b9150509250929050565b60008115159050919050565b6128318161281c565b82525050565b600060208201905061284c6000830184612828565b92915050565b61285b816127a6565b82525050565b60006020820190506128766000830184612852565b92915050565b60008060006060848603121561289557612894612743565b5b60006128a386828701612791565b93505060206128b486828701612791565b92505060406128c5868287016127c7565b9150509250925092565b6000602082840312156128e5576128e4612743565b5b60006128f3848285016127c7565b91505092915050565b600060ff82169050919050565b612912816128fc565b82525050565b600060208201905061292d6000830184612909565b92915050565b60006020828403121561294957612948612743565b5b600061295784828501612791565b91505092915050565b61296981612768565b82525050565b60006020820190506129846000830184612960565b92915050565b600061299582612768565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b600080604083850312156129df576129de612743565b5b60006129ed858286016129b3565b92505060206129fe858286016127c7565b9150509250929050565b60008060408385031215612a1f57612a1e612743565b5b6000612a2d85828601612791565b9250506020612a3e85828601612791565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ace57808604811115612aaa57612aa9612a48565b5b6001851615612ab95780820291505b8081029050612ac785612a77565b9450612a8e565b94509492505050565b600082612ae75760019050612ba3565b81612af55760009050612ba3565b8160018114612b0b5760028114612b1557612b44565b6001915050612ba3565b60ff841115612b2757612b26612a48565b5b8360020a915084821115612b3e57612b3d612a48565b5b50612ba3565b5060208310610133831016604e8410600b8410161715612b795782820a905083811115612b7457612b73612a48565b5b612ba3565b612b868484846001612a84565b92509050818404811115612b9d57612b9c612a48565b5b81810290505b9392505050565b6000612bb5826127a6565b9150612bc0836128fc565b9250612bed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ad7565b905092915050565b6000612c00826127a6565b9150612c0b836127a6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c4457612c43612a48565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c85602083612693565b9150612c9082612c4f565b602082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b600081519050612cca816127b0565b92915050565b600060208284031215612ce657612ce5612743565b5b6000612cf484828501612cbb565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000612d33600e83612693565b9150612d3e82612cfd565b602082019050919050565b60006020820190508181036000830152612d6281612d26565b9050919050565b6000604082019050612d7e6000830185612960565b612d8b6020830184612852565b9392505050565b612d9b8161281c565b8114612da657600080fd5b50565b600081519050612db881612d92565b92915050565b600060208284031215612dd457612dd3612743565b5b6000612de284828501612da9565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612e21601783612693565b9150612e2c82612deb565b602082019050919050565b60006020820190508181036000830152612e5081612e14565b9050919050565b600081519050612e668161277a565b92915050565b600060208284031215612e8257612e81612743565b5b6000612e9084828501612e57565b91505092915050565b6000604082019050612eae6000830185612960565b612ebb6020830184612960565b9392505050565b6000819050919050565b6000819050919050565b6000612ef1612eec612ee784612ec2565b612ecc565b6127a6565b9050919050565b612f0181612ed6565b82525050565b600060c082019050612f1c6000830189612960565b612f296020830188612852565b612f366040830187612ef8565b612f436060830186612ef8565b612f506080830185612960565b612f5d60a0830184612852565b979650505050505050565b600080600060608486031215612f8157612f80612743565b5b6000612f8f86828701612cbb565b9350506020612fa086828701612cbb565b9250506040612fb186828701612cbb565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613017602483612693565b915061302282612fbb565b604082019050919050565b600060208201905081810360008301526130468161300a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130a9602283612693565b91506130b48261304d565b604082019050919050565b600060208201905081810360008301526130d88161309c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061313b602583612693565b9150613146826130df565b604082019050919050565b6000602082019050818103600083015261316a8161312e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131cd602383612693565b91506131d882613171565b604082019050919050565b600060208201905081810360008301526131fc816131c0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061325f602983612693565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132cb601983612693565b91506132d682613295565b602082019050919050565b600060208201905081810360008301526132fa816132be565b9050919050565b600061330c826127a6565b9150613317836127a6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561334c5761334b612a48565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061338d601a83612693565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f53656c6c6572206973206e6f7420627579657200000000000000000000000000600082015250565b60006133f9601383612693565b9150613404826133c3565b602082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b600061343a826127a6565b9150613445836127a6565b92508282101561345857613457612a48565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134f681612768565b82525050565b600061350883836134ed565b60208301905092915050565b6000602082019050919050565b600061352c826134c1565b61353681856134cc565b9350613541836134dd565b8060005b8381101561357257815161355988826134fc565b975061356483613514565b925050600181019050613545565b5085935050505092915050565b600060a0820190506135946000830188612852565b6135a16020830187612ef8565b81810360408301526135b38186613521565b90506135c26060830185612960565b6135cf6080830184612852565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613613826127a6565b915061361e836127a6565b92508261362e5761362d6135d9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613695602183612693565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613701601b83612693565b915061370c826136cb565b602082019050919050565b60006020820190508181036000830152613730816136f4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220aafbf9a13467c64442267e8c7ca7112cea2d97b71b23ccf09a9fdaded9e5683564736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80636b099d6e116100ec5780639a36dfa11161008a578063a9059cbb11610064578063a9059cbb1461057b578063c9567bf9146105b8578063dd62ed3e146105cf578063debae15e1461060c576101a7565b80639a36dfa1146104fc5780639e281a9814610527578063a5ece94114610550576101a7565b8063751039fc116100c6578063751039fc1461046657806377d7f7251461047d5780638da5cb5b146104a657806395d89b41146104d1576101a7565b80636b099d6e146103e957806370a0823114610412578063715018a61461044f576101a7565b80632f9aee38116101595780633aef876d116101335780633aef876d1461035157806351bc3c851461037c578063681aa362146103935780636aa5b37f146103be576101a7565b80632f9aee38146102d0578063300d6217146102fb578063313ce56714610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780630faee56f1461021457806318160ddd1461023f57806323b872dd1461026a57806324c16b7f146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610635565b6040516101ce9190612721565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906127dc565b610672565b60405161020b9190612837565b60405180910390f35b34801561022057600080fd5b50610229610690565b6040516102369190612861565b60405180910390f35b34801561024b57600080fd5b50610254610696565b6040516102619190612861565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c919061287c565b6106ba565b60405161029e9190612837565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906128cf565b610793565b005b3480156102dc57600080fd5b506102e5610832565b6040516102f29190612861565b60405180910390f35b34801561030757600080fd5b50610310610838565b60405161031d9190612861565b60405180910390f35b34801561033257600080fd5b5061033b61083e565b6040516103489190612918565b60405180910390f35b34801561035d57600080fd5b50610366610847565b6040516103739190612861565b60405180910390f35b34801561038857600080fd5b5061039161084d565b005b34801561039f57600080fd5b506103a86108ea565b6040516103b59190612861565b60405180910390f35b3480156103ca57600080fd5b506103d36108f0565b6040516103e09190612861565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b91906128cf565b6108f6565b005b34801561041e57600080fd5b5061043960048036038101906104349190612933565b610995565b6040516104469190612861565b60405180910390f35b34801561045b57600080fd5b506104646109de565b005b34801561047257600080fd5b5061047b610b31565b005b34801561048957600080fd5b506104a4600480360381019061049f91906128cf565b610c61565b005b3480156104b257600080fd5b506104bb610d00565b6040516104c8919061296f565b60405180910390f35b3480156104dd57600080fd5b506104e6610d29565b6040516104f39190612721565b60405180910390f35b34801561050857600080fd5b50610511610d66565b60405161051e9190612861565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906129c8565b610d6c565b005b34801561055c57600080fd5b50610565610f40565b604051610572919061296f565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906127dc565b610f66565b6040516105af9190612837565b60405180910390f35b3480156105c457600080fd5b506105cd610f84565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612a08565b6114bc565b6040516106039190612861565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906128cf565b611543565b005b60606040518060400160405280600d81526020017f53616c7574696e672046726f6700000000000000000000000000000000000000815250905090565b600061068661067f6115e2565b84846115ea565b6001905092915050565b600c5481565b60006012600a6106a69190612baa565b633b9aca006106b59190612bf5565b905090565b60006106c78484846117b5565b610788846106d36115e2565b6107838560405180606001604052806028815260200161373860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107396115e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212e9092919063ffffffff16565b6115ea565b600190509392505050565b61079b6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f90612c9b565b60405180910390fd5b8060068190555050565b60075481565b600b5481565b60006012905090565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088e6115e2565b73ffffffffffffffffffffffffffffffffffffffff16146108ae57600080fd5b60006108b930610995565b905060008111156108ce576108cd81612192565b5b600047905060008111156108e6576108e581612433565b5b5050565b60085481565b600a5481565b6108fe6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290612c9b565b60405180910390fd5b8060098190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e66115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90612c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b396115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90612c9b565b60405180910390fd5b6012600a610bd49190612baa565b633b9aca00610be39190612bf5565b6008819055506012600a610bf79190612baa565b633b9aca00610c069190612bf5565b6009819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610c3b9190612baa565b633b9aca00610c4a9190612bf5565b604051610c579190612861565b60405180910390a1565b610c696115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90612c9b565b60405180910390fd5b8060088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f48414d4100000000000000000000000000000000000000000000000000000000815250905090565b60095481565b610d746115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612c9b565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3b919061296f565b602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190612cd0565b1015610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490612d49565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ef8929190612d69565b6020604051808303816000875af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612dbe565b505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f7a610f736115e2565b84846117b5565b6001905092915050565b610f8c6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090612c9b565b60405180910390fd5b600f60149054906101000a900460ff1615611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090612e37565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061110730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6110f39190612baa565b633b9aca006111029190612bf5565b6115ea565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111989190612e6c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190612e6c565b6040518363ffffffff1660e01b8152600401611262929190612e99565b6020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190612e6c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061132e30610995565b600080611339610d00565b426040518863ffffffff1660e01b815260040161135b96959493929190612f07565b60606040518083038185885af1158015611379573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061139e9190612f68565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611440929190612d69565b6020604051808303816000875af115801561145f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114839190612dbe565b506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61154b6115e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90612c9b565b60405180910390fd5b8060078190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116519061302d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c1906130bf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a89190612861565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90613151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906131e3565b60405180910390fd5b600081116118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90613275565b60405180910390fd5b60006118e2610d00565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119505750611920610d00565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7157600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a005750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a565750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b5157600854821115611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a97906132e1565b60405180910390fd5b60095482611aad85610995565b611ab79190613301565b1115611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906133a3565b60405180910390fd5b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611b796064611b6b6006548561249f90919063ffffffff16565b61251a90919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c0457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d0557600854821115611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906132e1565b60405180910390fd5b611c766064611c686007548561249f90919063ffffffff16565b61251a90919063ffffffff16565b9050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061340f565b60405180910390fd5b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d9757600090505b6000611da230610995565b9050600f60159054906101000a900460ff16158015611e0e5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e265750600f60169054906101000a900460ff165b8015611e335750600b5481115b15611e6f57611e55611e5084611e4b84600c54612564565b612564565b612192565b60004790506000811115611e6d57611e6c47612433565b5b505b505b6000811115611f7557611ecc81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6c9190612861565b60405180910390a35b611fc782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125db90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206e61202082846125db90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61211384866125db90919063ffffffff16565b6040516121209190612861565b60405180910390a350505050565b6000838311158290612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9190612721565b60405180910390fd5b5060008385612185919061342f565b9050809150509392505050565b6001600f60156101000a81548160ff02191690831515021790555060008114156121bb57612415565b600f60149054906101000a900460ff166121d457612415565b6000600267ffffffffffffffff8111156121f1576121f0613463565b5b60405190808252806020026020018201604052801561221f5781602001602082028036833780820191505090505b509050308160008151811061223757612236613492565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190612e6c565b8160018151811061231657612315613492565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061237d30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ea565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123e195949392919061357f565b600060405180830381600087803b1580156123fb57600080fd5b505af115801561240f573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561249b573d6000803e3d6000fd5b5050565b6000808314156124b25760009050612514565b600082846124c09190612bf5565b90508284826124cf9190613608565b1461250f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612506906136ab565b60405180910390fd5b809150505b92915050565b600061255c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612625565b905092915050565b60008183116125735782612575565b815b905092915050565b600080828461258c9190613301565b9050838110156125d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c890613717565b60405180910390fd5b8091505092915050565b600061261d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061212e565b905092915050565b6000808311829061266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126639190612721565b60405180910390fd5b506000838561267b9190613608565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126c25780820151818401526020810190506126a7565b838111156126d1576000848401525b50505050565b6000601f19601f8301169050919050565b60006126f382612688565b6126fd8185612693565b935061270d8185602086016126a4565b612716816126d7565b840191505092915050565b6000602082019050818103600083015261273b81846126e8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061277382612748565b9050919050565b61278381612768565b811461278e57600080fd5b50565b6000813590506127a08161277a565b92915050565b6000819050919050565b6127b9816127a6565b81146127c457600080fd5b50565b6000813590506127d6816127b0565b92915050565b600080604083850312156127f3576127f2612743565b5b600061280185828601612791565b9250506020612812858286016127c7565b9150509250929050565b60008115159050919050565b6128318161281c565b82525050565b600060208201905061284c6000830184612828565b92915050565b61285b816127a6565b82525050565b60006020820190506128766000830184612852565b92915050565b60008060006060848603121561289557612894612743565b5b60006128a386828701612791565b93505060206128b486828701612791565b92505060406128c5868287016127c7565b9150509250925092565b6000602082840312156128e5576128e4612743565b5b60006128f3848285016127c7565b91505092915050565b600060ff82169050919050565b612912816128fc565b82525050565b600060208201905061292d6000830184612909565b92915050565b60006020828403121561294957612948612743565b5b600061295784828501612791565b91505092915050565b61296981612768565b82525050565b60006020820190506129846000830184612960565b92915050565b600061299582612768565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b600080604083850312156129df576129de612743565b5b60006129ed858286016129b3565b92505060206129fe858286016127c7565b9150509250929050565b60008060408385031215612a1f57612a1e612743565b5b6000612a2d85828601612791565b9250506020612a3e85828601612791565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ace57808604811115612aaa57612aa9612a48565b5b6001851615612ab95780820291505b8081029050612ac785612a77565b9450612a8e565b94509492505050565b600082612ae75760019050612ba3565b81612af55760009050612ba3565b8160018114612b0b5760028114612b1557612b44565b6001915050612ba3565b60ff841115612b2757612b26612a48565b5b8360020a915084821115612b3e57612b3d612a48565b5b50612ba3565b5060208310610133831016604e8410600b8410161715612b795782820a905083811115612b7457612b73612a48565b5b612ba3565b612b868484846001612a84565b92509050818404811115612b9d57612b9c612a48565b5b81810290505b9392505050565b6000612bb5826127a6565b9150612bc0836128fc565b9250612bed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ad7565b905092915050565b6000612c00826127a6565b9150612c0b836127a6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c4457612c43612a48565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c85602083612693565b9150612c9082612c4f565b602082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b600081519050612cca816127b0565b92915050565b600060208284031215612ce657612ce5612743565b5b6000612cf484828501612cbb565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000612d33600e83612693565b9150612d3e82612cfd565b602082019050919050565b60006020820190508181036000830152612d6281612d26565b9050919050565b6000604082019050612d7e6000830185612960565b612d8b6020830184612852565b9392505050565b612d9b8161281c565b8114612da657600080fd5b50565b600081519050612db881612d92565b92915050565b600060208284031215612dd457612dd3612743565b5b6000612de284828501612da9565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612e21601783612693565b9150612e2c82612deb565b602082019050919050565b60006020820190508181036000830152612e5081612e14565b9050919050565b600081519050612e668161277a565b92915050565b600060208284031215612e8257612e81612743565b5b6000612e9084828501612e57565b91505092915050565b6000604082019050612eae6000830185612960565b612ebb6020830184612960565b9392505050565b6000819050919050565b6000819050919050565b6000612ef1612eec612ee784612ec2565b612ecc565b6127a6565b9050919050565b612f0181612ed6565b82525050565b600060c082019050612f1c6000830189612960565b612f296020830188612852565b612f366040830187612ef8565b612f436060830186612ef8565b612f506080830185612960565b612f5d60a0830184612852565b979650505050505050565b600080600060608486031215612f8157612f80612743565b5b6000612f8f86828701612cbb565b9350506020612fa086828701612cbb565b9250506040612fb186828701612cbb565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613017602483612693565b915061302282612fbb565b604082019050919050565b600060208201905081810360008301526130468161300a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130a9602283612693565b91506130b48261304d565b604082019050919050565b600060208201905081810360008301526130d88161309c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061313b602583612693565b9150613146826130df565b604082019050919050565b6000602082019050818103600083015261316a8161312e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131cd602383612693565b91506131d882613171565b604082019050919050565b600060208201905081810360008301526131fc816131c0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061325f602983612693565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132cb601983612693565b91506132d682613295565b602082019050919050565b600060208201905081810360008301526132fa816132be565b9050919050565b600061330c826127a6565b9150613317836127a6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561334c5761334b612a48565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061338d601a83612693565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f53656c6c6572206973206e6f7420627579657200000000000000000000000000600082015250565b60006133f9601383612693565b9150613404826133c3565b602082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b600061343a826127a6565b9150613445836127a6565b92508282101561345857613457612a48565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134f681612768565b82525050565b600061350883836134ed565b60208301905092915050565b6000602082019050919050565b600061352c826134c1565b61353681856134cc565b9350613541836134dd565b8060005b8381101561357257815161355988826134fc565b975061356483613514565b925050600181019050613545565b5085935050505092915050565b600060a0820190506135946000830188612852565b6135a16020830187612ef8565b81810360408301526135b38186613521565b90506135c26060830185612960565b6135cf6080830184612852565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613613826127a6565b915061361e836127a6565b92508261362e5761362d6135d9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613695602183612693565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613701601b83612693565b915061370c826136cb565b602082019050919050565b60006020820190508181036000830152613730816136f4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220aafbf9a13467c64442267e8c7ca7112cea2d97b71b23ccf09a9fdaded9e5683564736f6c634300080a0033

Deployed Bytecode Sourcemap

3613:8370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5451:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6284:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5728:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6653:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6453:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4245:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4447:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5637:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4207:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11612:348;;;;;;;;;;;;;:::i;:::-;;4284:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4399:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10270:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5831:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2694:148;;;;;;;;;;;;;:::i;:::-;;10002:156;;;;;;;;;;;;;:::i;:::-;;10166:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2480:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5542:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4341:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11155:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4650:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5958:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10476:671;;;;;;;;;;;;;:::i;:::-;;6133:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6552:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5451:83;5488:13;5521:5;;;;;;;;;;;;;;;;;5514:12;;5451:83;:::o;6284:161::-;6359:4;6376:39;6385:12;:10;:12::i;:::-;6399:7;6408:6;6376:8;:39::i;:::-;6433:4;6426:11;;6284:161;;;;:::o;4505:51::-;;;;:::o;5728:95::-;5781:7;4013:2;4070;:13;;;;:::i;:::-;4057:10;:26;;;;:::i;:::-;5801:14;;5728:95;:::o;6653:313::-;6751:4;6768:36;6778:6;6786:9;6797:6;6768:9;:36::i;:::-;6815:121;6824:6;6832:12;:10;:12::i;:::-;6846:89;6884:6;6846:89;;;;;;;;;;;;;;;;;:11;:19;6858:6;6846:19;;;;;;;;;;;;;;;:33;6866:12;:10;:12::i;:::-;6846:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6815:8;:121::i;:::-;6954:4;6947:11;;6653:313;;;;;:::o;6453:91::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6532:4:::1;6518:11;:18;;;;6453:91:::0;:::o;4245:32::-;;;;:::o;4447:51::-;;;;:::o;5637:83::-;5678:5;4013:2;5696:16;;5637:83;:::o;4207:31::-;;;;:::o;11612:348::-;11676:10;;;;;;;;;;;11662:24;;:12;:10;:12::i;:::-;:24;;;11654:33;;;;;;11698:20;11719:24;11737:4;11719:9;:24::i;:::-;11698:45;;11770:1;11757:12;:14;11754:73;;;11785:30;11802:12;11785:16;:30::i;:::-;11754:73;11837:18;11856:21;11837:40;;11902:1;11891:10;:12;11888:65;;;11917:24;11930:10;11917:12;:24::i;:::-;11888:65;11643:317;;11612:348::o;4284:50::-;;;;:::o;4399:41::-;;;;:::o;10270:98::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10356:4:::1;10341:12;:19;;;;10270:98:::0;:::o;5831:119::-;5897:7;5924:9;:18;5934:7;5924:18;;;;;;;;;;;;;;;;5917:25;;5831:119;;;:::o;2694:148::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2801:1:::1;2764:40;;2785:6;::::0;::::1;;;;;;;;2764:40;;;;;;;;;;;;2832:1;2815:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2694:148::o:0;10002:156::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4013:2:::1;4070;:13;;;;:::i;:::-;4057:10;:26;;;;:::i;:::-;10055:11;:21;;;;4013:2;4070;:13;;;;:::i;:::-;4057:10;:26;;;;:::i;:::-;10087:12;:20;;;;10123:27;4013:2;4070;:13;;;;:::i;:::-;4057:10;:26;;;;:::i;:::-;10123:27;;;;;;:::i;:::-;;;;;;;;10002:156::o:0;10166:96::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10250:4:::1;10236:11;:18;;;;10166:96:::0;:::o;2480:79::-;2518:7;2545:6;;;;;;;;;;;2538:13;;2480:79;:::o;5542:87::-;5581:13;5614:7;;;;;;;;;;;;;;;;;5607:14;;5542:87;:::o;4341:51::-;;;;:::o;11155:209::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11283:7:::1;11248:6;:16;;;11273:4;11248:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;11240:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11320:6;:15;;;11336:10;11348:7;11320:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11155:209:::0;;:::o;4650:76::-;;;;;;;;;;;;;:::o;5958:167::-;6036:4;6053:42;6063:12;:10;:12::i;:::-;6077:9;6088:6;6053:9;:42::i;:::-;6113:4;6106:11;;5958:167;;;;:::o;10476:671::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10540:11:::1;;;;;;;;;;;10539:12;10531:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10626:42;10589:15;;:80;;;;;;;;;;;;;;;;;;10680:58;10697:4;10712:15;;;;;;;;;;;4013:2;4070;:13;;;;:::i;:::-;4057:10;:26;;;;:::i;:::-;10680:8;:58::i;:::-;10783:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10765:55;;;10829:4;10836:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10765:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10749:13;;:110;;;;;;;;;;;;;;;;;;10870:15;;;;;;;;;;;:31;;;10909:21;10940:4;10946:24;10964:4;10946:9;:24::i;:::-;10971:1;10973::::0;10975:7:::1;:5;:7::i;:::-;10983:15;10870:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11017:13;;;;;;;;;;;11010:29;;;11048:15;;;;;;;;;;;11066:14;11010:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11106:4;11092:11;;:18;;;;;;;;;;;;;;;;;;11135:4;11121:11;;:18;;;;;;;;;;;;;;;;;;10476:671::o:0;6133:143::-;6214:7;6241:11;:18;6253:5;6241:18;;;;;;;;;;;;;;;:27;6260:7;6241:27;;;;;;;;;;;;;;;;6234:34;;6133:143;;;;:::o;6552:93::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6633:4:::1;6618:12;:19;;;;6552:93:::0;:::o;235:98::-;288:7;315:10;308:17;;235:98;:::o;6974:335::-;7084:1;7067:19;;:5;:19;;;;7059:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7165:1;7146:21;;:7;:21;;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7247:6;7217:11;:18;7229:5;7217:18;;;;;;;;;;;;;;;:27;7236:7;7217:27;;;;;;;;;;;;;;;:36;;;;7285:7;7269:32;;7278:5;7269:32;;;7294:6;7269:32;;;;;;:::i;:::-;;;;;;;;6974:335;;;:::o;7317:2006::-;7421:1;7405:18;;:4;:18;;;;7397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7498:1;7484:16;;:2;:16;;;;7476:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7568:1;7559:6;:10;7551:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7626:17;7668:7;:5;:7::i;:::-;7660:15;;:4;:15;;;;:32;;;;;7685:7;:5;:7::i;:::-;7679:13;;:2;:13;;;;7660:32;7656:1311;;;7723:13;;;;;;;;;;;7715:21;;:4;:21;;;:55;;;;;7754:15;;;;;;;;;;;7740:30;;:2;:30;;;;7715:55;:83;;;;;7776:18;:22;7795:2;7776:22;;;;;;;;;;;;;;;;;;;;;;;;;7774:24;7715:83;7711:317;;;7838:11;;7828:6;:21;;7820:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7932:12;;7922:6;7906:13;7916:2;7906:9;:13::i;:::-;:22;;;;:::i;:::-;:38;;7898:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8008:4;7994:9;:13;8004:2;7994:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;7711:317;8058:32;8086:3;8058:23;8069:11;;8058:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;8046:44;;8114:13;;;;;;;;;;;8108:19;;:2;:19;;;:43;;;;;8146:4;8131:20;;:4;:20;;;;8108:43;8105:271;;;8190:11;;8180:6;:21;;8172:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8262:33;8291:3;8262:24;8273:12;;8262:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8250:45;;8322:9;:15;8332:4;8322:15;;;;;;;;;;;;;;;;;;;;;;;;;8314:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8105:271;8401:13;;;;;;;;;;;8395:19;;:2;:19;;;:44;;;;;8434:4;8418:21;;:4;:21;;;8395:44;8392:97;;;8472:1;8460:13;;8392:97;8505:28;8536:24;8554:4;8536:9;:24::i;:::-;8505:55;;8580:6;;;;;;;;;;;8579:7;:30;;;;;8596:13;;;;;;;;;;;8590:19;;:2;:19;;;8579:30;:45;;;;;8613:11;;;;;;;;;;;8579:45;:81;;;;;8649:11;;8628:20;:32;8579:81;8575:381;;;8681:67;8698:49;8702:6;8709:37;8713:20;8734:11;;8709:3;:37::i;:::-;8698:3;:49::i;:::-;8681:16;:67::i;:::-;8767:26;8796:21;8767:50;;8860:1;8839:18;:22;8836:105;;;8886:35;8899:21;8886:12;:35::i;:::-;8836:105;8662:294;8575:381;7694:1273;7656:1311;8992:1;8982:9;:11;8979:161;;;9032:39;9061:9;9032;:24;9050:4;9032:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9007:9;:24;9025:4;9007:24;;;;;;;;;;;;;;;:64;;;;9112:4;9089:39;;9098:4;9089:39;;;9118:9;9089:39;;;;;;:::i;:::-;;;;;;;;8979:161;9166:27;9186:6;9166:9;:15;9176:4;9166:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9150:9;:15;9160:4;9150:15;;;;;;;;;;;;;;;:43;;;;9218:40;9236:21;9247:9;9236:6;:10;;:21;;;;:::i;:::-;9218:9;:13;9228:2;9218:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9204:9;:13;9214:2;9204:13;;;;;;;;;;;;;;;:54;;;;9289:2;9274:41;;9283:4;9274:41;;;9293:21;9304:9;9293:6;:10;;:21;;;;:::i;:::-;9274:41;;;;;;:::i;:::-;;;;;;;;7386:1937;7317:2006;;;:::o;1372:190::-;1458:7;1491:1;1486;:6;;1494:12;1478:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1518:9;1534:1;1530;:5;;;;:::i;:::-;1518:17;;1553:1;1546:8;;;1372:190;;;;;:::o;9439:555::-;4931:4;4922:6;;:13;;;;;;;;;;;;;;;;;;9533:1:::1;9520:11;:14;9517:27;;;9536:7;;9517:27;9558:11;;;;;;;;;;;9554:25;;9571:7;;9554:25;9589:21;9627:1;9613:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9589:40;;9658:4;9640;9645:1;9640:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9684:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9674:4;9679:1;9674:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9717:62;9734:4;9749:15;;;;;;;;;;;9767:11;9717:8;:62::i;:::-;9790:15;;;;;;;;;;;:66;;;9871:11;9897:1;9913:4;9940;9960:15;9790:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9506:488;4946:1;4967:5:::0;4958:6;;:14;;;;;;;;;;;;;;;;;;9439:555;:::o;10376:92::-;10433:10;;;;;;;;;;;:19;;:27;10453:6;10433:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10376:92;:::o;1570:246::-;1628:7;1657:1;1652;:6;1648:47;;;1682:1;1675:8;;;;1648:47;1705:9;1721:1;1717;:5;;;;:::i;:::-;1705:17;;1750:1;1745;1741;:5;;;;:::i;:::-;:10;1733:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1807:1;1800:8;;;1570:246;;;;;:::o;1824:132::-;1882:7;1909:39;1913:1;1916;1909:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1902:46;;1824:132;;;;:::o;9333:98::-;9390:7;9417:1;9415;:3;9414:9;;9422:1;9414:9;;;9420:1;9414:9;9407:16;;9333:98;;;;:::o;1041:179::-;1099:7;1119:9;1135:1;1131;:5;;;;:::i;:::-;1119:17;;1160:1;1155;:6;;1147:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1211:1;1204:8;;;1041:179;;;;:::o;1228:136::-;1286:7;1313:43;1317:1;1320;1313:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1306:50;;1228:136;;;;:::o;1964:189::-;2050:7;2082:1;2078;:5;2085:12;2070:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2109:9;2125:1;2121;:5;;;;:::i;:::-;2109:17;;2144:1;2137:8;;;1964: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:329::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:109::-;5973:7;6002:24;6020:5;6002:24;:::i;:::-;5991:35;;5923:109;;;:::o;6038:148::-;6124:37;6155:5;6124:37;:::i;:::-;6117:5;6114:48;6104:76;;6176:1;6173;6166:12;6104:76;6038:148;:::o;6192:165::-;6251:5;6289:6;6276:20;6267:29;;6305:46;6345:5;6305:46;:::i;:::-;6192:165;;;;:::o;6363:500::-;6444:6;6452;6501:2;6489:9;6480:7;6476:23;6472:32;6469:119;;;6507:79;;:::i;:::-;6469:119;6627:1;6652:66;6710:7;6701:6;6690:9;6686:22;6652:66;:::i;:::-;6642:76;;6598:130;6767:2;6793:53;6838:7;6829:6;6818:9;6814:22;6793:53;:::i;:::-;6783:63;;6738:118;6363:500;;;;;:::o;6869:474::-;6937:6;6945;6994:2;6982:9;6973:7;6969:23;6965:32;6962:119;;;7000:79;;:::i;:::-;6962:119;7120:1;7145:53;7190:7;7181:6;7170:9;7166:22;7145:53;:::i;:::-;7135:63;;7091:117;7247:2;7273:53;7318:7;7309:6;7298:9;7294:22;7273:53;:::i;:::-;7263:63;;7218:118;6869:474;;;;;:::o;7349:180::-;7397:77;7394:1;7387:88;7494:4;7491:1;7484:15;7518:4;7515:1;7508:15;7535:102;7577:8;7624:5;7621:1;7617:13;7596:34;;7535:102;;;:::o;7643:848::-;7704:5;7711:4;7735:6;7726:15;;7759:5;7750:14;;7773:712;7794:1;7784:8;7781:15;7773:712;;;7889:4;7884:3;7880:14;7874:4;7871:24;7868:50;;;7898:18;;:::i;:::-;7868:50;7948:1;7938:8;7934:16;7931:451;;;8363:4;8356:5;8352:16;8343:25;;7931:451;8413:4;8407;8403:15;8395:23;;8443:32;8466:8;8443:32;:::i;:::-;8431:44;;7773:712;;;7643:848;;;;;;;:::o;8497:1073::-;8551:5;8742:8;8732:40;;8763:1;8754:10;;8765:5;;8732:40;8791:4;8781:36;;8808:1;8799:10;;8810:5;;8781:36;8877:4;8925:1;8920:27;;;;8961:1;8956:191;;;;8870:277;;8920:27;8938:1;8929:10;;8940:5;;;8956:191;9001:3;8991:8;8988:17;8985:43;;;9008:18;;:::i;:::-;8985:43;9057:8;9054:1;9050:16;9041:25;;9092:3;9085:5;9082:14;9079:40;;;9099:18;;:::i;:::-;9079:40;9132:5;;;8870:277;;9256:2;9246:8;9243:16;9237:3;9231:4;9228:13;9224:36;9206:2;9196:8;9193:16;9188:2;9182:4;9179:12;9175:35;9159:111;9156:246;;;9312:8;9306:4;9302:19;9293:28;;9347:3;9340:5;9337:14;9334:40;;;9354:18;;:::i;:::-;9334:40;9387:5;;9156:246;9427:42;9465:3;9455:8;9449:4;9446:1;9427:42;:::i;:::-;9412:57;;;;9501:4;9496:3;9492:14;9485:5;9482:25;9479:51;;;9510:18;;:::i;:::-;9479:51;9559:4;9552:5;9548:16;9539:25;;8497:1073;;;;;;:::o;9576:281::-;9634:5;9658:23;9676:4;9658:23;:::i;:::-;9650:31;;9702:25;9718:8;9702:25;:::i;:::-;9690:37;;9746:104;9783:66;9773:8;9767:4;9746:104;:::i;:::-;9737:113;;9576:281;;;;:::o;9863:348::-;9903:7;9926:20;9944:1;9926:20;:::i;:::-;9921:25;;9960:20;9978:1;9960:20;:::i;:::-;9955:25;;10148:1;10080:66;10076:74;10073:1;10070:81;10065:1;10058:9;10051:17;10047:105;10044:131;;;10155:18;;:::i;:::-;10044:131;10203:1;10200;10196:9;10185:20;;9863:348;;;;:::o;10217:182::-;10357:34;10353:1;10345:6;10341:14;10334:58;10217:182;:::o;10405:366::-;10547:3;10568:67;10632:2;10627:3;10568:67;:::i;:::-;10561:74;;10644:93;10733:3;10644:93;:::i;:::-;10762:2;10757:3;10753:12;10746:19;;10405:366;;;:::o;10777:419::-;10943:4;10981:2;10970:9;10966:18;10958:26;;11030:9;11024:4;11020:20;11016:1;11005:9;11001:17;10994:47;11058:131;11184:4;11058:131;:::i;:::-;11050:139;;10777:419;;;:::o;11202:143::-;11259:5;11290:6;11284:13;11275:22;;11306:33;11333:5;11306:33;:::i;:::-;11202:143;;;;:::o;11351:351::-;11421:6;11470:2;11458:9;11449:7;11445:23;11441:32;11438:119;;;11476:79;;:::i;:::-;11438:119;11596:1;11621:64;11677:7;11668:6;11657:9;11653:22;11621:64;:::i;:::-;11611:74;;11567:128;11351:351;;;;:::o;11708:164::-;11848:16;11844:1;11836:6;11832:14;11825:40;11708:164;:::o;11878:366::-;12020:3;12041:67;12105:2;12100:3;12041:67;:::i;:::-;12034:74;;12117:93;12206:3;12117:93;:::i;:::-;12235:2;12230:3;12226:12;12219:19;;11878:366;;;:::o;12250:419::-;12416:4;12454:2;12443:9;12439:18;12431:26;;12503:9;12497:4;12493:20;12489:1;12478:9;12474:17;12467:47;12531:131;12657:4;12531:131;:::i;:::-;12523:139;;12250:419;;;:::o;12675:332::-;12796:4;12834:2;12823:9;12819:18;12811:26;;12847:71;12915:1;12904:9;12900:17;12891:6;12847:71;:::i;:::-;12928:72;12996:2;12985:9;12981:18;12972:6;12928:72;:::i;:::-;12675:332;;;;;:::o;13013:116::-;13083:21;13098:5;13083:21;:::i;:::-;13076:5;13073:32;13063:60;;13119:1;13116;13109:12;13063:60;13013:116;:::o;13135:137::-;13189:5;13220:6;13214:13;13205:22;;13236:30;13260:5;13236:30;:::i;:::-;13135:137;;;;:::o;13278:345::-;13345:6;13394:2;13382:9;13373:7;13369:23;13365:32;13362:119;;;13400:79;;:::i;:::-;13362:119;13520:1;13545:61;13598:7;13589:6;13578:9;13574:22;13545:61;:::i;:::-;13535:71;;13491:125;13278:345;;;;:::o;13629:173::-;13769:25;13765:1;13757:6;13753:14;13746:49;13629:173;:::o;13808:366::-;13950:3;13971:67;14035:2;14030:3;13971:67;:::i;:::-;13964:74;;14047:93;14136:3;14047:93;:::i;:::-;14165:2;14160:3;14156:12;14149:19;;13808:366;;;:::o;14180:419::-;14346:4;14384:2;14373:9;14369:18;14361:26;;14433:9;14427:4;14423:20;14419:1;14408:9;14404:17;14397:47;14461:131;14587:4;14461:131;:::i;:::-;14453:139;;14180:419;;;:::o;14605:143::-;14662:5;14693:6;14687:13;14678:22;;14709:33;14736:5;14709:33;:::i;:::-;14605:143;;;;:::o;14754:351::-;14824:6;14873:2;14861:9;14852:7;14848:23;14844:32;14841:119;;;14879:79;;:::i;:::-;14841:119;14999:1;15024:64;15080:7;15071:6;15060:9;15056:22;15024:64;:::i;:::-;15014:74;;14970:128;14754:351;;;;:::o;15111:332::-;15232:4;15270:2;15259:9;15255:18;15247:26;;15283:71;15351:1;15340:9;15336:17;15327:6;15283:71;:::i;:::-;15364:72;15432:2;15421:9;15417:18;15408:6;15364:72;:::i;:::-;15111:332;;;;;:::o;15449:85::-;15494:7;15523:5;15512:16;;15449:85;;;:::o;15540:60::-;15568:3;15589:5;15582:12;;15540:60;;;:::o;15606:158::-;15664:9;15697:61;15715:42;15724:32;15750:5;15724:32;:::i;:::-;15715:42;:::i;:::-;15697:61;:::i;:::-;15684:74;;15606:158;;;:::o;15770:147::-;15865:45;15904:5;15865:45;:::i;:::-;15860:3;15853:58;15770:147;;:::o;15923:807::-;16172:4;16210:3;16199:9;16195:19;16187:27;;16224:71;16292:1;16281:9;16277:17;16268:6;16224:71;:::i;:::-;16305:72;16373:2;16362:9;16358:18;16349:6;16305:72;:::i;:::-;16387:80;16463:2;16452:9;16448:18;16439:6;16387:80;:::i;:::-;16477;16553:2;16542:9;16538:18;16529:6;16477:80;:::i;:::-;16567:73;16635:3;16624:9;16620:19;16611:6;16567:73;:::i;:::-;16650;16718:3;16707:9;16703:19;16694:6;16650:73;:::i;:::-;15923:807;;;;;;;;;:::o;16736:663::-;16824:6;16832;16840;16889:2;16877:9;16868:7;16864:23;16860:32;16857:119;;;16895:79;;:::i;:::-;16857:119;17015:1;17040:64;17096:7;17087:6;17076:9;17072:22;17040:64;:::i;:::-;17030:74;;16986:128;17153:2;17179:64;17235:7;17226:6;17215:9;17211:22;17179:64;:::i;:::-;17169:74;;17124:129;17292:2;17318:64;17374:7;17365:6;17354:9;17350:22;17318:64;:::i;:::-;17308:74;;17263:129;16736:663;;;;;:::o;17405:223::-;17545:34;17541:1;17533:6;17529:14;17522:58;17614:6;17609:2;17601:6;17597:15;17590:31;17405:223;:::o;17634:366::-;17776:3;17797:67;17861:2;17856:3;17797:67;:::i;:::-;17790:74;;17873:93;17962:3;17873:93;:::i;:::-;17991:2;17986:3;17982:12;17975:19;;17634:366;;;:::o;18006:419::-;18172:4;18210:2;18199:9;18195:18;18187:26;;18259:9;18253:4;18249:20;18245:1;18234:9;18230:17;18223:47;18287:131;18413:4;18287:131;:::i;:::-;18279:139;;18006:419;;;:::o;18431:221::-;18571:34;18567:1;18559:6;18555:14;18548:58;18640:4;18635:2;18627:6;18623:15;18616:29;18431:221;:::o;18658:366::-;18800:3;18821:67;18885:2;18880:3;18821:67;:::i;:::-;18814:74;;18897:93;18986:3;18897:93;:::i;:::-;19015:2;19010:3;19006:12;18999:19;;18658:366;;;:::o;19030:419::-;19196:4;19234:2;19223:9;19219:18;19211:26;;19283:9;19277:4;19273:20;19269:1;19258:9;19254:17;19247:47;19311:131;19437:4;19311:131;:::i;:::-;19303:139;;19030:419;;;:::o;19455:224::-;19595:34;19591:1;19583:6;19579:14;19572:58;19664:7;19659:2;19651:6;19647:15;19640:32;19455:224;:::o;19685:366::-;19827:3;19848:67;19912:2;19907:3;19848:67;:::i;:::-;19841:74;;19924:93;20013:3;19924:93;:::i;:::-;20042:2;20037:3;20033:12;20026:19;;19685:366;;;:::o;20057:419::-;20223:4;20261:2;20250:9;20246:18;20238:26;;20310:9;20304:4;20300:20;20296:1;20285:9;20281:17;20274:47;20338:131;20464:4;20338:131;:::i;:::-;20330:139;;20057:419;;;:::o;20482:222::-;20622:34;20618:1;20610:6;20606:14;20599:58;20691:5;20686:2;20678:6;20674:15;20667:30;20482:222;:::o;20710:366::-;20852:3;20873:67;20937:2;20932:3;20873:67;:::i;:::-;20866:74;;20949:93;21038:3;20949:93;:::i;:::-;21067:2;21062:3;21058:12;21051:19;;20710:366;;;:::o;21082:419::-;21248:4;21286:2;21275:9;21271:18;21263:26;;21335:9;21329:4;21325:20;21321:1;21310:9;21306:17;21299:47;21363:131;21489:4;21363:131;:::i;:::-;21355:139;;21082:419;;;:::o;21507:228::-;21647:34;21643:1;21635:6;21631:14;21624:58;21716:11;21711:2;21703:6;21699:15;21692:36;21507:228;:::o;21741:366::-;21883:3;21904:67;21968:2;21963:3;21904:67;:::i;:::-;21897:74;;21980:93;22069:3;21980:93;:::i;:::-;22098:2;22093:3;22089:12;22082:19;;21741:366;;;:::o;22113:419::-;22279:4;22317:2;22306:9;22302:18;22294:26;;22366:9;22360:4;22356:20;22352:1;22341:9;22337:17;22330:47;22394:131;22520:4;22394:131;:::i;:::-;22386:139;;22113:419;;;:::o;22538:175::-;22678:27;22674:1;22666:6;22662:14;22655:51;22538:175;:::o;22719:366::-;22861:3;22882:67;22946:2;22941:3;22882:67;:::i;:::-;22875:74;;22958:93;23047:3;22958:93;:::i;:::-;23076:2;23071:3;23067:12;23060:19;;22719:366;;;:::o;23091:419::-;23257:4;23295:2;23284:9;23280:18;23272:26;;23344:9;23338:4;23334:20;23330:1;23319:9;23315:17;23308:47;23372:131;23498:4;23372:131;:::i;:::-;23364:139;;23091:419;;;:::o;23516:305::-;23556:3;23575:20;23593:1;23575:20;:::i;:::-;23570:25;;23609:20;23627:1;23609:20;:::i;:::-;23604:25;;23763:1;23695:66;23691:74;23688:1;23685:81;23682:107;;;23769:18;;:::i;:::-;23682:107;23813:1;23810;23806:9;23799:16;;23516:305;;;;:::o;23827:176::-;23967:28;23963:1;23955:6;23951:14;23944:52;23827:176;:::o;24009:366::-;24151:3;24172:67;24236:2;24231:3;24172:67;:::i;:::-;24165:74;;24248:93;24337:3;24248:93;:::i;:::-;24366:2;24361:3;24357:12;24350:19;;24009:366;;;:::o;24381:419::-;24547:4;24585:2;24574:9;24570:18;24562:26;;24634:9;24628:4;24624:20;24620:1;24609:9;24605:17;24598:47;24662:131;24788:4;24662:131;:::i;:::-;24654:139;;24381:419;;;:::o;24806:169::-;24946:21;24942:1;24934:6;24930:14;24923:45;24806:169;:::o;24981:366::-;25123:3;25144:67;25208:2;25203:3;25144:67;:::i;:::-;25137:74;;25220:93;25309:3;25220:93;:::i;:::-;25338:2;25333:3;25329:12;25322:19;;24981:366;;;:::o;25353:419::-;25519:4;25557:2;25546:9;25542:18;25534:26;;25606:9;25600:4;25596:20;25592:1;25581:9;25577:17;25570:47;25634:131;25760:4;25634:131;:::i;:::-;25626:139;;25353:419;;;:::o;25778:191::-;25818:4;25838:20;25856:1;25838:20;:::i;:::-;25833:25;;25872:20;25890:1;25872:20;:::i;:::-;25867:25;;25911:1;25908;25905:8;25902:34;;;25916:18;;:::i;:::-;25902:34;25961:1;25958;25954:9;25946:17;;25778:191;;;;:::o;25975:180::-;26023:77;26020:1;26013:88;26120:4;26117:1;26110:15;26144:4;26141:1;26134:15;26161:180;26209:77;26206:1;26199:88;26306:4;26303:1;26296:15;26330:4;26327:1;26320:15;26347:114;26414:6;26448:5;26442:12;26432:22;;26347:114;;;:::o;26467:184::-;26566:11;26600:6;26595:3;26588:19;26640:4;26635:3;26631:14;26616:29;;26467:184;;;;:::o;26657:132::-;26724:4;26747:3;26739:11;;26777:4;26772:3;26768:14;26760:22;;26657:132;;;:::o;26795:108::-;26872:24;26890:5;26872:24;:::i;:::-;26867:3;26860:37;26795:108;;:::o;26909:179::-;26978:10;26999:46;27041:3;27033:6;26999:46;:::i;:::-;27077:4;27072:3;27068:14;27054:28;;26909:179;;;;:::o;27094:113::-;27164:4;27196;27191:3;27187:14;27179:22;;27094:113;;;:::o;27243:732::-;27362:3;27391:54;27439:5;27391:54;:::i;:::-;27461:86;27540:6;27535:3;27461:86;:::i;:::-;27454:93;;27571:56;27621:5;27571:56;:::i;:::-;27650:7;27681:1;27666:284;27691:6;27688:1;27685:13;27666:284;;;27767:6;27761:13;27794:63;27853:3;27838:13;27794:63;:::i;:::-;27787:70;;27880:60;27933:6;27880:60;:::i;:::-;27870:70;;27726:224;27713:1;27710;27706:9;27701:14;;27666:284;;;27670:14;27966:3;27959:10;;27367:608;;;27243:732;;;;:::o;27981:831::-;28244:4;28282:3;28271:9;28267:19;28259:27;;28296:71;28364:1;28353:9;28349:17;28340:6;28296:71;:::i;:::-;28377:80;28453:2;28442:9;28438:18;28429:6;28377:80;:::i;:::-;28504:9;28498:4;28494:20;28489:2;28478:9;28474:18;28467:48;28532:108;28635:4;28626:6;28532:108;:::i;:::-;28524:116;;28650:72;28718:2;28707:9;28703:18;28694:6;28650:72;:::i;:::-;28732:73;28800:3;28789:9;28785:19;28776:6;28732:73;:::i;:::-;27981:831;;;;;;;;:::o;28818:180::-;28866:77;28863:1;28856:88;28963:4;28960:1;28953:15;28987:4;28984:1;28977:15;29004:185;29044:1;29061:20;29079:1;29061:20;:::i;:::-;29056:25;;29095:20;29113:1;29095:20;:::i;:::-;29090:25;;29134:1;29124:35;;29139:18;;:::i;:::-;29124:35;29181:1;29178;29174:9;29169:14;;29004:185;;;;:::o;29195:220::-;29335:34;29331:1;29323:6;29319:14;29312:58;29404:3;29399:2;29391:6;29387:15;29380:28;29195:220;:::o;29421:366::-;29563:3;29584:67;29648:2;29643:3;29584:67;:::i;:::-;29577:74;;29660:93;29749:3;29660:93;:::i;:::-;29778:2;29773:3;29769:12;29762:19;;29421:366;;;:::o;29793:419::-;29959:4;29997:2;29986:9;29982:18;29974:26;;30046:9;30040:4;30036:20;30032:1;30021:9;30017:17;30010:47;30074:131;30200:4;30074:131;:::i;:::-;30066:139;;29793:419;;;:::o;30218:177::-;30358:29;30354:1;30346:6;30342:14;30335:53;30218:177;:::o;30401:366::-;30543:3;30564:67;30628:2;30623:3;30564:67;:::i;:::-;30557:74;;30640:93;30729:3;30640:93;:::i;:::-;30758:2;30753:3;30749:12;30742:19;;30401:366;;;:::o;30773:419::-;30939:4;30977:2;30966:9;30962:18;30954:26;;31026:9;31020:4;31016:20;31012:1;31001:9;30997:17;30990:47;31054:131;31180:4;31054:131;:::i;:::-;31046:139;;30773:419;;;:::o

Swarm Source

ipfs://aafbf9a13467c64442267e8c7ca7112cea2d97b71b23ccf09a9fdaded9e56835
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.