ETH Price: $2,179.64 (-6.35%)

Contract

0x2CAae301BB207F0880EFd4eAa0eF6B6A666EF397
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer182051982023-09-24 10:55:35906 days ago1695552935IN
0x2CAae301...A666EF397
0 ETH0.00041928.03745301
Transfer134295732021-10-16 14:29:071614 days ago1634394547IN
0x2CAae301...A666EF397
0 ETH0.0043305576
Transfer134295692021-10-16 14:28:191614 days ago1634394499IN
0x2CAae301...A666EF397
0 ETH0.002803680
Set Lock List125323752021-05-29 23:59:241753 days ago1622332764IN
0x2CAae301...A666EF397
0 ETH0.0017554518.70187
Transfer123262592021-04-28 2:36:411785 days ago1619577401IN
0x2CAae301...A666EF397
0 ETH0.0017134769
Transfer123262102021-04-28 2:25:291785 days ago1619576729IN
0x2CAae301...A666EF397
0 ETH0.0021385851.00000145
Set Lock List123092022021-04-25 11:31:431788 days ago1619350303IN
0x2CAae301...A666EF397
0 ETH0.0034385139.00000134
Transfer123049092021-04-24 19:46:551788 days ago1619293615IN
0x2CAae301...A666EF397
0 ETH0.0014556550
Set Lock List121699432021-04-04 0:42:441809 days ago1617496964IN
0x2CAae301...A666EF397
0 ETH0.00428346103
Transfer121508552021-04-01 2:13:091812 days ago1617243189IN
0x2CAae301...A666EF397
0 ETH0.00598306237
Transfer121501912021-03-31 23:46:491812 days ago1617234409IN
0x2CAae301...A666EF397
0 ETH0.00901488224
Transfer121480862021-03-31 16:06:101813 days ago1617206770IN
0x2CAae301...A666EF397
0 ETH0.01563433283.00000134
Transfer121459192021-03-31 7:58:451813 days ago1617177525IN
0x2CAae301...A666EF397
0 ETH0.00416542165
Transfer121456962021-03-31 7:11:381813 days ago1617174698IN
0x2CAae301...A666EF397
0 ETH0.00676116168.00000145
Transfer121433112021-03-30 22:13:251813 days ago1617142405IN
0x2CAae301...A666EF397
0 ETH0.0038138151
Transfer121432482021-03-30 22:00:451813 days ago1617141645IN
0x2CAae301...A666EF397
0 ETH0.00762546138
Transfer121396742021-03-30 8:52:501814 days ago1617094370IN
0x2CAae301...A666EF397
0 ETH0.00729234132
Set Lock List121379842021-03-30 2:43:071814 days ago1617072187IN
0x2CAae301...A666EF397
0 ETH0.00949332120
Transfer121343122021-03-29 13:03:311815 days ago1617023011IN
0x2CAae301...A666EF397
0 ETH0.00454626180
Transfer121340972021-03-29 12:18:221815 days ago1617020302IN
0x2CAae301...A666EF397
0 ETH0.00734918133
Transfer121334562021-03-29 9:58:121815 days ago1617011892IN
0x2CAae301...A666EF397
0 ETH0.00315012125
Transfer121267712021-03-28 9:13:141816 days ago1616922794IN
0x2CAae301...A666EF397
0 ETH0.0038255595
Transfer121267192021-03-28 9:03:251816 days ago1616922205IN
0x2CAae301...A666EF397
0 ETH0.0047531386
Transfer List120989742021-03-24 2:44:191820 days ago1616553859IN
0x2CAae301...A666EF397
0 ETH0.01103673139
Set Lock List120989562021-03-24 2:40:181820 days ago1616553618IN
0x2CAae301...A666EF397
0 ETH0.00956186140
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HydrogenEnergy

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-03-13
*/

pragma solidity ^0.4.25;

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

contract DetailedERC20 is ERC20 {
    string public name;
    string public symbol;
    uint8 public decimals;
    
    constructor(string _name, string _symbol, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    event Approval(address indexed owner, address indexed spender, uint256 value);
    mapping(address => uint256)  balances;
    uint256  _totalSupply;
    
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    
    
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0) && _value != 0 &&_value <= balances[msg.sender],"Please check the amount of transmission error and the amount you send.");
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        
        return true;
    }
    
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }
}

