ETH Price: $2,439.60 (-1.42%)
 

Overview

Max Total Supply

3,000,000,000 OPP

Holders

949

Market

Price

$0.00 @ 0.000000 ETH (+0.03%)

Onchain Market Cap

$485,793.50

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 OPP

Value
$0.00
0x8614b682b9b3ef6eee482ae30109ab9ff32f082c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$19.90
Market Capitalization:$0.00
Circulating Supply:0.00 OPP
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OpenProprietaryProtocol

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-17
*/

/**
 *Submitted for verification at Etherscan.io on 2021-06-09
*/

pragma solidity ^0.4.26;
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
        public view returns (uint256);
    function transferFrom(address from, address to, uint256 value)
        public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
library SafeERC20 {
    function safeTransfer(
        ERC20Basic _token,
        address _to,
        uint256 _value
    ) internal
    {
        require(_token.transfer(_to, _value));
    }
    function safeTransferFrom(
        ERC20 _token,
        address _from,
        address _to,
        uint256 _value
    ) internal
    {
        require(_token.transferFrom(_from, _to, _value));
    }
    function safeApprove(
        ERC20 _token,
        address _spender,
        uint256 _value
    ) internal
    {
        require(_token.approve(_spender, _value));
    }
}
library SafeMath {
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        if(a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }
    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}
/**
 * @title Open Proprietary Protocol token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    
    mapping(address => uint256) balances;
    
    uint256 totalSupply_;
    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }
    /**
    * @dev Transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        
        emit Transfer(msg.sender, _to, _value);
        
        return true;
    }
    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}
/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 */
contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) internal allowed;
    /**
    * @dev Transfer tokens from one address to another
    * @param _from address The address which you want to send tokens from
    * @param _to address The address which you want to transfer to
    * @param _value uint256 the amount of tokens to be transferred
    */
    function transferFrom (
        address _from,
        address _to,
        uint256 _value
    ) public returns (bool)
    {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        
        emit Transfer(_from, _to, _value);
        
        return true;
    }
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        
        emit Approval(msg.sender, _spender, _value);
        
        return true;
    }
    function allowance (
        address _owner,
        address _spender
    )
        public
        view
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }
    function increaseApproval(
        address _spender,
        uint256 _addedValue
    )
        public
        returns (bool)
    {
        allowed[msg.sender][_spender] = (
        allowed[msg.sender][_spender].add(_addedValue));
        
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        
        return true;
    }
    /**
    * @dev Decrease the amount of tokens that an owner allowed to a spender.
    * approve should be called when allowed[_spender] == 0. To decrement
    * allowed value is better to use this function to avoid 2 calls (and wait until
    * the first transaction is mined)
    * @param _spender The address which will spend the funds.
    * @param _subtractedValue The amount of tokens to decrease the allowance by.
    */
    function decreaseApproval(
        address _spender,
        uint256 _subtractedValue
    ) public returns (bool)
    {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        
        return true;
    }
}
contract Ownable {
    uint8 constant MAX_BURN = 3;
    address[MAX_BURN] public chkBurnerList;
    
    mapping(address => bool) public burners;
    //mapping (address => bool) public owners;
    address owner;
    
    event AddedBurner(address indexed newBurner);
    event ChangeOwner(address indexed newOwner);
    event DeletedBurner(address indexed toDeleteBurner);
    constructor() public {
        owner = msg.sender;
    }
    modifier onlyOwner() {
        require(owner == msg.sender);
        _;
    }
    modifier onlyBurner(){
        require(burners[msg.sender]);
        _;
    }
    
    function changeOwnerShip(address newOwner) public onlyOwner returns(bool) {
        require(newOwner != address(0));
        owner = newOwner;
        
        emit ChangeOwner(newOwner);
        
        return true;
    }
    
    function addBurner(address burner, uint8 num) public onlyOwner returns (bool) {
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == address(0));
        require(burners[burner] == false);
        burners[burner] = true;
        chkBurnerList[num] = burner;
        
        emit AddedBurner(burner);
        
        return true;
    }
    function deleteBurner(address burner, uint8 num) public onlyOwner returns (bool){
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == burner);
        
        burners[burner] = false;
        chkBurnerList[num] = address(0);
        
        emit DeletedBurner(burner);
        
        return true;
    }
}
contract Blacklist is Ownable {
    mapping(address => bool) blacklisted;
    event Blacklisted(address indexed blacklist);
    event Whitelisted(address indexed whitelist);
    
    modifier whenPermitted(address node) {
        require(!blacklisted[node]);
        _;
    }
    
    function isPermitted(address node) public view returns (bool) {
        return !blacklisted[node];
    }
    function blacklist(address node) public onlyOwner returns (bool) {
        require(!blacklisted[node]);
        blacklisted[node] = true;
        emit Blacklisted(node);
        return blacklisted[node];
    }
   
    function unblacklist(address node) public onlyOwner returns (bool) {
        require(blacklisted[node]);
        blacklisted[node] = false;
        emit Whitelisted(node);
        return blacklisted[node];
    }
}
contract Burnlist is Blacklist {
    mapping(address => bool) public isburnlist;
    event Burnlisted(address indexed burnlist, bool signal);
    modifier isBurnlisted(address who) {
        require(isburnlist[who]);
        _;
    }
    function addBurnlist(address node) public onlyOwner returns (bool) {
        require(!isburnlist[node]);
        
        isburnlist[node] = true;
        
        emit Burnlisted(node, true);
        
        return isburnlist[node];
    }
    function delBurnlist(address node) public onlyOwner returns (bool) {
        require(isburnlist[node]);
        
        isburnlist[node] = false;
        
        emit Burnlisted(node, false);
        
        return isburnlist[node];
    }
}
contract PausableToken is StandardToken, Burnlist {
    
    bool public paused = false;
    
    event Paused(address addr);
    event Unpaused(address addr);
    constructor() public {
    }
    
    modifier whenNotPaused() {
        require(!paused || owner == msg.sender);
        _;
    }
   
    function pause() public onlyOwner returns (bool) {
        require(!paused);
        paused = true;
        
        emit Paused(msg.sender);
        return paused;
    }
    function unpause() public onlyOwner returns (bool) {
        require(paused);
        paused = false;
        
        emit Unpaused(msg.sender);
        return paused;
    }
    function transfer(address to, uint256 value) public whenNotPaused whenPermitted(msg.sender) returns (bool) {
       
        return super.transfer(to, value);
    }
    function transferFrom(address from, address to, uint256 value) public 
    whenNotPaused whenPermitted(from) whenPermitted(msg.sender) returns (bool) {
      
        return super.transferFrom(from, to, value);
    }
}
/**
 * @title Open Proprietary Protocol
 *
 */
