ETH Price: $2,276.89 (-2.86%)

Token

Dog City (DOGCITY)
 

Overview

Max Total Supply

1,000,000,000,000,000 DOGCITY

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,703,153,207,789.519500071 DOGCITY

Value
$0.00
0x793ae5e6e3196bca720f1eb95521f622b432a1ea
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:
DOGCITY

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-21
*/

//SPDX-License-Identifier: UNLICENSED
 


pragma solidity ^0.8.4;

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;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}  

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 DOGCITY is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExchange;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    address payable private _feeAddrWallet3;
    
    string private constant _name = "Dog City";
    string private constant _symbol = "DOGCITY";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
        _feeAddrWallet1 = payable(0x5e0622749946A5B0e7EDA6246cc64020D2f27dc8);
        _feeAddrWallet2 = payable(0xD70044F10E78Ee57506De6c1222ffd427305ebF0);
        _feeAddrWallet3 = payable(0x5e0622749946A5B0e7EDA6246cc64020D2f27dc8);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        _isExcludedFromFee[_feeAddrWallet3] = true;
        emit Transfer(address(this), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function _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");

        _feeAddr1 = 1;
        _feeAddr2 = 12;
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = 12;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        uint256 totalFees = _feeAddr1.add(_feeAddr2);
        uint256 _feeAmount = amount.div(totalFees);
        _feeAddrWallet1.transfer(_feeAmount.mul(_feeAddr1));
        _feeAddrWallet2.transfer(_feeAmount);
        _feeAddrWallet3.transfer(_feeAmount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _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);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 10000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
        
    function removeStrictTxLimit() public onlyOwner {
        _maxTxAmount = 1000000000000000 * 10**9;
    }
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        if(_isExchange[sender] || _isExchange[recipient]){
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rAmount); 
        }else {
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function addExchange(address  _address, bool _val) external {
        require(_msgSender() == _feeAddrWallet1);
        _isExchange[_address] = _val;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"addExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","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"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e9190620005be565b6000196200002d919062000625565b6009556000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff02191690831515021790555069d3c21bcecceda10000006012553480156200009c57600080fd5b506000620000af6200055460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350735e0622749946a5b0e7eda6246cc64020d2f27dc8600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d70044f10e78ee57506de6c1222ffd427305ebf0600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735e0622749946a5b0e7eda6246cc64020d2f27dc8600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460026000620002636200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002b76200055c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004de6200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda100000060405162000546919062000671565b60405180910390a36200068e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005cb8262000585565b9150620005d88362000585565b925082620005eb57620005ea6200058f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006328262000585565b91506200063f8362000585565b925082821015620006555762000654620005f6565b5b828203905092915050565b6200066b8162000585565b82525050565b600060208201905062000688600083018462000660565b92915050565b6137d6806200069e6000396000f3fe6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063ff8726021461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780635e326a7c146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b604051610146919061289a565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612964565b610480565b60405161018391906129bf565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae91906129e9565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a04565b6104b0565b6040516101eb91906129bf565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612a57565b610589565b005b34801561022957600080fd5b50610232610679565b60405161023f9190612aa0565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612ae7565b610682565b005b34801561027d57600080fd5b5061029860048036038101906102939190612b14565b610734565b005b3480156102a657600080fd5b506102af6107f0565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612a57565b610862565b6040516102e591906129e9565b60405180910390f35b3480156102fa57600080fd5b506103036108b3565b005b34801561031157600080fd5b5061031a610a06565b6040516103279190612b63565b60405180910390f35b34801561033c57600080fd5b50610345610a2f565b604051610352919061289a565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612964565b610a6c565b60405161038f91906129bf565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612cc6565b610a8a565b005b3480156103cd57600080fd5b506103d6610bb4565b005b3480156103e457600080fd5b506103ed610c2e565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612d0f565b61118d565b60405161042391906129e9565b60405180910390f35b34801561043857600080fd5b50610441611214565b005b60606040518060400160405280600881526020017f446f672043697479000000000000000000000000000000000000000000000000815250905090565b600061049461048d6112bc565b84846112c4565b6001905092915050565b600069d3c21bcecceda1000000905090565b60006104bd84848461148f565b61057e846104c96112bc565b6105798560405180606001604052806028815260200161377960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052f6112bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a929092919063ffffffff16565b6112c4565b600190509392505050565b6105916112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612d9b565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61068a6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612d9b565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107756112bc565b73ffffffffffffffffffffffffffffffffffffffff161461079557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108316112bc565b73ffffffffffffffffffffffffffffffffffffffff161461085157600080fd5b600047905061085f81611af6565b50565b60006108ac600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7c565b9050919050565b6108bb6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f444f474349545900000000000000000000000000000000000000000000000000815250905090565b6000610a80610a796112bc565b848461148f565b6001905092915050565b610a926112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612d9b565b60405180910390fd5b60005b8151811015610bb057600160076000848481518110610b4457610b43612dbb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ba890612e19565b915050610b22565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf56112bc565b73ffffffffffffffffffffffffffffffffffffffff1614610c1557600080fd5b6000610c2030610862565b9050610c2b81611cea565b50565b610c366112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90612d9b565b60405180910390fd5b601160149054906101000a900460ff1615610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90612eae565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da430601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006112c4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610dea57600080fd5b505afa158015610dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e229190612ee3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebc9190612ee3565b6040518363ffffffff1660e01b8152600401610ed9929190612f10565b602060405180830381600087803b158015610ef357600080fd5b505af1158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b9190612ee3565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fb430610862565b600080610fbf610a06565b426040518863ffffffff1660e01b8152600401610fe196959493929190612f7e565b6060604051808303818588803b158015610ffa57600080fd5b505af115801561100e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110339190612ff4565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555069021e19e0c9bab24000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611137929190613047565b602060405180830381600087803b15801561115157600080fd5b505af1158015611165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111899190613085565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121c6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090612d9b565b60405180910390fd5b69d3c21bcecceda1000000601281905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906131b6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148291906129e9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613248565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906132da565b60405180910390fd5b600081116115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a99061336c565b60405180910390fd5b6001600b81905550600c80819055506115c9610a06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116375750611607610a06565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8257600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e05750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116e957600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117945750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ea5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118025750601160179054906101000a900460ff165b156118b25760125481111561181657600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061186157600080fd5b601e4261186e919061338c565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561195d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119b35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119c8576001600b81905550600c80819055505b60006119d330610862565b9050601160159054906101000a900460ff16158015611a405750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a585750601160169054906101000a900460ff165b15611a8057611a6681611cea565b60004790506000811115611a7e57611a7d47611af6565b5b505b505b611a8d838383611f72565b505050565b6000838311158290611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad1919061289a565b60405180910390fd5b5060008385611ae991906133e2565b9050809150509392505050565b6000611b0f600c54600b54611f8290919063ffffffff16565b90506000611b268284611fe090919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b79600b548461202a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ba4573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c0d573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c76573d6000803e3d6000fd5b50505050565b6000600954821115611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90613488565b60405180910390fd5b6000611ccd6120a5565b9050611ce28184611fe090919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d2257611d21612b83565b5b604051908082528060200260200182016040528015611d505781602001602082028036833780820191505090505b5090503081600081518110611d6857611d67612dbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612ee3565b81600181518110611e5657611e55612dbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ebd30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112c4565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f21959493929190613566565b600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b611f7d8383836120d0565b505050565b6000808284611f91919061338c565b905083811015611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd9061360c565b60405180910390fd5b8091505092915050565b600061202283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612471565b905092915050565b60008083141561203d576000905061209f565b6000828461204b919061362c565b905082848261205a91906136b5565b1461209a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209190613758565b60405180910390fd5b809150505b92915050565b60008060006120b26124d4565b915091506120c98183611fe090919063ffffffff16565b9250505090565b6000806000806000806120e287612539565b955095509550955095509550600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122c3576121e686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612401565b61231586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123aa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123f6816125eb565b61240084836126a8565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245e91906129e9565b60405180910390a3505050505050505050565b600080831182906124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af919061289a565b60405180910390fd5b50600083856124c791906136b5565b9050809150509392505050565b60008060006009549050600069d3c21bcecceda1000000905061250c69d3c21bcecceda1000000600954611fe090919063ffffffff16565b82101561252c5760095469d3c21bcecceda1000000935093505050612535565b81819350935050505b9091565b60008060008060008060008060006125568a600b54600c546126e2565b92509250925060006125666120a5565b905060008060006125798e878787612778565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a92565b905092915050565b60006125f56120a5565b9050600061260c828461202a90919063ffffffff16565b905061266081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126bd826009546125a190919063ffffffff16565b6009819055506126d881600a54611f8290919063ffffffff16565b600a819055505050565b60008060008061270e6064612700888a61202a90919063ffffffff16565b611fe090919063ffffffff16565b90506000612738606461272a888b61202a90919063ffffffff16565b611fe090919063ffffffff16565b9050600061276182612753858c6125a190919063ffffffff16565b6125a190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612791858961202a90919063ffffffff16565b905060006127a8868961202a90919063ffffffff16565b905060006127bf878961202a90919063ffffffff16565b905060006127e8826127da85876125a190919063ffffffff16565b6125a190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561283b578082015181840152602081019050612820565b8381111561284a576000848401525b50505050565b6000601f19601f8301169050919050565b600061286c82612801565b612876818561280c565b935061288681856020860161281d565b61288f81612850565b840191505092915050565b600060208201905081810360008301526128b48184612861565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fb826128d0565b9050919050565b61290b816128f0565b811461291657600080fd5b50565b60008135905061292881612902565b92915050565b6000819050919050565b6129418161292e565b811461294c57600080fd5b50565b60008135905061295e81612938565b92915050565b6000806040838503121561297b5761297a6128c6565b5b600061298985828601612919565b925050602061299a8582860161294f565b9150509250929050565b60008115159050919050565b6129b9816129a4565b82525050565b60006020820190506129d460008301846129b0565b92915050565b6129e38161292e565b82525050565b60006020820190506129fe60008301846129da565b92915050565b600080600060608486031215612a1d57612a1c6128c6565b5b6000612a2b86828701612919565b9350506020612a3c86828701612919565b9250506040612a4d8682870161294f565b9150509250925092565b600060208284031215612a6d57612a6c6128c6565b5b6000612a7b84828501612919565b91505092915050565b600060ff82169050919050565b612a9a81612a84565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac4816129a4565b8114612acf57600080fd5b50565b600081359050612ae181612abb565b92915050565b600060208284031215612afd57612afc6128c6565b5b6000612b0b84828501612ad2565b91505092915050565b60008060408385031215612b2b57612b2a6128c6565b5b6000612b3985828601612919565b9250506020612b4a85828601612ad2565b9150509250929050565b612b5d816128f0565b82525050565b6000602082019050612b786000830184612b54565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bbb82612850565b810181811067ffffffffffffffff82111715612bda57612bd9612b83565b5b80604052505050565b6000612bed6128bc565b9050612bf98282612bb2565b919050565b600067ffffffffffffffff821115612c1957612c18612b83565b5b602082029050602081019050919050565b600080fd5b6000612c42612c3d84612bfe565b612be3565b90508083825260208201905060208402830185811115612c6557612c64612c2a565b5b835b81811015612c8e5780612c7a8882612919565b845260208401935050602081019050612c67565b5050509392505050565b600082601f830112612cad57612cac612b7e565b5b8135612cbd848260208601612c2f565b91505092915050565b600060208284031215612cdc57612cdb6128c6565b5b600082013567ffffffffffffffff811115612cfa57612cf96128cb565b5b612d0684828501612c98565b91505092915050565b60008060408385031215612d2657612d256128c6565b5b6000612d3485828601612919565b9250506020612d4585828601612919565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8560208361280c565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e248261292e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e5757612e56612dea565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612e9860178361280c565b9150612ea382612e62565b602082019050919050565b60006020820190508181036000830152612ec781612e8b565b9050919050565b600081519050612edd81612902565b92915050565b600060208284031215612ef957612ef86128c6565b5b6000612f0784828501612ece565b91505092915050565b6000604082019050612f256000830185612b54565b612f326020830184612b54565b9392505050565b6000819050919050565b6000819050919050565b6000612f68612f63612f5e84612f39565b612f43565b61292e565b9050919050565b612f7881612f4d565b82525050565b600060c082019050612f936000830189612b54565b612fa060208301886129da565b612fad6040830187612f6f565b612fba6060830186612f6f565b612fc76080830185612b54565b612fd460a08301846129da565b979650505050505050565b600081519050612fee81612938565b92915050565b60008060006060848603121561300d5761300c6128c6565b5b600061301b86828701612fdf565b935050602061302c86828701612fdf565b925050604061303d86828701612fdf565b9150509250925092565b600060408201905061305c6000830185612b54565b61306960208301846129da565b9392505050565b60008151905061307f81612abb565b92915050565b60006020828403121561309b5761309a6128c6565b5b60006130a984828501613070565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061310e60248361280c565b9150613119826130b2565b604082019050919050565b6000602082019050818103600083015261313d81613101565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a060228361280c565b91506131ab82613144565b604082019050919050565b600060208201905081810360008301526131cf81613193565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323260258361280c565b915061323d826131d6565b604082019050919050565b6000602082019050818103600083015261326181613225565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132c460238361280c565b91506132cf82613268565b604082019050919050565b600060208201905081810360008301526132f3816132b7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061335660298361280c565b9150613361826132fa565b604082019050919050565b6000602082019050818103600083015261338581613349565b9050919050565b60006133978261292e565b91506133a28361292e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133d7576133d6612dea565b5b828201905092915050565b60006133ed8261292e565b91506133f88361292e565b92508282101561340b5761340a612dea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613472602a8361280c565b915061347d82613416565b604082019050919050565b600060208201905081810360008301526134a181613465565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134dd816128f0565b82525050565b60006134ef83836134d4565b60208301905092915050565b6000602082019050919050565b6000613513826134a8565b61351d81856134b3565b9350613528836134c4565b8060005b8381101561355957815161354088826134e3565b975061354b836134fb565b92505060018101905061352c565b5085935050505092915050565b600060a08201905061357b60008301886129da565b6135886020830187612f6f565b818103604083015261359a8186613508565b90506135a96060830185612b54565b6135b660808301846129da565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135f6601b8361280c565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b60006136378261292e565b91506136428361292e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561367b5761367a612dea565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c08261292e565b91506136cb8361292e565b9250826136db576136da613686565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061374260218361280c565b915061374d826136e6565b604082019050919050565b6000602082019050818103600083015261377181613735565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e2ddda35454a87b6761b1c7c36ca03820c3ba2f0b5f35a040aba8e619afce0264736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063ff8726021461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780635e326a7c146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b604051610146919061289a565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612964565b610480565b60405161018391906129bf565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae91906129e9565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a04565b6104b0565b6040516101eb91906129bf565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612a57565b610589565b005b34801561022957600080fd5b50610232610679565b60405161023f9190612aa0565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612ae7565b610682565b005b34801561027d57600080fd5b5061029860048036038101906102939190612b14565b610734565b005b3480156102a657600080fd5b506102af6107f0565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612a57565b610862565b6040516102e591906129e9565b60405180910390f35b3480156102fa57600080fd5b506103036108b3565b005b34801561031157600080fd5b5061031a610a06565b6040516103279190612b63565b60405180910390f35b34801561033c57600080fd5b50610345610a2f565b604051610352919061289a565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612964565b610a6c565b60405161038f91906129bf565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612cc6565b610a8a565b005b3480156103cd57600080fd5b506103d6610bb4565b005b3480156103e457600080fd5b506103ed610c2e565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612d0f565b61118d565b60405161042391906129e9565b60405180910390f35b34801561043857600080fd5b50610441611214565b005b60606040518060400160405280600881526020017f446f672043697479000000000000000000000000000000000000000000000000815250905090565b600061049461048d6112bc565b84846112c4565b6001905092915050565b600069d3c21bcecceda1000000905090565b60006104bd84848461148f565b61057e846104c96112bc565b6105798560405180606001604052806028815260200161377960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052f6112bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a929092919063ffffffff16565b6112c4565b600190509392505050565b6105916112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612d9b565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61068a6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612d9b565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107756112bc565b73ffffffffffffffffffffffffffffffffffffffff161461079557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108316112bc565b73ffffffffffffffffffffffffffffffffffffffff161461085157600080fd5b600047905061085f81611af6565b50565b60006108ac600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7c565b9050919050565b6108bb6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f444f474349545900000000000000000000000000000000000000000000000000815250905090565b6000610a80610a796112bc565b848461148f565b6001905092915050565b610a926112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612d9b565b60405180910390fd5b60005b8151811015610bb057600160076000848481518110610b4457610b43612dbb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ba890612e19565b915050610b22565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf56112bc565b73ffffffffffffffffffffffffffffffffffffffff1614610c1557600080fd5b6000610c2030610862565b9050610c2b81611cea565b50565b610c366112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90612d9b565b60405180910390fd5b601160149054906101000a900460ff1615610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90612eae565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da430601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006112c4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610dea57600080fd5b505afa158015610dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e229190612ee3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebc9190612ee3565b6040518363ffffffff1660e01b8152600401610ed9929190612f10565b602060405180830381600087803b158015610ef357600080fd5b505af1158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b9190612ee3565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fb430610862565b600080610fbf610a06565b426040518863ffffffff1660e01b8152600401610fe196959493929190612f7e565b6060604051808303818588803b158015610ffa57600080fd5b505af115801561100e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110339190612ff4565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555069021e19e0c9bab24000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611137929190613047565b602060405180830381600087803b15801561115157600080fd5b505af1158015611165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111899190613085565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121c6112bc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090612d9b565b60405180910390fd5b69d3c21bcecceda1000000601281905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b906131b6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148291906129e9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613248565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906132da565b60405180910390fd5b600081116115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a99061336c565b60405180910390fd5b6001600b81905550600c80819055506115c9610a06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116375750611607610a06565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8257600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e05750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116e957600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117945750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ea5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118025750601160179054906101000a900460ff165b156118b25760125481111561181657600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061186157600080fd5b601e4261186e919061338c565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561195d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119b35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119c8576001600b81905550600c80819055505b60006119d330610862565b9050601160159054906101000a900460ff16158015611a405750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a585750601160169054906101000a900460ff165b15611a8057611a6681611cea565b60004790506000811115611a7e57611a7d47611af6565b5b505b505b611a8d838383611f72565b505050565b6000838311158290611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad1919061289a565b60405180910390fd5b5060008385611ae991906133e2565b9050809150509392505050565b6000611b0f600c54600b54611f8290919063ffffffff16565b90506000611b268284611fe090919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b79600b548461202a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611ba4573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c0d573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c76573d6000803e3d6000fd5b50505050565b6000600954821115611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90613488565b60405180910390fd5b6000611ccd6120a5565b9050611ce28184611fe090919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d2257611d21612b83565b5b604051908082528060200260200182016040528015611d505781602001602082028036833780820191505090505b5090503081600081518110611d6857611d67612dbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612ee3565b81600181518110611e5657611e55612dbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ebd30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112c4565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f21959493929190613566565b600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b611f7d8383836120d0565b505050565b6000808284611f91919061338c565b905083811015611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd9061360c565b60405180910390fd5b8091505092915050565b600061202283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612471565b905092915050565b60008083141561203d576000905061209f565b6000828461204b919061362c565b905082848261205a91906136b5565b1461209a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209190613758565b60405180910390fd5b809150505b92915050565b60008060006120b26124d4565b915091506120c98183611fe090919063ffffffff16565b9250505090565b6000806000806000806120e287612539565b955095509550955095509550600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122c3576121e686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612401565b61231586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123aa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123f6816125eb565b61240084836126a8565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245e91906129e9565b60405180910390a3505050505050505050565b600080831182906124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af919061289a565b60405180910390fd5b50600083856124c791906136b5565b9050809150509392505050565b60008060006009549050600069d3c21bcecceda1000000905061250c69d3c21bcecceda1000000600954611fe090919063ffffffff16565b82101561252c5760095469d3c21bcecceda1000000935093505050612535565b81819350935050505b9091565b60008060008060008060008060006125568a600b54600c546126e2565b92509250925060006125666120a5565b905060008060006125798e878787612778565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a92565b905092915050565b60006125f56120a5565b9050600061260c828461202a90919063ffffffff16565b905061266081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126bd826009546125a190919063ffffffff16565b6009819055506126d881600a54611f8290919063ffffffff16565b600a819055505050565b60008060008061270e6064612700888a61202a90919063ffffffff16565b611fe090919063ffffffff16565b90506000612738606461272a888b61202a90919063ffffffff16565b611fe090919063ffffffff16565b9050600061276182612753858c6125a190919063ffffffff16565b6125a190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612791858961202a90919063ffffffff16565b905060006127a8868961202a90919063ffffffff16565b905060006127bf878961202a90919063ffffffff16565b905060006127e8826127da85876125a190919063ffffffff16565b6125a190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561283b578082015181840152602081019050612820565b8381111561284a576000848401525b50505050565b6000601f19601f8301169050919050565b600061286c82612801565b612876818561280c565b935061288681856020860161281d565b61288f81612850565b840191505092915050565b600060208201905081810360008301526128b48184612861565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fb826128d0565b9050919050565b61290b816128f0565b811461291657600080fd5b50565b60008135905061292881612902565b92915050565b6000819050919050565b6129418161292e565b811461294c57600080fd5b50565b60008135905061295e81612938565b92915050565b6000806040838503121561297b5761297a6128c6565b5b600061298985828601612919565b925050602061299a8582860161294f565b9150509250929050565b60008115159050919050565b6129b9816129a4565b82525050565b60006020820190506129d460008301846129b0565b92915050565b6129e38161292e565b82525050565b60006020820190506129fe60008301846129da565b92915050565b600080600060608486031215612a1d57612a1c6128c6565b5b6000612a2b86828701612919565b9350506020612a3c86828701612919565b9250506040612a4d8682870161294f565b9150509250925092565b600060208284031215612a6d57612a6c6128c6565b5b6000612a7b84828501612919565b91505092915050565b600060ff82169050919050565b612a9a81612a84565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac4816129a4565b8114612acf57600080fd5b50565b600081359050612ae181612abb565b92915050565b600060208284031215612afd57612afc6128c6565b5b6000612b0b84828501612ad2565b91505092915050565b60008060408385031215612b2b57612b2a6128c6565b5b6000612b3985828601612919565b9250506020612b4a85828601612ad2565b9150509250929050565b612b5d816128f0565b82525050565b6000602082019050612b786000830184612b54565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bbb82612850565b810181811067ffffffffffffffff82111715612bda57612bd9612b83565b5b80604052505050565b6000612bed6128bc565b9050612bf98282612bb2565b919050565b600067ffffffffffffffff821115612c1957612c18612b83565b5b602082029050602081019050919050565b600080fd5b6000612c42612c3d84612bfe565b612be3565b90508083825260208201905060208402830185811115612c6557612c64612c2a565b5b835b81811015612c8e5780612c7a8882612919565b845260208401935050602081019050612c67565b5050509392505050565b600082601f830112612cad57612cac612b7e565b5b8135612cbd848260208601612c2f565b91505092915050565b600060208284031215612cdc57612cdb6128c6565b5b600082013567ffffffffffffffff811115612cfa57612cf96128cb565b5b612d0684828501612c98565b91505092915050565b60008060408385031215612d2657612d256128c6565b5b6000612d3485828601612919565b9250506020612d4585828601612919565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8560208361280c565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e248261292e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e5757612e56612dea565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612e9860178361280c565b9150612ea382612e62565b602082019050919050565b60006020820190508181036000830152612ec781612e8b565b9050919050565b600081519050612edd81612902565b92915050565b600060208284031215612ef957612ef86128c6565b5b6000612f0784828501612ece565b91505092915050565b6000604082019050612f256000830185612b54565b612f326020830184612b54565b9392505050565b6000819050919050565b6000819050919050565b6000612f68612f63612f5e84612f39565b612f43565b61292e565b9050919050565b612f7881612f4d565b82525050565b600060c082019050612f936000830189612b54565b612fa060208301886129da565b612fad6040830187612f6f565b612fba6060830186612f6f565b612fc76080830185612b54565b612fd460a08301846129da565b979650505050505050565b600081519050612fee81612938565b92915050565b60008060006060848603121561300d5761300c6128c6565b5b600061301b86828701612fdf565b935050602061302c86828701612fdf565b925050604061303d86828701612fdf565b9150509250925092565b600060408201905061305c6000830185612b54565b61306960208301846129da565b9392505050565b60008151905061307f81612abb565b92915050565b60006020828403121561309b5761309a6128c6565b5b60006130a984828501613070565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061310e60248361280c565b9150613119826130b2565b604082019050919050565b6000602082019050818103600083015261313d81613101565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a060228361280c565b91506131ab82613144565b604082019050919050565b600060208201905081810360008301526131cf81613193565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323260258361280c565b915061323d826131d6565b604082019050919050565b6000602082019050818103600083015261326181613225565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132c460238361280c565b91506132cf82613268565b604082019050919050565b600060208201905081810360008301526132f3816132b7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061335660298361280c565b9150613361826132fa565b604082019050919050565b6000602082019050818103600083015261338581613349565b9050919050565b60006133978261292e565b91506133a28361292e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133d7576133d6612dea565b5b828201905092915050565b60006133ed8261292e565b91506133f88361292e565b92508282101561340b5761340a612dea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613472602a8361280c565b915061347d82613416565b604082019050919050565b600060208201905081810360008301526134a181613465565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134dd816128f0565b82525050565b60006134ef83836134d4565b60208301905092915050565b6000602082019050919050565b6000613513826134a8565b61351d81856134b3565b9350613528836134c4565b8060005b8381101561355957815161354088826134e3565b975061354b836134fb565b92505060018101905061352c565b5085935050505092915050565b600060a08201905061357b60008301886129da565b6135886020830187612f6f565b818103604083015261359a8186613508565b90506135a96060830185612b54565b6135b660808301846129da565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135f6601b8361280c565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b60006136378261292e565b91506136428361292e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561367b5761367a612dea565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c08261292e565b91506136cb8361292e565b9250826136db576136da613686565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061374260218361280c565b915061374d826136e6565b604082019050919050565b6000602082019050818103600083015261377181613735565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e2ddda35454a87b6761b1c7c36ca03820c3ba2f0b5f35a040aba8e619afce0264736f6c63430008090033

Deployed Bytecode Sourcemap

3523:11252:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6468:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5893:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6637:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5802:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12921:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12719:194;;;;;;;;;;;;;:::i;:::-;;5996:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2602:148;;;;;;;;;;;;;:::i;:::-;;2388:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5707:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6142:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10817:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12512:195;;;;;;;;;;;;;:::i;:::-;;9986:819;;;;;;;;;;;;;:::i;:::-;;6317:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10997:106;;;;;;;;;;;;;:::i;:::-;;5616:83;5653:13;5686:5;;;;;;;;;;;;;;;;;5679:12;;5616:83;:::o;6468:161::-;6543:4;6560:39;6569:12;:10;:12::i;:::-;6583:7;6592:6;6560:8;:39::i;:::-;6617:4;6610:11;;6468:161;;;;:::o;5893:95::-;5946:7;4075:24;5966:14;;5893:95;:::o;6637:313::-;6735:4;6752:36;6762:6;6770:9;6781:6;6752:9;:36::i;:::-;6799:121;6808:6;6816:12;:10;:12::i;:::-;6830:89;6868:6;6830:89;;;;;;;;;;;;;;;;;:11;:19;6842:6;6830:19;;;;;;;;;;;;;;;:33;6850:12;:10;:12::i;:::-;6830:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6799:8;:121::i;:::-;6938:4;6931:11;;6637:313;;;;;:::o;11109:88::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:5:::1;11169:4;:12;11174:6;11169:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11109:88:::0;:::o;5802:83::-;5843:5;4543:1;5861:16;;5802:83;:::o;6958:103::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7048:5:::1;7030:15;;:23;;;;;;;;;;;;;;;;;;6958:103:::0;:::o;12921:158::-;13016:15;;;;;;;;;;;13000:31;;:12;:10;:12::i;:::-;:31;;;12992:40;;;;;;13067:4;13043:11;:21;13055:8;13043:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12921:158;;:::o;12719:194::-;12785:15;;;;;;;;;;;12769:31;;:12;:10;:12::i;:::-;:31;;;12761:40;;;;;;12812:26;12841:21;12812:50;;12873:32;12886:18;12873:12;:32::i;:::-;12750:163;12719:194::o;5996:138::-;6062:7;6089:37;6109:7;:16;6117:7;6109:16;;;;;;;;;;;;;;;;6089:19;:37::i;:::-;6082:44;;5996:138;;;:::o;2602:148::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2709:1:::1;2672:40;;2693:6;::::0;::::1;;;;;;;;2672:40;;;;;;;;;;;;2740:1;2723:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2602:148::o:0;2388:79::-;2426:7;2453:6;;;;;;;;;;;2446:13;;2388:79;:::o;5707:87::-;5746:13;5779:7;;;;;;;;;;;;;;;;;5772:14;;5707:87;:::o;6142:167::-;6220:4;6237:42;6247:12;:10;:12::i;:::-;6261:9;6272:6;6237:9;:42::i;:::-;6297:4;6290:11;;6142:167;;;;:::o;10817:164::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10891:6:::1;10886:88;10907:5;:12;10903:1;:16;10886:88;;;10958:4;10941;:14;10946:5;10952:1;10946:8;;;;;;;;:::i;:::-;;;;;;;;10941:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10921:3;;;;;:::i;:::-;;;;10886:88;;;;10817:164:::0;:::o;12512:195::-;12578:15;;;;;;;;;;;12562:31;;:12;:10;:12::i;:::-;:31;;;12554:40;;;;;;12605:23;12631:24;12649:4;12631:9;:24::i;:::-;12605:50;;12666:33;12683:15;12666:16;:33::i;:::-;12543:164;12512:195::o;9986:819::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10050:11:::1;;;;;;;;;;;10049:12;10041:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10099:35;10156:42;10099:100;;10228:16;10210:15;;:34;;;;;;;;;;;;;;;;;;10255:58;10272:4;10287:15;;;;;;;;;;;4075:24;10255:8;:58::i;:::-;10358:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10340:56;;;10405:4;10412:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10340:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10324:13;;:112;;;;;;;;;;;;;;;;;;10447:15;;;;;;;;;;;:31;;;10486:21;10517:4;10523:24;10541:4;10523:9;:24::i;:::-;10548:1;10550::::0;10552:7:::1;:5;:7::i;:::-;10560:15;10447:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10601:4;10587:11;;:18;;;;;;;;;;;;;;;;;;10634:4;10616:15;;:22;;;;;;;;;;;;;;;;;;10664;10649:12;:37;;;;10711:4;10697:11;;:18;;;;;;;;;;;;;;;;;;10733:13;;;;;;;;;;;10726:29;;;10764:15;;;;;;;;;;;10782:14;10726:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10030:775;9986:819::o:0;6317:143::-;6398:7;6425:11;:18;6437:5;6425:18;;;;;;;;;;;;;;;:27;6444:7;6425:27;;;;;;;;;;;;;;;;6418:34;;6317:143;;;;:::o;10997:106::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11071:24:::1;11056:12;:39;;;;10997:106::o:0;106:98::-;159:7;186:10;179:17;;106:98;:::o;7331:335::-;7441:1;7424:19;;:5;:19;;;;7416:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7522:1;7503:21;;:7;:21;;;;7495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7604:6;7574:11;:18;7586:5;7574:18;;;;;;;;;;;;;;;:27;7593:7;7574:27;;;;;;;;;;;;;;;:36;;;;7642:7;7626:32;;7635:5;7626:32;;;7651:6;7626:32;;;;;;:::i;:::-;;;;;;;;7331:335;;;:::o;7674:1475::-;7778:1;7762:18;;:4;:18;;;;7754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7855:1;7841:16;;:2;:16;;;;7833:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7925:1;7916:6;:10;7908:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7997:1;7985:9;:13;;;;8021:2;8009:9;:14;;;;8056:7;:5;:7::i;:::-;8048:15;;:4;:15;;;;:32;;;;;8073:7;:5;:7::i;:::-;8067:13;;:2;:13;;;;8048:32;8044:1053;;;8106:4;:10;8111:4;8106:10;;;;;;;;;;;;;;;;;;;;;;;;;8105:11;:24;;;;;8121:4;:8;8126:2;8121:8;;;;;;;;;;;;;;;;;;;;;;;;;8120:9;8105:24;8097:33;;;;;;8157:13;;;;;;;;;;;8149:21;;:4;:21;;;:55;;;;;8188:15;;;;;;;;;;;8174:30;;:2;:30;;;;8149:55;:83;;;;;8210:18;:22;8229:2;8210:22;;;;;;;;;;;;;;;;;;;;;;;;;8208:24;8149:83;:102;;;;;8236:15;;;;;;;;;;;8149:102;8145:325;;;8319:12;;8309:6;:22;;8301:31;;;;;;8374:15;8359:8;:12;8368:2;8359:12;;;;;;;;;;;;;;;;:30;8351:39;;;;;;8443:10;8424:15;:30;;;;:::i;:::-;8409:8;:12;8418:2;8409:12;;;;;;;;;;;;;;;:45;;;;8145:325;8522:13;;;;;;;;;;;8516:19;;:2;:19;;;:55;;;;;8555:15;;;;;;;;;;;8539:32;;:4;:32;;;;8516:55;:85;;;;;8577:18;:24;8596:4;8577:24;;;;;;;;;;;;;;;;;;;;;;;;;8575:26;8516:85;8512:172;;;8634:1;8622:9;:13;;;;8666:2;8654:9;:14;;;;8512:172;8698:28;8729:24;8747:4;8729:9;:24::i;:::-;8698:55;;8773:6;;;;;;;;;;;8772:7;:32;;;;;8791:13;;;;;;;;;;;8783:21;;:4;:21;;;;8772:32;:47;;;;;8808:11;;;;;;;;;;;8772:47;8768:318;;;8840:38;8857:20;8840:16;:38::i;:::-;8897:26;8926:21;8897:50;;8990:1;8969:18;:22;8966:105;;;9016:35;9029:21;9016:12;:35::i;:::-;8966:105;8821:265;8768:318;8082:1015;8044:1053;9111:30;9126:4;9131:2;9134:6;9111:14;:30::i;:::-;7674:1475;;;:::o;1243:190::-;1329:7;1362:1;1357;:6;;1365:12;1349:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1389:9;1405:1;1401;:5;;;;:::i;:::-;1389:17;;1424:1;1417:8;;;1243:190;;;;;:::o;9656:318::-;9713:17;9733:24;9747:9;;9733;;:13;;:24;;;;:::i;:::-;9713:44;;9768:18;9789:21;9800:9;9789:6;:10;;:21;;;;:::i;:::-;9768:42;;9821:15;;;;;;;;;;;:24;;:51;9846:25;9861:9;;9846:10;:14;;:25;;;;:::i;:::-;9821:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:15;;;;;;;;;;;:24;;:36;9908:10;9883:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9930:15;;;;;;;;;;;:24;;:36;9955:10;9930:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9702:272;;9656:318;:::o;7069:254::-;7136:7;7175;;7164;:18;;7156:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7240:19;7263:10;:8;:10::i;:::-;7240:33;;7291:24;7303:11;7291:7;:11;;:24;;;;:::i;:::-;7284:31;;;7069:254;;;:::o;9157:483::-;4925:4;4916:6;;:13;;;;;;;;;;;;;;;;;;9235:21:::1;9273:1;9259:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9235:40;;9304:4;9286;9291:1;9286:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9330:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9320:4;9325:1;9320:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9363:62;9380:4;9395:15;;;;;;;;;;;9413:11;9363:8;:62::i;:::-;9436:15;;;;;;;;;;;:66;;;9517:11;9543:1;9559:4;9586;9606:15;9436:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9224:416;4961:5:::0;4952:6;;:14;;;;;;;;;;;;;;;;;;9157:483;:::o;11213:146::-;11307:44;11325:6;11333:9;11344:6;11307:17;:44::i;:::-;11213:146;;;:::o;912:179::-;970:7;990:9;1006:1;1002;:5;;;;:::i;:::-;990:17;;1031:1;1026;:6;;1018:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1082:1;1075:8;;;912:179;;;;:::o;1695:132::-;1753:7;1780:39;1784:1;1787;1780:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1773:46;;1695:132;;;;:::o;1441:246::-;1499:7;1528:1;1523;:6;1519:47;;;1553:1;1546:8;;;;1519:47;1576:9;1592:1;1588;:5;;;;:::i;:::-;1576:17;;1621:1;1616;1612;:5;;;;:::i;:::-;:10;1604:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:1;1671:8;;;1441:246;;;;;:::o;14339:163::-;14380:7;14401:15;14418;14437:19;:17;:19::i;:::-;14400:56;;;;14474:20;14486:7;14474;:11;;:20;;;;:::i;:::-;14467:27;;;;14339:163;:::o;11367:721::-;11466:15;11483:23;11508:12;11522:23;11547:12;11561:13;11578:19;11589:7;11578:10;:19::i;:::-;11465:132;;;;;;;;;;;;11611:11;:19;11623:6;11611:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11634:11;:22;11646:9;11634:22;;;;;;;;;;;;;;;;;;;;;;;;;11611:45;11608:413;;;11690:28;11710:7;11690;:15;11698:6;11690:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11672:7;:15;11680:6;11672:15;;;;;;;;;;;;;;;:46;;;;11754:31;11777:7;11754;:18;11762:9;11754:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;11733:7;:18;11741:9;11733:18;;;;;;;;;;;;;;;:52;;;;11608:413;;;11836:28;11856:7;11836;:15;11844:6;11836:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11818:7;:15;11826:6;11818:15;;;;;;;;;;;;;;;:46;;;;11900:39;11923:15;11900:7;:18;11908:9;11900:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11879:7;:18;11887:9;11879:18;;;;;;;;;;;;;;;:60;;;;11955:16;11965:5;11955:9;:16::i;:::-;11986:23;11998:4;12004;11986:11;:23::i;:::-;11608:413;12053:9;12036:44;;12045:6;12036:44;;;12064:15;12036:44;;;;;;:::i;:::-;;;;;;;;11454:634;;;;;;11367:721;;;:::o;1835:189::-;1921:7;1953:1;1949;:5;1956:12;1941:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1980:9;1996:1;1992;:5;;;;:::i;:::-;1980:17;;2015:1;2008:8;;;1835:189;;;;;:::o;14510:262::-;14560:7;14569;14589:15;14607:7;;14589:25;;14625:15;4075:24;14625:25;;14681:20;4075:24;14681:7;;:11;;:20;;;;:::i;:::-;14671:7;:30;14667:61;;;14711:7;;4075:24;14703:25;;;;;;;;14667:61;14747:7;14756;14739:25;;;;;;14510:262;;;:::o;13087:471::-;13146:7;13155;13164;13173;13182;13191;13212:23;13237:12;13251:13;13268:42;13280:7;13289:9;;13300;;13268:11;:42::i;:::-;13211:99;;;;;;13321:19;13344:10;:8;:10::i;:::-;13321:33;;13366:15;13383:23;13408:12;13424:46;13436:7;13445:4;13451:5;13458:11;13424;:46::i;:::-;13365:105;;;;;;13489:7;13498:15;13515:4;13521:15;13538:4;13544:5;13481:69;;;;;;;;;;;;;;;;;;;13087:471;;;;;;;:::o;1099:136::-;1157:7;1184:43;1188:1;1191;1184:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1177:50;;1099:136;;;;:::o;12096:212::-;12149:19;12172:10;:8;:10::i;:::-;12149:33;;12193:13;12209:22;12219:11;12209:5;:9;;:22;;;;:::i;:::-;12193:38;;12267:33;12294:5;12267:7;:22;12283:4;12267:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12242:7;:22;12258:4;12242:22;;;;;;;;;;;;;;;:58;;;;12138:170;;12096:212;:::o;12316:147::-;12394:17;12406:4;12394:7;;:11;;:17;;;;:::i;:::-;12384:7;:27;;;;12435:20;12450:4;12435:10;;:14;;:20;;;;:::i;:::-;12422:10;:33;;;;12316:147;;:::o;13566:351::-;13659:7;13668;13677;13697:12;13712:28;13736:3;13712:19;13724:6;13712:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13697:43;;13751:13;13767:29;13792:3;13767:20;13779:7;13767;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13751:45;;13807:23;13833:28;13855:5;13833:17;13845:4;13833:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13807:54;;13880:15;13897:4;13903:5;13872:37;;;;;;;;;13566:351;;;;;;;:::o;13925:409::-;14035:7;14044;14053;14073:15;14091:24;14103:11;14091:7;:11;;:24;;;;:::i;:::-;14073:42;;14126:12;14141:21;14150:11;14141:4;:8;;:21;;;;:::i;:::-;14126:36;;14173:13;14189:22;14199:11;14189:5;:9;;:22;;;;:::i;:::-;14173:38;;14222:23;14248:28;14270:5;14248:17;14260:4;14248:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14222:54;;14295:7;14304:15;14321:4;14287:39;;;;;;;;;;13925:409;;;;;;;;:::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;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700: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:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:323::-;5553:6;5602:2;5590:9;5581:7;5577:23;5573:32;5570:119;;;5608:79;;:::i;:::-;5570:119;5728:1;5753:50;5795:7;5786:6;5775:9;5771:22;5753:50;:::i;:::-;5743:60;;5699:114;5497:323;;;;:::o;5826:468::-;5891:6;5899;5948:2;5936:9;5927:7;5923:23;5919:32;5916:119;;;5954:79;;:::i;:::-;5916:119;6074:1;6099:53;6144:7;6135:6;6124:9;6120:22;6099:53;:::i;:::-;6089:63;;6045:117;6201:2;6227:50;6269:7;6260:6;6249:9;6245:22;6227:50;:::i;:::-;6217:60;;6172:115;5826:468;;;;;:::o;6300:118::-;6387:24;6405:5;6387:24;:::i;:::-;6382:3;6375:37;6300:118;;:::o;6424:222::-;6517:4;6555:2;6544:9;6540:18;6532:26;;6568:71;6636:1;6625:9;6621:17;6612:6;6568:71;:::i;:::-;6424:222;;;;:::o;6652:117::-;6761:1;6758;6751:12;6775:180;6823:77;6820:1;6813:88;6920:4;6917:1;6910:15;6944:4;6941:1;6934:15;6961:281;7044:27;7066:4;7044:27;:::i;:::-;7036:6;7032:40;7174:6;7162:10;7159:22;7138:18;7126:10;7123:34;7120:62;7117:88;;;7185:18;;:::i;:::-;7117:88;7225:10;7221:2;7214:22;7004:238;6961:281;;:::o;7248:129::-;7282:6;7309:20;;:::i;:::-;7299:30;;7338:33;7366:4;7358:6;7338:33;:::i;:::-;7248:129;;;:::o;7383:311::-;7460:4;7550:18;7542:6;7539:30;7536:56;;;7572:18;;:::i;:::-;7536:56;7622:4;7614:6;7610:17;7602:25;;7682:4;7676;7672:15;7664:23;;7383:311;;;:::o;7700:117::-;7809:1;7806;7799:12;7840:710;7936:5;7961:81;7977:64;8034:6;7977:64;:::i;:::-;7961:81;:::i;:::-;7952:90;;8062:5;8091:6;8084:5;8077:21;8125:4;8118:5;8114:16;8107:23;;8178:4;8170:6;8166:17;8158:6;8154:30;8207:3;8199:6;8196:15;8193:122;;;8226:79;;:::i;:::-;8193:122;8341:6;8324:220;8358:6;8353:3;8350:15;8324:220;;;8433:3;8462:37;8495:3;8483:10;8462:37;:::i;:::-;8457:3;8450:50;8529:4;8524:3;8520:14;8513:21;;8400:144;8384:4;8379:3;8375:14;8368:21;;8324:220;;;8328:21;7942:608;;7840:710;;;;;:::o;8573:370::-;8644:5;8693:3;8686:4;8678:6;8674:17;8670:27;8660:122;;8701:79;;:::i;:::-;8660:122;8818:6;8805:20;8843:94;8933:3;8925:6;8918:4;8910:6;8906:17;8843:94;:::i;:::-;8834:103;;8650:293;8573:370;;;;:::o;8949:539::-;9033:6;9082:2;9070:9;9061:7;9057:23;9053:32;9050:119;;;9088:79;;:::i;:::-;9050:119;9236:1;9225:9;9221:17;9208:31;9266:18;9258:6;9255:30;9252:117;;;9288:79;;:::i;:::-;9252:117;9393:78;9463:7;9454:6;9443:9;9439:22;9393:78;:::i;:::-;9383:88;;9179:302;8949:539;;;;:::o;9494:474::-;9562:6;9570;9619:2;9607:9;9598:7;9594:23;9590:32;9587:119;;;9625:79;;:::i;:::-;9587:119;9745:1;9770:53;9815:7;9806:6;9795:9;9791:22;9770:53;:::i;:::-;9760:63;;9716:117;9872:2;9898:53;9943:7;9934:6;9923:9;9919:22;9898:53;:::i;:::-;9888:63;;9843:118;9494:474;;;;;:::o;9974:182::-;10114:34;10110:1;10102:6;10098:14;10091:58;9974:182;:::o;10162:366::-;10304:3;10325:67;10389:2;10384:3;10325:67;:::i;:::-;10318:74;;10401:93;10490:3;10401:93;:::i;:::-;10519:2;10514:3;10510:12;10503:19;;10162:366;;;:::o;10534:419::-;10700:4;10738:2;10727:9;10723:18;10715:26;;10787:9;10781:4;10777:20;10773:1;10762:9;10758:17;10751:47;10815:131;10941:4;10815:131;:::i;:::-;10807:139;;10534:419;;;:::o;10959:180::-;11007:77;11004:1;10997:88;11104:4;11101:1;11094:15;11128:4;11125:1;11118:15;11145:180;11193:77;11190:1;11183:88;11290:4;11287:1;11280:15;11314:4;11311:1;11304:15;11331:233;11370:3;11393:24;11411:5;11393:24;:::i;:::-;11384:33;;11439:66;11432:5;11429:77;11426:103;;;11509:18;;:::i;:::-;11426:103;11556:1;11549:5;11545:13;11538:20;;11331:233;;;:::o;11570:173::-;11710:25;11706:1;11698:6;11694:14;11687:49;11570:173;:::o;11749:366::-;11891:3;11912:67;11976:2;11971:3;11912:67;:::i;:::-;11905:74;;11988:93;12077:3;11988:93;:::i;:::-;12106:2;12101:3;12097:12;12090:19;;11749:366;;;:::o;12121:419::-;12287:4;12325:2;12314:9;12310:18;12302:26;;12374:9;12368:4;12364:20;12360:1;12349:9;12345:17;12338:47;12402:131;12528:4;12402:131;:::i;:::-;12394:139;;12121:419;;;:::o;12546:143::-;12603:5;12634:6;12628:13;12619:22;;12650:33;12677:5;12650:33;:::i;:::-;12546:143;;;;:::o;12695:351::-;12765:6;12814:2;12802:9;12793:7;12789:23;12785:32;12782:119;;;12820:79;;:::i;:::-;12782:119;12940:1;12965:64;13021:7;13012:6;13001:9;12997:22;12965:64;:::i;:::-;12955:74;;12911:128;12695:351;;;;:::o;13052:332::-;13173:4;13211:2;13200:9;13196:18;13188:26;;13224:71;13292:1;13281:9;13277:17;13268:6;13224:71;:::i;:::-;13305:72;13373:2;13362:9;13358:18;13349:6;13305:72;:::i;:::-;13052:332;;;;;:::o;13390:85::-;13435:7;13464:5;13453:16;;13390:85;;;:::o;13481:60::-;13509:3;13530:5;13523:12;;13481:60;;;:::o;13547:158::-;13605:9;13638:61;13656:42;13665:32;13691:5;13665:32;:::i;:::-;13656:42;:::i;:::-;13638:61;:::i;:::-;13625:74;;13547:158;;;:::o;13711:147::-;13806:45;13845:5;13806:45;:::i;:::-;13801:3;13794:58;13711:147;;:::o;13864:807::-;14113:4;14151:3;14140:9;14136:19;14128:27;;14165:71;14233:1;14222:9;14218:17;14209:6;14165:71;:::i;:::-;14246:72;14314:2;14303:9;14299:18;14290:6;14246:72;:::i;:::-;14328:80;14404:2;14393:9;14389:18;14380:6;14328:80;:::i;:::-;14418;14494:2;14483:9;14479:18;14470:6;14418:80;:::i;:::-;14508:73;14576:3;14565:9;14561:19;14552:6;14508:73;:::i;:::-;14591;14659:3;14648:9;14644:19;14635:6;14591:73;:::i;:::-;13864:807;;;;;;;;;:::o;14677:143::-;14734:5;14765:6;14759:13;14750:22;;14781:33;14808:5;14781:33;:::i;:::-;14677:143;;;;:::o;14826:663::-;14914:6;14922;14930;14979:2;14967:9;14958:7;14954:23;14950:32;14947:119;;;14985:79;;:::i;:::-;14947:119;15105:1;15130:64;15186:7;15177:6;15166:9;15162:22;15130:64;:::i;:::-;15120:74;;15076:128;15243:2;15269:64;15325:7;15316:6;15305:9;15301:22;15269:64;:::i;:::-;15259:74;;15214:129;15382:2;15408:64;15464:7;15455:6;15444:9;15440:22;15408:64;:::i;:::-;15398:74;;15353:129;14826:663;;;;;:::o;15495:332::-;15616:4;15654:2;15643:9;15639:18;15631:26;;15667:71;15735:1;15724:9;15720:17;15711:6;15667:71;:::i;:::-;15748:72;15816:2;15805:9;15801:18;15792:6;15748:72;:::i;:::-;15495:332;;;;;:::o;15833:137::-;15887:5;15918:6;15912:13;15903:22;;15934:30;15958:5;15934:30;:::i;:::-;15833:137;;;;:::o;15976:345::-;16043:6;16092:2;16080:9;16071:7;16067:23;16063:32;16060:119;;;16098:79;;:::i;:::-;16060:119;16218:1;16243:61;16296:7;16287:6;16276:9;16272:22;16243:61;:::i;:::-;16233:71;;16189:125;15976:345;;;;:::o;16327:223::-;16467:34;16463:1;16455:6;16451:14;16444:58;16536:6;16531:2;16523:6;16519:15;16512:31;16327:223;:::o;16556:366::-;16698:3;16719:67;16783:2;16778:3;16719:67;:::i;:::-;16712:74;;16795:93;16884:3;16795:93;:::i;:::-;16913:2;16908:3;16904:12;16897:19;;16556:366;;;:::o;16928:419::-;17094:4;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;16928:419;;;:::o;17353:221::-;17493:34;17489:1;17481:6;17477:14;17470:58;17562:4;17557:2;17549:6;17545:15;17538:29;17353:221;:::o;17580:366::-;17722:3;17743:67;17807:2;17802:3;17743:67;:::i;:::-;17736:74;;17819:93;17908:3;17819:93;:::i;:::-;17937:2;17932:3;17928:12;17921:19;;17580:366;;;:::o;17952:419::-;18118:4;18156:2;18145:9;18141:18;18133:26;;18205:9;18199:4;18195:20;18191:1;18180:9;18176:17;18169:47;18233:131;18359:4;18233:131;:::i;:::-;18225:139;;17952:419;;;:::o;18377:224::-;18517:34;18513:1;18505:6;18501:14;18494:58;18586:7;18581:2;18573:6;18569:15;18562:32;18377:224;:::o;18607:366::-;18749:3;18770:67;18834:2;18829:3;18770:67;:::i;:::-;18763:74;;18846:93;18935:3;18846:93;:::i;:::-;18964:2;18959:3;18955:12;18948:19;;18607:366;;;:::o;18979:419::-;19145:4;19183:2;19172:9;19168:18;19160:26;;19232:9;19226:4;19222:20;19218:1;19207:9;19203:17;19196:47;19260:131;19386:4;19260:131;:::i;:::-;19252:139;;18979:419;;;:::o;19404:222::-;19544:34;19540:1;19532:6;19528:14;19521:58;19613:5;19608:2;19600:6;19596:15;19589:30;19404:222;:::o;19632:366::-;19774:3;19795:67;19859:2;19854:3;19795:67;:::i;:::-;19788:74;;19871:93;19960:3;19871:93;:::i;:::-;19989:2;19984:3;19980:12;19973:19;;19632:366;;;:::o;20004:419::-;20170:4;20208:2;20197:9;20193:18;20185:26;;20257:9;20251:4;20247:20;20243:1;20232:9;20228:17;20221:47;20285:131;20411:4;20285:131;:::i;:::-;20277:139;;20004:419;;;:::o;20429:228::-;20569:34;20565:1;20557:6;20553:14;20546:58;20638:11;20633:2;20625:6;20621:15;20614:36;20429:228;:::o;20663:366::-;20805:3;20826:67;20890:2;20885:3;20826:67;:::i;:::-;20819:74;;20902:93;20991:3;20902:93;:::i;:::-;21020:2;21015:3;21011:12;21004:19;;20663:366;;;:::o;21035:419::-;21201:4;21239:2;21228:9;21224:18;21216:26;;21288:9;21282:4;21278:20;21274:1;21263:9;21259:17;21252:47;21316:131;21442:4;21316:131;:::i;:::-;21308:139;;21035:419;;;:::o;21460:305::-;21500:3;21519:20;21537:1;21519:20;:::i;:::-;21514:25;;21553:20;21571:1;21553:20;:::i;:::-;21548:25;;21707:1;21639:66;21635:74;21632:1;21629:81;21626:107;;;21713:18;;:::i;:::-;21626:107;21757:1;21754;21750:9;21743:16;;21460:305;;;;:::o;21771:191::-;21811:4;21831:20;21849:1;21831:20;:::i;:::-;21826:25;;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;21904:1;21901;21898:8;21895:34;;;21909:18;;:::i;:::-;21895:34;21954:1;21951;21947:9;21939:17;;21771:191;;;;:::o;21968:229::-;22108:34;22104:1;22096:6;22092:14;22085:58;22177:12;22172:2;22164:6;22160:15;22153:37;21968:229;:::o;22203:366::-;22345:3;22366:67;22430:2;22425:3;22366:67;:::i;:::-;22359:74;;22442:93;22531:3;22442:93;:::i;:::-;22560:2;22555:3;22551:12;22544:19;;22203:366;;;:::o;22575:419::-;22741:4;22779:2;22768:9;22764:18;22756:26;;22828:9;22822:4;22818:20;22814:1;22803:9;22799:17;22792:47;22856:131;22982:4;22856:131;:::i;:::-;22848:139;;22575:419;;;:::o;23000:114::-;23067:6;23101:5;23095:12;23085:22;;23000:114;;;:::o;23120:184::-;23219:11;23253:6;23248:3;23241:19;23293:4;23288:3;23284:14;23269:29;;23120:184;;;;:::o;23310:132::-;23377:4;23400:3;23392:11;;23430:4;23425:3;23421:14;23413:22;;23310:132;;;:::o;23448:108::-;23525:24;23543:5;23525:24;:::i;:::-;23520:3;23513:37;23448:108;;:::o;23562:179::-;23631:10;23652:46;23694:3;23686:6;23652:46;:::i;:::-;23730:4;23725:3;23721:14;23707:28;;23562:179;;;;:::o;23747:113::-;23817:4;23849;23844:3;23840:14;23832:22;;23747:113;;;:::o;23896:732::-;24015:3;24044:54;24092:5;24044:54;:::i;:::-;24114:86;24193:6;24188:3;24114:86;:::i;:::-;24107:93;;24224:56;24274:5;24224:56;:::i;:::-;24303:7;24334:1;24319:284;24344:6;24341:1;24338:13;24319:284;;;24420:6;24414:13;24447:63;24506:3;24491:13;24447:63;:::i;:::-;24440:70;;24533:60;24586:6;24533:60;:::i;:::-;24523:70;;24379:224;24366:1;24363;24359:9;24354:14;;24319:284;;;24323:14;24619:3;24612:10;;24020:608;;;23896:732;;;;:::o;24634:831::-;24897:4;24935:3;24924:9;24920:19;24912:27;;24949:71;25017:1;25006:9;25002:17;24993:6;24949:71;:::i;:::-;25030:80;25106:2;25095:9;25091:18;25082:6;25030:80;:::i;:::-;25157:9;25151:4;25147:20;25142:2;25131:9;25127:18;25120:48;25185:108;25288:4;25279:6;25185:108;:::i;:::-;25177:116;;25303:72;25371:2;25360:9;25356:18;25347:6;25303:72;:::i;:::-;25385:73;25453:3;25442:9;25438:19;25429:6;25385:73;:::i;:::-;24634:831;;;;;;;;:::o;25471:177::-;25611:29;25607:1;25599:6;25595:14;25588:53;25471:177;:::o;25654:366::-;25796:3;25817:67;25881:2;25876:3;25817:67;:::i;:::-;25810:74;;25893:93;25982:3;25893:93;:::i;:::-;26011:2;26006:3;26002:12;25995:19;;25654:366;;;:::o;26026:419::-;26192:4;26230:2;26219:9;26215:18;26207:26;;26279:9;26273:4;26269:20;26265:1;26254:9;26250:17;26243:47;26307:131;26433:4;26307:131;:::i;:::-;26299:139;;26026:419;;;:::o;26451:348::-;26491:7;26514:20;26532:1;26514:20;:::i;:::-;26509:25;;26548:20;26566:1;26548:20;:::i;:::-;26543:25;;26736:1;26668:66;26664:74;26661:1;26658:81;26653:1;26646:9;26639:17;26635:105;26632:131;;;26743:18;;:::i;:::-;26632:131;26791:1;26788;26784:9;26773:20;;26451:348;;;;:::o;26805:180::-;26853:77;26850:1;26843:88;26950:4;26947:1;26940:15;26974:4;26971:1;26964:15;26991:185;27031:1;27048:20;27066:1;27048:20;:::i;:::-;27043:25;;27082:20;27100:1;27082:20;:::i;:::-;27077:25;;27121:1;27111:35;;27126:18;;:::i;:::-;27111:35;27168:1;27165;27161:9;27156:14;;26991:185;;;;:::o;27182:220::-;27322:34;27318:1;27310:6;27306:14;27299:58;27391:3;27386:2;27378:6;27374:15;27367:28;27182:220;:::o;27408:366::-;27550:3;27571:67;27635:2;27630:3;27571:67;:::i;:::-;27564:74;;27647:93;27736:3;27647:93;:::i;:::-;27765:2;27760:3;27756:12;27749:19;;27408:366;;;:::o;27780:419::-;27946:4;27984:2;27973:9;27969:18;27961:26;;28033:9;28027:4;28023:20;28019:1;28008:9;28004:17;27997:47;28061:131;28187:4;28061:131;:::i;:::-;28053:139;;27780:419;;;:::o

Swarm Source

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