contract ERC20Token is BasicToken, ERC20 {
    using SafeMath for uint256;
    event Approval(address indexed owner, address indexed spender, uint256 value);
    mapping (address => mapping (address => uint256))  allowed;
    mapping (address => uint256) public freezeOf;

    function approve(address _spender, uint256 _value) public returns (bool) {
        
        require(_value == 0 || allowed[msg.sender][_spender] == 0,"Please check the amount you want to approve.");
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    function increaseApproval(address _spender, uint256 _addedValue) public returns (bool success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    
    function decreaseApproval(address _spender, uint256 _subtractedValue) public returns (bool success) {
        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 {
    
    address public owner;
    mapping (address => bool) public admin;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() public {
        owner = msg.sender;
    }
    
    modifier onlyOwner() {
        require(msg.sender == owner,"I am not the owner of the wallet.");
        _;
    }
    
    modifier onlyOwnerOrAdmin() {
        require(msg.sender == owner || admin[msg.sender] == true,"It is not the owner or manager wallet address.");
        _;
    }
    
    function transferOwnership(address newOwner) onlyOwner public {
        require(newOwner != address(0) && newOwner != owner && admin[newOwner] == true,"It must be the existing manager wallet, not the existing owner's wallet.");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
    
    function setAdmin(address newAdmin) onlyOwner public {
        require(admin[newAdmin] != true && owner != newAdmin,"It is not an existing administrator wallet, and it must not be the owner wallet of the token.");
        admin[newAdmin] = true;
    }
    
    function unsetAdmin(address Admin) onlyOwner public {
        require(admin[Admin] != false && owner != Admin,"This is an existing admin wallet, it must not be a token holder wallet.");
        admin[Admin] = false;
    }

}

contract Pausable is Ownable {
    event Pause();
    event Unpause();
    bool public paused = false;
    
    modifier whenNotPaused() {
        require(!paused,"There is a pause.");
        _;
    }
    
    modifier whenPaused() {
        require(paused,"It is not paused.");
        _;
    }
    
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }
    
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }

}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {return 0; }    
        uint256 c = a * b;
        require(c / a == b,"An error occurred in the calculation process");
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b !=0,"The number you want to divide must be non-zero.");
        uint256 c = a / b;
        require(c * b == a,"An error occurred in the calculation process");
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a,"There are more to deduct.");
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a,"The number did not increase.");
        return c;
    }
}

contract BurnableToken is BasicToken, Ownable {
    
    event Burn(address indexed burner, uint256 amount);

    function burn(uint256 _value) onlyOwner public {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Burn(msg.sender, _value);
        emit Transfer(msg.sender, address(0), _value);
    }

  
}
contract FreezeToken is BasicToken, Ownable {
    
    event Freezen(address indexed freezer, uint256 amount);
    event UnFreezen(address indexed freezer, uint256 amount);
    mapping (address => uint256) freezeOf;
    
    function freeze(uint256 _value) onlyOwner public {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        freezeOf[msg.sender] = freezeOf[msg.sender].add(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Freezen(msg.sender, _value);
    }
    
    function unfreeze(uint256 _value) onlyOwner public {
        require(freezeOf[msg.sender] >= _value,"The number to be processed is more than the total amount and the number currently frozen.");
        balances[msg.sender] = balances[msg.sender].add(_value);
        freezeOf[msg.sender] = freezeOf[msg.sender].sub(_value);
        _totalSupply = _totalSupply.add(_value);
        emit Freezen(msg.sender, _value);
    }
}


contract HydrogenEnergy is BurnableToken,FreezeToken, DetailedERC20, ERC20Token,Pausable{
    using SafeMath for uint256;
    
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event LockerChanged(address indexed owner, uint256 amount);
    mapping(address => uint) locker;
    
    string  private _symbol = "HE";
    string  private _name = "HydrogenEnergy";
    uint8  private _decimals = 18;
    uint256 private TOTAL_SUPPLY = 20*(10**8)*(10**uint256(_decimals));
    
    constructor() DetailedERC20(_name, _symbol, _decimals) public {
        _totalSupply = TOTAL_SUPPLY;
        balances[owner] = _totalSupply;
        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }
    
    function transfer(address _to, uint256 _value)  public whenNotPaused returns (bool){
        require(balances[msg.sender].sub(_value) >= locker[msg.sender],"Attempting to send more than the locked number");
        return super.transfer(_to, _value);
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool){
    
        require(_to > address(0) && _from > address(0),"Please check the address" );
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value,"Please check the amount of transmission error and the amount you send.");
        require(balances[_from].sub(_value) >= locker[_from],"Attempting to send more than the locked number" );
        
        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 lockOf(address _address) public view returns (uint256 _locker) {
        return locker[_address];
    }
    
    function setLock(address _address, uint256 _value) public onlyOwnerOrAdmin {
        require(_value <= _totalSupply &&_address != address(0),"It is the first wallet or attempted to lock an amount greater than the total holding.");
        locker[_address] = _value;
        emit LockerChanged(_address, _value);
    }
    function setLockList(address[] _recipients, uint256[] _balances) public onlyOwnerOrAdmin{
        require(_recipients.length == _balances.length,"The number of wallet arrangements and the number of amounts are different.");
        
        for (uint i=0; i < _recipients.length; i++) {
            require(_recipients[i] != address(0),'Please check the address');
            
            locker[_recipients[i]] = _balances[i];
            emit LockerChanged(_recipients[i], _balances[i]);
        }
    }
    function transferList(address[] _recipients, uint256[] _balances) public onlyOwnerOrAdmin{
        require(_recipients.length == _balances.length,"The number of wallet arrangements and the number of amounts are different.");
        
        for (uint i=0; i < _recipients.length; i++) {
            balances[msg.sender] = balances[msg.sender].sub(_balances[i]);
            balances[_recipients[i]] = balances[_recipients[i]].add(_balances[i]);
            emit Transfer(msg.sender,_recipients[i],_balances[i]);
        }
    }
    

    function() public payable {
        revert();
    }
}

Contract Security Audit

Contract ABI

API
[{"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":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_balances","type":"uint256[]"}],"name":"setLockList","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"Admin","type":"address"}],"name":"unsetAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"lockOf","outputs":[{"name":"_locker","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admin","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_balances","type":"uint256[]"}],"name":"transferList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"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":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"uint256"}],"name":"setLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"freezeOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LockerChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"freezer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Freezen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"freezer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"UnFreezen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"}]

