ETH Price: $3,119.65 (-2.59%)
Gas: 6 Gwei

Token

AfterShock V2 (SHOCK)
 

Overview

Max Total Supply

448,853.621861561848488241 SHOCK

Holders

1,190 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Circle: USDC Token
Balance
0.00000094 SHOCK

Value
$0.00
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A self-destructing staking token with 6% fee on each transfer. 3% is destroyed and the remaining 3% is rewarded to SHOCK holders.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AfterShockV2

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity 0.5.8;

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

contract ApproveAndCallFallBack 
{
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public returns (bool);
}

contract TransferAndCallFallBack 
{
    function receiveToken(address from, uint256 tokens, address token, bytes memory data) public returns (bool);
}

library SafeMath 
{
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        if (a == 0) 
        {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a / b;
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
    {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }
}

contract ERC20Detailed is IERC20 
{
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    constructor(string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    
    function name() public view returns(string memory) {
        return _name;
    }
    
    function symbol() public view returns(string memory) {
        return _symbol;
    }
    
    function decimals() public view returns(uint8) {
        return _decimals;
    }
}

contract AfterShockV2 is ERC20Detailed 
{
    using SafeMath for uint256;
    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;
    
    string constant tokenName = "AfterShock V2";//"AfterShock V2";
    string constant tokenSymbol = "SHOCK";//"SHOCK"; 
    uint8  constant tokenDecimals = 18;
    uint256 _totalSupply = 0;
    
    // ------------------------------------------------------------------------
  
    address public contractOwner;

    uint256 public fullUnitsStaked_total = 0;
    mapping (address => bool) public isStaking;

    uint256 _totalRewardsPerUnit = 0;
    mapping (address => uint256) private _totalRewardsPerUnit_positions;
    mapping (address => uint256) private _savedRewards;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    // v2 ------------------------------------------------------------------------
    
    bool public migrationActive = true;
    
    //these addresses won't be affected by burn,ie liquidity pools
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);

    // ------------------------------------------------------------------------
    
    constructor() public ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) 
    {
        contractOwner = msg.sender;
    }
    
    // ------------------------------------------------------------------------

    modifier onlyOwner() {
        require(msg.sender == contractOwner, "only owner");
        _;
    }
    
    function transferOwnership(address newOwner) public 
    {
        require(msg.sender == contractOwner);
        require(newOwner != address(0));
        emit OwnershipTransferred(contractOwner, newOwner);
        contractOwner = newOwner;
    }
    
    function totalSupply() public view returns (uint256) 
    {
        return _totalSupply;
    }
    
    function balanceOf(address owner) public view returns (uint256) 
    {
        return _balances[owner];
    }
    
    function fullUnitsStaked(address owner) external view returns (uint256) 
    {
        return isStaking[owner] ? toFullUnits(_balances[owner]) : 0;
    }
    
    function toFullUnits(uint256 valueWithDecimals) public pure returns (uint256) 
    {
        return valueWithDecimals.div(10**uint256(tokenDecimals));
    }
    
    function allowance(address owner, address spender) public view returns (uint256) 
    {
        return _allowed[owner][spender];
    }
    
    function transfer(address to, uint256 value) public returns (bool) 
    {
        _executeTransfer(msg.sender, to, value);
        return true;
    }
    
    function transferAndCall(address to, uint value, bytes memory data) public returns (bool) 
    {
        require(transfer(to, value));
        require(TransferAndCallFallBack(to).receiveToken(msg.sender, value, address(this), data));
        return true;
    }
    
    function multiTransfer(address[] memory receivers, uint256[] memory values) public
    {
        require(receivers.length == values.length);
        for(uint256 i = 0; i < receivers.length; i++)
            _executeTransfer(msg.sender, receivers[i], values[i]);
    }
    
    function transferFrom(address from, address to, uint256 value) public returns (bool) 
    {
        require(value <= _allowed[from][msg.sender]);
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _executeTransfer(from, to, value);
        return true;
    }
    
    function transferFromAndCall(address from, address to, uint value, bytes memory data) public returns (bool) 
    {
        require(transferFrom(from, to, value));
        require(TransferAndCallFallBack(to).receiveToken(from, value, address(this), data));
        return true;
    }
    
    function approve(address spender, uint256 value) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) 
    {
        require(approve(spender, tokens));
        require(ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data));
        return true;
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].sub(subtractedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function _mint(address account, uint256 value) internal 
    {
        require(value != 0);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.add(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.add(value);
        
        //update full units staked
        if(isStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        emit Transfer(address(0), account, value);
    }
    
    function burn(uint256 value) external 
    {
        _burn(msg.sender, value);
    }
    
    function burnFrom(address account, uint256 value) external 
    {
        require(value <= _allowed[account][msg.sender]);
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
    }
    
    function _burn(address account, uint256 value) internal 
    {
        require(value != 0);
        require(value <= _balances[account]);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.sub(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.sub(value);
        
        //update full units staked
        if(isStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        
        emit Transfer(account, address(0), value);
    }
    
    /*
    *   transfer with additional burn and stake rewards
    *   the receiver gets 94% of the sent value
    *   6% are split to be burnt and distributed to holders
    */
    function _executeTransfer(address from, address to, uint256 value) private
    {
        require(value <= _balances[from]);
        require(to != address(0) && to != address(this));
        
        //Update sender and receivers rewards - changing balances will change rewards shares
        updateRewardsFor(from);
        updateRewardsFor(to);
        
        uint256 sixPercent = 0;
        if(!whitelistFrom[from] && !whitelistTo[to])
        {
            sixPercent = value.mul(6).div(100);
            //set a minimum burn rate to prevent no-burn-txs due to precision loss
            if(sixPercent == 0 && value > 0)
                sixPercent = 1;
        }
            
        uint256 initalBalance_from = _balances[from];
        uint256 newBalance_from = initalBalance_from.sub(value);
        
        value = value.sub(sixPercent);
        
        uint256 initalBalance_to = from != to ? _balances[to] : newBalance_from;
        uint256 newBalance_to = initalBalance_to.add(value);
        
        //transfer
        _balances[from] = newBalance_from;
        _balances[to] = newBalance_to;
        emit Transfer(from, to, value);
         
        //update full units staked
        uint256 fus_total = fullUnitsStaked_total;
        if(isStaking[from])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_from));
            fus_total = fus_total.add(toFullUnits(newBalance_from));
        }
        if(isStaking[to])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_to));
            fus_total = fus_total.add(toFullUnits(newBalance_to));
        }
        fullUnitsStaked_total = fus_total;
        
        uint256 amountToBurn = sixPercent;
        
        if(fus_total > 0)
        {
            uint256 stakingRewards = sixPercent.div(2);
            //split up to rewards per unit in stake
            uint256 rewardsPerUnit = stakingRewards.div(fus_total);
            //apply rewards
            _totalRewardsPerUnit = _totalRewardsPerUnit.add(rewardsPerUnit);
            _balances[address(this)] = _balances[address(this)].add(stakingRewards);
            if(stakingRewards > 0)
                emit Transfer(msg.sender, address(this), stakingRewards);
            amountToBurn = amountToBurn.sub(stakingRewards);
        }
        
        //update total supply
        _totalSupply = _totalSupply.sub(amountToBurn);
        if(amountToBurn > 0)
            emit Transfer(msg.sender, address(0), amountToBurn);
    }
    
    //catch up with the current total rewards. This needs to be done before an addresses balance is changed
    function updateRewardsFor(address staker) private
    {
        _savedRewards[staker] = viewUnpaidRewards(staker);
        _totalRewardsPerUnit_positions[staker] = _totalRewardsPerUnit;
    }
    
    //get all rewards that have not been claimed yet
    function viewUnpaidRewards(address staker) public view returns (uint256)
    {
        if(!isStaking[staker])
            return _savedRewards[staker];
        uint256 newRewardsPerUnit = _totalRewardsPerUnit.sub(_totalRewardsPerUnit_positions[staker]);
        
        uint256 newRewards = newRewardsPerUnit.mul(toFullUnits(_balances[staker]));
        return _savedRewards[staker].add(newRewards);
    }
    
    //pay out unclaimed rewards
    function payoutRewards() public
    {
        updateRewardsFor(msg.sender);
        uint256 rewards = _savedRewards[msg.sender];
        require(rewards > 0 && rewards <= _balances[address(this)]);
        
        _savedRewards[msg.sender] = 0;
        
        uint256 initalBalance_staker = _balances[msg.sender];
        uint256 newBalance_staker = initalBalance_staker.add(rewards);
        
        //update full units staked
        if(isStaking[msg.sender])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance_staker));
            fus_total = fus_total.add(toFullUnits(newBalance_staker));
            fullUnitsStaked_total = fus_total;
        }
        
        //transfer
        _balances[address(this)] = _balances[address(this)].sub(rewards);
        _balances[msg.sender] = newBalance_staker;
        emit Transfer(address(this), msg.sender, rewards);
    }
    
    function enableStaking() public { _enableStaking(msg.sender);  }
    function disableStaking() public { _disableStaking(msg.sender); }
    
    function enableStakingFor(address staker) public onlyOwner { _enableStaking(staker); }
    function disableStakingFor(address staker) public onlyOwner { _disableStaking(staker); }
    
    //enable staking for target address
    function _enableStaking(address staker) private
    {
        require(!isStaking[staker]);
        updateRewardsFor(staker);
        isStaking[staker] = true;
        fullUnitsStaked_total = fullUnitsStaked_total.add(toFullUnits(_balances[staker]));
    }
    
    //disable staking for target address
    function _disableStaking(address staker) private
    {
        require(isStaking[staker]);
        updateRewardsFor(staker);
        isStaking[staker] = false;
        fullUnitsStaked_total = fullUnitsStaked_total.sub(toFullUnits(_balances[staker]));
    }
    
    //withdraw tokens that were sent to this contract by accident
    function withdrawERC20Tokens(address tokenAddress, uint256 amount) public onlyOwner
    {
        require(tokenAddress != address(this));
        IERC20(tokenAddress).transfer(msg.sender, amount);
    }
    
    //no fees if receiver is whitelisted
    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    //no fees if sender is whitelisted
    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }
    
    //migrate a list of balances
    function multiMigrateBalance(address[] memory receivers, uint256[] memory values) public
    {
        require(receivers.length == values.length);
        for(uint256 i = 0; i < receivers.length; i++)
            migrateBalance(receivers[i], values[i]);
    }
    
    //mint balance to a give address, only works as long as migrationmode is active
    function migrateBalance(address account, uint256 amount) public onlyOwner
    {
        require(migrationActive);
        _mint(account, amount);
    }
    
    //this will stop migration mode permanently
    function endMigration() public onlyOwner
    {
        migrationActive = false;
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"migrateBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"staker","type":"address"}],"name":"viewUnpaidRewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payoutRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"staker","type":"address"}],"name":"disableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fullUnitsStaked_total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endMigration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isStaking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migrationActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"valueWithDecimals","type":"uint256"}],"name":"toFullUnits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"fullUnitsStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"staker","type":"address"}],"name":"enableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiMigrateBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600555600060075560006009556001600c60006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b506040518060400160405280600d81526020017f416674657253686f636b205632000000000000000000000000000000000000008152506040518060400160405280600581526020017f53484f434b00000000000000000000000000000000000000000000000000000081525060128260009080519060200190620000c292919062000141565b508160019080519060200190620000db92919062000141565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001f0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018457805160ff1916838001178555620001b5565b82800160010185558215620001b5579182015b82811115620001b457825182559160200191906001019062000197565b5b509050620001c49190620001c8565b5090565b620001ed91905b80821115620001e9576000816000905550600101620001cf565b5090565b90565b61403d80620002006000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063cae9ca51116100b8578063e49cb2fb1161007c578063e49cb2fb14610ee6578063e7b7365114610f34578063f2fde38b14610f78578063f4af9e9d14610fbc578063ff12bbf41461110857610232565b8063cae9ca5114610cc5578063ce606ee014610dc2578063d11aca6214610e0c578063dd62ed3e14610e16578063e1eae0b414610e8e57610232565b8063a457c2d7116100ff578063a457c2d714610a4a578063a486309d14610ab0578063a9059cbb14610b00578063b1369e6a14610b66578063c1d34b8914610ba857610232565b806370a08231146108ff57806379cc6790146109575780638ed6b016146109a557806395d89b41146109c757610232565b806329613086116101be57806342966c681161018257806342966c68146107f157806343684b211461081f5780634b56c39e1461087b5780636c525d04146108995780636f49712b146108a357610232565b8063296130861461061c578063313ce56714610626578063395093511461064a5780633f9fe75a146106b05780634000aea0146106f457610232565b806318160ddd1161020557806318160ddd146103ca5780631e89d545146103e8578063223d04171461053457806323b872dd1461058c57806328696de21461061257610232565b8063048450bd1461023757806306fdde0314610285578063095ea7b31461030857806316b627d11461036e575b600080fd5b6102836004803603604081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611158565b005b61028d611242565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cd5780820151818401526020810190506102b2565b50505050905090810190601f1680156102fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103546004803603604081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112e4565b604051808215151515815260200191505060405180910390f35b6103b06004803603602081101561038457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140f565b604051808215151515815260200191505060405180910390f35b6103d261142f565b6040518082815260200191505060405180910390f35b610532600480360360408110156103fe57600080fd5b810190808035906020019064010000000081111561041b57600080fd5b82018360208201111561042d57600080fd5b8035906020019184602083028401116401000000008311171561044f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104af57600080fd5b8201836020820111156104c157600080fd5b803590602001918460208302840111640100000000831117156104e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611439565b005b6105766004803603602081101561054a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611499565b6040518082815260200191505060405180910390f35b6105f8600480360360608110156105a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611645565b604051808215151515815260200191505060405180910390f35b61061a6117f5565b005b610624611800565b005b61062e611b24565b604051808260ff1660ff16815260200191505060405180910390f35b6106966004803603604081101561066057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3b565b604051808215151515815260200191505060405180910390f35b6106f2600480360360208110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d70565b005b6107d76004803603606081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561075157600080fd5b82018360208201111561076357600080fd5b8035906020019184600183028401116401000000008311171561078557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e3f565b604051808215151515815260200191505060405180910390f35b61081d6004803603602081101561080757600080fd5b8101908080359060200190929190505050611fcb565b005b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fd8565b604051808215151515815260200191505060405180910390f35b610883611ff8565b6040518082815260200191505060405180910390f35b6108a1611ffe565b005b6108e5600480360360208110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120de565b604051808215151515815260200191505060405180910390f35b6109416004803603602081101561091557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b6040518082815260200191505060405180910390f35b6109a36004803603604081101561096d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612147565b005b6109ad6122ed565b604051808215151515815260200191505060405180910390f35b6109cf612300565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a0f5780820151818401526020810190506109f4565b50505050905090810190601f168015610a3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9660048036036040811015610a6057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123a2565b604051808215151515815260200191505060405180910390f35b610afe60048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506125d7565b005b610b4c60048036036040811015610b1657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612764565b604051808215151515815260200191505060405180910390f35b610b9260048036036020811015610b7c57600080fd5b810190808035906020019092919050505061277b565b6040518082815260200191505060405180910390f35b610cab60048036036080811015610bbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c2557600080fd5b820183602082011115610c3757600080fd5b80359060200191846001830284011164010000000083111715610c5957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061279e565b604051808215151515815260200191505060405180910390f35b610da860048036036060811015610cdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610d2257600080fd5b820183602082011115610d3457600080fd5b80359060200191846001830284011164010000000083111715610d5657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061292c565b604051808215151515815260200191505060405180910390f35b610dca612ab8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e14612ade565b005b610e7860048036036040811015610e2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae9565b6040518082815260200191505060405180910390f35b610ed060048036036020811015610ea457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b70565b6040518082815260200191505060405180910390f35b610f3260048036036040811015610efc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1a565b005b610f7660048036036020811015610f4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ddd565b005b610fba60048036036020811015610f8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eac565b005b61110660048036036040811015610fd257600080fd5b8101908080359060200190640100000000811115610fef57600080fd5b82018360208201111561100157600080fd5b8035906020019184602083028401116401000000008311171561102357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561108357600080fd5b82018360208201111561109557600080fd5b803590602001918460208302840111640100000000831117156110b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613000565b005b6111566004803603604081101561111e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061305f565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff1661123457600080fd5b61123e82826131ec565b5050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112da5780601f106112af576101008083540402835291602001916112da565b820191906000526020600020905b8154815290600101906020018083116112bd57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131f57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b805182511461144757600080fd5b60008090505b8251811015611494576114873384838151811061146657fe5b602002602001015184848151811061147a57fe5b60200260200101516133bc565b808060010191505061144d565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661153357600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611640565b6000611589600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954613aa490919063ffffffff16565b905060006115e76115d8600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b83613abb90919063ffffffff16565b905061163b81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156116d057600080fd5b61175f82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ea8484846133bc565b600190509392505050565b6117fe33613b0e565b565b61180933613c2a565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111801561189c5750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6118a557600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006119438383613af290919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119e157600060075490506119b96119aa8461277b565b82613aa490919063ffffffff16565b90506119d66119c78361277b565b82613af290919063ffffffff16565b905080600781905550505b611a3383600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b7657600080fd5b611c0582600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e3c81613b0e565b50565b6000611e4b8484612764565b611e5457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f2d578082015181840152602081019050611f12565b50505050905090810190601f168015611f5a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611f7c57600080fd5b505af1158015611f90573d6000803e3d6000fd5b505050506040513d6020811015611fa657600080fd5b8101908080519060200190929190505050611fc057600080fd5b600190509392505050565b611fd53382613cbf565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b60075481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c60006101000a81548160ff021916908315150217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121d057600080fd5b61225f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e98282613cbf565b5050565b600c60009054906101000a900460ff1681565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123985780601f1061236d57610100808354040283529160200191612398565b820191906000526020600020905b81548152906001019060200180831161237b57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123dd57600080fd5b61246c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006127713384846133bc565b6001905092915050565b6000612797601260ff16600a0a83613edb90919063ffffffff16565b9050919050565b60006127ab858585611645565b6127b457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e868530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561288d578082015181840152602081019050612872565b50505050905090810190601f1680156128ba5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156128dc57600080fd5b505af11580156128f0573d6000803e3d6000fd5b505050506040513d602081101561290657600080fd5b810190808051906020019092919050505061292057600080fd5b60019050949350505050565b600061293884846112e4565b61294157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a1a5780820151818401526020810190506129ff565b50505050905090810190601f168015612a475780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050506040513d6020811015612a9357600080fd5b8101908080519060200190929190505050612aad57600080fd5b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ae733613ef4565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bca576000612c13565b612c12600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d1657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d9d57600080fd5b505af1158015612db1573d6000803e3d6000fd5b505050506040513d6020811015612dc757600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ea981613ef4565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f0657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f4057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b805182511461300e57600080fd5b60008090505b825181101561305a5761304d83828151811061302c57fe5b602002602001015183838151811061304057fe5b6020026020010151611158565b8080600101915050613014565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008114156131fa57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006132538383613af290919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132ae83600554613af290919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561335057600060075490506133286133198461277b565b82613aa490919063ffffffff16565b90506133456133368361277b565b82613af290919063ffffffff16565b905080600781905550505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561340857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561347157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61347a57600080fd5b61348383613c2a565b61348c82613c2a565b6000809050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135355750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357e576135616064613553600685613abb90919063ffffffff16565b613edb90919063ffffffff16565b90506000811480156135735750600082115b1561357d57600190505b5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006135d78483613aa490919063ffffffff16565b90506135ec8385613aa490919063ffffffff16565b935060008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561362a578161366b565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b905060006136828683613af290919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613805576137e56137d68661277b565b82613aa490919063ffffffff16565b90506138026137f38561277b565b82613af290919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613892576138726138638461277b565b82613aa490919063ffffffff16565b905061388f6138808361277b565b82613af290919063ffffffff16565b90505b8060078190555060008690506000821115613a0d5760006138bd600289613edb90919063ffffffff16565b905060006138d48483613edb90919063ffffffff16565b90506138eb81600954613af290919063ffffffff16565b60098190555061394382600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156139f5573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b613a088284613aa490919063ffffffff16565b925050505b613a2281600554613aa490919063ffffffff16565b6005819055506000811115613a9857600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b50505050505050505050565b600082821115613ab057fe5b818303905092915050565b600080831415613ace5760009050613aec565b6000828402905082848281613adf57fe5b0414613ae757fe5b809150505b92915050565b600080828401905083811015613b0457fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b6457600080fd5b613b6d81613c2a565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c21613c10600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b600754613aa490919063ffffffff16565b60078190555050565b613c3381611499565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000811415613ccd57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115613d1957600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000613d728383613aa490919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcd83600554613aa490919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e6f5760006007549050613e47613e388461277b565b82613aa490919063ffffffff16565b9050613e64613e558361277b565b82613af290919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600080828481613ee757fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f4b57600080fd5b613f5481613c2a565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614008613ff7600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b600754613af290919063ffffffff16565b6007819055505056fea165627a7a723058201fdbac9cfe8fe40b7c1aef010140adec87a6d7589517c7d62815e67da7d239c40029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063cae9ca51116100b8578063e49cb2fb1161007c578063e49cb2fb14610ee6578063e7b7365114610f34578063f2fde38b14610f78578063f4af9e9d14610fbc578063ff12bbf41461110857610232565b8063cae9ca5114610cc5578063ce606ee014610dc2578063d11aca6214610e0c578063dd62ed3e14610e16578063e1eae0b414610e8e57610232565b8063a457c2d7116100ff578063a457c2d714610a4a578063a486309d14610ab0578063a9059cbb14610b00578063b1369e6a14610b66578063c1d34b8914610ba857610232565b806370a08231146108ff57806379cc6790146109575780638ed6b016146109a557806395d89b41146109c757610232565b806329613086116101be57806342966c681161018257806342966c68146107f157806343684b211461081f5780634b56c39e1461087b5780636c525d04146108995780636f49712b146108a357610232565b8063296130861461061c578063313ce56714610626578063395093511461064a5780633f9fe75a146106b05780634000aea0146106f457610232565b806318160ddd1161020557806318160ddd146103ca5780631e89d545146103e8578063223d04171461053457806323b872dd1461058c57806328696de21461061257610232565b8063048450bd1461023757806306fdde0314610285578063095ea7b31461030857806316b627d11461036e575b600080fd5b6102836004803603604081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611158565b005b61028d611242565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cd5780820151818401526020810190506102b2565b50505050905090810190601f1680156102fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103546004803603604081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112e4565b604051808215151515815260200191505060405180910390f35b6103b06004803603602081101561038457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140f565b604051808215151515815260200191505060405180910390f35b6103d261142f565b6040518082815260200191505060405180910390f35b610532600480360360408110156103fe57600080fd5b810190808035906020019064010000000081111561041b57600080fd5b82018360208201111561042d57600080fd5b8035906020019184602083028401116401000000008311171561044f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104af57600080fd5b8201836020820111156104c157600080fd5b803590602001918460208302840111640100000000831117156104e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611439565b005b6105766004803603602081101561054a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611499565b6040518082815260200191505060405180910390f35b6105f8600480360360608110156105a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611645565b604051808215151515815260200191505060405180910390f35b61061a6117f5565b005b610624611800565b005b61062e611b24565b604051808260ff1660ff16815260200191505060405180910390f35b6106966004803603604081101561066057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3b565b604051808215151515815260200191505060405180910390f35b6106f2600480360360208110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d70565b005b6107d76004803603606081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561075157600080fd5b82018360208201111561076357600080fd5b8035906020019184600183028401116401000000008311171561078557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e3f565b604051808215151515815260200191505060405180910390f35b61081d6004803603602081101561080757600080fd5b8101908080359060200190929190505050611fcb565b005b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fd8565b604051808215151515815260200191505060405180910390f35b610883611ff8565b6040518082815260200191505060405180910390f35b6108a1611ffe565b005b6108e5600480360360208110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120de565b604051808215151515815260200191505060405180910390f35b6109416004803603602081101561091557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b6040518082815260200191505060405180910390f35b6109a36004803603604081101561096d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612147565b005b6109ad6122ed565b604051808215151515815260200191505060405180910390f35b6109cf612300565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a0f5780820151818401526020810190506109f4565b50505050905090810190601f168015610a3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a9660048036036040811015610a6057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123a2565b604051808215151515815260200191505060405180910390f35b610afe60048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506125d7565b005b610b4c60048036036040811015610b1657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612764565b604051808215151515815260200191505060405180910390f35b610b9260048036036020811015610b7c57600080fd5b810190808035906020019092919050505061277b565b6040518082815260200191505060405180910390f35b610cab60048036036080811015610bbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c2557600080fd5b820183602082011115610c3757600080fd5b80359060200191846001830284011164010000000083111715610c5957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061279e565b604051808215151515815260200191505060405180910390f35b610da860048036036060811015610cdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610d2257600080fd5b820183602082011115610d3457600080fd5b80359060200191846001830284011164010000000083111715610d5657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061292c565b604051808215151515815260200191505060405180910390f35b610dca612ab8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e14612ade565b005b610e7860048036036040811015610e2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae9565b6040518082815260200191505060405180910390f35b610ed060048036036020811015610ea457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b70565b6040518082815260200191505060405180910390f35b610f3260048036036040811015610efc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1a565b005b610f7660048036036020811015610f4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ddd565b005b610fba60048036036020811015610f8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eac565b005b61110660048036036040811015610fd257600080fd5b8101908080359060200190640100000000811115610fef57600080fd5b82018360208201111561100157600080fd5b8035906020019184602083028401116401000000008311171561102357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561108357600080fd5b82018360208201111561109557600080fd5b803590602001918460208302840111640100000000831117156110b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613000565b005b6111566004803603604081101561111e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061305f565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff1661123457600080fd5b61123e82826131ec565b5050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112da5780601f106112af576101008083540402835291602001916112da565b820191906000526020600020905b8154815290600101906020018083116112bd57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131f57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b805182511461144757600080fd5b60008090505b8251811015611494576114873384838151811061146657fe5b602002602001015184848151811061147a57fe5b60200260200101516133bc565b808060010191505061144d565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661153357600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611640565b6000611589600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954613aa490919063ffffffff16565b905060006115e76115d8600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b83613abb90919063ffffffff16565b905061163b81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156116d057600080fd5b61175f82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ea8484846133bc565b600190509392505050565b6117fe33613b0e565b565b61180933613c2a565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111801561189c5750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6118a557600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006119438383613af290919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119e157600060075490506119b96119aa8461277b565b82613aa490919063ffffffff16565b90506119d66119c78361277b565b82613af290919063ffffffff16565b905080600781905550505b611a3383600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b7657600080fd5b611c0582600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e3c81613b0e565b50565b6000611e4b8484612764565b611e5457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f2d578082015181840152602081019050611f12565b50505050905090810190601f168015611f5a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611f7c57600080fd5b505af1158015611f90573d6000803e3d6000fd5b505050506040513d6020811015611fa657600080fd5b8101908080519060200190929190505050611fc057600080fd5b600190509392505050565b611fd53382613cbf565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b60075481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c60006101000a81548160ff021916908315150217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121d057600080fd5b61225f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122e98282613cbf565b5050565b600c60009054906101000a900460ff1681565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123985780601f1061236d57610100808354040283529160200191612398565b820191906000526020600020905b81548152906001019060200180831161237b57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123dd57600080fd5b61246c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613aa490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006127713384846133bc565b6001905092915050565b6000612797601260ff16600a0a83613edb90919063ffffffff16565b9050919050565b60006127ab858585611645565b6127b457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e868530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561288d578082015181840152602081019050612872565b50505050905090810190601f1680156128ba5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156128dc57600080fd5b505af11580156128f0573d6000803e3d6000fd5b505050506040513d602081101561290657600080fd5b810190808051906020019092919050505061292057600080fd5b60019050949350505050565b600061293884846112e4565b61294157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a1a5780820151818401526020810190506129ff565b50505050905090810190601f168015612a475780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050506040513d6020811015612a9357600080fd5b8101908080519060200190929190505050612aad57600080fd5b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ae733613ef4565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bca576000612c13565b612c12600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d1657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d9d57600080fd5b505af1158015612db1573d6000803e3d6000fd5b505050506040513d6020811015612dc757600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ea981613ef4565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f0657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f4057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b805182511461300e57600080fd5b60008090505b825181101561305a5761304d83828151811061302c57fe5b602002602001015183838151811061304057fe5b6020026020010151611158565b8080600101915050613014565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008114156131fa57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006132538383613af290919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132ae83600554613af290919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561335057600060075490506133286133198461277b565b82613aa490919063ffffffff16565b90506133456133368361277b565b82613af290919063ffffffff16565b905080600781905550505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561340857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561347157503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61347a57600080fd5b61348383613c2a565b61348c82613c2a565b6000809050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135355750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357e576135616064613553600685613abb90919063ffffffff16565b613edb90919063ffffffff16565b90506000811480156135735750600082115b1561357d57600190505b5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006135d78483613aa490919063ffffffff16565b90506135ec8385613aa490919063ffffffff16565b935060008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561362a578161366b565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b905060006136828683613af290919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613805576137e56137d68661277b565b82613aa490919063ffffffff16565b90506138026137f38561277b565b82613af290919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613892576138726138638461277b565b82613aa490919063ffffffff16565b905061388f6138808361277b565b82613af290919063ffffffff16565b90505b8060078190555060008690506000821115613a0d5760006138bd600289613edb90919063ffffffff16565b905060006138d48483613edb90919063ffffffff16565b90506138eb81600954613af290919063ffffffff16565b60098190555061394382600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613af290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156139f5573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b613a088284613aa490919063ffffffff16565b925050505b613a2281600554613aa490919063ffffffff16565b6005819055506000811115613a9857600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b50505050505050505050565b600082821115613ab057fe5b818303905092915050565b600080831415613ace5760009050613aec565b6000828402905082848281613adf57fe5b0414613ae757fe5b809150505b92915050565b600080828401905083811015613b0457fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b6457600080fd5b613b6d81613c2a565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c21613c10600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b600754613aa490919063ffffffff16565b60078190555050565b613c3381611499565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000811415613ccd57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115613d1957600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000613d728383613aa490919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcd83600554613aa490919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e6f5760006007549050613e47613e388461277b565b82613aa490919063ffffffff16565b9050613e64613e558361277b565b82613af290919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600080828481613ee757fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f4b57600080fd5b613f5481613c2a565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614008613ff7600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277b565b600754613af290919063ffffffff16565b6007819055505056fea165627a7a723058201fdbac9cfe8fe40b7c1aef010140adec87a6d7589517c7d62815e67da7d239c40029