contract OpenProprietaryProtocol is PausableToken {
    
    event Burn(address indexed burner, uint256 value);
    event Mint(address indexed minter, uint256 value);
    string public constant name = "Open Proprietary Protocol";
    uint8 public constant decimals = 18;
    string public constant symbol = "OPP";
    uint256 public constant INITIAL_SUPPLY = 3e9 * (10 ** uint256(decimals)); 
    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        
        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }
    function destory() public onlyOwner returns (bool) {
        
        selfdestruct(owner);
        return true;
    }
 
    function mint(uint256 _amount) public onlyOwner returns (bool) {
        
        require(INITIAL_SUPPLY >= totalSupply_.add(_amount));
        
        totalSupply_ = totalSupply_.add(_amount);
        
        balances[owner] = balances[owner].add(_amount);
        emit Mint(owner, _amount);
        
        emit Transfer(address(0), owner, _amount);
        
        return true;
    }
 
    function burn(address _to,uint256 _value) public onlyBurner isBurnlisted(_to) returns(bool) {
        
        _burn(_to, _value);
        
        return true;
    }
    function _burn(address _who, uint256 _value) internal returns(bool){     
        require(_value <= balances[_who]);
        
        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
    
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
        
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwnerShip","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"burners","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"chkBurnerList","outputs":[{"name":"","type":"address"}],"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":true,"inputs":[{"name":"","type":"address"}],"name":"isburnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"delBurnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"address"}],"name":"isPermitted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"addBurnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destory","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"node","type":"address"}],"name":"unblacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[{"name":"burner","type":"address"},{"name":"num","type":"uint8"}],"name":"addBurner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"blacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"num","type":"uint8"}],"name":"deleteBurner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"minter","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burnlist","type":"address"},{"indexed":false,"name":"signal","type":"bool"}],"name":"Burnlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"blacklist","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whitelist","type":"address"}],"name":"Whitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newBurner","type":"address"}],"name":"AddedBurner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newOwner","type":"address"}],"name":"ChangeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"toDeleteBurner","type":"address"}],"name":"DeletedBurner","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"},{"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"}]