60806040526000600a60006101000a81548160ff0219169083151502179055506040805190810160405280600281526020017f4845000000000000000000000000000000000000000000000000000000000000815250600c90805190602001906200006c929190620003c1565b506040805190810160405280600e81526020017f487964726f67656e456e65726779000000000000000000000000000000000000815250600d9080519060200190620000ba929190620003c1565b506012600e60006101000a81548160ff021916908360ff160217905550600e60009054906101000a900460ff1660ff16600a0a637735940002600f553480156200010357600080fd5b50600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200019e5780601f1062000172576101008083540402835291602001916200019e565b820191906000526020600020905b8154815290600101906020018083116200018057829003601f168201915b5050505050600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200023d5780601f1062000211576101008083540402835291602001916200023d565b820191906000526020600020905b8154815290600101906020018083116200021f57829003601f168201915b5050505050600e60009054906101000a900460ff1633600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260059080519060200190620002ab929190620003c1565b508160069080519060200190620002c4929190620003c1565b5080600760006101000a81548160ff021916908360ff160217905550505050600f54600181905550600154600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040518082815260200191505060405180910390a362000470565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200040457805160ff191683800117855562000435565b8280016001018555821562000435579182015b828111156200043457825182559160200191906001019062000417565b5b50905062000444919062000448565b5090565b6200046d91905b80821115620004695760008160009055506001016200044f565b5090565b90565b61400980620004806000396000f30060806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f457806318160ddd146102595780631d5397641461028457806323b872dd1461032d578063313ce567146103b25780633f4ba83a146103e357806342966c68146103fa5780634d253b50146104275780635a46d3b51461046a5780635c975abb146104c157806363a846f8146104f0578063661884631461054b5780636623fc46146105b0578063704b6c02146105dd57806370a08231146106205780638456cb5914610677578063859bc2f31461068e5780638da5cb5b1461073757806395d89b411461078e578063a9059cbb1461081e578063b0fc29e614610883578063cd4217c1146108d0578063d73dd62314610927578063d7a78db81461098c578063dd62ed3e146109b9578063f2fde38b14610a30575b600080fd5b34801561017057600080fd5b50610179610a73565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b957808201518184015260208101905061019e565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020057600080fd5b5061023f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b11565b604051808215151515815260200191505060405180910390f35b34801561026557600080fd5b5061026e610d27565b6040518082815260200191505060405180910390f35b34801561029057600080fd5b5061032b6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d31565b005b34801561033957600080fd5b50610398600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611108565b604051808215151515815260200191505060405180910390f35b3480156103be57600080fd5b506103c76117c7565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103ef57600080fd5b506103f86117da565b005b34801561040657600080fd5b5061042560048036038101908080359060200190929190505050611992565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be2565b005b34801561047657600080fd5b506104ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e97565b6040518082815260200191505060405180910390f35b3480156104cd57600080fd5b506104d6611ee0565b604051808215151515815260200191505060405180910390f35b3480156104fc57600080fd5b50610531600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef3565b604051808215151515815260200191505060405180910390f35b34801561055757600080fd5b50610596600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f13565b604051808215151515815260200191505060405180910390f35b3480156105bc57600080fd5b506105db600480360381019080803590602001909291905050506121a5565b005b3480156105e957600080fd5b5061061e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612527565b005b34801561062c57600080fd5b50610661600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127dc565b6040518082815260200191505060405180910390f35b34801561068357600080fd5b5061068c612824565b005b34801561069a57600080fd5b5061073560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506129dd565b005b34801561074357600080fd5b5061074c612e1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079a57600080fd5b506107a3612e45565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e35780820151818401526020810190506107c8565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082a57600080fd5b50610869600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ee3565b604051808215151515815260200191505060405180910390f35b34801561088f57600080fd5b506108ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130a9565b005b3480156108dc57600080fd5b50610911600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613384565b6040518082815260200191505060405180910390f35b34801561093357600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061339c565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109b760048036038101908080359060200190929190505050613598565b005b3480156109c557600080fd5b50610a1a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613817565b6040518082815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061389e565b005b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b095780601f10610ade57610100808354040283529160200191610b09565b820191906000526020600020905b815481529060010190602001808311610aec57829003601f168201915b505050505081565b600080821480610b9d57506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f506c6561736520636865636b2074686520616d6f756e7420796f752077616e7481526020017f20746f20617070726f76652e000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ddf575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515610e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b81518351141515610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001807f546865206e756d626572206f662077616c6c657420617272616e67656d656e7481526020017f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652081526020017f646966666572656e742e0000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600090505b825181101561110357600073ffffffffffffffffffffffffffffffffffffffff168382815181101515610f7257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506c6561736520636865636b207468652061646472657373000000000000000081525060200191505060405180910390fd5b818181518110151561101657fe5b90602001906020020151600b6000858481518110151561103257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110151561108857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd383838151811015156110d757fe5b906020019060200201516040518082815260200191505060405180910390a28080600101915050610f43565b505050565b6000600a60009054906101000a900460ff1615151561118f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161180156111f75750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16115b151561126b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506c6561736520636865636b207468652061646472657373000000000000000081525060200191505060405180910390fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611335575081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001807f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7381526020017f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7581526020017f2073656e642e000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b10151515611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686581526020017f206c6f636b6564206e756d62657200000000000000000000000000000000000081525060400191505060405180910390fd5b611573826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611606826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116d782600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600760009054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff161515611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4974206973206e6f74207061757365642e00000000000000000000000000000081525060200191505060405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611ace816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2581600154613bf090919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ccd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611d7c57508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515611e3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001807f5468697320697320616e206578697374696e672061646d696e2077616c6c657481526020017f2c206974206d757374206e6f74206265206120746f6b656e20686f6c6465722081526020017f77616c6c65742e0000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515612025576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120b9565b6120388382613bf090919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260598152602001807f546865206e756d62657220746f2062652070726f636573736564206973206d6f81526020017f7265207468616e2074686520746f74616c20616d6f756e7420616e642074686581526020017f206e756d6265722063757272656e746c792066726f7a656e2e0000000000000081525060600191505060405180910390fd5b6123e4816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124d081600154613c7590919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcac76f4972d9ff5ad35f15943c99ef30a49b3a0203cc98c4ef401ab7b8d1a509826040518082815260200191505060405180910390a250565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126c157508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d8152602001807f4974206973206e6f7420616e206578697374696e672061646d696e697374726181526020017f746f722077616c6c65742c20616e64206974206d757374206e6f74206265207481526020017f6865206f776e65722077616c6c6574206f662074686520746f6b656e2e00000081525060600191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561290f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff16151515612994576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612a8b575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b81518351141515612bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001807f546865206e756d626572206f662077616c6c657420617272616e67656d656e7481526020017f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652081526020017f646966666572656e742e0000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600090505b8251811015612e1a57612c608282815181101515612c0957fe5b906020019060200201516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d218282815181101515612cb357fe5b906020019060200201516000808685815181101515612cce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808584815181101515612d3257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508281815181101515612d8857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484815181101515612dee57fe5b906020019060200201516040518082815260200191505060405180910390a38080600101915050612bef565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612edb5780601f10612eb057610100808354040283529160200191612edb565b820191906000526020600020905b815481529060010190602001808311612ebe57829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515612f6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffb836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b10151515613097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686581526020017f206c6f636b6564206e756d62657200000000000000000000000000000000000081525060400191505060405180910390fd5b6130a18383613cff565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613155575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15156131ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b600154811115801561322e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260558152602001807f4974206973207468652066697273742077616c6c6574206f7220617474656d7081526020017f74656420746f206c6f636b20616e20616d6f756e74206772656174657220746881526020017f616e2074686520746f74616c20686f6c64696e672e000000000000000000000081525060600191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a25050565b60096020528060005260406000206000915090505481565b600061342d82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136d4816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061376881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c081600154613bf090919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcac76f4972d9ff5ad35f15943c99ef30a49b3a0203cc98c4ef401ab7b8d1a509826040518082815260200191505060405180910390a250565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613a145750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613a70575060011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515613b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001807f4974206d75737420626520746865206578697374696e67206d616e616765722081526020017f77616c6c65742c206e6f7420746865206578697374696e67206f776e6572277381526020017f2077616c6c65742e00000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211151515613c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546865726520617265206d6f726520746f206465647563742e0000000000000081525060200191505060405180910390fd5b818303905092915050565b6000808284019050838110151515613cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f546865206e756d62657220646964206e6f7420696e6372656173652e0000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613d3e575060008214155b8015613d8857506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211155b1515613e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001807f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7381526020017f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7581526020017f2073656e642e000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b613e99826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2c826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820e7a8954f3823336975bf750fc2bc452191c67508dbfcf86269e207463a243dd90029