Deployed Bytecode Sourcemap

2489:14187:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2489:14187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16363:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16363:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2208:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2208:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:248;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6567:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3658:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3658:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4512:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5675:272;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5675:272:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5675:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5675:272:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5675:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5675:272:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5675:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5675:272:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5675:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5675:272:0;;;;;;;;;;;;;;;:::i;:::-;;12803:414;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12803:414:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5959:297;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5959:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14318:65;;;:::i;:::-;;13262:974;;;:::i;:::-;;2400:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7130:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7130:329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14487:88;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14487:88:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5398:265;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5398:265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5398:265:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5398:265:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5398:265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5398:265:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8543:87;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8543:87:0;;;;;;;;;;;;;;;;;:::i;:::-;;3606:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3606:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3031:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16579:88;;;:::i;:::-;;3078:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3078:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4621:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4621:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8642:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8642:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3491:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2302:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2302:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:339;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7471:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15544:179;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15544:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5233:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5233:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4913:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4913:159:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6268:287;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6268:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6268:287:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6268:287:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6268:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6268:287:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6827:291;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6827:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6827:291:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6827:291:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6827:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6827:291:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2994:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14248:64;;;:::i;:::-;;5084:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5084:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4745:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4745:156:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15284:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15284:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14395:86;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14395:86:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4249:251;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4249:251:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16002:264;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16002:264:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;16002:264:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16002:264:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16002:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16002:264:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;16002:264:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16002:264:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16002:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16002:264:0;;;;;;;;;;;;;;;:::i;:::-;;15771:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15771:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16363:155;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16461:15;;;;;;;;;;;16453:24;;;;;;16488:22;16494:7;16503:6;16488:5;:22::i;:::-;16363:155;;:::o;2208:82::-;2244:13;2277:5;2270:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:82;:::o;6567:248::-;6632:4;6682:1;6663:21;;:7;:21;;;;6655:30;;;;;;6728:5;6696:8;:20;6705:10;6696:20;;;;;;;;;;;;;;;:29;6717:7;6696:29;;;;;;;;;;;;;;;:37;;;;6770:7;6749:36;;6758:10;6749:36;;;6779:5;6749:36;;;;;;;;;;;;;;;;;;6803:4;6796:11;;6567:248;;;;:::o;3658:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;4512:97::-;4556:7;4589:12;;4582:19;;4512:97;:::o;5675:272::-;5802:6;:13;5782:9;:16;:33;5774:42;;;;;;5831:9;5843:1;5831:13;;5827:112;5850:9;:16;5846:1;:20;5827:112;;;5886:53;5903:10;5915:9;5925:1;5915:12;;;;;;;;;;;;;;5929:6;5936:1;5929:9;;;;;;;;;;;;;;5886:16;:53::i;:::-;5868:3;;;;;;;5827:112;;;;5675:272;;:::o;12803:414::-;12867:7;12896:9;:17;12906:6;12896:17;;;;;;;;;;;;;;;;;;;;;;;;;12892:64;;12935:13;:21;12949:6;12935:21;;;;;;;;;;;;;;;;12928:28;;;;12892:64;12967:25;12995:64;13020:30;:38;13051:6;13020:38;;;;;;;;;;;;;;;;12995:20;;:24;;:64;;;;:::i;:::-;12967:92;;13080:18;13101:53;13123:30;13135:9;:17;13145:6;13135:17;;;;;;;;;;;;;;;;13123:11;:30::i;:::-;13101:17;:21;;:53;;;;:::i;:::-;13080:74;;13172:37;13198:10;13172:13;:21;13186:6;13172:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;13165:44;;;;12803:414;;;;:::o;5959:297::-;6038:4;6078:8;:14;6087:4;6078:14;;;;;;;;;;;;;;;:26;6093:10;6078:26;;;;;;;;;;;;;;;;6069:5;:35;;6061:44;;;;;;6145:37;6176:5;6145:8;:14;6154:4;6145:14;;;;;;;;;;;;;;;:26;6160:10;6145:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6116:8;:14;6125:4;6116:14;;;;;;;;;;;;;;;:26;6131:10;6116:26;;;;;;;;;;;;;;;:66;;;;6193:33;6210:4;6216:2;6220:5;6193:16;:33::i;:::-;6244:4;6237:11;;5959:297;;;;;:::o;14318:65::-;14353:27;14369:10;14353:15;:27::i;:::-;14318:65::o;13262:974::-;13310:28;13327:10;13310:16;:28::i;:::-;13349:15;13367:13;:25;13381:10;13367:25;;;;;;;;;;;;;;;;13349:43;;13421:1;13411:7;:11;:50;;;;;13437:9;:24;13455:4;13437:24;;;;;;;;;;;;;;;;13426:7;:35;;13411:50;13403:59;;;;;;13511:1;13483:13;:25;13497:10;13483:25;;;;;;;;;;;;;;;:29;;;;13533:28;13564:9;:21;13574:10;13564:21;;;;;;;;;;;;;;;;13533:52;;13596:25;13624:33;13649:7;13624:20;:24;;:33;;;;:::i;:::-;13596:61;;13717:9;:21;13727:10;13717:21;;;;;;;;;;;;;;;;;;;;;;;;;13714:298;;;13764:17;13784:21;;13764:41;;13832:48;13846:33;13858:20;13846:11;:33::i;:::-;13832:9;:13;;:48;;;;:::i;:::-;13820:60;;13907:45;13921:30;13933:17;13921:11;:30::i;:::-;13907:9;:13;;:45;;;;:::i;:::-;13895:57;;13991:9;13967:21;:33;;;;13714:298;;14079:37;14108:7;14079:9;:24;14097:4;14079:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;14052:9;:24;14070:4;14052:24;;;;;;;;;;;;;;;:64;;;;14151:17;14127:9;:21;14137:10;14127:21;;;;;;;;;;;;;;;:41;;;;14208:10;14184:44;;14201:4;14184:44;;;14220:7;14184:44;;;;;;;;;;;;;;;;;;13262:974;;;:::o;2400:82::-;2440:5;2465:9;;;;;;;;;;;2458:16;;2400:82;:::o;7130:329::-;7210:4;7260:1;7241:21;;:7;:21;;;;7233:30;;;;;;7307:45;7341:10;7307:8;:20;7316:10;7307:20;;;;;;;;;;;;;;;:29;7328:7;7307:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;7274:8;:20;7283:10;7274:20;;;;;;;;;;;;;;;:29;7295:7;7274:29;;;;;;;;;;;;;;;:79;;;;7390:7;7369:60;;7378:10;7369:60;;;7399:8;:20;7408:10;7399:20;;;;;;;;;;;;;;;:29;7420:7;7399:29;;;;;;;;;;;;;;;;7369:60;;;;;;;;;;;;;;;;;;7447:4;7440:11;;7130:329;;;;:::o;14487:88::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14549:23;14565:6;14549:15;:23::i;:::-;14487:88;:::o;5398:265::-;5482:4;5513:19;5522:2;5526:5;5513:8;:19::i;:::-;5505:28;;;;;;5576:2;5552:40;;;5593:10;5605:5;5620:4;5627;5552:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5552:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5552:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5552:80:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5552:80:0;;;;;;;;;;;;;;;;5544:89;;;;;;5651:4;5644:11;;5398:265;;;;;:::o;8543:87::-;8598:24;8604:10;8616:5;8598;:24::i;:::-;8543:87;:::o;3606:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3031:40::-;;;;:::o;16579:88::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16654:5;16636:15;;:23;;;;;;;;;;;;;;;;;;16579:88::o;3078:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;4621:112::-;4676:7;4709:9;:16;4719:5;4709:16;;;;;;;;;;;;;;;;4702:23;;4621:112;;;:::o;8642:246::-;8735:8;:17;8744:7;8735:17;;;;;;;;;;;;;;;:29;8753:10;8735:29;;;;;;;;;;;;;;;;8726:5;:38;;8718:47;;;;;;8808:40;8842:5;8808:8;:17;8817:7;8808:17;;;;;;;;;;;;;;;:29;8826:10;8808:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;8776:8;:17;8785:7;8776:17;;;;;;;;;;;;;;;:29;8794:10;8776:29;;;;;;;;;;;;;;;:72;;;;8859:21;8865:7;8874:5;8859;:21::i;:::-;8642:246;;:::o;3491:34::-;;;;;;;;;;;;;:::o;2302:86::-;2340:13;2373:7;2366:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2302:86;:::o;7471:339::-;7556:4;7606:1;7587:21;;:7;:21;;;;7579:30;;;;;;7653:50;7687:15;7653:8;:20;7662:10;7653:20;;;;;;;;;;;;;;;:29;7674:7;7653:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;7620:8;:20;7629:10;7620:20;;;;;;;;;;;;;;;:29;7641:7;7620:29;;;;;;;;;;;;;;;:84;;;;7741:7;7720:60;;7729:10;7720:60;;;7750:8;:20;7759:10;7750:20;;;;;;;;;;;;;;;:29;7771:7;7750:29;;;;;;;;;;;;;;;;7720:60;;;;;;;;;;;;;;;;;;7798:4;7791:11;;7471:339;;;;:::o;15544:179::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15639:32;15651:5;15658:12;15639:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15703:12;15682:11;:18;15694:5;15682:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15544:179;;:::o;5233:153::-;5294:4;5317:39;5334:10;5346:2;5350:5;5317:16;:39::i;:::-;5374:4;5367:11;;5233:153;;;;:::o;4913:159::-;4982:7;5015:49;2863:2;5041:22;;5037:2;:26;5015:17;:21;;:49;;;;:::i;:::-;5008:56;;4913:159;;;:::o;6268:287::-;6370:4;6401:29;6414:4;6420:2;6424:5;6401:12;:29::i;:::-;6393:38;;;;;;6474:2;6450:40;;;6491:4;6497:5;6512:4;6519;6450:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6450:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6450:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6450:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6450:74:0;;;;;;;;;;;;;;;;6442:83;;;;;;6543:4;6536:11;;6268:287;;;;;;:::o;6827:291::-;6916:12;6955:24;6963:7;6972:6;6955:7;:24::i;:::-;6947:33;;;;;;7022:7;6999:47;;;7047:10;7059:6;7075:4;7082;6999:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6999:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6999:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6999:88:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6999:88:0;;;;;;;;;;;;;;;;6991:97;;;;;;7106:4;7099:11;;6827:291;;;;;:::o;2994:28::-;;;;;;;;;;;;;:::o;14248:64::-;14282:26;14297:10;14282:14;:26::i;:::-;14248:64::o;5084:137::-;5156:7;5189:8;:15;5198:5;5189:15;;;;;;;;;;;;;;;:24;5205:7;5189:24;;;;;;;;;;;;;;;;5182:31;;5084:137;;;;:::o;4745:156::-;4808:7;4841:9;:16;4851:5;4841:16;;;;;;;;;;;;;;;;;;;;;;;;;:52;;4892:1;4841:52;;;4860:29;4872:9;:16;4882:5;4872:16;;;;;;;;;;;;;;;;4860:11;:29::i;:::-;4841:52;4834:59;;4745:156;;;:::o;15284:206::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15416:4;15392:29;;:12;:29;;;;15384:38;;;;;;15440:12;15433:29;;;15463:10;15475:6;15433:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15433:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15433:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15433:49:0;;;;;;;;;;;;;;;;;15284:206;;:::o;14395:86::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14456:22;14471:6;14456:14;:22::i;:::-;14395:86;:::o;4249:251::-;4340:13;;;;;;;;;;;4326:27;;:10;:27;;;4318:36;;;;;;4393:1;4373:22;;:8;:22;;;;4365:31;;;;;;4448:8;4412:45;;4433:13;;;;;;;;;;;4412:45;;;;;;;;;;;;4484:8;4468:13;;:24;;;;;;;;;;;;;;;;;;4249:251;:::o;16002:264::-;16135:6;:13;16115:9;:16;:33;16107:42;;;;;;16164:9;16176:1;16164:13;;16160:98;16183:9;:16;16179:1;:20;16160:98;;;16219:39;16234:9;16244:1;16234:12;;;;;;;;;;;;;;16248:6;16255:1;16248:9;;;;;;;;;;;;;;16219:14;:39::i;:::-;16201:3;;;;;;;16160:98;;;;16002:264;;:::o;15771:185::-;4189:13;;;;;;;;;;;4175:27;;:10;:27;;;4167:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15868:34;15882:5;15889:12;15868:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15936:12;15913:13;:20;15927:5;15913:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15771:185;;:::o;7822:709::-;7912:1;7903:5;:10;;7895:19;;;;;;7935:21;7959:9;:18;7969:7;7959:18;;;;;;;;;;;;;;;;7935:42;;7988:18;8009:24;8027:5;8009:13;:17;;:24;;;;:::i;:::-;7988:45;;8075:10;8054:9;:18;8064:7;8054:18;;;;;;;;;;;;;;;:31;;;;8111:23;8128:5;8111:12;;:16;;:23;;;;:::i;:::-;8096:12;:38;;;;8194:9;:18;8204:7;8194:18;;;;;;;;;;;;;;;;;;;;;;;;;8191:281;;;8238:17;8258:21;;8238:41;;8306;8320:26;8332:13;8320:11;:26::i;:::-;8306:9;:13;;:41;;;;:::i;:::-;8294:53;;8374:38;8388:23;8400:10;8388:11;:23::i;:::-;8374:9;:13;;:38;;;;:::i;:::-;8362:50;;8451:9;8427:21;:33;;;;8191:281;;8508:7;8487:36;;8504:1;8487:36;;;8517:5;8487:36;;;;;;;;;;;;;;;;;;7822:709;;;;:::o;9861:2560::-;9969:9;:15;9979:4;9969:15;;;;;;;;;;;;;;;;9960:5;:24;;9952:33;;;;;;10018:1;10004:16;;:2;:16;;;;:39;;;;;10038:4;10024:19;;:2;:19;;;;10004:39;9996:48;;;;;;10159:22;10176:4;10159:16;:22::i;:::-;10192:20;10209:2;10192:16;:20::i;:::-;10233:18;10254:1;10233:22;;10270:13;:19;10284:4;10270:19;;;;;;;;;;;;;;;;;;;;;;;;;10269:20;:40;;;;;10294:11;:15;10306:2;10294:15;;;;;;;;;;;;;;;;;;;;;;;;;10293:16;10269:40;10266:278;;;10348:21;10365:3;10348:12;10358:1;10348:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;10335:34;;10485:1;10471:10;:15;:28;;;;;10498:1;10490:5;:9;10471:28;10468:64;;;10531:1;10518:14;;10468:64;10266:278;10568:26;10597:9;:15;10607:4;10597:15;;;;;;;;;;;;;;;;10568:44;;10623:23;10649:29;10672:5;10649:18;:22;;:29;;;;:::i;:::-;10623:55;;10707:21;10717:10;10707:5;:9;;:21;;;;:::i;:::-;10699:29;;10749:24;10784:2;10776:10;;:4;:10;;;;:44;;10805:15;10776:44;;;10789:9;:13;10799:2;10789:13;;;;;;;;;;;;;;;;10776:44;10749:71;;10831:21;10855:27;10876:5;10855:16;:20;;:27;;;;:::i;:::-;10831:51;;10941:15;10923:9;:15;10933:4;10923:15;;;;;;;;;;;;;;;:33;;;;10983:13;10967:9;:13;10977:2;10967:13;;;;;;;;;;;;;;;:29;;;;11027:2;11012:25;;11021:4;11012:25;;;11031:5;11012:25;;;;;;;;;;;;;;;;;;11095:17;11115:21;;11095:41;;11150:9;:15;11160:4;11150:15;;;;;;;;;;;;;;;;;;;;;;;;;11147:184;;;11203:46;11217:31;11229:18;11217:11;:31::i;:::-;11203:9;:13;;:46;;;;:::i;:::-;11191:58;;11276:43;11290:28;11302:15;11290:11;:28::i;:::-;11276:9;:13;;:43;;;;:::i;:::-;11264:55;;11147:184;11344:9;:13;11354:2;11344:13;;;;;;;;;;;;;;;;;;;;;;;;;11341:178;;;11395:44;11409:29;11421:16;11409:11;:29::i;:::-;11395:9;:13;;:44;;;;:::i;:::-;11383:56;;11466:41;11480:26;11492:13;11480:11;:26::i;:::-;11466:9;:13;;:41;;;;:::i;:::-;11454:53;;11341:178;11553:9;11529:21;:33;;;;11583:20;11606:10;11583:33;;11652:1;11640:9;:13;11637:584;;;11679:22;11704:17;11719:1;11704:10;:14;;:17;;;;:::i;:::-;11679:42;;11789:22;11814:29;11833:9;11814:14;:18;;:29;;;;:::i;:::-;11789:54;;11910:40;11935:14;11910:20;;:24;;:40;;;;:::i;:::-;11887:20;:63;;;;11992:44;12021:14;11992:9;:24;12010:4;11992:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11965:9;:24;11983:4;11965:24;;;;;;;;;;;;;;;:71;;;;12071:1;12054:14;:18;12051:96;;;12125:4;12096:51;;12105:10;12096:51;;;12132:14;12096:51;;;;;;;;;;;;;;;;;;12051:96;12177:32;12194:14;12177:12;:16;;:32;;;;:::i;:::-;12162:47;;11637:584;;;12287:30;12304:12;12287;;:16;;:30;;;;:::i;:::-;12272:12;:45;;;;12346:1;12331:12;:16;12328:85;;;12396:1;12367:46;;12376:10;12367:46;;;12400:12;12367:46;;;;;;;;;;;;;;;;;;12328:85;9861:2560;;;;;;;;;;:::o;1406:129::-;1464:7;1502:1;1497;:6;;1490:14;;;;1526:1;1522;:5;1515:12;;1406:129;;;;:::o;1030:224::-;1088:7;1123:1;1118;:6;1114:57;;;1158:1;1151:8;;;;1114:57;1181:9;1197:1;1193;:5;1181:17;;1225:1;1220;1216;:5;;;;;;:10;1209:18;;;;1245:1;1238:8;;;1030:224;;;;;:::o;1547:153::-;1605:7;1631:9;1647:1;1643;:5;1631:17;;1671:1;1666;:6;;1659:14;;;;1691:1;1684:8;;;1547:153;;;;:::o;14943:262::-;15016:9;:17;15026:6;15016:17;;;;;;;;;;;;;;;;;;;;;;;;;15008:26;;;;;;15045:24;15062:6;15045:16;:24::i;:::-;15100:5;15080:9;:17;15090:6;15080:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15140:57;15166:30;15178:9;:17;15188:6;15178:17;;;;;;;;;;;;;;;;15166:11;:30::i;:::-;15140:21;;:25;;:57;;;;:::i;:::-;15116:21;:81;;;;14943:262;:::o;12542:195::-;12632:25;12650:6;12632:17;:25::i;:::-;12608:13;:21;12622:6;12608:21;;;;;;;;;;;;;;;:49;;;;12709:20;;12668:30;:38;12699:6;12668:38;;;;;;;;;;;;;;;:61;;;;12542:195;:::o;8900:766::-;8990:1;8981:5;:10;;8973:19;;;;;;9020:9;:18;9030:7;9020:18;;;;;;;;;;;;;;;;9011:5;:27;;9003:36;;;;;;9060:21;9084:9;:18;9094:7;9084:18;;;;;;;;;;;;;;;;9060:42;;9113:18;9134:24;9152:5;9134:13;:17;;:24;;;;:::i;:::-;9113:45;;9200:10;9179:9;:18;9189:7;9179:18;;;;;;;;;;;;;;;:31;;;;9236:23;9253:5;9236:12;;:16;;:23;;;;:::i;:::-;9221:12;:38;;;;9319:9;:18;9329:7;9319:18;;;;;;;;;;;;;;;;;;;;;;;;;9316:281;;;9363:17;9383:21;;9363:41;;9431;9445:26;9457:13;9445:11;:26::i;:::-;9431:9;:13;;:41;;;;:::i;:::-;9419:53;;9499:38;9513:23;9525:10;9513:11;:23::i;:::-;9499:9;:13;;:38;;;;:::i;:::-;9487:50;;9576:9;9552:21;:33;;;;9316:281;;9648:1;9622:36;;9631:7;9622:36;;;9652:5;9622:36;;;;;;;;;;;;;;;;;;8900:766;;;;:::o;1266:128::-;1324:7;1350:9;1366:1;1362;:5;;;;;;1350:17;;1385:1;1378:8;;;1266:128;;;;:::o;14628:261::-;14701:9;:17;14711:6;14701:17;;;;;;;;;;;;;;;;;;;;;;;;;14700:18;14692:27;;;;;;14730:24;14747:6;14730:16;:24::i;:::-;14785:4;14765:9;:17;14775:6;14765:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14824:57;14850:30;14862:9;:17;14872:6;14862:17;;;;;;;;;;;;;;;;14850:11;:30::i;:::-;14824:21;;:25;;:57;;;;:::i;:::-;14800:21;:81;;;;14628:261;:::o

Swarm Source

bzzr://1fdbac9cfe8fe40b7c1aef010140adec87a6d7589517c7d62815e67da7d239c4
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.