60806040526000600a60006101000a81548160ff02191690831515021790555034801561002b57600080fd5b5033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a63b2d05e0002600181905550601260ff16600a0a63b2d05e00026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a0a63b2d05e00026040518082815260200191505060405180910390a3612fba806101536000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302be8e4e1461017a57806303d41e0e146101d557806306fdde0314610230578063095ea7b3146102c057806318160ddd146103255780631b9cddcc1461035057806323b872dd146103bd5780632e01161a146104425780632ff2e9dc1461049d578063313ce567146104c85780633b8157ef146104f95780633f4ba83a146105545780633fd8cc4e146105835780635c975abb146105de578063661884631461060d57806369255678146106725780636bdebcc9146106cd57806370a08231146106fc57806375e3661e146107535780638456cb59146107ae57806395d89b41146107dd5780639dc29fac1461086d578063a0712d68146108d2578063a9059cbb14610917578063d73dd6231461097c578063dd62ed3e146109e1578063ec27035014610a58578063f9f92be414610ac0578063fe069fb114610b1b575b600080fd5b34801561018657600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b83565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b50610216600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caa565b604051808215151515815260200191505060405180910390f35b34801561023c57600080fd5b50610245610cca565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102cc57600080fd5b5061030b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d03565b604051808215151515815260200191505060405180910390f35b34801561033157600080fd5b5061033a610df5565b6040518082815260200191505060405180910390f35b34801561035c57600080fd5b5061037b60048036038101908080359060200190929190505050610dff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e34565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f74565b604051808215151515815260200191505060405180910390f35b3480156104a957600080fd5b506104b2610f94565b6040518082815260200191505060405180910390f35b3480156104d457600080fd5b506104dd610fa5565b604051808260ff1660ff16815260200191505060405180910390f35b34801561050557600080fd5b5061053a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b604051808215151515815260200191505060405180910390f35b34801561056057600080fd5b5061056961115f565b604051808215151515815260200191505060405180910390f35b34801561058f57600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061126b565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506105f36112c2565b604051808215151515815260200191505060405180910390f35b34801561061957600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112d5565b604051808215151515815260200191505060405180910390f35b34801561067e57600080fd5b506106b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611566565b604051808215151515815260200191505060405180910390f35b3480156106d957600080fd5b506106e261171c565b604051808215151515815260200191505060405180910390f35b34801561070857600080fd5b5061073d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b5565b6040518082815260200191505060405180910390f35b34801561075f57600080fd5b50610794600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117fd565b604051808215151515815260200191505060405180910390f35b3480156107ba57600080fd5b506107c36119a2565b604051808215151515815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611aaf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610832578082015181840152602081019050610817565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087957600080fd5b506108b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ae8565b604051808215151515815260200191505060405180910390f35b3480156108de57600080fd5b506108fd60048036038101908080359060200190929190505050611bb1565b604051808215151515815260200191505060405180910390f35b34801561092357600080fd5b50610962600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e32565b604051808215151515815260200191505060405180910390f35b34801561098857600080fd5b506109c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f15565b604051808215151515815260200191505060405180910390f35b3480156109ed57600080fd5b50610a42600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612111565b6040518082815260200191505060405180910390f35b348015610a6457600080fd5b50610aa6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612198565b604051808215151515815260200191505060405180910390f35b348015610acc57600080fd5b50610b01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240b565b604051808215151515815260200191505060405180910390f35b348015610b2757600080fd5b50610b69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506125b1565b604051808215151515815260200191505060405180910390f35b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610be157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c1d57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167ff285329298fd841af46eb83bbe90d1ebe2951c975a65b19a02f965f842ee69c560405160405180910390a260019050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280601981526020017f4f70656e2050726f70726965746172792050726f746f636f6c0000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b600381600381101515610e0e57fe5b016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900460ff161580610e9f57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515610eaa57600080fd5b83600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f0457600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f5e57600080fd5b610f698686866127c5565b925050509392505050565b60096020528060005260406000206000915054906101000a900460ff1681565b601260ff16600a0a63b2d05e000281565b601281565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561100857600080fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561106057600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c6000604051808215151515815260200191505060405180910390a2600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111bd57600080fd5b600a60009054906101000a900460ff1615156111d857600080fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600a60009054906101000a900460ff16905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600a60009054906101000a900460ff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156113e6576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061147a565b6113f98382612b7f90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115c457600080fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161d57600080fd5b6001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c6001604051808215151515815260200191505060405180910390a2600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561177a57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185b57600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156118b357600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a0057600080fd5b600a60009054906101000a900460ff16151515611a1c57600080fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600a60009054906101000a900460ff16905090565b6040805190810160405280600381526020017f4f5050000000000000000000000000000000000000000000000000000000000081525081565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b4257600080fd5b82600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b9b57600080fd5b611ba58484612b98565b50600191505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c0f57600080fd5b611c2482600154612d5390919063ffffffff16565b601260ff16600a0a63b2d05e000210151515611c3f57600080fd5b611c5482600154612d5390919063ffffffff16565b600181905550611ccd82600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a2600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b6000600a60009054906101000a900460ff161580611e9d57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515611ea857600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611f0257600080fd5b611f0c8484612d6f565b91505092915050565b6000611fa682600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121f657600080fd5b600360ff168260ff1610151561220b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561224757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff1660038360ff1660038110151561227157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561231457600080fd5b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508260038360ff1660038110151561237f57fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167fb2bea1aacb52292e22554458b37393c5c9afbdc4bb5edddf26805d0ad791005a60405160405180910390a26001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561246957600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156124c257600080fd5b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a2600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561260f57600080fd5b600360ff168260ff1610151561262457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561266057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1660038360ff1660038110151561268957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126cd57600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060038360ff1660038110151561273957fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f560f25f18d7de8bf147a02a300cdcfd8c47e2ca258b2ead7d9e331f29ee488d960405160405180910390a26001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561280257600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561284f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156128da57600080fd5b61292b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129be826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828211151515612b8d57fe5b818303905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612be757600080fd5b612c38826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8f82600154612b7f90919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008183019050828110151515612d6657fe5b80905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612dac57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612df957600080fd5b612e4a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612edd826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820907517632ce0054547a40099aa4bdb503d0c881b03fe19156dd5971be38d28840029