Deployed Bytecode

0x60806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f457806318160ddd146102595780631d5397641461028457806323b872dd1461032d578063313ce567146103b25780633f4ba83a146103e357806342966c68146103fa5780634d253b50146104275780635a46d3b51461046a5780635c975abb146104c157806363a846f8146104f0578063661884631461054b5780636623fc46146105b0578063704b6c02146105dd57806370a08231146106205780638456cb5914610677578063859bc2f31461068e5780638da5cb5b1461073757806395d89b411461078e578063a9059cbb1461081e578063b0fc29e614610883578063cd4217c1146108d0578063d73dd62314610927578063d7a78db81461098c578063dd62ed3e146109b9578063f2fde38b14610a30575b600080fd5b34801561017057600080fd5b50610179610a73565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b957808201518184015260208101905061019e565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020057600080fd5b5061023f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b11565b604051808215151515815260200191505060405180910390f35b34801561026557600080fd5b5061026e610d27565b6040518082815260200191505060405180910390f35b34801561029057600080fd5b5061032b6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d31565b005b34801561033957600080fd5b50610398600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611108565b604051808215151515815260200191505060405180910390f35b3480156103be57600080fd5b506103c76117c7565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103ef57600080fd5b506103f86117da565b005b34801561040657600080fd5b5061042560048036038101908080359060200190929190505050611992565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be2565b005b34801561047657600080fd5b506104ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e97565b6040518082815260200191505060405180910390f35b3480156104cd57600080fd5b506104d6611ee0565b604051808215151515815260200191505060405180910390f35b3480156104fc57600080fd5b50610531600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef3565b604051808215151515815260200191505060405180910390f35b34801561055757600080fd5b50610596600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f13565b604051808215151515815260200191505060405180910390f35b3480156105bc57600080fd5b506105db600480360381019080803590602001909291905050506121a5565b005b3480156105e957600080fd5b5061061e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612527565b005b34801561062c57600080fd5b50610661600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127dc565b6040518082815260200191505060405180910390f35b34801561068357600080fd5b5061068c612824565b005b34801561069a57600080fd5b5061073560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506129dd565b005b34801561074357600080fd5b5061074c612e1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079a57600080fd5b506107a3612e45565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e35780820151818401526020810190506107c8565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082a57600080fd5b50610869600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ee3565b604051808215151515815260200191505060405180910390f35b34801561088f57600080fd5b506108ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130a9565b005b3480156108dc57600080fd5b50610911600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613384565b6040518082815260200191505060405180910390f35b34801561093357600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061339c565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109b760048036038101908080359060200190929190505050613598565b005b3480156109c557600080fd5b50610a1a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613817565b6040518082815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061389e565b005b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b095780601f10610ade57610100808354040283529160200191610b09565b820191906000526020600020905b815481529060010190602001808311610aec57829003601f168201915b505050505081565b600080821480610b9d57506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f506c6561736520636865636b2074686520616d6f756e7420796f752077616e7481526020017f20746f20617070726f76652e000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ddf575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515610e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b81518351141515610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001807f546865206e756d626572206f662077616c6c657420617272616e67656d656e7481526020017f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652081526020017f646966666572656e742e0000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600090505b825181101561110357600073ffffffffffffffffffffffffffffffffffffffff168382815181101515610f7257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506c6561736520636865636b207468652061646472657373000000000000000081525060200191505060405180910390fd5b818181518110151561101657fe5b90602001906020020151600b6000858481518110151561103257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110151561108857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd383838151811015156110d757fe5b906020019060200201516040518082815260200191505060405180910390a28080600101915050610f43565b505050565b6000600a60009054906101000a900460ff1615151561118f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161180156111f75750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16115b151561126b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506c6561736520636865636b207468652061646472657373000000000000000081525060200191505060405180910390fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611335575081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001807f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7381526020017f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7581526020017f2073656e642e000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b10151515611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686581526020017f206c6f636b6564206e756d62657200000000000000000000000000000000000081525060400191505060405180910390fd5b611573826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611606826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116d782600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600760009054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff161515611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4974206973206e6f74207061757365642e00000000000000000000000000000081525060200191505060405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611ace816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2581600154613bf090919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ccd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611d7c57508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515611e3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001807f5468697320697320616e206578697374696e672061646d696e2077616c6c657481526020017f2c206974206d757374206e6f74206265206120746f6b656e20686f6c6465722081526020017f77616c6c65742e0000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515612025576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120b9565b6120388382613bf090919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260598152602001807f546865206e756d62657220746f2062652070726f636573736564206973206d6f81526020017f7265207468616e2074686520746f74616c20616d6f756e7420616e642074686581526020017f206e756d6265722063757272656e746c792066726f7a656e2e0000000000000081525060600191505060405180910390fd5b6123e4816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124d081600154613c7590919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcac76f4972d9ff5ad35f15943c99ef30a49b3a0203cc98c4ef401ab7b8d1a509826040518082815260200191505060405180910390a250565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156126c157508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d8152602001807f4974206973206e6f7420616e206578697374696e672061646d696e697374726181526020017f746f722077616c6c65742c20616e64206974206d757374206e6f74206265207481526020017f6865206f776e65722077616c6c6574206f662074686520746f6b656e2e00000081525060600191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561290f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff16151515612994576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612a8b575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b81518351141515612bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001807f546865206e756d626572206f662077616c6c657420617272616e67656d656e7481526020017f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652081526020017f646966666572656e742e0000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600090505b8251811015612e1a57612c608282815181101515612c0957fe5b906020019060200201516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d218282815181101515612cb357fe5b906020019060200201516000808685815181101515612cce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808584815181101515612d3257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508281815181101515612d8857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484815181101515612dee57fe5b906020019060200201516040518082815260200191505060405180910390a38080600101915050612bef565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612edb5780601f10612eb057610100808354040283529160200191612edb565b820191906000526020600020905b815481529060010190602001808311612ebe57829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515612f6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546865726520697320612070617573652e00000000000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffb836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b10151515613097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686581526020017f206c6f636b6564206e756d62657200000000000000000000000000000000000081525060400191505060405180910390fd5b6130a18383613cff565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613155575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15156131ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207781526020017f616c6c657420616464726573732e00000000000000000000000000000000000081525060400191505060405180910390fd5b600154811115801561322e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260558152602001807f4974206973207468652066697273742077616c6c6574206f7220617474656d7081526020017f74656420746f206c6f636b20616e20616d6f756e74206772656174657220746881526020017f616e2074686520746f74616c20686f6c64696e672e000000000000000000000081525060600191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a25050565b60096020528060005260406000206000915090505481565b600061342d82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136d4816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061376881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c081600154613bf090919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fcac76f4972d9ff5ad35f15943c99ef30a49b3a0203cc98c4ef401ab7b8d1a509826040518082815260200191505060405180910390a250565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4920616d206e6f7420746865206f776e6572206f66207468652077616c6c657481526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613a145750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613a70575060011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515613b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001807f4974206d75737420626520746865206578697374696e67206d616e616765722081526020017f77616c6c65742c206e6f7420746865206578697374696e67206f776e6572277381526020017f2077616c6c65742e00000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211151515613c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546865726520617265206d6f726520746f206465647563742e0000000000000081525060200191505060405180910390fd5b818303905092915050565b6000808284019050838110151515613cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f546865206e756d62657220646964206e6f7420696e6372656173652e0000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613d3e575060008214155b8015613d8857506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211155b1515613e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001807f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7381526020017f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7581526020017f2073656e642e000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b613e99826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bf090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2c826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820e7a8954f3823336975bf750fc2bc452191c67508dbfcf86269e207463a243dd90029

