ETH Price: $2,499.18 (-0.68%)

Token

Feng Shui Wealth Pot (WEALTH)
 

Overview

Max Total Supply

1,000,000 WEALTH

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
2,251.29046259 WEALTH

Value
$0.00
0x7383cb23c4b4be6c3ed1cae6c72faca2e5d9c80f
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:
WealthCoinERC20

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-05
*/

// SPDX-License-Identifier: MIT
/**


By buying 2000 tokens or paying 200 tokens or 0.01 ETH, you become the "Key Holder".

If no one else buy/pay before timer runs out, the prize will be sent to Key Holder when anyone buy/sell/pay.

After claiming the prize, the Key Holder will be reset until someone buys/pays again.

== Tokenomics ==
Ticker: WEALTH
Name: Feng Shui Wealth Pot
Total Supply: 1,000,000
Max Tx: 20,000
Max Wallet: 20,000
Tax: 5%/5%

== How to Play ==
Buy 2,000 WEALTH Tokens or more on Uniswap
or
Pay 200 WEALTH Tokens via WEALTH DApp
or
Pay 0.01 ETH via WEALTH DApp

== Game mechanism formula ==
Action                              | Time Increase                           | Pool Increase
Buy 2000 WEALTH tokens on Uniswap   | 60000 / (2000 x 0.07 * 0.9) = 476 sec   | 2000 x 0.07 x 0.09 = 126 WEALTH
Pay 200 WEALTH tokens               | 60000 / (200 * 0.9) = 333 sec           | 200 x 0.9 = 180 WEALTH
Pay 0.01 ETH                        | 60000 / 1000 = 60 sec                   | 1000 WEALTH

Max Cap of timer: 3600 sec

== Features ==
Timer countdown increases inverse proportionally according to amount bought/paid
90% of tax/fee goes to prize pool
Prize pool is ever-increasing until a winner takes 50% as prize

== Links ==
Telegram: https://t.me/wealthcoinerc20
Website: https://chinesewealthpot.com

**/
pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

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

    uint256 private _reduceTaxCountdown=30;
    uint256 private _preventSwapBefore=1;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1_000_000 * 10**_decimals;
    string private constant _name = "Feng Shui Wealth Pot";
    string private constant _symbol = "WEALTH";
    uint256 private _buyTax=5;
    uint256 private _sellTax=5;
    uint256 public _maxTxAmount = 20_000 * 10**_decimals;
    uint256 public _maxWalletSize = 20_000 * 10**_decimals;
    uint256 private _minTaxSwap=10_000 * 10 ** _decimals;
    uint256 private _taxSwapAmount=10_000* 10 **_decimals;
    uint256 constant keyEthPrice=0.01 ether;

    address private _keyHolder = address(0x0);
    uint256 public keyMinBuy = 2_000 * 10 ** _decimals;
    uint256 public keyPrice = 200 * 10 ** _decimals;
    uint256 private _claimTime=0;
    uint256 private _prizePool=0;

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

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event PrizeClaimed(address _winner, uint256 amount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(_buyTax).div(100);
                if(_reduceTaxCountdown>0){_reduceTaxCountdown--;}

                if(hasPreviousWinner()){
                  claimPrize();
                }
                // buying more than 2000 tokens to become Key Holder
                if(amount>=keyMinBuy){
                  // 90% goes to prize pool
                  addTimer(to,taxAmount.mul(9).div(10));
                }
            }else if(to==uniswapV2Pair && ! _isExcludedFromFee[from]){
                taxAmount = amount.mul(_sellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>=_minTaxSwap && _reduceTaxCountdown<=_preventSwapBefore) {
                swapTokensForEth(_taxSwapAmount);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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

    function payTokensForTheKey() external{
      require(_balances[_msgSender()]>=keyPrice,"Insufficient balance");
      require(_keyHolder!=_msgSender(),"You already are the key holder");
      if(hasPreviousWinner()){
        claimPrize();
      }

      _balances[_msgSender()]=_balances[_msgSender()].sub(keyPrice);
      _balances[address(this)]=_balances[address(this)].add(keyPrice);
      emit Transfer(_msgSender(),address(this),keyPrice);
      addTimer(_msgSender(),keyPrice.mul(9).div(10));
    }

    function payEthForTheKey() external payable{
      require(msg.value >=keyEthPrice);
      require(_keyHolder!=_msgSender(),"You already are the key holder");
      if(hasPreviousWinner()){
        claimPrize();
      }
      addTimer(_msgSender(),1000*10**_decimals);
    }

    function addTimer(address holder, uint256 amount) private{
      _keyHolder=holder;
      if(_claimTime==0){
        _claimTime=block.timestamp;
      }
      _claimTime=_claimTime.add(getTimeIncrease(amount));
      if(_claimTime>block.timestamp+3600){
        _claimTime=block.timestamp+3600;
      }
      _prizePool=_prizePool.add(amount);
    }

    function getTimeIncrease(uint256 amount) public pure returns (uint256){
      amount=amount.div(10**_decimals);
      return amount>0?60000/amount:0;
    }

    function getClaimTime() public view returns (uint256){
      return _claimTime;
    }

    function getKeyHolder() public view returns (address){
      return _keyHolder;
    }

    function hasPreviousWinner() public view returns (bool){
      return _claimTime>0&&block.timestamp>=_claimTime && _keyHolder!=address(0x0);
    }

    function claimPrize() public {
      require(block.timestamp>=_claimTime,"Please wait until the timer runs out");
      require(_keyHolder!=address(0x0),"No key holder now");
      uint256 prize=_prizePool.div(2);
      _balances[_keyHolder]=_balances[_keyHolder].add(prize);
      emit Transfer(address(0x0),_keyHolder,prize);
      emit PrizeClaimed(_keyHolder, prize);
      _keyHolder=address(0x0);
      _claimTime=0;
      _prizePool=_prizePool.sub(prize);
    }

    function getPrizePool() public view returns (uint256){
      return _prizePool;
    }

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

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

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

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

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


    receive() external payable {}

    function manualswap() external {
        require(_msgSender() == _taxWallet);
        swapTokensForEth(balanceOf(address(this)));
    }

    function manualsend() external {
        require(_msgSender() == _taxWallet);
        sendETHToFee(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PrizeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":"claimPrize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getKeyHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrizePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTimeIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasPreviousWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keyMinBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"payEthForTheKey","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"payTokensForTheKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e6006556001600755600560085560056009556008600a6200002891906200067b565b614e20620000379190620006cb565b600a556008600a6200004a91906200067b565b614e20620000599190620006cb565b600b556008600a6200006c91906200067b565b6127106200007b9190620006cb565b600c556008600a6200008e91906200067b565b6127106200009d9190620006cb565b600d555f600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a620000f091906200067b565b6107d0620000ff9190620006cb565b600f556008600a6200011291906200067b565b60c8620001209190620006cb565b6010555f6011555f6012555f6014806101000a81548160ff0219169083151502179055505f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff02191690831515021790555034801562000184575f80fd5b505f62000196620004bb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000242620004bb60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a6200029191906200067b565b620f4240620002a19190620006cb565b60015f620002b4620004bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f62000306620004c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000430620004bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200048e91906200067b565b620f42406200049e9190620006cb565b604051620004ad919062000726565b60405180910390a362000741565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000573578086048111156200054b576200054a620004e9565b5b60018516156200055b5780820291505b80810290506200056b8562000516565b94506200052b565b94509492505050565b5f826200058d57600190506200065f565b816200059c575f90506200065f565b8160018114620005b55760028114620005c057620005f6565b60019150506200065f565b60ff841115620005d557620005d4620004e9565b5b8360020a915084821115620005ef57620005ee620004e9565b5b506200065f565b5060208310610133831016604e8410600b8410161715620006305782820a9050838111156200062a5762000629620004e9565b5b6200065f565b6200063f848484600162000522565b92509050818404811115620006595762000658620004e9565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006878262000666565b915062000694836200066f565b9250620006c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200057c565b905092915050565b5f620006d78262000666565b9150620006e48362000666565b9250828202620006f48162000666565b915082820484148315176200070e576200070d620004e9565b5b5092915050565b620007208162000666565b82525050565b5f6020820190506200073b5f83018462000715565b92915050565b613e7a806200074f5f395ff3fe6080604052600436106101c5575f3560e01c8063751039fc116100f6578063a9059cbb11610094578063d34628cc11610063578063d34628cc146105aa578063dd62ed3e146105d2578063e85ec5421461060e578063f5a0725614610624576101cc565b8063a9059cbb14610518578063bbc8a4a014610554578063c3c8cd801461057e578063c9567bf914610594576101cc565b8063884bf67c116100d0578063884bf67c146104705780638da5cb5b1461049a5780638f9a55c0146104c457806395d89b41146104ee576101cc565b8063751039fc146104065780637d1db4a51461041c57806384a6acce14610446576101cc565b80634af75dba116101635780636fc3eaec1161013d5780636fc3eaec1461038857806370740ac91461039e57806370a08231146103b4578063715018a6146103f0576101cc565b80634af75dba1461031857806352eff870146103225780635577810c1461035e576101cc565b806318160ddd1161019f57806318160ddd1461026057806323b872dd1461028a578063313ce567146102c657806331c2d847146102f0576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806310e5697314610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461064e565b6040516101f19190612ca1565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612d5f565b61068b565b60405161022d9190612db7565b60405180910390f35b348015610241575f80fd5b5061024a6106a8565b6040516102579190612ddf565b60405180910390f35b34801561026b575f80fd5b506102746106ae565b6040516102819190612ddf565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab9190612df8565b6106d0565b6040516102bd9190612db7565b60405180910390f35b3480156102d1575f80fd5b506102da6107a4565b6040516102e79190612e63565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190612fbc565b6107ac565b005b6103206108d0565b005b34801561032d575f80fd5b5061034860048036038101906103439190613003565b6109bc565b6040516103559190612ddf565b60405180910390f35b348015610369575f80fd5b50610372610a02565b60405161037f919061303d565b60405180910390f35b348015610393575f80fd5b5061039c610a2a565b005b3480156103a9575f80fd5b506103b2610a94565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190613056565b610d99565b6040516103e79190612ddf565b60405180910390f35b3480156103fb575f80fd5b50610404610ddf565b005b348015610411575f80fd5b5061041a610f2d565b005b348015610427575f80fd5b50610430611059565b60405161043d9190612ddf565b60405180910390f35b348015610451575f80fd5b5061045a61105f565b6040516104679190612db7565b60405180910390f35b34801561047b575f80fd5b506104846110d1565b6040516104919190612ddf565b60405180910390f35b3480156104a5575f80fd5b506104ae6110da565b6040516104bb919061303d565b60405180910390f35b3480156104cf575f80fd5b506104d8611101565b6040516104e59190612ddf565b60405180910390f35b3480156104f9575f80fd5b50610502611107565b60405161050f9190612ca1565b60405180910390f35b348015610523575f80fd5b5061053e60048036038101906105399190612d5f565b611144565b60405161054b9190612db7565b60405180910390f35b34801561055f575f80fd5b50610568611161565b6040516105759190612ddf565b60405180910390f35b348015610589575f80fd5b50610592611167565b005b34801561059f575f80fd5b506105a86111d9565b005b3480156105b5575f80fd5b506105d060048036038101906105cb9190612fbc565b6116f7565b005b3480156105dd575f80fd5b506105f860048036038101906105f39190613081565b61181c565b6040516106059190612ddf565b60405180910390f35b348015610619575f80fd5b5061062261189e565b005b34801561062f575f80fd5b50610638611bb0565b6040516106459190612ddf565b60405180910390f35b60606040518060400160405280601481526020017f46656e672053687569205765616c746820506f74000000000000000000000000815250905090565b5f61069e610697611bb9565b8484611bc0565b6001905092915050565b60105481565b5f6008600a6106bd919061321b565b620f42406106cb9190613265565b905090565b5f6106dc848484611d83565b610799846106e8611bb9565b61079485604051806060016040528060288152602001613e1d6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074b611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c9092919063ffffffff16565b611bc0565b600190509392505050565b5f6008905090565b6107b4611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610837906132f0565b60405180910390fd5b5f5b81518110156108cc575f60045f8484815181106108625761086161330e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c49061333b565b915050610842565b5050565b662386f26fc100003410156108e3575f80fd5b6108eb611bb9565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610970906133cc565b60405180910390fd5b61098161105f565b1561098f5761098e610a94565b5b6109ba61099a611bb9565b6008600a6109a8919061321b565b6103e86109b59190613265565b6126be565b565b5f6109dd6008600a6109ce919061321b565b8361277d90919063ffffffff16565b91505f82116109ec575f6109fb565b8161ea606109fa9190613417565b5b9050919050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6a611bb9565b73ffffffffffffffffffffffffffffffffffffffff1614610a89575f80fd5b610a92476127c6565b565b601154421015610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906134b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061351f565b60405180910390fd5b5f610b7f600260125461277d90919063ffffffff16565b9050610bf28160015f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cd29190612ddf565b60405180910390a37f95681e512bc0fe659e195e06c283eada494316f3d801213e48e7101af92bf770600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051610d2c92919061353d565b60405180910390a15f600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601181905550610d908160125461288b90919063ffffffff16565b60128190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610de7611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906132f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f35611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb8906132f0565b60405180910390fd5b6008600a610fcf919061321b565b620f4240610fdd9190613265565b600a819055506008600a610ff1919061321b565b620f4240610fff9190613265565b600b819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a611034919061321b565b620f42406110429190613265565b60405161104f9190612ddf565b60405180910390a1565b600a5481565b5f8060115411801561107357506011544210155b80156110cc57505f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b905090565b5f601254905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600681526020017f5745414c54480000000000000000000000000000000000000000000000000000815250905090565b5f611157611150611bb9565b8484611d83565b6001905092915050565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a7611bb9565b73ffffffffffffffffffffffffffffffffffffffff16146111c6575f80fd5b6111d76111d230610d99565b6128d4565b565b6111e1611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611264906132f0565b60405180910390fd5b60148054906101000a900460ff16156112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b2906135ae565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113563060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a611343919061321b565b620f42406113519190613265565b611bc0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e491906135e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148e91906135e0565b6040518363ffffffff1660e01b81526004016114ab92919061360b565b6020604051808303815f875af11580156114c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114eb91906135e0565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157230610d99565b5f8061157c6110da565b426040518863ffffffff1660e01b815260040161159e96959493929190613674565b60606040518083038185885af11580156115ba573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115df91906136e7565b5050506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116b492919061353d565b6020604051808303815f875af11580156116d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f49190613761565b50565b6116ff611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611782906132f0565b60405180910390fd5b5f5b815181101561181857600160045f8484815181106117ae576117ad61330e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806118109061333b565b91505061178d565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105460015f6118ac611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e906137d6565b60405180910390fd5b61192f611bb9565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b4906133cc565b60405180910390fd5b6119c561105f565b156119d3576119d2610a94565b5b611a2c60105460015f6119e4611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288b90919063ffffffff16565b60015f611a37611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ac660105460015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff16611b26611bb9565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601054604051611b6d9190612ddf565b60405180910390a3611bae611b80611bb9565b611ba9600a611b9b6009601054612b3f90919063ffffffff16565b61277d90919063ffffffff16565b6126be565b565b5f601154905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613864565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c93906138f2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d769190612ddf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890613980565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690613a0e565b60405180910390fd5b5f8111611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613a9c565b60405180910390fd5b5f611eaa6110da565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f185750611ee86110da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ac5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fbb575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611fc3575f80fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561206c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120bf575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561220257600a54821115612109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210090613b04565b60405180910390fd5b600b548261211685610d99565b6121209190613b22565b1115612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613b9f565b60405180910390fd5b612189606461217b60085485612b3f90919063ffffffff16565b61277d90919063ffffffff16565b90505f60065411156121ad5760065f8154809291906121a790613bbd565b91905055505b6121b561105f565b156121c3576121c2610a94565b5b600f5482106121fd576121fc836121f7600a6121e9600986612b3f90919063ffffffff16565b61277d90919063ffffffff16565b6126be565b5b6122d6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122a5575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122d5576122d260646122c460095485612b3f90919063ffffffff16565b61277d90919063ffffffff16565b90505b5b5f6122e030610d99565b9050601460159054906101000a900460ff1615801561234c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123645750601460169054906101000a900460ff165b80156123725750600c548110155b8015612382575060075460065411155b156123aa57612392600d546128d4565b5f4790505f8111156123a8576123a7476127c6565b5b505b505b6123fc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061249f612453828461288b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612542848661288b90919063ffffffff16565b60405161254f9190612ddf565b60405180910390a35f811115612656576125af8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264d9190612ddf565b60405180910390a35b50505050565b5f8383111582906126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a9190612ca1565b60405180910390fd5b505f83856126b19190613be4565b9050809150509392505050565b81600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6011540361270f57426011819055505b61272c61271b826109bc565b60115461282e90919063ffffffff16565b601181905550610e10426127409190613b22565b601154111561275e57610e10426127579190613b22565b6011819055505b6127738160125461282e90919063ffffffff16565b6012819055505050565b5f6127be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bb6565b905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561282a573d5f803e3d5ffd5b5050565b5f80828461283c9190613b22565b905083811015612881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287890613c61565b60405180910390fd5b8091505092915050565b5f6128cc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061265c565b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561290b5761290a612e80565b5b6040519080825280602002602001820160405280156129395781602001602082028036833780820191505090505b50905030815f815181106129505761294f61330e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1891906135e0565b81600181518110612a2c57612a2b61330e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a923060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612af4959493929190613d36565b5f604051808303815f87803b158015612b0b575f80fd5b505af1158015612b1d573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f808303612b4f575f9050612bb0565b5f8284612b5c9190613265565b9050828482612b6b9190613417565b14612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290613dfe565b60405180910390fd5b809150505b92915050565b5f8083118290612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf39190612ca1565b60405180910390fd5b505f8385612c0a9190613417565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4e578082015181840152602081019050612c33565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7382612c17565b612c7d8185612c21565b9350612c8d818560208601612c31565b612c9681612c59565b840191505092915050565b5f6020820190508181035f830152612cb98184612c69565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612cfb82612cd2565b9050919050565b612d0b81612cf1565b8114612d15575f80fd5b50565b5f81359050612d2681612d02565b92915050565b5f819050919050565b612d3e81612d2c565b8114612d48575f80fd5b50565b5f81359050612d5981612d35565b92915050565b5f8060408385031215612d7557612d74612cca565b5b5f612d8285828601612d18565b9250506020612d9385828601612d4b565b9150509250929050565b5f8115159050919050565b612db181612d9d565b82525050565b5f602082019050612dca5f830184612da8565b92915050565b612dd981612d2c565b82525050565b5f602082019050612df25f830184612dd0565b92915050565b5f805f60608486031215612e0f57612e0e612cca565b5b5f612e1c86828701612d18565b9350506020612e2d86828701612d18565b9250506040612e3e86828701612d4b565b9150509250925092565b5f60ff82169050919050565b612e5d81612e48565b82525050565b5f602082019050612e765f830184612e54565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612eb682612c59565b810181811067ffffffffffffffff82111715612ed557612ed4612e80565b5b80604052505050565b5f612ee7612cc1565b9050612ef38282612ead565b919050565b5f67ffffffffffffffff821115612f1257612f11612e80565b5b602082029050602081019050919050565b5f80fd5b5f612f39612f3484612ef8565b612ede565b90508083825260208201905060208402830185811115612f5c57612f5b612f23565b5b835b81811015612f855780612f718882612d18565b845260208401935050602081019050612f5e565b5050509392505050565b5f82601f830112612fa357612fa2612e7c565b5b8135612fb3848260208601612f27565b91505092915050565b5f60208284031215612fd157612fd0612cca565b5b5f82013567ffffffffffffffff811115612fee57612fed612cce565b5b612ffa84828501612f8f565b91505092915050565b5f6020828403121561301857613017612cca565b5b5f61302584828501612d4b565b91505092915050565b61303781612cf1565b82525050565b5f6020820190506130505f83018461302e565b92915050565b5f6020828403121561306b5761306a612cca565b5b5f61307884828501612d18565b91505092915050565b5f806040838503121561309757613096612cca565b5b5f6130a485828601612d18565b92505060206130b585828601612d18565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156131415780860481111561311d5761311c6130bf565b5b600185161561312c5780820291505b808102905061313a856130ec565b9450613101565b94509492505050565b5f826131595760019050613214565b81613166575f9050613214565b816001811461317c5760028114613186576131b5565b6001915050613214565b60ff841115613198576131976130bf565b5b8360020a9150848211156131af576131ae6130bf565b5b50613214565b5060208310610133831016604e8410600b84101617156131ea5782820a9050838111156131e5576131e46130bf565b5b613214565b6131f784848460016130f8565b9250905081840481111561320e5761320d6130bf565b5b81810290505b9392505050565b5f61322582612d2c565b915061323083612e48565b925061325d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461314a565b905092915050565b5f61326f82612d2c565b915061327a83612d2c565b925082820261328881612d2c565b9150828204841483151761329f5761329e6130bf565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132da602083612c21565b91506132e5826132a6565b602082019050919050565b5f6020820190508181035f830152613307816132ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61334582612d2c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613377576133766130bf565b5b600182019050919050565b7f596f7520616c72656164792061726520746865206b657920686f6c64657200005f82015250565b5f6133b6601e83612c21565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342182612d2c565b915061342c83612d2c565b92508261343c5761343b6133ea565b5b828204905092915050565b7f506c65617365207761697420756e74696c207468652074696d65722072756e735f8201527f206f757400000000000000000000000000000000000000000000000000000000602082015250565b5f6134a1602483612c21565b91506134ac82613447565b604082019050919050565b5f6020820190508181035f8301526134ce81613495565b9050919050565b7f4e6f206b657920686f6c646572206e6f770000000000000000000000000000005f82015250565b5f613509601183612c21565b9150613514826134d5565b602082019050919050565b5f6020820190508181035f830152613536816134fd565b9050919050565b5f6040820190506135505f83018561302e565b61355d6020830184612dd0565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613598601783612c21565b91506135a382613564565b602082019050919050565b5f6020820190508181035f8301526135c58161358c565b9050919050565b5f815190506135da81612d02565b92915050565b5f602082840312156135f5576135f4612cca565b5b5f613602848285016135cc565b91505092915050565b5f60408201905061361e5f83018561302e565b61362b602083018461302e565b9392505050565b5f819050919050565b5f819050919050565b5f61365e61365961365484613632565b61363b565b612d2c565b9050919050565b61366e81613644565b82525050565b5f60c0820190506136875f83018961302e565b6136946020830188612dd0565b6136a16040830187613665565b6136ae6060830186613665565b6136bb608083018561302e565b6136c860a0830184612dd0565b979650505050505050565b5f815190506136e181612d35565b92915050565b5f805f606084860312156136fe576136fd612cca565b5b5f61370b868287016136d3565b935050602061371c868287016136d3565b925050604061372d868287016136d3565b9150509250925092565b61374081612d9d565b811461374a575f80fd5b50565b5f8151905061375b81613737565b92915050565b5f6020828403121561377657613775612cca565b5b5f6137838482850161374d565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6137c0601483612c21565b91506137cb8261378c565b602082019050919050565b5f6020820190508181035f8301526137ed816137b4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61384e602483612c21565b9150613859826137f4565b604082019050919050565b5f6020820190508181035f83015261387b81613842565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138dc602283612c21565b91506138e782613882565b604082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602583612c21565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139f8602383612c21565b9150613a038261399e565b604082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a86602983612c21565b9150613a9182613a2c565b604082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613aee601983612c21565b9150613af982613aba565b602082019050919050565b5f6020820190508181035f830152613b1b81613ae2565b9050919050565b5f613b2c82612d2c565b9150613b3783612d2c565b9250828201905080821115613b4f57613b4e6130bf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613b89601a83612c21565b9150613b9482613b55565b602082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b5f613bc782612d2c565b91505f8203613bd957613bd86130bf565b5b600182039050919050565b5f613bee82612d2c565b9150613bf983612d2c565b9250828203905081811115613c1157613c106130bf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c4b601b83612c21565b9150613c5682613c17565b602082019050919050565b5f6020820190508181035f830152613c7881613c3f565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613cb181612cf1565b82525050565b5f613cc28383613ca8565b60208301905092915050565b5f602082019050919050565b5f613ce482613c7f565b613cee8185613c89565b9350613cf983613c99565b805f5b83811015613d29578151613d108882613cb7565b9750613d1b83613cce565b925050600181019050613cfc565b5085935050505092915050565b5f60a082019050613d495f830188612dd0565b613d566020830187613665565b8181036040830152613d688186613cda565b9050613d77606083018561302e565b613d846080830184612dd0565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613de8602183612c21565b9150613df382613d8e565b604082019050919050565b5f6020820190508181035f830152613e1581613ddc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089a6755e0755cb8810ee433d127347acbdfb745bca7a2e29377b7d5611a83b4064736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063751039fc116100f6578063a9059cbb11610094578063d34628cc11610063578063d34628cc146105aa578063dd62ed3e146105d2578063e85ec5421461060e578063f5a0725614610624576101cc565b8063a9059cbb14610518578063bbc8a4a014610554578063c3c8cd801461057e578063c9567bf914610594576101cc565b8063884bf67c116100d0578063884bf67c146104705780638da5cb5b1461049a5780638f9a55c0146104c457806395d89b41146104ee576101cc565b8063751039fc146104065780637d1db4a51461041c57806384a6acce14610446576101cc565b80634af75dba116101635780636fc3eaec1161013d5780636fc3eaec1461038857806370740ac91461039e57806370a08231146103b4578063715018a6146103f0576101cc565b80634af75dba1461031857806352eff870146103225780635577810c1461035e576101cc565b806318160ddd1161019f57806318160ddd1461026057806323b872dd1461028a578063313ce567146102c657806331c2d847146102f0576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806310e5697314610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461064e565b6040516101f19190612ca1565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612d5f565b61068b565b60405161022d9190612db7565b60405180910390f35b348015610241575f80fd5b5061024a6106a8565b6040516102579190612ddf565b60405180910390f35b34801561026b575f80fd5b506102746106ae565b6040516102819190612ddf565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab9190612df8565b6106d0565b6040516102bd9190612db7565b60405180910390f35b3480156102d1575f80fd5b506102da6107a4565b6040516102e79190612e63565b60405180910390f35b3480156102fb575f80fd5b5061031660048036038101906103119190612fbc565b6107ac565b005b6103206108d0565b005b34801561032d575f80fd5b5061034860048036038101906103439190613003565b6109bc565b6040516103559190612ddf565b60405180910390f35b348015610369575f80fd5b50610372610a02565b60405161037f919061303d565b60405180910390f35b348015610393575f80fd5b5061039c610a2a565b005b3480156103a9575f80fd5b506103b2610a94565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190613056565b610d99565b6040516103e79190612ddf565b60405180910390f35b3480156103fb575f80fd5b50610404610ddf565b005b348015610411575f80fd5b5061041a610f2d565b005b348015610427575f80fd5b50610430611059565b60405161043d9190612ddf565b60405180910390f35b348015610451575f80fd5b5061045a61105f565b6040516104679190612db7565b60405180910390f35b34801561047b575f80fd5b506104846110d1565b6040516104919190612ddf565b60405180910390f35b3480156104a5575f80fd5b506104ae6110da565b6040516104bb919061303d565b60405180910390f35b3480156104cf575f80fd5b506104d8611101565b6040516104e59190612ddf565b60405180910390f35b3480156104f9575f80fd5b50610502611107565b60405161050f9190612ca1565b60405180910390f35b348015610523575f80fd5b5061053e60048036038101906105399190612d5f565b611144565b60405161054b9190612db7565b60405180910390f35b34801561055f575f80fd5b50610568611161565b6040516105759190612ddf565b60405180910390f35b348015610589575f80fd5b50610592611167565b005b34801561059f575f80fd5b506105a86111d9565b005b3480156105b5575f80fd5b506105d060048036038101906105cb9190612fbc565b6116f7565b005b3480156105dd575f80fd5b506105f860048036038101906105f39190613081565b61181c565b6040516106059190612ddf565b60405180910390f35b348015610619575f80fd5b5061062261189e565b005b34801561062f575f80fd5b50610638611bb0565b6040516106459190612ddf565b60405180910390f35b60606040518060400160405280601481526020017f46656e672053687569205765616c746820506f74000000000000000000000000815250905090565b5f61069e610697611bb9565b8484611bc0565b6001905092915050565b60105481565b5f6008600a6106bd919061321b565b620f42406106cb9190613265565b905090565b5f6106dc848484611d83565b610799846106e8611bb9565b61079485604051806060016040528060288152602001613e1d6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074b611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c9092919063ffffffff16565b611bc0565b600190509392505050565b5f6008905090565b6107b4611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610837906132f0565b60405180910390fd5b5f5b81518110156108cc575f60045f8484815181106108625761086161330e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c49061333b565b915050610842565b5050565b662386f26fc100003410156108e3575f80fd5b6108eb611bb9565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610970906133cc565b60405180910390fd5b61098161105f565b1561098f5761098e610a94565b5b6109ba61099a611bb9565b6008600a6109a8919061321b565b6103e86109b59190613265565b6126be565b565b5f6109dd6008600a6109ce919061321b565b8361277d90919063ffffffff16565b91505f82116109ec575f6109fb565b8161ea606109fa9190613417565b5b9050919050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6a611bb9565b73ffffffffffffffffffffffffffffffffffffffff1614610a89575f80fd5b610a92476127c6565b565b601154421015610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906134b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061351f565b60405180910390fd5b5f610b7f600260125461277d90919063ffffffff16565b9050610bf28160015f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cd29190612ddf565b60405180910390a37f95681e512bc0fe659e195e06c283eada494316f3d801213e48e7101af92bf770600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051610d2c92919061353d565b60405180910390a15f600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601181905550610d908160125461288b90919063ffffffff16565b60128190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610de7611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906132f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f35611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb8906132f0565b60405180910390fd5b6008600a610fcf919061321b565b620f4240610fdd9190613265565b600a819055506008600a610ff1919061321b565b620f4240610fff9190613265565b600b819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a611034919061321b565b620f42406110429190613265565b60405161104f9190612ddf565b60405180910390a1565b600a5481565b5f8060115411801561107357506011544210155b80156110cc57505f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b905090565b5f601254905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600681526020017f5745414c54480000000000000000000000000000000000000000000000000000815250905090565b5f611157611150611bb9565b8484611d83565b6001905092915050565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a7611bb9565b73ffffffffffffffffffffffffffffffffffffffff16146111c6575f80fd5b6111d76111d230610d99565b6128d4565b565b6111e1611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611264906132f0565b60405180910390fd5b60148054906101000a900460ff16156112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b2906135ae565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113563060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a611343919061321b565b620f42406113519190613265565b611bc0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e491906135e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148e91906135e0565b6040518363ffffffff1660e01b81526004016114ab92919061360b565b6020604051808303815f875af11580156114c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114eb91906135e0565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157230610d99565b5f8061157c6110da565b426040518863ffffffff1660e01b815260040161159e96959493929190613674565b60606040518083038185885af11580156115ba573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115df91906136e7565b5050506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116b492919061353d565b6020604051808303815f875af11580156116d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f49190613761565b50565b6116ff611bb9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611782906132f0565b60405180910390fd5b5f5b815181101561181857600160045f8484815181106117ae576117ad61330e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806118109061333b565b91505061178d565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105460015f6118ac611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e906137d6565b60405180910390fd5b61192f611bb9565b73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b4906133cc565b60405180910390fd5b6119c561105f565b156119d3576119d2610a94565b5b611a2c60105460015f6119e4611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288b90919063ffffffff16565b60015f611a37611bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ac660105460015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff16611b26611bb9565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601054604051611b6d9190612ddf565b60405180910390a3611bae611b80611bb9565b611ba9600a611b9b6009601054612b3f90919063ffffffff16565b61277d90919063ffffffff16565b6126be565b565b5f601154905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613864565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c93906138f2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d769190612ddf565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890613980565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690613a0e565b60405180910390fd5b5f8111611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613a9c565b60405180910390fd5b5f611eaa6110da565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f185750611ee86110da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ac5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fbb575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611fc3575f80fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561206c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120bf575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561220257600a54821115612109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210090613b04565b60405180910390fd5b600b548261211685610d99565b6121209190613b22565b1115612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613b9f565b60405180910390fd5b612189606461217b60085485612b3f90919063ffffffff16565b61277d90919063ffffffff16565b90505f60065411156121ad5760065f8154809291906121a790613bbd565b91905055505b6121b561105f565b156121c3576121c2610a94565b5b600f5482106121fd576121fc836121f7600a6121e9600986612b3f90919063ffffffff16565b61277d90919063ffffffff16565b6126be565b5b6122d6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122a5575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122d5576122d260646122c460095485612b3f90919063ffffffff16565b61277d90919063ffffffff16565b90505b5b5f6122e030610d99565b9050601460159054906101000a900460ff1615801561234c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123645750601460169054906101000a900460ff165b80156123725750600c548110155b8015612382575060075460065411155b156123aa57612392600d546128d4565b5f4790505f8111156123a8576123a7476127c6565b5b505b505b6123fc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061249f612453828461288b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612542848661288b90919063ffffffff16565b60405161254f9190612ddf565b60405180910390a35f811115612656576125af8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264d9190612ddf565b60405180910390a35b50505050565b5f8383111582906126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a9190612ca1565b60405180910390fd5b505f83856126b19190613be4565b9050809150509392505050565b81600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6011540361270f57426011819055505b61272c61271b826109bc565b60115461282e90919063ffffffff16565b601181905550610e10426127409190613b22565b601154111561275e57610e10426127579190613b22565b6011819055505b6127738160125461282e90919063ffffffff16565b6012819055505050565b5f6127be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bb6565b905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561282a573d5f803e3d5ffd5b5050565b5f80828461283c9190613b22565b905083811015612881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287890613c61565b60405180910390fd5b8091505092915050565b5f6128cc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061265c565b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561290b5761290a612e80565b5b6040519080825280602002602001820160405280156129395781602001602082028036833780820191505090505b50905030815f815181106129505761294f61330e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1891906135e0565b81600181518110612a2c57612a2b61330e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a923060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612af4959493929190613d36565b5f604051808303815f87803b158015612b0b575f80fd5b505af1158015612b1d573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f808303612b4f575f9050612bb0565b5f8284612b5c9190613265565b9050828482612b6b9190613417565b14612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290613dfe565b60405180910390fd5b809150505b92915050565b5f8083118290612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf39190612ca1565b60405180910390fd5b505f8385612c0a9190613417565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4e578082015181840152602081019050612c33565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7382612c17565b612c7d8185612c21565b9350612c8d818560208601612c31565b612c9681612c59565b840191505092915050565b5f6020820190508181035f830152612cb98184612c69565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612cfb82612cd2565b9050919050565b612d0b81612cf1565b8114612d15575f80fd5b50565b5f81359050612d2681612d02565b92915050565b5f819050919050565b612d3e81612d2c565b8114612d48575f80fd5b50565b5f81359050612d5981612d35565b92915050565b5f8060408385031215612d7557612d74612cca565b5b5f612d8285828601612d18565b9250506020612d9385828601612d4b565b9150509250929050565b5f8115159050919050565b612db181612d9d565b82525050565b5f602082019050612dca5f830184612da8565b92915050565b612dd981612d2c565b82525050565b5f602082019050612df25f830184612dd0565b92915050565b5f805f60608486031215612e0f57612e0e612cca565b5b5f612e1c86828701612d18565b9350506020612e2d86828701612d18565b9250506040612e3e86828701612d4b565b9150509250925092565b5f60ff82169050919050565b612e5d81612e48565b82525050565b5f602082019050612e765f830184612e54565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612eb682612c59565b810181811067ffffffffffffffff82111715612ed557612ed4612e80565b5b80604052505050565b5f612ee7612cc1565b9050612ef38282612ead565b919050565b5f67ffffffffffffffff821115612f1257612f11612e80565b5b602082029050602081019050919050565b5f80fd5b5f612f39612f3484612ef8565b612ede565b90508083825260208201905060208402830185811115612f5c57612f5b612f23565b5b835b81811015612f855780612f718882612d18565b845260208401935050602081019050612f5e565b5050509392505050565b5f82601f830112612fa357612fa2612e7c565b5b8135612fb3848260208601612f27565b91505092915050565b5f60208284031215612fd157612fd0612cca565b5b5f82013567ffffffffffffffff811115612fee57612fed612cce565b5b612ffa84828501612f8f565b91505092915050565b5f6020828403121561301857613017612cca565b5b5f61302584828501612d4b565b91505092915050565b61303781612cf1565b82525050565b5f6020820190506130505f83018461302e565b92915050565b5f6020828403121561306b5761306a612cca565b5b5f61307884828501612d18565b91505092915050565b5f806040838503121561309757613096612cca565b5b5f6130a485828601612d18565b92505060206130b585828601612d18565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156131415780860481111561311d5761311c6130bf565b5b600185161561312c5780820291505b808102905061313a856130ec565b9450613101565b94509492505050565b5f826131595760019050613214565b81613166575f9050613214565b816001811461317c5760028114613186576131b5565b6001915050613214565b60ff841115613198576131976130bf565b5b8360020a9150848211156131af576131ae6130bf565b5b50613214565b5060208310610133831016604e8410600b84101617156131ea5782820a9050838111156131e5576131e46130bf565b5b613214565b6131f784848460016130f8565b9250905081840481111561320e5761320d6130bf565b5b81810290505b9392505050565b5f61322582612d2c565b915061323083612e48565b925061325d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461314a565b905092915050565b5f61326f82612d2c565b915061327a83612d2c565b925082820261328881612d2c565b9150828204841483151761329f5761329e6130bf565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132da602083612c21565b91506132e5826132a6565b602082019050919050565b5f6020820190508181035f830152613307816132ce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61334582612d2c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613377576133766130bf565b5b600182019050919050565b7f596f7520616c72656164792061726520746865206b657920686f6c64657200005f82015250565b5f6133b6601e83612c21565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342182612d2c565b915061342c83612d2c565b92508261343c5761343b6133ea565b5b828204905092915050565b7f506c65617365207761697420756e74696c207468652074696d65722072756e735f8201527f206f757400000000000000000000000000000000000000000000000000000000602082015250565b5f6134a1602483612c21565b91506134ac82613447565b604082019050919050565b5f6020820190508181035f8301526134ce81613495565b9050919050565b7f4e6f206b657920686f6c646572206e6f770000000000000000000000000000005f82015250565b5f613509601183612c21565b9150613514826134d5565b602082019050919050565b5f6020820190508181035f830152613536816134fd565b9050919050565b5f6040820190506135505f83018561302e565b61355d6020830184612dd0565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613598601783612c21565b91506135a382613564565b602082019050919050565b5f6020820190508181035f8301526135c58161358c565b9050919050565b5f815190506135da81612d02565b92915050565b5f602082840312156135f5576135f4612cca565b5b5f613602848285016135cc565b91505092915050565b5f60408201905061361e5f83018561302e565b61362b602083018461302e565b9392505050565b5f819050919050565b5f819050919050565b5f61365e61365961365484613632565b61363b565b612d2c565b9050919050565b61366e81613644565b82525050565b5f60c0820190506136875f83018961302e565b6136946020830188612dd0565b6136a16040830187613665565b6136ae6060830186613665565b6136bb608083018561302e565b6136c860a0830184612dd0565b979650505050505050565b5f815190506136e181612d35565b92915050565b5f805f606084860312156136fe576136fd612cca565b5b5f61370b868287016136d3565b935050602061371c868287016136d3565b925050604061372d868287016136d3565b9150509250925092565b61374081612d9d565b811461374a575f80fd5b50565b5f8151905061375b81613737565b92915050565b5f6020828403121561377657613775612cca565b5b5f6137838482850161374d565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6137c0601483612c21565b91506137cb8261378c565b602082019050919050565b5f6020820190508181035f8301526137ed816137b4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61384e602483612c21565b9150613859826137f4565b604082019050919050565b5f6020820190508181035f83015261387b81613842565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138dc602283612c21565b91506138e782613882565b604082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602583612c21565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139f8602383612c21565b9150613a038261399e565b604082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a86602983612c21565b9150613a9182613a2c565b604082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613aee601983612c21565b9150613af982613aba565b602082019050919050565b5f6020820190508181035f830152613b1b81613ae2565b9050919050565b5f613b2c82612d2c565b9150613b3783612d2c565b9250828201905080821115613b4f57613b4e6130bf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613b89601a83612c21565b9150613b9482613b55565b602082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b5f613bc782612d2c565b91505f8203613bd957613bd86130bf565b5b600182039050919050565b5f613bee82612d2c565b9150613bf983612d2c565b9250828203905081811115613c1157613c106130bf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c4b601b83612c21565b9150613c5682613c17565b602082019050919050565b5f6020820190508181035f830152613c7881613c3f565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613cb181612cf1565b82525050565b5f613cc28383613ca8565b60208301905092915050565b5f602082019050919050565b5f613ce482613c7f565b613cee8185613c89565b9350613cf983613c99565b805f5b83811015613d29578151613d108882613cb7565b9750613d1b83613cce565b925050600181019050613cfc565b5085935050505092915050565b5f60a082019050613d495f830188612dd0565b613d566020830187613665565b8181036040830152613d688186613cda565b9050613d77606083018561302e565b613d846080830184612dd0565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613de8602183612c21565b9150613df382613d8e565b604082019050919050565b5f6020820190508181035f830152613e1581613ddc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089a6755e0755cb8810ee433d127347acbdfb745bca7a2e29377b7d5611a83b4064736f6c63430008140033

Deployed Bytecode Sourcemap

4814:10192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6804:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5950:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7081:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7806:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6990:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13838:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11157:281;;;:::i;:::-;;11813:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12074:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14872:131;;;;;;;;;;;;;:::i;:::-;;12325:478;;;;;;;;;;;;;:::i;:::-;;7184:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3895:148;;;;;;;;;;;;;:::i;:::-;;13397:161;;;;;;;;;;;;;:::i;:::-;;5558:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12169:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12811:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3681:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5617:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7311:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5893:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14726:138;;;;;;;;;;;;;:::i;:::-;;14008:671;;;;;;;;;;;;;:::i;:::-;;13666:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7486:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10632:517;;;;;;;;;;;;;:::i;:::-;;11979:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6804:83;6841:13;6874:5;;;;;;;;;;;;;;;;;6867:12;;6804:83;:::o;7637:161::-;7712:4;7729:39;7738:12;:10;:12::i;:::-;7752:7;7761:6;7729:8;:39::i;:::-;7786:4;7779:11;;7637:161;;;;:::o;5950:47::-;;;;:::o;7081:95::-;7134:7;5308:1;5363:2;:13;;;;:::i;:::-;5351:9;:25;;;;:::i;:::-;7154:14;;7081:95;:::o;7806:313::-;7904:4;7921:36;7931:6;7939:9;7950:6;7921:9;:36::i;:::-;7968:121;7977:6;7985:12;:10;:12::i;:::-;7999:89;8037:6;7999:89;;;;;;;;;;;;;;;;;:11;:19;8011:6;7999:19;;;;;;;;;;;;;;;:33;8019:12;:10;:12::i;:::-;7999:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7968:8;:121::i;:::-;8107:4;8100:11;;7806:313;;;;;:::o;6990:83::-;7031:5;5308:1;7049:16;;6990:83;:::o;13838:162::-;3818:12;:10;:12::i;:::-;3808:22;;:6;;;;;;;;;;:22;;;3800:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13911:6:::1;13906:87;13927:6;:13;13923:1;:17;13906:87;;;13978:5;13960:4;:15;13965:6;13972:1;13965:9;;;;;;;;:::i;:::-;;;;;;;;13960:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13942:3;;;;;:::i;:::-;;;;13906:87;;;;13838:162:::0;:::o;11157:281::-;5826:10;11217:9;:23;;11209:32;;;;;;11270:12;:10;:12::i;:::-;11258:24;;:10;;;;;;;;;;;:24;;;11250:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11328:19;:17;:19::i;:::-;11325:56;;;11359:12;:10;:12::i;:::-;11325:56;11389:41;11398:12;:10;:12::i;:::-;5308:1;11416:2;:13;;;;:::i;:::-;11411:4;:18;;;;:::i;:::-;11389:8;:41::i;:::-;11157:281::o;11813:158::-;11875:7;11899:25;5308:1;11910:2;:13;;;;:::i;:::-;11899:6;:10;;:25;;;;:::i;:::-;11892:32;;11947:1;11940:6;:8;:23;;11962:1;11940:23;;;11955:6;11949:5;:12;;;;:::i;:::-;11940:23;11933:30;;11813:158;;;:::o;12074:87::-;12119:7;12143:10;;;;;;;;;;;12136:17;;12074:87;:::o;14872:131::-;14938:10;;;;;;;;;;;14922:26;;:12;:10;:12::i;:::-;:26;;;14914:35;;;;;;14960;14973:21;14960:12;:35::i;:::-;14872:131::o;12325:478::-;12388:10;;12371:15;:27;;12363:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12475:3;12455:24;;:10;;;;;;;;;;;:24;;;12447:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12509:13;12523:17;12538:1;12523:10;;:14;;:17;;;;:::i;:::-;12509:31;;12571:32;12597:5;12571:9;:21;12581:10;;;;;;;;;;;12571:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;12549:9;:21;12559:10;;;;;;;;;;;12549:21;;;;;;;;;;;;;;;:54;;;;12639:10;;;;;;;;;;;12617:39;;12634:3;12617:39;;;12650:5;12617:39;;;;;;:::i;:::-;;;;;;;;12670:31;12683:10;;;;;;;;;;;12695:5;12670:31;;;;;;;:::i;:::-;;;;;;;;12729:3;12710:10;;:23;;;;;;;;;;;;;;;;;;12753:1;12742:10;:12;;;;12774:21;12789:5;12774:10;;:14;;:21;;;;:::i;:::-;12763:10;:32;;;;12354:449;12325:478::o;7184:119::-;7250:7;7277:9;:18;7287:7;7277:18;;;;;;;;;;;;;;;;7270:25;;7184:119;;;:::o;3895:148::-;3818:12;:10;:12::i;:::-;3808:22;;:6;;;;;;;;;;:22;;;3800:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4002:1:::1;3965:40;;3986:6;::::0;::::1;;;;;;;;3965:40;;;;;;;;;;;;4033:1;4016:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3895:148::o:0;13397:161::-;3818:12;:10;:12::i;:::-;3808:22;;:6;;;;;;;;;;:22;;;3800:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5308:1:::1;5363:2;:13;;;;:::i;:::-;5351:9;:25;;;;:::i;:::-;13450:12;:22;;;;5308:1;5363:2;:13;;;;:::i;:::-;5351:9;:25;;;;:::i;:::-;13483:14;:24;;;;13523:27;5308:1;5363:2;:13;;;;:::i;:::-;5351:9;:25;;;;:::i;:::-;13523:27;;;;;;:::i;:::-;;;;;;;;13397:161::o:0;5558:52::-;;;;:::o;12169:148::-;12219:4;12251:1;12240:10;;:12;:41;;;;;12271:10;;12254:15;:27;;12240:41;:69;;;;;12305:3;12285:24;;:10;;;;;;;;;;;:24;;;;12240:69;12233:76;;12169:148;:::o;12811:87::-;12856:7;12880:10;;12873:17;;12811:87;:::o;3681:79::-;3719:7;3746:6;;;;;;;;;;;3739:13;;3681:79;:::o;5617:54::-;;;;:::o;6895:87::-;6934:13;6967:7;;;;;;;;;;;;;;;;;6960:14;;6895:87;:::o;7311:167::-;7389:4;7406:42;7416:12;:10;:12::i;:::-;7430:9;7441:6;7406:9;:42::i;:::-;7466:4;7459:11;;7311:167;;;;:::o;5893:50::-;;;;:::o;14726:138::-;14792:10;;;;;;;;;;;14776:26;;:12;:10;:12::i;:::-;:26;;;14768:35;;;;;;14814:42;14831:24;14849:4;14831:9;:24::i;:::-;14814:16;:42::i;:::-;14726:138::o;14008:671::-;3818:12;:10;:12::i;:::-;3808:22;;:6;;;;;;;;;;:22;;;3800:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14072:11:::1;::::0;::::1;;;;;;;;14071:12;14063:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14158:42;14121:15;;:80;;;;;;;;;;;;;;;;;;14212:58;14229:4;14244:15;;;;;;;;;;;5308:1;5363:2;:13;;;;:::i;:::-;5351:9;:25;;;;:::i;:::-;14212:8;:58::i;:::-;14315:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14297:55;;;14361:4;14368:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14297:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14281:13;;:110;;;;;;;;;;;;;;;;;;14402:15;;;;;;;;;;;:31;;;14441:21;14472:4;14478:24;14496:4;14478:9;:24::i;:::-;14503:1;14505::::0;14507:7:::1;:5;:7::i;:::-;14515:15;14402:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14556:4;14542:11;;:18;;;;;;;;;;;;;;;;;;14585:4;14571:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;14607:13;;;;;;;;;;;14600:29;;;14638:15;;;;;;;;;;;14656:14;14600:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14008:671::o:0;13666:164::-;3818:12;:10;:12::i;:::-;3808:22;;:6;;;;;;;;;;:22;;;3800:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13740:6:::1;13735:88;13756:5;:12;13752:1;:16;13735:88;;;13807:4;13790;:14;13795:5;13801:1;13795:8;;;;;;;;:::i;:::-;;;;;;;;13790:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13770:3;;;;;:::i;:::-;;;;13735:88;;;;13666:164:::0;:::o;7486:143::-;7567:7;7594:11;:18;7606:5;7594:18;;;;;;;;;;;;;;;:27;7613:7;7594:27;;;;;;;;;;;;;;;;7587:34;;7486:143;;;;:::o;10632:517::-;10712:8;;10687:9;:23;10697:12;:10;:12::i;:::-;10687:23;;;;;;;;;;;;;;;;:33;;10679:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10773:12;:10;:12::i;:::-;10761:24;;:10;;;;;;;;;;;:24;;;10753:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10831:19;:17;:19::i;:::-;10828:56;;;10862:12;:10;:12::i;:::-;10828:56;10918:37;10946:8;;10918:9;:23;10928:12;:10;:12::i;:::-;10918:23;;;;;;;;;;;;;;;;:27;;:37;;;;:::i;:::-;10894:9;:23;10904:12;:10;:12::i;:::-;10894:23;;;;;;;;;;;;;;;:61;;;;10989:38;11018:8;;10989:9;:24;11007:4;10989:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;10964:9;:24;10982:4;10964:24;;;;;;;;;;;;;;;:63;;;;11071:4;11041:45;;11050:12;:10;:12::i;:::-;11041:45;;;11077:8;;11041:45;;;;;;:::i;:::-;;;;;;;;11095:46;11104:12;:10;:12::i;:::-;11117:23;11137:2;11117:15;11130:1;11117:8;;:12;;:15;;;;:::i;:::-;:19;;:23;;;;:::i;:::-;11095:8;:46::i;:::-;10632:517::o;11979:87::-;12024:7;12048:10;;12041:17;;11979:87;:::o;1436:98::-;1489:7;1516:10;1509:17;;1436:98;:::o;8127:335::-;8237:1;8220:19;;:5;:19;;;8212:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8318:1;8299:21;;:7;:21;;;8291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8400:6;8370:11;:18;8382:5;8370:18;;;;;;;;;;;;;;;:27;8389:7;8370:27;;;;;;;;;;;;;;;:36;;;;8438:7;8422:32;;8431:5;8422:32;;;8447:6;8422:32;;;;;;:::i;:::-;;;;;;;;8127:335;;;:::o;8470:2154::-;8574:1;8558:18;;:4;:18;;;8550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8651:1;8637:16;;:2;:16;;;8629:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8721:1;8712:6;:10;8704:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8779:17;8821:7;:5;:7::i;:::-;8813:15;;:4;:15;;;;:32;;;;;8838:7;:5;:7::i;:::-;8832:13;;:2;:13;;;;8813:32;8809:1459;;;8871:4;:10;8876:4;8871:10;;;;;;;;;;;;;;;;;;;;;;;;;8870:11;:24;;;;;8886:4;:8;8891:2;8886:8;;;;;;;;;;;;;;;;;;;;;;;;;8885:9;8870:24;8862:33;;;;;;8922:13;;;;;;;;;;;8914:21;;:4;:21;;;:55;;;;;8953:15;;;;;;;;;;;8939:30;;:2;:30;;;;8914:55;:83;;;;;8975:18;:22;8994:2;8975:22;;;;;;;;;;;;;;;;;;;;;;;;;8973:24;8914:83;8910:869;;;9037:12;;9027:6;:22;;9019:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9132:14;;9122:6;9106:13;9116:2;9106:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9098:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9208:28;9232:3;9208:19;9219:7;;9208:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9196:40;;9278:1;9258:19;;:21;9255:49;;;9281:19;;:21;;;;;;;;;:::i;:::-;;;;;;9255:49;9327:19;:17;:19::i;:::-;9324:76;;;9368:12;:10;:12::i;:::-;9324:76;9499:9;;9491:6;:17;9488:144;;9575:37;9584:2;9587:24;9608:2;9587:16;9601:1;9587:9;:13;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;9575:8;:37::i;:::-;9488:144;8910:869;;;9659:13;;;;;;;;;;;9655:17;;:2;:17;;;:47;;;;;9678:18;:24;9697:4;9678:24;;;;;;;;;;;;;;;;;;;;;;;;;9676:26;9655:47;9652:127;;;9734:29;9759:3;9734:20;9745:8;;9734:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9722:41;;9652:127;8910:869;9795:28;9826:24;9844:4;9826:9;:24::i;:::-;9795:55;;9870:6;;;;;;;;;;;9869:7;:32;;;;;9888:13;;;;;;;;;;;9880:21;;:4;:21;;;;9869:32;:47;;;;;9905:11;;;;;;;;;;;9869:47;:84;;;;;9942:11;;9920:20;:33;;9869:84;:127;;;;;9978:18;;9957:19;;:39;;9869:127;9865:392;;;10017:32;10034:14;;10017:16;:32::i;:::-;10068:26;10097:21;10068:50;;10161:1;10140:18;:22;10137:105;;;10187:35;10200:21;10187:12;:35::i;:::-;10137:105;9998:259;9865:392;8847:1421;8809:1459;10296:27;10316:6;10296:9;:15;10306:4;10296:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10280:9;:15;10290:4;10280:15;;;;;;;;;;;;;;;:43;;;;10348:40;10366:21;10377:9;10366:6;:10;;:21;;;;:::i;:::-;10348:9;:13;10358:2;10348:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10334:9;:13;10344:2;10334:13;;;;;;;;;;;;;;;:54;;;;10419:2;10404:41;;10413:4;10404:41;;;10423:21;10434:9;10423:6;:10;;:21;;;;:::i;:::-;10404:41;;;;;;:::i;:::-;;;;;;;;10469:1;10459:9;:11;10456:161;;;10509:39;10538:9;10509;:24;10527:4;10509:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10484:9;:24;10502:4;10484:24;;;;;;;;;;;;;;;:64;;;;10589:4;10566:39;;10575:4;10566:39;;;10595:9;10566:39;;;;;;:::i;:::-;;;;;;;;10456:161;8539:2085;8470:2154;;;:::o;2573:190::-;2659:7;2692:1;2687;:6;;2695:12;2679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2719:9;2735:1;2731;:5;;;;:::i;:::-;2719:17;;2754:1;2747:8;;;2573:190;;;;;:::o;11446:359::-;11523:6;11512:10;;:17;;;;;;;;;;;;;;;;;;11553:1;11541:10;;:13;11538:64;;11577:15;11566:10;:26;;;;11538:64;11621:39;11636:23;11652:6;11636:15;:23::i;:::-;11621:10;;:14;;:39;;;;:::i;:::-;11610:10;:50;;;;11699:4;11683:15;:20;;;;:::i;:::-;11672:10;;:31;11669:87;;;11742:4;11726:15;:20;;;;:::i;:::-;11715:10;:31;;;;11669:87;11775:22;11790:6;11775:10;;:14;;:22;;;;:::i;:::-;11764:10;:33;;;;11446:359;;:::o;3025:132::-;3083:7;3110:39;3114:1;3117;3110:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3103:46;;3025:132;;;;:::o;13566:92::-;13623:10;;;;;;;;;;;:19;;:27;13643:6;13623:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13566:92;:::o;2242:179::-;2300:7;2320:9;2336:1;2332;:5;;;;:::i;:::-;2320:17;;2361:1;2356;:6;;2348:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2412:1;2405:8;;;2242:179;;;;:::o;2429:136::-;2487:7;2514:43;2518:1;2521;2514:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2507:50;;2429:136;;;;:::o;12906:483::-;6422:4;6413:6;;:13;;;;;;;;;;;;;;;;;;12984:21:::1;13022:1;13008:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12984:40;;13053:4;13035;13040:1;13035:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13079:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13069:4;13074:1;13069:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13112:62;13129:4;13144:15;;;;;;;;;;;13162:11;13112:8;:62::i;:::-;13185:15;;;;;;;;;;;:66;;;13266:11;13292:1;13308:4;13335;13355:15;13185:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12973:416;6458:5:::0;6449:6;;:14;;;;;;;;;;;;;;;;;;12906:483;:::o;2771:246::-;2829:7;2858:1;2853;:6;2849:47;;2883:1;2876:8;;;;2849:47;2906:9;2922:1;2918;:5;;;;:::i;:::-;2906:17;;2951:1;2946;2942;:5;;;;:::i;:::-;:10;2934:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3008:1;3001:8;;;2771:246;;;;;:::o;3165:189::-;3251:7;3283:1;3279;:5;3286:12;3271:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3310:9;3326:1;3322;:5;;;;:::i;:::-;3310:17;;3345:1;3338:8;;;3165:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:329::-;8441:6;8490:2;8478:9;8469:7;8465:23;8461:32;8458:119;;;8496:79;;:::i;:::-;8458:119;8616:1;8641:53;8686:7;8677:6;8666:9;8662:22;8641:53;:::i;:::-;8631:63;;8587:117;8382:329;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:180::-;9245:77;9242:1;9235:88;9342:4;9339:1;9332:15;9366:4;9363:1;9356:15;9383:102;9425:8;9472:5;9469:1;9465:13;9444:34;;9383:102;;;:::o;9491:848::-;9552:5;9559:4;9583:6;9574:15;;9607:5;9598:14;;9621:712;9642:1;9632:8;9629:15;9621:712;;;9737:4;9732:3;9728:14;9722:4;9719:24;9716:50;;;9746:18;;:::i;:::-;9716:50;9796:1;9786:8;9782:16;9779:451;;;10211:4;10204:5;10200:16;10191:25;;9779:451;10261:4;10255;10251:15;10243:23;;10291:32;10314:8;10291:32;:::i;:::-;10279:44;;9621:712;;;9491:848;;;;;;;:::o;10345:1073::-;10399:5;10590:8;10580:40;;10611:1;10602:10;;10613:5;;10580:40;10639:4;10629:36;;10656:1;10647:10;;10658:5;;10629:36;10725:4;10773:1;10768:27;;;;10809:1;10804:191;;;;10718:277;;10768:27;10786:1;10777:10;;10788:5;;;10804:191;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;10833:43;10905:8;10902:1;10898:16;10889:25;;10940:3;10933:5;10930:14;10927:40;;;10947:18;;:::i;:::-;10927:40;10980:5;;;10718:277;;11104:2;11094:8;11091:16;11085:3;11079:4;11076:13;11072:36;11054:2;11044:8;11041:16;11036:2;11030:4;11027:12;11023:35;11007:111;11004:246;;;11160:8;11154:4;11150:19;11141:28;;11195:3;11188:5;11185:14;11182:40;;;11202:18;;:::i;:::-;11182:40;11235:5;;11004:246;11275:42;11313:3;11303:8;11297:4;11294:1;11275:42;:::i;:::-;11260:57;;;;11349:4;11344:3;11340:14;11333:5;11330:25;11327:51;;;11358:18;;:::i;:::-;11327:51;11407:4;11400:5;11396:16;11387:25;;10345:1073;;;;;;:::o;11424:281::-;11482:5;11506:23;11524:4;11506:23;:::i;:::-;11498:31;;11550:25;11566:8;11550:25;:::i;:::-;11538:37;;11594:104;11631:66;11621:8;11615:4;11594:104;:::i;:::-;11585:113;;11424:281;;;;:::o;11711:410::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11863:1;11860;11856:9;11885:30;11903:11;11885:30;:::i;:::-;11874:41;;12064:1;12055:7;12051:15;12048:1;12045:22;12025:1;12018:9;11998:83;11975:139;;12094:18;;:::i;:::-;11975:139;11759:362;11711:410;;;;:::o;12127:182::-;12267:34;12263:1;12255:6;12251:14;12244:58;12127:182;:::o;12315:366::-;12457:3;12478:67;12542:2;12537:3;12478:67;:::i;:::-;12471:74;;12554:93;12643:3;12554:93;:::i;:::-;12672:2;12667:3;12663:12;12656:19;;12315:366;;;:::o;12687:419::-;12853:4;12891:2;12880:9;12876:18;12868:26;;12940:9;12934:4;12930:20;12926:1;12915:9;12911:17;12904:47;12968:131;13094:4;12968:131;:::i;:::-;12960:139;;12687:419;;;:::o;13112:180::-;13160:77;13157:1;13150:88;13257:4;13254:1;13247:15;13281:4;13278:1;13271:15;13298:233;13337:3;13360:24;13378:5;13360:24;:::i;:::-;13351:33;;13406:66;13399:5;13396:77;13393:103;;13476:18;;:::i;:::-;13393:103;13523:1;13516:5;13512:13;13505:20;;13298:233;;;:::o;13537:180::-;13677:32;13673:1;13665:6;13661:14;13654:56;13537:180;:::o;13723:366::-;13865:3;13886:67;13950:2;13945:3;13886:67;:::i;:::-;13879:74;;13962:93;14051:3;13962:93;:::i;:::-;14080:2;14075:3;14071:12;14064:19;;13723:366;;;:::o;14095:419::-;14261:4;14299:2;14288:9;14284:18;14276:26;;14348:9;14342:4;14338:20;14334:1;14323:9;14319:17;14312:47;14376:131;14502:4;14376:131;:::i;:::-;14368:139;;14095:419;;;:::o;14520:180::-;14568:77;14565:1;14558:88;14665:4;14662:1;14655:15;14689:4;14686:1;14679:15;14706:185;14746:1;14763:20;14781:1;14763:20;:::i;:::-;14758:25;;14797:20;14815:1;14797:20;:::i;:::-;14792:25;;14836:1;14826:35;;14841:18;;:::i;:::-;14826:35;14883:1;14880;14876:9;14871:14;;14706:185;;;;:::o;14897:223::-;15037:34;15033:1;15025:6;15021:14;15014:58;15106:6;15101:2;15093:6;15089:15;15082:31;14897:223;:::o;15126:366::-;15268:3;15289:67;15353:2;15348:3;15289:67;:::i;:::-;15282:74;;15365:93;15454:3;15365:93;:::i;:::-;15483:2;15478:3;15474:12;15467:19;;15126:366;;;:::o;15498:419::-;15664:4;15702:2;15691:9;15687:18;15679:26;;15751:9;15745:4;15741:20;15737:1;15726:9;15722:17;15715:47;15779:131;15905:4;15779:131;:::i;:::-;15771:139;;15498:419;;;:::o;15923:167::-;16063:19;16059:1;16051:6;16047:14;16040:43;15923:167;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:332::-;17014:4;17052:2;17041:9;17037:18;17029:26;;17065:71;17133:1;17122:9;17118:17;17109:6;17065:71;:::i;:::-;17146:72;17214:2;17203:9;17199:18;17190:6;17146:72;:::i;:::-;16893:332;;;;;:::o;17231:173::-;17371:25;17367:1;17359:6;17355:14;17348:49;17231:173;:::o;17410:366::-;17552:3;17573:67;17637:2;17632:3;17573:67;:::i;:::-;17566:74;;17649:93;17738:3;17649:93;:::i;:::-;17767:2;17762:3;17758:12;17751:19;;17410:366;;;:::o;17782:419::-;17948:4;17986:2;17975:9;17971:18;17963:26;;18035:9;18029:4;18025:20;18021:1;18010:9;18006:17;17999:47;18063:131;18189:4;18063:131;:::i;:::-;18055:139;;17782:419;;;:::o;18207:143::-;18264:5;18295:6;18289:13;18280:22;;18311:33;18338:5;18311:33;:::i;:::-;18207:143;;;;:::o;18356:351::-;18426:6;18475:2;18463:9;18454:7;18450:23;18446:32;18443:119;;;18481:79;;:::i;:::-;18443:119;18601:1;18626:64;18682:7;18673:6;18662:9;18658:22;18626:64;:::i;:::-;18616:74;;18572:128;18356:351;;;;:::o;18713:332::-;18834:4;18872:2;18861:9;18857:18;18849:26;;18885:71;18953:1;18942:9;18938:17;18929:6;18885:71;:::i;:::-;18966:72;19034:2;19023:9;19019:18;19010:6;18966:72;:::i;:::-;18713:332;;;;;:::o;19051:85::-;19096:7;19125:5;19114:16;;19051:85;;;:::o;19142:60::-;19170:3;19191:5;19184:12;;19142:60;;;:::o;19208:158::-;19266:9;19299:61;19317:42;19326:32;19352:5;19326:32;:::i;:::-;19317:42;:::i;:::-;19299:61;:::i;:::-;19286:74;;19208:158;;;:::o;19372:147::-;19467:45;19506:5;19467:45;:::i;:::-;19462:3;19455:58;19372:147;;:::o;19525:807::-;19774:4;19812:3;19801:9;19797:19;19789:27;;19826:71;19894:1;19883:9;19879:17;19870:6;19826:71;:::i;:::-;19907:72;19975:2;19964:9;19960:18;19951:6;19907:72;:::i;:::-;19989:80;20065:2;20054:9;20050:18;20041:6;19989:80;:::i;:::-;20079;20155:2;20144:9;20140:18;20131:6;20079:80;:::i;:::-;20169:73;20237:3;20226:9;20222:19;20213:6;20169:73;:::i;:::-;20252;20320:3;20309:9;20305:19;20296:6;20252:73;:::i;:::-;19525:807;;;;;;;;;:::o;20338:143::-;20395:5;20426:6;20420:13;20411:22;;20442:33;20469:5;20442:33;:::i;:::-;20338:143;;;;:::o;20487:663::-;20575:6;20583;20591;20640:2;20628:9;20619:7;20615:23;20611:32;20608:119;;;20646:79;;:::i;:::-;20608:119;20766:1;20791:64;20847:7;20838:6;20827:9;20823:22;20791:64;:::i;:::-;20781:74;;20737:128;20904:2;20930:64;20986:7;20977:6;20966:9;20962:22;20930:64;:::i;:::-;20920:74;;20875:129;21043:2;21069:64;21125:7;21116:6;21105:9;21101:22;21069:64;:::i;:::-;21059:74;;21014:129;20487:663;;;;;:::o;21156:116::-;21226:21;21241:5;21226:21;:::i;:::-;21219:5;21216:32;21206:60;;21262:1;21259;21252:12;21206:60;21156:116;:::o;21278:137::-;21332:5;21363:6;21357:13;21348:22;;21379:30;21403:5;21379:30;:::i;:::-;21278:137;;;;:::o;21421:345::-;21488:6;21537:2;21525:9;21516:7;21512:23;21508:32;21505:119;;;21543:79;;:::i;:::-;21505:119;21663:1;21688:61;21741:7;21732:6;21721:9;21717:22;21688:61;:::i;:::-;21678:71;;21634:125;21421:345;;;;:::o;21772:170::-;21912:22;21908:1;21900:6;21896:14;21889:46;21772:170;:::o;21948:366::-;22090:3;22111:67;22175:2;22170:3;22111:67;:::i;:::-;22104:74;;22187:93;22276:3;22187:93;:::i;:::-;22305:2;22300:3;22296:12;22289:19;;21948:366;;;:::o;22320:419::-;22486:4;22524:2;22513:9;22509:18;22501:26;;22573:9;22567:4;22563:20;22559:1;22548:9;22544:17;22537:47;22601:131;22727:4;22601:131;:::i;:::-;22593:139;;22320:419;;;:::o;22745:223::-;22885:34;22881:1;22873:6;22869:14;22862:58;22954:6;22949:2;22941:6;22937:15;22930:31;22745:223;:::o;22974:366::-;23116:3;23137:67;23201:2;23196:3;23137:67;:::i;:::-;23130:74;;23213:93;23302:3;23213:93;:::i;:::-;23331:2;23326:3;23322:12;23315:19;;22974:366;;;:::o;23346:419::-;23512:4;23550:2;23539:9;23535:18;23527:26;;23599:9;23593:4;23589:20;23585:1;23574:9;23570:17;23563:47;23627:131;23753:4;23627:131;:::i;:::-;23619:139;;23346:419;;;:::o;23771:221::-;23911:34;23907:1;23899:6;23895:14;23888:58;23980:4;23975:2;23967:6;23963:15;23956:29;23771:221;:::o;23998:366::-;24140:3;24161:67;24225:2;24220:3;24161:67;:::i;:::-;24154:74;;24237:93;24326:3;24237:93;:::i;:::-;24355:2;24350:3;24346:12;24339:19;;23998:366;;;:::o;24370:419::-;24536:4;24574:2;24563:9;24559:18;24551:26;;24623:9;24617:4;24613:20;24609:1;24598:9;24594:17;24587:47;24651:131;24777:4;24651:131;:::i;:::-;24643:139;;24370:419;;;:::o;24795:224::-;24935:34;24931:1;24923:6;24919:14;24912:58;25004:7;24999:2;24991:6;24987:15;24980:32;24795:224;:::o;25025:366::-;25167:3;25188:67;25252:2;25247:3;25188:67;:::i;:::-;25181:74;;25264:93;25353:3;25264:93;:::i;:::-;25382:2;25377:3;25373:12;25366:19;;25025:366;;;:::o;25397:419::-;25563:4;25601:2;25590:9;25586:18;25578:26;;25650:9;25644:4;25640:20;25636:1;25625:9;25621:17;25614:47;25678:131;25804:4;25678:131;:::i;:::-;25670:139;;25397:419;;;:::o;25822:222::-;25962:34;25958:1;25950:6;25946:14;25939:58;26031:5;26026:2;26018:6;26014:15;26007:30;25822:222;:::o;26050:366::-;26192:3;26213:67;26277:2;26272:3;26213:67;:::i;:::-;26206:74;;26289:93;26378:3;26289:93;:::i;:::-;26407:2;26402:3;26398:12;26391:19;;26050:366;;;:::o;26422:419::-;26588:4;26626:2;26615:9;26611:18;26603:26;;26675:9;26669:4;26665:20;26661:1;26650:9;26646:17;26639:47;26703:131;26829:4;26703:131;:::i;:::-;26695:139;;26422:419;;;:::o;26847:228::-;26987:34;26983:1;26975:6;26971:14;26964:58;27056:11;27051:2;27043:6;27039:15;27032:36;26847:228;:::o;27081:366::-;27223:3;27244:67;27308:2;27303:3;27244:67;:::i;:::-;27237:74;;27320:93;27409:3;27320:93;:::i;:::-;27438:2;27433:3;27429:12;27422:19;;27081:366;;;:::o;27453:419::-;27619:4;27657:2;27646:9;27642:18;27634:26;;27706:9;27700:4;27696:20;27692:1;27681:9;27677:17;27670:47;27734:131;27860:4;27734:131;:::i;:::-;27726:139;;27453:419;;;:::o;27878:175::-;28018:27;28014:1;28006:6;28002:14;27995:51;27878:175;:::o;28059:366::-;28201:3;28222:67;28286:2;28281:3;28222:67;:::i;:::-;28215:74;;28298:93;28387:3;28298:93;:::i;:::-;28416:2;28411:3;28407:12;28400:19;;28059:366;;;:::o;28431:419::-;28597:4;28635:2;28624:9;28620:18;28612:26;;28684:9;28678:4;28674:20;28670:1;28659:9;28655:17;28648:47;28712:131;28838:4;28712:131;:::i;:::-;28704:139;;28431:419;;;:::o;28856:191::-;28896:3;28915:20;28933:1;28915:20;:::i;:::-;28910:25;;28949:20;28967:1;28949:20;:::i;:::-;28944:25;;28992:1;28989;28985:9;28978:16;;29013:3;29010:1;29007:10;29004:36;;;29020:18;;:::i;:::-;29004:36;28856:191;;;;:::o;29053:176::-;29193:28;29189:1;29181:6;29177:14;29170:52;29053:176;:::o;29235:366::-;29377:3;29398:67;29462:2;29457:3;29398:67;:::i;:::-;29391:74;;29474:93;29563:3;29474:93;:::i;:::-;29592:2;29587:3;29583:12;29576:19;;29235:366;;;:::o;29607:419::-;29773:4;29811:2;29800:9;29796:18;29788:26;;29860:9;29854:4;29850:20;29846:1;29835:9;29831:17;29824:47;29888:131;30014:4;29888:131;:::i;:::-;29880:139;;29607:419;;;:::o;30032:171::-;30071:3;30094:24;30112:5;30094:24;:::i;:::-;30085:33;;30140:4;30133:5;30130:15;30127:41;;30148:18;;:::i;:::-;30127:41;30195:1;30188:5;30184:13;30177:20;;30032:171;;;:::o;30209:194::-;30249:4;30269:20;30287:1;30269:20;:::i;:::-;30264:25;;30303:20;30321:1;30303:20;:::i;:::-;30298:25;;30347:1;30344;30340:9;30332:17;;30371:1;30365:4;30362:11;30359:37;;;30376:18;;:::i;:::-;30359:37;30209:194;;;;:::o;30409:177::-;30549:29;30545:1;30537:6;30533:14;30526:53;30409:177;:::o;30592:366::-;30734:3;30755:67;30819:2;30814:3;30755:67;:::i;:::-;30748:74;;30831:93;30920:3;30831:93;:::i;:::-;30949:2;30944:3;30940:12;30933:19;;30592:366;;;:::o;30964:419::-;31130:4;31168:2;31157:9;31153:18;31145:26;;31217:9;31211:4;31207:20;31203:1;31192:9;31188:17;31181:47;31245:131;31371:4;31245:131;:::i;:::-;31237:139;;30964:419;;;:::o;31389:114::-;31456:6;31490:5;31484:12;31474:22;;31389:114;;;:::o;31509:184::-;31608:11;31642:6;31637:3;31630:19;31682:4;31677:3;31673:14;31658:29;;31509:184;;;;:::o;31699:132::-;31766:4;31789:3;31781:11;;31819:4;31814:3;31810:14;31802:22;;31699:132;;;:::o;31837:108::-;31914:24;31932:5;31914:24;:::i;:::-;31909:3;31902:37;31837:108;;:::o;31951:179::-;32020:10;32041:46;32083:3;32075:6;32041:46;:::i;:::-;32119:4;32114:3;32110:14;32096:28;;31951:179;;;;:::o;32136:113::-;32206:4;32238;32233:3;32229:14;32221:22;;32136:113;;;:::o;32285:732::-;32404:3;32433:54;32481:5;32433:54;:::i;:::-;32503:86;32582:6;32577:3;32503:86;:::i;:::-;32496:93;;32613:56;32663:5;32613:56;:::i;:::-;32692:7;32723:1;32708:284;32733:6;32730:1;32727:13;32708:284;;;32809:6;32803:13;32836:63;32895:3;32880:13;32836:63;:::i;:::-;32829:70;;32922:60;32975:6;32922:60;:::i;:::-;32912:70;;32768:224;32755:1;32752;32748:9;32743:14;;32708:284;;;32712:14;33008:3;33001:10;;32409:608;;;32285:732;;;;:::o;33023:831::-;33286:4;33324:3;33313:9;33309:19;33301:27;;33338:71;33406:1;33395:9;33391:17;33382:6;33338:71;:::i;:::-;33419:80;33495:2;33484:9;33480:18;33471:6;33419:80;:::i;:::-;33546:9;33540:4;33536:20;33531:2;33520:9;33516:18;33509:48;33574:108;33677:4;33668:6;33574:108;:::i;:::-;33566:116;;33692:72;33760:2;33749:9;33745:18;33736:6;33692:72;:::i;:::-;33774:73;33842:3;33831:9;33827:19;33818:6;33774:73;:::i;:::-;33023:831;;;;;;;;:::o;33860:220::-;34000:34;33996:1;33988:6;33984:14;33977:58;34069:3;34064:2;34056:6;34052:15;34045:28;33860:220;:::o;34086:366::-;34228:3;34249:67;34313:2;34308:3;34249:67;:::i;:::-;34242:74;;34325:93;34414:3;34325:93;:::i;:::-;34443:2;34438:3;34434:12;34427:19;;34086:366;;;:::o;34458:419::-;34624:4;34662:2;34651:9;34647:18;34639:26;;34711:9;34705:4;34701:20;34697:1;34686:9;34682:17;34675:47;34739:131;34865:4;34739:131;:::i;:::-;34731:139;;34458:419;;;:::o

Swarm Source

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