Deployed Bytecode

0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302be8e4e1461017a57806303d41e0e146101d557806306fdde0314610230578063095ea7b3146102c057806318160ddd146103255780631b9cddcc1461035057806323b872dd146103bd5780632e01161a146104425780632ff2e9dc1461049d578063313ce567146104c85780633b8157ef146104f95780633f4ba83a146105545780633fd8cc4e146105835780635c975abb146105de578063661884631461060d57806369255678146106725780636bdebcc9146106cd57806370a08231146106fc57806375e3661e146107535780638456cb59146107ae57806395d89b41146107dd5780639dc29fac1461086d578063a0712d68146108d2578063a9059cbb14610917578063d73dd6231461097c578063dd62ed3e146109e1578063ec27035014610a58578063f9f92be414610ac0578063fe069fb114610b1b575b600080fd5b34801561018657600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b83565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b50610216600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caa565b604051808215151515815260200191505060405180910390f35b34801561023c57600080fd5b50610245610cca565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102cc57600080fd5b5061030b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d03565b604051808215151515815260200191505060405180910390f35b34801561033157600080fd5b5061033a610df5565b6040518082815260200191505060405180910390f35b34801561035c57600080fd5b5061037b60048036038101908080359060200190929190505050610dff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e34565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f74565b604051808215151515815260200191505060405180910390f35b3480156104a957600080fd5b506104b2610f94565b6040518082815260200191505060405180910390f35b3480156104d457600080fd5b506104dd610fa5565b604051808260ff1660ff16815260200191505060405180910390f35b34801561050557600080fd5b5061053a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b604051808215151515815260200191505060405180910390f35b34801561056057600080fd5b5061056961115f565b604051808215151515815260200191505060405180910390f35b34801561058f57600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061126b565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506105f36112c2565b604051808215151515815260200191505060405180910390f35b34801561061957600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112d5565b604051808215151515815260200191505060405180910390f35b34801561067e57600080fd5b506106b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611566565b604051808215151515815260200191505060405180910390f35b3480156106d957600080fd5b506106e261171c565b604051808215151515815260200191505060405180910390f35b34801561070857600080fd5b5061073d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b5565b6040518082815260200191505060405180910390f35b34801561075f57600080fd5b50610794600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117fd565b604051808215151515815260200191505060405180910390f35b3480156107ba57600080fd5b506107c36119a2565b604051808215151515815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611aaf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610832578082015181840152602081019050610817565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087957600080fd5b506108b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ae8565b604051808215151515815260200191505060405180910390f35b3480156108de57600080fd5b506108fd60048036038101908080359060200190929190505050611bb1565b604051808215151515815260200191505060405180910390f35b34801561092357600080fd5b50610962600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e32565b604051808215151515815260200191505060405180910390f35b34801561098857600080fd5b506109c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f15565b604051808215151515815260200191505060405180910390f35b3480156109ed57600080fd5b50610a42600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612111565b6040518082815260200191505060405180910390f35b348015610a6457600080fd5b50610aa6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612198565b604051808215151515815260200191505060405180910390f35b348015610acc57600080fd5b50610b01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240b565b604051808215151515815260200191505060405180910390f35b348015610b2757600080fd5b50610b69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506125b1565b604051808215151515815260200191505060405180910390f35b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610be157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c1d57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167ff285329298fd841af46eb83bbe90d1ebe2951c975a65b19a02f965f842ee69c560405160405180910390a260019050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280601981526020017f4f70656e2050726f70726965746172792050726f746f636f6c0000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b600381600381101515610e0e57fe5b016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900460ff161580610e9f57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515610eaa57600080fd5b83600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f0457600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f5e57600080fd5b610f698686866127c5565b925050509392505050565b60096020528060005260406000206000915054906101000a900460ff1681565b601260ff16600a0a63b2d05e000281565b601281565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561100857600080fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561106057600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c6000604051808215151515815260200191505060405180910390a2600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111bd57600080fd5b600a60009054906101000a900460ff1615156111d857600080fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600a60009054906101000a900460ff16905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600a60009054906101000a900460ff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156113e6576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061147a565b6113f98382612b7f90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115c457600080fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161d57600080fd5b6001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c6001604051808215151515815260200191505060405180910390a2600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561177a57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185b57600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156118b357600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a0057600080fd5b600a60009054906101000a900460ff16151515611a1c57600080fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600a60009054906101000a900460ff16905090565b6040805190810160405280600381526020017f4f5050000000000000000000000000000000000000000000000000000000000081525081565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b4257600080fd5b82600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b9b57600080fd5b611ba58484612b98565b50600191505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c0f57600080fd5b611c2482600154612d5390919063ffffffff16565b601260ff16600a0a63b2d05e000210151515611c3f57600080fd5b611c5482600154612d5390919063ffffffff16565b600181905550611ccd82600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a2600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b6000600a60009054906101000a900460ff161580611e9d57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515611ea857600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611f0257600080fd5b611f0c8484612d6f565b91505092915050565b6000611fa682600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121f657600080fd5b600360ff168260ff1610151561220b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561224757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff1660038360ff1660038110151561227157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561231457600080fd5b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508260038360ff1660038110151561237f57fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167fb2bea1aacb52292e22554458b37393c5c9afbdc4bb5edddf26805d0ad791005a60405160405180910390a26001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561246957600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156124c257600080fd5b6001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a2600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561260f57600080fd5b600360ff168260ff1610151561262457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561266057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1660038360ff1660038110151561268957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126cd57600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060038360ff1660038110151561273957fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f560f25f18d7de8bf147a02a300cdcfd8c47e2ca258b2ead7d9e331f29ee488d960405160405180910390a26001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561280257600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561284f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156128da57600080fd5b61292b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129be826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828211151515612b8d57fe5b818303905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612be757600080fd5b612c38826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c8f82600154612b7f90919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008183019050828110151515612d6657fe5b80905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612dac57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612df957600080fd5b612e4a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7f90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612edd826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820907517632ce0054547a40099aa4bdb503d0c881b03fe19156dd5971be38d28840029