Deployed Bytecode Sourcemap

7685:3379:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11045:8;;;752:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;752:18: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;752:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2196:332;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2196:332:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1236:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1236:91:0;;;;;;;;;;;;;;;;;;;;;;;9937:515;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9937:515:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8707:765;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8707:765:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;804:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5306:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5306:105:0;;;;;;6447:267;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:267:0;;;;;;;;;;;;;;;;;;;;;;;;;;4637:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4637:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9484:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9484:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4948:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4948:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3528:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2999:465;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2999:465:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7250:426;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7250:426:0;;;;;;;;;;;;;;;;;;;;;;;;;;4371:254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4371:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1791:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5191:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5191:103:0;;;;;;10458:536;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10458:536:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3501:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3501:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;777;;8:9:-1;5:2;;;30:1;27;20:12;5:2;777:20: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;777:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8436:259;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8436:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9610:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9610:321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2143:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2696:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2696:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:282;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6956:282:0;;;;;;;;;;;;;;;;;;;;;;;;;;2540:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2540:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4044:315;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4044:315:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;752:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2196:332::-;2263:4;2308:1;2298:6;:11;:49;;;;2346:1;2313:7;:19;2321:10;2313:19;;;;;;;;;;;;;;;:29;2333:8;2313:29;;;;;;;;;;;;;;;;:34;2298:49;2290:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:6;2406:7;:19;2414:10;2406:19;;;;;;;;;;;;;;;:29;2426:8;2406:29;;;;;;;;;;;;;;;:38;;;;2481:8;2460:38;;2469:10;2460:38;;;2491:6;2460:38;;;;;;;;;;;;;;;;;;2516:4;2509:11;;2196:332;;;;:::o;1236:91::-;1280:7;1307:12;;1300:19;;1236:91;:::o;9937:515::-;10186:6;3928:5;;;;;;;;;;;3914:19;;:10;:19;;;:48;;;;3958:4;3937:25;;:5;:17;3943:10;3937:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3914:48;3906:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10066:9;:16;10044:11;:18;:38;10036:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10193:1;10186:8;;10181:264;10200:11;:18;10196:1;:22;10181:264;;;10274:1;10248:28;;:11;10260:1;10248:14;;;;;;;;;;;;;;;;;;:28;;;;10240:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10358:9;10368:1;10358:12;;;;;;;;;;;;;;;;;;10333:6;:22;10340:11;10352:1;10340:14;;;;;;;;;;;;;;;;;;10333:22;;;;;;;;;;;;;;;:37;;;;10404:11;10416:1;10404:14;;;;;;;;;;;;;;;;;;10390:43;;;10420:9;10430:1;10420:12;;;;;;;;;;;;;;;;;;10390:43;;;;;;;;;;;;;;;;;;10220:3;;;;;;;10181:264;;;9937:515;;;:::o;8707:765::-;8803:4;5032:6;;;;;;;;;;;5031:7;5023:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8847:1;8833:16;;:3;:16;;;:38;;;;;8869:1;8853:18;;:5;:18;;;8833:38;8825:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8938:6;8919:8;:15;8928:5;8919:15;;;;;;;;;;;;;;;;:25;;:65;;;;;8978:6;8948:7;:14;8956:5;8948:14;;;;;;;;;;;;;;;:26;8963:10;8948:26;;;;;;;;;;;;;;;;:36;;8919:65;8911:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9108:6;:13;9115:5;9108:13;;;;;;;;;;;;;;;;9077:27;9097:6;9077:8;:15;9086:5;9077:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;:44;;9069:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9211:27;9231:6;9211:8;:15;9220:5;9211:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9193:8;:15;9202:5;9193:15;;;;;;;;;;;;;;;:45;;;;9265:25;9283:6;9265:8;:13;9274:3;9265:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9249:8;:13;9258:3;9249:13;;;;;;;;;;;;;;;:41;;;;9330:38;9361:6;9330:7;:14;9338:5;9330:14;;;;;;;;;;;;;;;:26;9345:10;9330:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;9301:7;:14;9309:5;9301:14;;;;;;;;;;;;;;;:26;9316:10;9301:26;;;;;;;;;;;;;;;:67;;;;9410:3;9394:28;;9403:5;9394:28;;;9415:6;9394:28;;;;;;;;;;;;;;;;;;9450:4;9443:11;;8707:765;;;;;:::o;804:21::-;;;;;;;;;;;;;:::o;5306:105::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5132:6;;;;;;;;;;;5124:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5373:5;5364:6;;:14;;;;;;;;;;;;;;;;;;5394:9;;;;;;;;;;5306:105::o;6447:267::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6528:32;6553:6;6528:8;:20;6537:10;6528:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6505:8;:20;6514:10;6505:20;;;;;;;;;;;;;;;:55;;;;6586:24;6603:6;6586:12;;:16;;:24;;;;:::i;:::-;6571:12;:39;;;;6631:10;6626:24;;;6643:6;6626:24;;;;;;;;;;;;;;;;;;6695:1;6666:40;;6675:10;6666:40;;;6699:6;6666:40;;;;;;;;;;;;;;;;;;6447:267;:::o;4637:224::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4724:5;4708:21;;:5;:12;4714:5;4708:12;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;:39;;;;;4742:5;4733:14;;:5;;;;;;;;;;;:14;;;;4708:39;4700:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4848:5;4833;:12;4839:5;4833:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4637:224;:::o;9484:114::-;9539:15;9574:6;:16;9581:8;9574:16;;;;;;;;;;;;;;;;9567:23;;9484:114;;;:::o;4948:26::-;;;;;;;;;;;;;:::o;3528:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;2999:465::-;3085:12;3110:16;3129:7;:19;3137:10;3129:19;;;;;;;;;;;;;;;:29;3149:8;3129:29;;;;;;;;;;;;;;;;3110:48;;3193:8;3173:16;:28;;3169:189;;;3250:1;3218:7;:19;3226:10;3218:19;;;;;;;;;;;;;;;:29;3238:8;3218:29;;;;;;;;;;;;;;;:33;;;;3169:189;;;3316:30;3329:16;3316:8;:12;;:30;;;;:::i;:::-;3284:7;:19;3292:10;3284:19;;;;;;;;;;;;;;;:29;3304:8;3284:29;;;;;;;;;;;;;;;:62;;;;3169:189;3394:8;3373:61;;3382:10;3373:61;;;3404:7;:19;3412:10;3404:19;;;;;;;;;;;;;;;:29;3424:8;3404:29;;;;;;;;;;;;;;;;3373:61;;;;;;;;;;;;;;;;;;3452:4;3445:11;;2999:465;;;;;:::o;7250:426::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7344:6;7320:8;:20;7329:10;7320:20;;;;;;;;;;;;;;;;:30;;7312:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7477:32;7502:6;7477:8;:20;7486:10;7477:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7454:8;:20;7463:10;7454:20;;;;;;;;;;;;;;;:55;;;;7543:32;7568:6;7543:8;:20;7552:10;7543:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7520:8;:20;7529:10;7520:20;;;;;;;;;;;;;;;:55;;;;7601:24;7618:6;7601:12;;:16;;:24;;;;:::i;:::-;7586:12;:39;;;;7649:10;7641:27;;;7661:6;7641:27;;;;;;;;;;;;;;;;;;7250:426;:::o;4371:254::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4462:4;4443:23;;:5;:15;4449:8;4443:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:44;;;;;4479:8;4470:17;;:5;;;;;;;;;;;:17;;;;4443:44;4435:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:4;4595:5;:15;4601:8;4595:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4371:254;:::o;1791:115::-;1847:15;1882:8;:16;1891:6;1882:16;;;;;;;;;;;;;;;;1875:23;;1791:115;;;:::o;5191:103::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5032:6;;;;;;;;;;;5031:7;5023:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5259:4;5250:6;;:13;;;;;;;;;;;;;;;;;;5279:7;;;;;;;;;;5191:103::o;10458:536::-;10708:6;3928:5;;;;;;;;;;;3914:19;;:10;:19;;;:48;;;;3958:4;3937:25;;:5;:17;3943:10;3937:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3914:48;3906:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10588:9;:16;10566:11;:18;:38;10558:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10715:1;10708:8;;10703:284;10722:11;:18;10718:1;:22;10703:284;;;10785:38;10810:9;10820:1;10810:12;;;;;;;;;;;;;;;;;;10785:8;:20;10794:10;10785:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;10762:8;:20;10771:10;10762:20;;;;;;;;;;;;;;;:61;;;;10865:42;10894:9;10904:1;10894:12;;;;;;;;;;;;;;;;;;10865:8;:24;10874:11;10886:1;10874:14;;;;;;;;;;;;;;;;;;10865:24;;;;;;;;;;;;;;;;:28;;:42;;;;:::i;:::-;10838:8;:24;10847:11;10859:1;10847:14;;;;;;;;;;;;;;;;;;10838:24;;;;;;;;;;;;;;;:69;;;;10947:11;10959:1;10947:14;;;;;;;;;;;;;;;;;;10927:48;;10936:10;10927:48;;;10962:9;10972:1;10962:12;;;;;;;;;;;;;;;;;;10927:48;;;;;;;;;;;;;;;;;;10742:3;;;;;;;10703:284;;;10458:536;;;:::o;3501:20::-;;;;;;;;;;;;;:::o;777:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8436:259::-;8514:4;5032:6;;;;;;;;;;;5031:7;5023:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8574:6;:18;8581:10;8574:18;;;;;;;;;;;;;;;;8538:32;8563:6;8538:8;:20;8547:10;8538:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:54;;8530:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8660:27;8675:3;8680:6;8660:14;:27::i;:::-;8653:34;;8436:259;;;;:::o;9610:321::-;3928:5;;;;;;;;;;;3914:19;;:10;:19;;;:48;;;;3958:4;3937:25;;:5;:17;3943:10;3937:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3914:48;3906:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9714:12;;9704:6;:22;;:47;;;;;9749:1;9729:22;;:8;:22;;;;9704:47;9696:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9870:6;9851;:16;9858:8;9851:16;;;;;;;;;;;;;;;:25;;;;9906:8;9892:31;;;9916:6;9892:31;;;;;;;;;;;;;;;;;;9610:321;;:::o;2143:44::-;;;;;;;;;;;;;;;;;:::o;2696:291::-;2777:12;2834:46;2868:11;2834:7;:19;2842:10;2834:19;;;;;;;;;;;;;;;:29;2854:8;2834:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;2802:7;:19;2810:10;2802:19;;;;;;;;;;;;;;;:29;2822:8;2802:29;;;;;;;;;;;;;;;:78;;;;2917:8;2896:61;;2905:10;2896:61;;;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;:29;2947:8;2927:29;;;;;;;;;;;;;;;;2896:61;;;;;;;;;;;;;;;;;;2975:4;2968:11;;2696:291;;;;:::o;6956:282::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7039:32;7064:6;7039:8;:20;7048:10;7039:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7016:8;:20;7025:10;7016:20;;;;;;;;;;;;;;;:55;;;;7105:32;7130:6;7105:8;:20;7114:10;7105:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7082:8;:20;7091:10;7082:20;;;;;;;;;;;;;;;:55;;;;7163:24;7180:6;7163:12;;:16;;:24;;;;:::i;:::-;7148:12;:39;;;;7211:10;7203:27;;;7223:6;7203:27;;;;;;;;;;;;;;;;;;6956:282;:::o;2540:144::-;2614:17;2651:7;:15;2659:6;2651:15;;;;;;;;;;;;;;;:25;2667:8;2651:25;;;;;;;;;;;;;;;;2644:32;;2540:144;;;;:::o;4044:315::-;3793:5;;;;;;;;;;;3779:19;;:10;:19;;;3771:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4145:1;4125:22;;:8;:22;;;;:43;;;;;4163:5;;;;;;;;;;;4151:17;;:8;:17;;;;4125:43;:70;;;;;4191:4;4172:23;;:5;:15;4178:8;4172:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;4125:70;4117:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4315:8;4287:37;;4308:5;;;;;;;;;;;4287:37;;;;;;;;;;;;4343:8;4335:5;;:16;;;;;;;;;;;;;;;;;;4044:315;:::o;5979:152::-;6037:7;6070:1;6065;:6;;6057:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6122:1;6118;:5;6111:12;;5979:152;;;;:::o;6143:179::-;6201:7;6221:9;6237:1;6233;:5;6221:17;;6262:1;6257;:6;;6249:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6313:1;6306:8;;6143:179;;;;;:::o;1345:434::-;1408:4;1448:1;1433:17;;:3;:17;;;;:32;;;;;1464:1;1454:6;:11;;1433:32;:65;;;;;1478:8;:20;1487:10;1478:20;;;;;;;;;;;;;;;;1468:6;:30;;1433:65;1425:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1606:32;1631:6;1606:8;:20;1615:10;1606:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;1583:8;:20;1592:10;1583:20;;;;;;;;;;;;;;;:55;;;;1665:25;1683:6;1665:8;:13;1674:3;1665:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;1649:8;:13;1658:3;1649:13;;;;;;;;;;;;;;;:41;;;;1727:3;1706:33;;1715:10;1706:33;;;1732:6;1706:33;;;;;;;;;;;;;;;;;;1767:4;1760:11;;1345:434;;;;:::o

Swarm Source

bzzr://e7a8954f3823336975bf750fc2bc452191c67508dbfcf86269e207463a243dd9

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.