Deployed Bytecode Sourcemap

11237:1683:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7465:230:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6944:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6944:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11412:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11412:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;11412:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:226:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3062:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3062:91:0;;;;;;;;;;;;;;;;;;;;;;;6893:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6893:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10961:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10961:220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9388:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9388:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11562:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11562:72:0;;;;;;;;;;;;;;;;;;;;;;;11476:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11476:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9849:249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9849:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10602:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10602:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8792:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8792:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10166:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10166:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6324:506;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6324:506:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9595:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9595:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11839:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11839:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3916:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9129:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9129:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10420:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10420:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11518:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11518:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;11518:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12380:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12380:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11969:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11969:402:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10788:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10788:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5517:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5517:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5319:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5319:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7707:404;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7707:404:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8904:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8904:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8117:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8117:375:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:230;7533:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;7578:1;7558:22;;:8;:22;;;;7550:31;;;;;;;;7600:8;7592:5;;:16;;;;;;;;;;;;;;;;;;7646:8;7634:21;;;;;;;;;;;;7683:4;7676:11;;7465:230;;;:::o;6944:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;11412:57::-;;;;;;;;;;;;;;;;;;;;:::o;5087:226::-;5154:4;5203:6;5171:7;:19;5179:10;5171:19;;;;;;;;;;;;;;;:29;5191:8;5171:29;;;;;;;;;;;;;;;:38;;;;5256:8;5235:38;;5244:10;5235:38;;;5266:6;5235:38;;;;;;;;;;;;;;;;;;5301:4;5294:11;;5087:226;;;;:::o;3062:91::-;3106:7;3133:12;;3126:19;;3062:91;:::o;6893:38::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10961:220::-;11106:4;10359:6;;;;;;;;;;;10358:7;:30;;;;10378:10;10369:19;;:5;;;;;;;;;;;:19;;;10358:30;10350:39;;;;;;;;11065:4;8742:11;:17;8754:4;8742:17;;;;;;;;;;;;;;;;;;;;;;;;;8741:18;8733:27;;;;;;;;11085:10;8742:11;:17;8754:4;8742:17;;;;;;;;;;;;;;;;;;;;;;;;;8741:18;8733:27;;;;;;;;11138:35;11157:4;11163:2;11167:5;11138:18;:35::i;:::-;11131:42;;8771:1;10400;10961:220;;;;;:::o;9388:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;11562:72::-;11509:2;11616:17;;11610:2;:23;11603:3;:31;11562:72;:::o;11476:35::-;11509:2;11476:35;:::o;9849:249::-;9910:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;9935:10;:16;9946:4;9935:16;;;;;;;;;;;;;;;;;;;;;;;;;9927:25;;;;;;;;9992:5;9973:10;:16;9984:4;9973:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10034:4;10023:23;;;10040:5;10023:23;;;;;;;;;;;;;;;;;;;;;;10074:10;:16;10085:4;10074:16;;;;;;;;;;;;;;;;;;;;;;;;;10067:23;;9849:249;;;:::o;10602:180::-;10647:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;10672:6;;;;;;;;;;;10664:15;;;;;;;;10699:5;10690:6;;:14;;;;;;;;;;;;;;;;;;10730:20;10739:10;10730:20;;;;;;;;;;;;;;;;;;;;;;10768:6;;;;;;;;;;;10761:13;;10602:180;:::o;8792:106::-;8848:4;8873:11;:17;8885:4;8873:17;;;;;;;;;;;;;;;;;;;;;;;;;8872:18;8865:25;;8792:106;;;:::o;10166:26::-;;;;;;;;;;;;;:::o;6324:506::-;6435:4;6457:16;6476:7;:19;6484:10;6476:19;;;;;;;;;;;;;;;:29;6496:8;6476:29;;;;;;;;;;;;;;;;6457:48;;6539:8;6520:16;:27;6516:188;;;6596:1;6564:7;:19;6572:10;6564:19;;;;;;;;;;;;;;;:29;6584:8;6564:29;;;;;;;;;;;;;;;:33;;;;6516:188;;;6662:30;6675:16;6662:8;:12;;:30;;;;:::i;:::-;6630:7;:19;6638:10;6630:19;;;;;;;;;;;;;;;:29;6650:8;6630:29;;;;;;;;;;;;;;;:62;;;;6516:188;6750:8;6729:61;;6738:10;6729:61;;;6760:7;:19;6768:10;6760:19;;;;;;;;;;;;;;;:29;6780:8;6760:29;;;;;;;;;;;;;;;;6729:61;;;;;;;;;;;;;;;;;;6818:4;6811:11;;6324:506;;;;;:::o;9595:248::-;9656:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;9682:10;:16;9693:4;9682:16;;;;;;;;;;;;;;;;;;;;;;;;;9681:17;9673:26;;;;;;;;9739:4;9720:10;:16;9731:4;9720:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;9780:4;9769:22;;;9786:4;9769:22;;;;;;;;;;;;;;;;;;;;;;9819:10;:16;9830:4;9819:16;;;;;;;;;;;;;;;;;;;;;;;;;9812:23;;9595:248;;;:::o;11839:121::-;11884:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;11924:5;;;;;;;;;;;11911:19;;;3916:107;3972:7;3999:8;:16;4008:6;3999:16;;;;;;;;;;;;;;;;3992:23;;3916:107;;;:::o;9129:216::-;9190:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;9215:11;:17;9227:4;9215:17;;;;;;;;;;;;;;;;;;;;;;;;;9207:26;;;;;;;;9264:5;9244:11;:17;9256:4;9244:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9297:4;9285:17;;;;;;;;;;;;9320:11;:17;9332:4;9320:17;;;;;;;;;;;;;;;;;;;;;;;;;9313:24;;9129:216;;;:::o;10420:176::-;10463:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;10489:6;;;;;;;;;;;10488:7;10480:16;;;;;;;;10516:4;10507:6;;:13;;;;;;;;;;;;;;;;;;10546:18;10553:10;10546:18;;;;;;;;;;;;;;;;;;;;;;10582:6;;;;;;;;;;;10575:13;;10420:176;:::o;11518:37::-;;;;;;;;;;;;;;;;;;;;:::o;12380:171::-;12466:4;7413:7;:19;7421:10;7413:19;;;;;;;;;;;;;;;;;;;;;;;;;7405:28;;;;;;;;12453:3;9553:10;:15;9564:3;9553:15;;;;;;;;;;;;;;;;;;;;;;;;;9545:24;;;;;;;;12493:18;12499:3;12504:6;12493:5;:18::i;:::-;;12539:4;12532:11;;7444:1;12380:171;;;;:::o;11969:402::-;12026:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;12079:25;12096:7;12079:12;;:16;;:25;;;;:::i;:::-;11509:2;11616:17;;11610:2;:23;11603:3;:31;12061:43;;12053:52;;;;;;;;12141:25;12158:7;12141:12;;:16;;:25;;;;:::i;:::-;12126:12;:40;;;;12205:28;12225:7;12205:8;:15;12214:5;;;;;;;;;;;12205:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12187:8;:15;12196:5;;;;;;;;;;;12187:15;;;;;;;;;;;;;;;:46;;;;12254:5;;;;;;;;;;;12249:20;;;12261:7;12249:20;;;;;;;;;;;;;;;;;;12316:5;;;;;;;;;;;12295:36;;12312:1;12295:36;;;12323:7;12295:36;;;;;;;;;;;;;;;;;;12359:4;12352:11;;11969:402;;;:::o;10788:167::-;10889:4;10359:6;;;;;;;;;;;10358:7;:30;;;;10378:10;10369:19;;:5;;;;;;;;;;;:19;;;10358:30;10350:39;;;;;;;;10868:10;8742:11;:17;8754:4;8742:17;;;;;;;;;;;;;;;;;;;;;;;;;8741:18;8733:27;;;;;;;;10922:25;10937:2;10941:5;10922:14;:25::i;:::-;10915:32;;10400:1;10788:167;;;;:::o;5517:363::-;5641:4;5706:46;5740:11;5706:7;:19;5714:10;5706:19;;;;;;;;;;;;;;;:29;5726:8;5706:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;5663:7;:19;5671:10;5663:19;;;;;;;;;;;;;;;:29;5683:8;5663:29;;;;;;;;;;;;;;;:90;;;;5800:8;5779:61;;5788:10;5779:61;;;5810:7;:19;5818:10;5810:19;;;;;;;;;;;;;;;:29;5830:8;5810:29;;;;;;;;;;;;;;;;5779:61;;;;;;;;;;;;;;;;;;5868:4;5861:11;;5517:363;;;;:::o;5319:192::-;5446:7;5478;:15;5486:6;5478:15;;;;;;;;;;;;;;;:25;5494:8;5478:25;;;;;;;;;;;;;;;;5471:32;;5319:192;;;;:::o;7707:404::-;7779:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;6885:1;7804:14;;:3;:14;;;7796:23;;;;;;;;7856:1;7838:20;;:6;:20;;;;7830:29;;;;;;;;7908:1;7878:32;;:13;7892:3;7878:18;;;;;;;;;;;;;;;;;;;;;;:32;;;7870:41;;;;;;;;7949:5;7930:24;;:7;:15;7938:6;7930:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;7922:33;;;;;;;;7984:4;7966:7;:15;7974:6;7966:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;8020:6;7999:13;8013:3;7999:18;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8064:6;8052:19;;;;;;;;;;;;8099:4;8092:11;;7707:404;;;;:::o;8904:214::-;8963:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;8989:11;:17;9001:4;8989:17;;;;;;;;;;;;;;;;;;;;;;;;;8988:18;8980:27;;;;;;;;9038:4;9018:11;:17;9030:4;9018:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;9070:4;9058:17;;;;;;;;;;;;9093:11;:17;9105:4;9093:17;;;;;;;;;;;;;;;;;;;;;;;;;9086:24;;8904:214;;;:::o;8117:375::-;8192:4;7336:10;7327:19;;:5;;;;;;;;;;;:19;;;7319:28;;;;;;;;6885:1;8216:14;;:3;:14;;;8208:23;;;;;;;;8268:1;8250:20;;:6;:20;;;;8242:29;;;;;;;;8312:6;8290:28;;:13;8304:3;8290:18;;;;;;;;;;;;;;;;;;;;;;:28;;;8282:37;;;;;;;;8358:5;8340:7;:15;8348:6;8340:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;8403:1;8374:13;8388:3;8374:18;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8445:6;8431:21;;;;;;;;;;;;8480:4;8473:11;;8117:375;;;;:::o;4535:546::-;4652:4;4697:1;4682:17;;:3;:17;;;;4674:26;;;;;;;;4729:8;:15;4738:5;4729:15;;;;;;;;;;;;;;;;4719:6;:25;;4711:34;;;;;;;;4774:7;:14;4782:5;4774:14;;;;;;;;;;;;;;;:26;4789:10;4774:26;;;;;;;;;;;;;;;;4764:6;:36;;4756:45;;;;;;;;4830:27;4850:6;4830:8;:15;4839:5;4830:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;4812:8;:15;4821:5;4812:15;;;;;;;;;;;;;;;:45;;;;4884:25;4902:6;4884:8;:13;4893:3;4884:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;4868:8;:13;4877:3;4868:13;;;;;;;;;;;;;;;:41;;;;4949:38;4980:6;4949:7;:14;4957:5;4949:14;;;;;;;;;;;;;;;:26;4964:10;4949:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;4920:7;:14;4928:5;4920:14;;;;;;;;;;;;;;;:26;4935:10;4920:26;;;;;;;;;;;;;;;:67;;;;5029:3;5013:28;;5022:5;5013:28;;;5034:6;5013:28;;;;;;;;;;;;;;;;;;5069:4;5062:11;;4535:546;;;;;:::o;2385:123::-;2443:7;2475:1;2470;:6;;2463:14;;;;;;2499:1;2495;:5;2488:12;;2385:123;;;;:::o;12557:360::-;12619:4;12658:8;:14;12667:4;12658:14;;;;;;;;;;;;;;;;12648:6;:24;;12640:33;;;;;;;;12711:26;12730:6;12711:8;:14;12720:4;12711:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;12694:8;:14;12703:4;12694:14;;;;;;;;;;;;;;;:43;;;;12763:24;12780:6;12763:12;;:16;;:24;;;;:::i;:::-;12748:12;:39;;;;12814:4;12809:18;;;12820:6;12809:18;;;;;;;;;;;;;;;;;;12866:1;12843:34;;12852:4;12843:34;;;12870:6;12843:34;;;;;;;;;;;;;;;;;;12905:4;12898:11;;12557:360;;;;:::o;2581:141::-;2639:9;2669:1;2665;:5;2661:9;;2693:1;2688;:6;;2681:14;;;;;;2713:1;2706:8;;2581:141;;;;:::o;3324:373::-;3387:4;3427:1;3412:17;;:3;:17;;;;3404:26;;;;;;;;3459:8;:20;3468:10;3459:20;;;;;;;;;;;;;;;;3449:6;:30;;3441:39;;;;;;;;3514:32;3539:6;3514:8;:20;3523:10;3514:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3491:8;:20;3500:10;3491:20;;;;;;;;;;;;;;;:55;;;;3573:25;3591:6;3573:8;:13;3582:3;3573:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;3557:8;:13;3566:3;3557:13;;;;;;;;;;;;;;;:41;;;;3645:3;3624:33;;3633:10;3624:33;;;3650:6;3624:33;;;;;;;;;;;;;;;;;;3685:4;3678:11;;3324:373;;;;:::o

Swarm Source

bzzr://907517632ce0054547a40099aa4bdb503d0c881b03fe19156dd5971be38d2884
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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