You can read about Entropy token reissuance, https://medium.com/@hut34project/entropy-token-reissuance-f37a8574c05c. The new token can be found here
ERC-20
Overview
Max Total Supply
100,000,000 ENT
Holders
1,477
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Hut34TS
Compiler Version
v0.4.17+commit.bdeb9e52
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-11-01 */ /* file: Hut34TS.sol ver: 0.2.4_deploy author: Darryl Morris date: 27-Oct-2017 email: o0ragman0o AT gmail.com (c) Darryl Morris 2017 A collated contract set for the receipt of funds and production and transfer of ERC20 tokens as specified by Hut34. License ------- This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See MIT Licence for further details. <https://opensource.org/licenses/MIT>. Release Notes ------------- * Added `event Aborted()` * correct `wholesaleLeft` magnitude bug * All tests passed Dedications ------------- * with love to Isabella and pea from your dad * xx to edie, robin, william and charlotte x */ pragma solidity ^0.4.17; // Audited 27 October 2017 by Darryl Morris, Peter Godbolt contract Hut34Config { // ERC20 token name string public constant name = "Hut34 Entropy"; // ERC20 trading symbol string public constant symbol = "ENT"; // ERC20 decimal places uint8 public constant decimals = 18; // Total supply (* in unit ENT *) uint public constant TOTAL_TOKENS = 100000000; // Contract owner at time of deployment. address public constant OWNER = 0xdA3780Cff2aE3a59ae16eC1734DEec77a7fd8db2; // + new Date("00:00 2 November 2017 utc")/1000 uint public constant START_DATE = 1509580800; // A Hut34 address to own tokens address public constant HUT34_RETAIN = 0x3135F4acA3C1Ad4758981500f8dB20EbDc5A1caB; // A Hut34 address to accept raised funds address public constant HUT34_WALLET = 0xA70d04dC4a64960c40CD2ED2CDE36D76CA4EDFaB; // Percentage of tokens to be vested over 2 years. 20% uint public constant VESTED_PERCENT = 20; // Vesting period uint public constant VESTING_PERIOD = 26 weeks; // Minimum cap over which the funding is considered successful uint public constant MIN_CAP = 3000 * 1 ether; // An ether threshold over which a funder must KYC before tokens can be // transferred (unit of ether); uint public constant KYC_THRESHOLD = 150 * 1 ether; // A minimum amount of ether funding before the concierge rate is applied // to tokens uint public constant WHOLESALE_THRESHOLD = 150 * 1 ether; // Number of tokens up for wholesale purchasers (* in unit ENT *) uint public constant WHOLESALE_TOKENS = 12500000; // Tokens sold to prefunders (* in unit ENT *) uint public constant PRESOLD_TOKENS = 2246500; // Presale ether is estimateed from fiat raised prior to TS at the ETH/AUD // rate at the time of contract deployment uint public constant PRESALE_ETH_RAISE = 2807 * 1 ether; // Address holding presold tokens to be distributed after TS address public constant PRESOLD_ADDRESS = 0x6BF708eF2C1FDce3603c04CE9547AA6E134093b6; // wholesale rate for purchases over WHOLESALE_THRESHOLD ether uint public constant RATE_WHOLESALE = 1000; // Time dependant retail rates // First Day uint public constant RATE_DAY_0 = 750; // First Week (The six days after first day) uint public constant RATE_DAY_1 = 652; // Second Week uint public constant RATE_DAY_7 = 588; // Third Week uint public constant RATE_DAY_14 = 545; // Fourth Week uint public constant RATE_DAY_21 = 517; // Fifth Week uint public constant RATE_DAY_28 = 500; } library SafeMath { // a add to b function add(uint a, uint b) internal pure returns (uint c) { c = a + b; assert(c >= a); } // a subtract b function sub(uint a, uint b) internal pure returns (uint c) { c = a - b; assert(c <= a); } // a multiplied by b function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; assert(a == 0 || c / a == b); } // a divided by b function div(uint a, uint b) internal pure returns (uint c) { assert(b != 0); c = a / b; } } contract ReentryProtected { // The reentry protection state mutex. bool __reMutex; // Sets and clears mutex in order to block function reentry modifier preventReentry() { require(!__reMutex); __reMutex = true; _; delete __reMutex; } // Blocks function entry if mutex is set modifier noReentry() { require(!__reMutex); _; } } contract ERC20Token { using SafeMath for uint; /* Constants */ // none /* State variable */ /// @return The Total supply of tokens uint public totalSupply; /// @return Tokens owned by an address mapping (address => uint) balances; /// @return Tokens spendable by a thirdparty mapping (address => mapping (address => uint)) allowed; /* Events */ // Triggered when tokens are transferred. event Transfer( address indexed _from, address indexed _to, uint256 _amount); // Triggered whenever approve(address _spender, uint256 _amount) is called. event Approval( address indexed _owner, address indexed _spender, uint256 _amount); /* Modifiers */ // none /* Functions */ // Using an explicit getter allows for function overloading function balanceOf(address _addr) public view returns (uint) { return balances[_addr]; } // Using an explicit getter allows for function overloading function allowance(address _owner, address _spender) public constant returns (uint) { return allowed[_owner][_spender]; } // Send _value amount of tokens to address _to function transfer(address _to, uint256 _amount) public returns (bool) { return xfer(msg.sender, _to, _amount); } // Send _value amount of tokens from address _from to address _to function transferFrom(address _from, address _to, uint256 _amount) public returns (bool) { require(_amount <= allowed[_from][msg.sender]); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount); return xfer(_from, _to, _amount); } // Process a transfer internally. function xfer(address _from, address _to, uint _amount) internal returns (bool) { require(_amount <= balances[_from]); Transfer(_from, _to, _amount); // avoid wasting gas on 0 token transfers if(_amount == 0) return true; balances[_from] = balances[_from].sub(_amount); balances[_to] = balances[_to].add(_amount); return true; } // Approves a third-party spender function approve(address _spender, uint256 _amount) public returns (bool) { allowed[msg.sender][_spender] = _amount; Approval(msg.sender, _spender, _amount); return true; } } /*-----------------------------------------------------------------------------\ ## Conditional Entry Table Functions must throw on F conditions Renetry prevention is on all public mutating functions Reentry mutex set in finalizeTS(), externalXfer(), refund() |function |<startDate |<endDate |fundFailed |fundRaised|tsSucceeded |------------------------|:---------:|:--------:|:----------:|:--------:|:---------:| |() |F |T |F |T |F | |abort() |T |T |T |T |F | |proxyPurchase() |F |T |F |T |F | |finalizeTS() |F |F |F |T |T | |refund() |F |F |T |F |F | |refundFor() |F |F |T |F |F | |transfer() |F |F |F |F |T | |transferFrom() |F |F |F |F |T | |transferToMany() |F |F |F |F |T | |approve() |F |F |F |F |T | |clearKyc() |T |T |T |T |T | |releaseVested() |F |F |F |F |now>release| |changeOwner() |T |T |T |T |T | |acceptOwnership() |T |T |T |T |T | |transferExternalTokens()|T |T |T |T |T | |destroy() |F |F |!__abortFuse|F |F | \*----------------------------------------------------------------------------*/ contract Hut34TSAbstract { /// @dev Logged upon receiving a deposit /// @param _from The address from which value has been recieved /// @param _value The value of ether received event Deposit(address indexed _from, uint _value); /// @dev Logged upon a withdrawal /// @param _from the address of the withdrawer /// @param _to Address to which value was sent /// @param _value The value in ether which was withdrawn event Withdrawal(address indexed _from, address indexed _to, uint _value); /// @dev Logged when new owner accepts ownership /// @param _from the old owner address /// @param _to the new owner address event ChangedOwner(address indexed _from, address indexed _to); /// @dev Logged when owner initiates a change of ownership /// @param _to the new owner address event ChangeOwnerTo(address indexed _to); /// @dev Logged when a funder exceeds the KYC limit /// @param _addr Address to set or clear KYC flag /// @param _kyc A boolean flag event Kyc(address indexed _addr, bool _kyc); /// @dev Logged when vested tokens are released back to HUT32_WALLET /// @param _releaseDate The official release date (even if released at /// later date) event VestingReleased(uint _releaseDate); /// @dev Logged if the contract is aborted event Aborted(); // // Constants // /// @dev The Hut34 vesting 'psudo-address' for transferring and releasing /// vested tokens to the Hut34 Wallet. The address is UTF8 encoding of the /// string and can only be accessed by the 'releaseVested()' function. /// @return `0x48757433342056657374696e6700000000000000` address public constant HUT34_VEST_ADDR = address(bytes20("Hut34 Vesting")); // // State Variables // /// @dev This fuse blows upon calling abort() which forces a fail state /// @return the abort state. true == not aborted bool public __abortFuse = true; /// @dev Sets to true after the fund is swept to the fund wallet, allows /// token transfers and prevents abort() /// @return final success state of TS bool public tsSucceeded; /// @dev An address permissioned to enact owner restricted functions /// @return owner address public owner; /// @dev An address permissioned to take ownership of the contract /// @return new owner address address public newOwner; /// @dev A tally of total ether raised during the funding period /// @return Total ether raised during funding uint public etherRaised; /// @return Wholesale tokens available for sale uint public wholesaleLeft; /// @return Total ether refunded. Used to permision call to `destroy()` uint public refunded; /// @returns Date of next vesting release uint public nextReleaseDate; /// @return Ether paid by an address mapping (address => uint) public etherContributed; /// @returns KYC flag for an address mapping (address => bool) public mustKyc; // // Modifiers // modifier onlyOwner() { require(msg.sender == owner); _; } // // Function Abstracts // /// @return `true` if MIN_FUNDS were raised function fundRaised() public view returns (bool); /// @return `true` if MIN_FUNDS were not raised before END_DATE or contract /// has been aborted function fundFailed() public view returns (bool); /// @return The current retail rate for token purchase function currentRate() public view returns (uint); /// @param _wei A value of ether in units of wei /// @return allTokens_ returnable tokens for the funding amount /// @return wholesaleToken_ Number of tokens purchased at wholesale rate function ethToTokens(uint _wei) public view returns (uint allTokens_, uint wholesaleTokens_); /// @notice Processes a token purchase for `_addr` /// @param _addr An address to purchase tokens /// @return Boolean success value /// @dev Requires <150,000 gas function proxyPurchase(address _addr) public payable returns (bool); /// @notice Finalize the TS and transfer funds /// @return Boolean success value function finalizeTS() public returns (bool); /// @notice Clear the KYC flags for an array of addresses to allow tokens /// transfers function clearKyc(address[] _addrs) public returns (bool); /// @notice Make bulk transfer of tokens to many addresses /// @param _addrs An array of recipient addresses /// @param _amounts An array of amounts to transfer to respective addresses /// @return Boolean success value function transferToMany(address[] _addrs, uint[] _amounts) public returns (bool); /// @notice Release vested tokens after a maturity date /// @return Boolean success value function releaseVested() public returns (bool); /// @notice Claim refund on failed TS /// @return Boolean success value function refund() public returns (bool); /// @notice Push refund for `_addr` from failed TS /// @param _addrs An array of address to refund /// @return Boolean success value function refundFor(address[] _addrs) public returns (bool); /// @notice Abort the token sale prior to finalizeTS() function abort() public returns (bool); /// @notice Salvage `_amount` tokens at `_kaddr` and send them to `_to` /// @param _kAddr An ERC20 contract address /// @param _to and address to send tokens /// @param _amount The number of tokens to transfer /// @return Boolean success value function transferExternalToken(address _kAddr, address _to, uint _amount) public returns (bool); } /*-----------------------------------------------------------------------------\ Hut34TS implimentation \*----------------------------------------------------------------------------*/ contract Hut34TS is ReentryProtected, ERC20Token, Hut34TSAbstract, Hut34Config { using SafeMath for uint; // // Constants // // Token fixed point for decimal places uint constant TOKEN = uint(10)**decimals; // Calculate vested tokens uint public constant VESTED_TOKENS = TOTAL_TOKENS * TOKEN * VESTED_PERCENT / 100; // Hut34 retains 50% of tokens (70% - 20% vested tokens) uint public constant RETAINED_TOKENS = TOKEN * TOTAL_TOKENS / 2; // Calculate end date uint public constant END_DATE = START_DATE + 35 days; // Divides `etherRaised` to calculate commision // etherRaised/6.66... == etherRaised * 1.5% / 100 uint public constant COMMISSION_DIV = 67; // Developer commission wallet address public constant COMMISSION_WALLET = 0x0065D506E475B5DBD76480bAFa57fe7C41c783af; // // Functions // function Hut34TS() public { // Run sanity checks require(TOTAL_TOKENS != 0); require(OWNER != 0x0); require(HUT34_RETAIN != 0x0); require(HUT34_WALLET != 0x0); require(PRESOLD_TOKENS <= WHOLESALE_TOKENS); require(PRESOLD_TOKENS == 0 || PRESOLD_ADDRESS != 0x0); require(MIN_CAP != 0); require(START_DATE >= now); require(bytes(name).length != 0); require(bytes(symbol).length != 0); require(KYC_THRESHOLD != 0); require(RATE_DAY_0 >= RATE_DAY_1); require(RATE_DAY_1 >= RATE_DAY_7); require(RATE_DAY_7 >= RATE_DAY_14); require(RATE_DAY_14 >= RATE_DAY_21); require(RATE_DAY_21 >= RATE_DAY_28); owner = OWNER; totalSupply = TOTAL_TOKENS.mul(TOKEN); wholesaleLeft = WHOLESALE_TOKENS.mul(TOKEN); uint presold = PRESOLD_TOKENS.mul(TOKEN); wholesaleLeft = wholesaleLeft.sub(presold); // Presale raise is appoximate given it was conducted in Fiat. etherRaised = PRESALE_ETH_RAISE; // Mint the total supply into Hut34 token holding address balances[HUT34_RETAIN] = totalSupply; Transfer(0x0, HUT34_RETAIN, totalSupply); // Transfer vested tokens from holding wallet to vesting pseudo-address balances[HUT34_RETAIN] = balances[HUT34_RETAIN].sub(VESTED_TOKENS); balances[HUT34_VEST_ADDR] = balances[HUT34_VEST_ADDR].add(VESTED_TOKENS); Transfer(HUT34_RETAIN, HUT34_VEST_ADDR, VESTED_TOKENS); // Transfer presold tokens to holding address; balances[HUT34_RETAIN] = balances[HUT34_RETAIN].sub(presold); balances[PRESOLD_ADDRESS] = balances[PRESOLD_ADDRESS].add(presold); Transfer(HUT34_RETAIN, PRESOLD_ADDRESS, presold); } // Default function. Accepts payments during funding period function () public payable { // Pass through to purchasing function. Will throw on failed or // successful TS proxyPurchase(msg.sender); } // // Getters // // TS fails if aborted or minimum funds are not raised by the end date function fundFailed() public view returns (bool) { return !__abortFuse || (now > END_DATE && etherRaised < MIN_CAP); } // Funding succeeds if not aborted, minimum funds are raised before end date function fundRaised() public view returns (bool) { return !fundFailed() && etherRaised >= MIN_CAP && now > START_DATE; } // Returns wholesale value in wei function wholeSaleValueLeft() public view returns (uint) { return wholesaleLeft / RATE_WHOLESALE; } function currentRate() public view returns (uint) { return fundFailed() ? 0 : tsSucceeded ? 0 : now < START_DATE ? 0 : now < START_DATE + 1 days ? RATE_DAY_0 : now < START_DATE + 7 days ? RATE_DAY_1 : now < START_DATE + 14 days ? RATE_DAY_7 : now < START_DATE + 21 days ? RATE_DAY_14 : now < START_DATE + 28 days ? RATE_DAY_21 : now < END_DATE ? RATE_DAY_28 : 0; } // Calculates the sale and wholesale portion of tokens for a given value // of wei at the time of calling. function ethToTokens(uint _wei) public view returns (uint allTokens_, uint wholesaleTokens_) { // Get wholesale portion of ether and tokens uint wsValueLeft = wholeSaleValueLeft(); uint wholesaleSpend = fundFailed() ? 0 : tsSucceeded ? 0 : now < START_DATE ? 0 : now > END_DATE ? 0 : // No wholesale purchse _wei < WHOLESALE_THRESHOLD ? 0 : // Total wholesale purchase _wei < wsValueLeft ? _wei : // over funded for remaining wholesale tokens wsValueLeft; wholesaleTokens_ = wholesaleSpend .mul(RATE_WHOLESALE) .mul(TOKEN) .div(1 ether); // Remaining wei used to purchase retail tokens _wei = _wei.sub(wholesaleSpend); // Get retail rate uint saleRate = currentRate(); allTokens_ = _wei .mul(saleRate) .mul(TOKEN) .div(1 ether) .add(wholesaleTokens_); } // // TS functions // // The fundraising can be aborted any time before `finaliseTS()` is called. // This will force a fail state and allow refunds to be collected. // The owner can abort or anyone else if a successful fund has not been // finalised before 7 days after the end date. function abort() public noReentry returns (bool) { require(!tsSucceeded); require(msg.sender == owner || now > END_DATE + 14 days); delete __abortFuse; Aborted(); return true; } // General addresses can purchase tokens during funding function proxyPurchase(address _addr) public payable noReentry returns (bool) { require(!fundFailed()); require(!tsSucceeded); require(now > START_DATE); require(now <= END_DATE); require(msg.value > 0); // Log ether deposit Deposit (_addr, msg.value); // Get ether to token conversion uint tokens; // Portion of tokens sold at wholesale rate uint wholesaleTokens; (tokens, wholesaleTokens) = ethToTokens(msg.value); // Block any failed token creation require(tokens > 0); // Prevent over subscribing require(balances[HUT34_RETAIN] - tokens >= RETAINED_TOKENS); // Adjust wholesale tokens left for sale if (wholesaleTokens != 0) { wholesaleLeft = wholesaleLeft.sub(wholesaleTokens); } // transfer tokens from fund wallet balances[HUT34_RETAIN] = balances[HUT34_RETAIN].sub(tokens); balances[_addr] = balances[_addr].add(tokens); Transfer(HUT34_RETAIN, _addr, tokens); // Update funds raised etherRaised = etherRaised.add(msg.value); // Update holder payments etherContributed[_addr] = etherContributed[_addr].add(msg.value); // Check KYC requirement if(etherContributed[_addr] >= KYC_THRESHOLD && !mustKyc[_addr]) { mustKyc[_addr] = true; Kyc(_addr, true); } return true; } // Owner can sweep a successful funding to the fundWallet. // Can be called repeatedly to recover errant ether which may have been // `selfdestructed` to the contract // Contract can be aborted up until this returns `true` function finalizeTS() public onlyOwner preventReentry() returns (bool) { // Must have reached minimum cap require(fundRaised()); // Set first vesting date (only once as this function can be called again) if(!tsSucceeded) { nextReleaseDate = now + VESTING_PERIOD; } // Set success flag; tsSucceeded = true; // Transfer % Developer commission uint devCommission = calcCommission(); Withdrawal(this, COMMISSION_WALLET, devCommission); COMMISSION_WALLET.transfer(devCommission); // Remaining % to the fund wallet Withdrawal(this, HUT34_WALLET, this.balance); HUT34_WALLET.transfer(this.balance); return true; } function clearKyc(address[] _addrs) public noReentry onlyOwner returns (bool) { uint len = _addrs.length; for(uint i; i < len; i++) { delete mustKyc[_addrs[i]]; Kyc(_addrs[i], false); } return true; } // Releases vested tokens back to Hut34 wallet function releaseVested() public returns (bool) { require(now > nextReleaseDate); VestingReleased(nextReleaseDate); nextReleaseDate = nextReleaseDate.add(VESTING_PERIOD); return xfer(HUT34_VEST_ADDR, HUT34_RETAIN, VESTED_TOKENS / 4); } // Direct refund to caller function refund() public returns (bool) { address[] memory addrs = new address[](1); addrs[0] = msg.sender; return refundFor(addrs); } // Bulk refunds can be pushed from a failed TS function refundFor(address[] _addrs) public preventReentry() returns (bool) { require(fundFailed()); uint i; uint len = _addrs.length; uint value; uint tokens; address addr; for (i; i < len; i++) { addr = _addrs[i]; value = etherContributed[addr]; tokens = balances[addr]; if (tokens > 0) { // Return tokens // transfer tokens from fund wallet balances[HUT34_RETAIN] = balances[HUT34_RETAIN].add(tokens); delete balances[addr]; Transfer(addr, HUT34_RETAIN, tokens); } if (value > 0) { // Refund ether contribution delete etherContributed[addr]; delete mustKyc[addr]; refunded = refunded.add(value); Withdrawal(this, addr, value); addr.transfer(value); } } return true; } // // ERC20 additional and overloaded functions // // Allows a sender to transfer tokens to an array of recipients function transferToMany(address[] _addrs, uint[] _amounts) public noReentry returns (bool) { require(_addrs.length == _amounts.length); uint len = _addrs.length; for(uint i = 0; i < len; i++) { xfer(msg.sender, _addrs[i], _amounts[i]); } return true; } // Overload to check TS success and KYC flags. function xfer(address _from, address _to, uint _amount) internal noReentry returns (bool) { require(tsSucceeded); require(!mustKyc[_from]); super.xfer(_from, _to, _amount); return true; } // Overload to require TS success function approve(address _spender, uint _amount) public noReentry returns (bool) { // TS must be successful require(tsSucceeded); super.approve(_spender, _amount); return true; } // // Contract management functions // // Initiate a change of owner to `_owner` function changeOwner(address _owner) public onlyOwner returns (bool) { ChangeOwnerTo(_owner); newOwner = _owner; return true; } // Finalise change of ownership to newOwner function acceptOwnership() public returns (bool) { require(msg.sender == newOwner); ChangedOwner(owner, msg.sender); owner = newOwner; delete newOwner; return true; } // This will selfdestruct the contract on the condittion all have been // processed. function destroy() public noReentry onlyOwner { require(!__abortFuse); require(refunded == (etherRaised - PRESALE_ETH_RAISE)); // Log burned tokens for complete ledger accounting on archival nodes Transfer(HUT34_RETAIN, 0x0, balances[HUT34_RETAIN]); Transfer(HUT34_VEST_ADDR, 0x0, VESTED_TOKENS); Transfer(PRESOLD_ADDRESS, 0x0, PRESOLD_TOKENS); // Garbage collect mapped state delete balances[HUT34_RETAIN]; delete balances[PRESOLD_ADDRESS]; selfdestruct(owner); } // Owner can salvage ERC20 tokens that may have been sent to the account function transferExternalToken(address _kAddr, address _to, uint _amount) public onlyOwner preventReentry returns (bool) { require(ERC20Token(_kAddr).transfer(_to, _amount)); return true; } // Calculate commission on prefunded and raised ether. function calcCommission() internal view returns(uint) { uint commission = (this.balance + PRESALE_ETH_RAISE) / COMMISSION_DIV; // Edge case that prefund causes commission to be greater than balance return commission <= this.balance ? commission : this.balance; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"VESTING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tsSucceeded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nextReleaseDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HUT34_VEST_ADDR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WHOLESALE_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OWNER","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"COMMISSION_DIV","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"COMMISSION_WALLET","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseVested","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PRESOLD_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KYC_THRESHOLD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kAddr","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferExternalToken","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":true,"inputs":[],"name":"RATE_DAY_1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"abort","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wholesaleLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"proxyPurchase","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"END_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PRESALE_ETH_RAISE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"__abortFuse","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_DAY_21","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"transferToMany","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_DAY_28","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_DAY_7","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"}],"name":"refundFor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_DAY_14","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeTS","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"}],"name":"clearKyc","outputs":[{"name":"","type":"bool"}],"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":"PRESOLD_ADDRESS","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":true,"inputs":[],"name":"HUT34_WALLET","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_wei","type":"uint256"}],"name":"ethToTokens","outputs":[{"name":"allTokens_","type":"uint256"},{"name":"wholesaleTokens_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_WHOLESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"changeOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"etherContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_DAY_0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VESTED_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RETAINED_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundRaised","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"mustKyc","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wholeSaleValueLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VESTED_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WHOLESALE_THRESHOLD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HUT34_RETAIN","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"ChangedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"}],"name":"ChangeOwnerTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_kyc","type":"bool"}],"name":"Kyc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_releaseDate","type":"uint256"}],"name":"VestingReleased","type":"event"},{"anonymous":false,"inputs":[],"name":"Aborted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60606040526001600460006101000a81548160ff02191690831515021790555034156200002b57600080fd5b6000806305f5e100141515156200004157600080fd5b600073da3780cff2ae3a59ae16ec1734deec77a7fd8db273ffffffffffffffffffffffffffffffffffffffff16141515156200007c57600080fd5b6000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1614151515620000b757600080fd5b600073a70d04dc4a64960c40cd2ed2cde36d76ca4edfab73ffffffffffffffffffffffffffffffffffffffff1614151515620000f257600080fd5b62bebc2062224764111515156200010857600080fd5b60006222476414806200014657506000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff1614155b15156200015257600080fd5b600068a2a15d09519be00000141515156200016c57600080fd5b426359fa6000101515156200018057600080fd5b60006040805190810160405280600d81526020017f487574333420456e74726f7079000000000000000000000000000000000000008152505114151515620001c757600080fd5b60006040805190810160405280600381526020017f454e54000000000000000000000000000000000000000000000000000000000081525051141515156200020e57600080fd5b6000680821ab0d4414980000141515156200022857600080fd5b61028c6102ee101515156200023c57600080fd5b61024c61028c101515156200025057600080fd5b61022161024c101515156200026457600080fd5b610205610221101515156200027857600080fd5b6101f4610205101515156200028c57600080fd5b73da3780cff2ae3a59ae16ec1734deec77a7fd8db2600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030f601260ff16600a0a6305f5e100620009726401000000000262003500179091906401000000009004565b60018190555062000342601260ff16600a0a62bebc20620009726401000000000262003500179091906401000000009004565b60078190555062000375601260ff16600a0a62224764620009726401000000000262003500179091906401000000009004565b90506200039c81600754620009a364010000000002620032bc179091906401000000009004565b60078190555068982af34be0697c000060068190555060015460026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040518082815260200191505060405180910390a36200050560646014601260ff16600a0a6305f5e10002028115156200049357fe5b0460026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009a364010000000002620032bc179091906401000000009004565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200060b60646014601260ff16600a0a6305f5e10002028115156200057d57fe5b04600260007f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009bd64010000000002620032d5179091906401000000009004565b600260007f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60646014601260ff16600a0a6305f5e10002028115156200072e57fe5b046040518082815260200191505060405180910390a3620007ba8160026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009a364010000000002620032bc179091906401000000009004565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008878160026000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009bd64010000000002620032d5179091906401000000009004565b60026000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff16733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350620009d7565b6000818302905060008314806200099457508183828115156200099157fe5b04145b15156200099d57fe5b92915050565b60008183039050828111151515620009b757fe5b92915050565b60008183019050828110151515620009d157fe5b92915050565b61378d80620009e76000396000f300606060405236156102e9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630197d972146102f557806306fdde031461031e5780630739cd26146103ac578063095ea7b3146103d95780630a91cad0146104335780630b7abf771461045c5780630d61a4ff146104855780630ddc4a94146104da578063117803e31461050357806312f5395014610558578063168c81201461058157806317c73ff0146105aa57806318160ddd146105ff5780631f800e8e1461062857806323b872dd14610655578063289cf1e2146106ce5780632d133eee146106f75780632fbd243214610720578063313ce5671461079957806334e41bbf146107c857806335a063b4146107f157806336df05bc1461081e578063372c6533146108475780634a5dddd214610870578063545599ff146108b6578063590e1ae3146108df5780636a745ce91461090c5780636e62de19146109355780636eabcd69146109625780636f95dd0b1461098f57806370a08231146109b857806379ba509714610a055780637c33ebfd14610a325780637e36edce14610ae4578063801db9cc14610b0d5780638121ddd714610b3657806383197ef014610b5f578063838f516514610b745780638717866814610be6578063874fe37014610c0f57806388968bc314610c3c5780638da5cb5b14610cae578063913dd84614610d0357806395d89b4114610d58578063979d6dc714610de6578063a4c8932214610e3b578063a5d68bfd14610e79578063a6f9dae114610ea2578063a82776dd14610ef3578063a9059cbb14610f40578063ba99d1a614610f9a578063bf6888c814610fc3578063c164091314610fec578063c71c0b4014611015578063cd72ab6914611042578063d4ee1d901461106b578063d5e9abfd146110c0578063d735fa2514611111578063dd62ed3e1461113a578063df4e79fa146111a6578063e7a95a7f146111cf578063f9f8bdb7146111f8578063ff41f5cc14611221575b6102f233611276565b50005b341561030057600080fd5b6103086117e9565b6040518082815260200191505060405180910390f35b341561032957600080fd5b6103316117f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610371578082015181840152602081019050610356565b50505050905090810190601f16801561039e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b757600080fd5b6103bf611829565b604051808215151515815260200191505060405180910390f35b34156103e457600080fd5b610419600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061183c565b604051808215151515815260200191505060405180910390f35b341561043e57600080fd5b610446611889565b6040518082815260200191505060405180910390f35b341561046757600080fd5b61046f61188f565b6040518082815260200191505060405180910390f35b341561049057600080fd5b610498611897565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104e557600080fd5b6104ed6118cb565b6040518082815260200191505060405180910390f35b341561050e57600080fd5b6105166118d2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561056357600080fd5b61056b6118ea565b6040518082815260200191505060405180910390f35b341561058c57600080fd5b6105946118f0565b6040518082815260200191505060405180910390f35b34156105b557600080fd5b6105bd6118f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561060a57600080fd5b61061261190c565b6040518082815260200191505060405180910390f35b341561063357600080fd5b61063b611912565b604051808215151515815260200191505060405180910390f35b341561066057600080fd5b6106b4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119f7565b604051808215151515815260200191505060405180910390f35b34156106d957600080fd5b6106e1611ba7565b6040518082815260200191505060405180910390f35b341561070257600080fd5b61070a611bae565b6040518082815260200191505060405180910390f35b341561072b57600080fd5b61077f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bbb565b604051808215151515815260200191505060405180910390f35b34156107a457600080fd5b6107ac611d3b565b604051808260ff1660ff16815260200191505060405180910390f35b34156107d357600080fd5b6107db611d40565b6040518082815260200191505060405180910390f35b34156107fc57600080fd5b610804611d46565b604051808215151515815260200191505060405180910390f35b341561082957600080fd5b610831611e38565b6040518082815260200191505060405180910390f35b341561085257600080fd5b61085a611e3e565b6040518082815260200191505060405180910390f35b61089c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611276565b604051808215151515815260200191505060405180910390f35b34156108c157600080fd5b6108c9611e46565b6040518082815260200191505060405180910390f35b34156108ea57600080fd5b6108f2611e53565b604051808215151515815260200191505060405180910390f35b341561091757600080fd5b61091f611eda565b6040518082815260200191505060405180910390f35b341561094057600080fd5b610948611ee7565b604051808215151515815260200191505060405180910390f35b341561096d57600080fd5b610975611f28565b604051808215151515815260200191505060405180910390f35b341561099a57600080fd5b6109a2611f3b565b6040518082815260200191505060405180910390f35b34156109c357600080fd5b6109ef600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f41565b6040518082815260200191505060405180910390f35b3415610a1057600080fd5b610a18611f8a565b604051808215151515815260200191505060405180910390f35b3415610a3d57600080fd5b610aca600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506120f3565b604051808215151515815260200191505060405180910390f35b3415610aef57600080fd5b610af7612187565b6040518082815260200191505060405180910390f35b3415610b1857600080fd5b610b2061218d565b6040518082815260200191505060405180910390f35b3415610b4157600080fd5b610b4961219a565b6040518082815260200191505060405180910390f35b3415610b6a57600080fd5b610b726121a0565b005b3415610b7f57600080fd5b610bcc6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506124f3565b604051808215151515815260200191505060405180910390f35b3415610bf157600080fd5b610bf96128fa565b6040518082815260200191505060405180910390f35b3415610c1a57600080fd5b610c22612900565b604051808215151515815260200191505060405180910390f35b3415610c4757600080fd5b610c94600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612bce565b604051808215151515815260200191505060405180910390f35b3415610cb957600080fd5b610cc1612d3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d0e57600080fd5b610d16612d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d6357600080fd5b610d6b612d7d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dab578082015181840152602081019050610d90565b50505050905090810190601f168015610dd85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610df157600080fd5b610df9612db6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e4657600080fd5b610e5c6004808035906020019091905050612dce565b604051808381526020018281526020019250505060405180910390f35b3415610e8457600080fd5b610e8c612f2f565b6040518082815260200191505060405180910390f35b3415610ead57600080fd5b610ed9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612f35565b604051808215151515815260200191505060405180910390f35b3415610efe57600080fd5b610f2a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613020565b6040518082815260200191505060405180910390f35b3415610f4b57600080fd5b610f80600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613038565b604051808215151515815260200191505060405180910390f35b3415610fa557600080fd5b610fad61304d565b6040518082815260200191505060405180910390f35b3415610fce57600080fd5b610fd6613053565b6040518082815260200191505060405180910390f35b3415610ff757600080fd5b610fff613058565b6040518082815260200191505060405180910390f35b341561102057600080fd5b611028613075565b604051808215151515815260200191505060405180910390f35b341561104d57600080fd5b6110556130ab565b6040518082815260200191505060405180910390f35b341561107657600080fd5b61107e6130b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156110cb57600080fd5b6110f7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130d7565b604051808215151515815260200191505060405180910390f35b341561111c57600080fd5b6111246130f7565b6040518082815260200191505060405180910390f35b341561114557600080fd5b611190600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061310e565b6040518082815260200191505060405180910390f35b34156111b157600080fd5b6111b9613195565b6040518082815260200191505060405180910390f35b34156111da57600080fd5b6111e26131b5565b6040518082815260200191505060405180910390f35b341561120357600080fd5b61120b6131c2565b6040518082815260200191505060405180910390f35b341561122c57600080fd5b6112346132a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060009054906101000a900460ff1615151561129657600080fd5b61129e611ee7565b1515156112aa57600080fd5b600460019054906101000a900460ff161515156112c657600080fd5b6359fa6000421115156112d857600080fd5b622e24806359fa60000142111515156112f057600080fd5b6000341115156112ff57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a261135634612dce565b809250819350505060008211151561136d57600080fd5b60026305f5e100601260ff16600a0a0281151561138657fe5b048260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101515156113ea57600080fd5b60008114151561141057611409816007546132bc90919063ffffffff16565b6007819055505b6114768260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36115f0346006546132d590919063ffffffff16565b60068190555061164834600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680821ab0d4414980000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561172d5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117de576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f86df4d319dc8c05e5ca005438b3e8a4521a6ddfa127e5cfd589d8c3ead3935bc6001604051808215151515815260200191505060405180910390a25b600192505050919050565b62eff10081565b6040805190810160405280600d81526020017f487574333420456e74726f70790000000000000000000000000000000000000081525081565b600460019054906101000a900460ff1681565b60008060009054906101000a900460ff1615151561185957600080fd5b600460019054906101000a900460ff16151561187457600080fd5b61187e83836132ee565b506001905092915050565b60095481565b6305f5e10081565b7f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900481565b62bebc2081565b73da3780cff2ae3a59ae16ec1734deec77a7fd8db281565b60085481565b604381565b7265d506e475b5dbd76480bafa57fe7c41c783af81565b60015481565b60006009544211151561192457600080fd5b7f87281fabebb3053dede10cd89db97c95421a1fb9385cd5d0bb6cf8db8dd11ae76009546040518082815260200191505060405180910390a161197562eff1006009546132d590919063ffffffff16565b6009819055506119f27f48757433342056657374696e67000000000000000000000000000000000000006c010000000000000000000000009004733135f4aca3c1ad4758981500f8db20ebdc5a1cab600460646014601260ff16600a0a6305f5e10002028115156119e257fe5b048115156119ec57fe5b046133e0565b905090565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611a8457600080fd5b611b1382600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b9e8484846133e0565b90509392505050565b6222476481565b680821ab0d441498000081565b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1957600080fd5b6000809054906101000a900460ff16151515611c3457600080fd5b60016000806101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611cf957600080fd5b6102c65a03f11515611d0a57600080fd5b505050604051805190501515611d1f57600080fd5b600190506000806101000a81549060ff02191690559392505050565b601281565b61028c81565b60008060009054906101000a900460ff16151515611d6357600080fd5b600460019054906101000a900460ff16151515611d7f57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611de8575062127500622e24806359fa6000010142115b1515611df357600080fd5b600460006101000a81549060ff02191690557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a16001905090565b60075481565b6359fa600081565b622e24806359fa60000181565b6000611e5d61374d565b6001604051805910611e6c5750595b9080825280602002602001820160405250905033816000815181101515611e8f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ed4816124f3565b91505090565b68982af34be0697c000081565b6000600460009054906101000a900460ff161580611f235750622e24806359fa60000142118015611f22575068a2a15d09519be00000600654105b5b905090565b600460009054906101000a900460ff1681565b61020581565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fe857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2748503f8f31d8071821d1d5144384ba6a465036cda17fa1629a8a2509ccee0e60405160405180910390a3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001905090565b60008060008060009054906101000a900460ff1615151561211357600080fd5b8351855114151561212357600080fd5b84519150600090505b8181101561217b5761216d33868381518110151561214657fe5b90602001906020020151868481518110151561215e57fe5b906020019060200201516133e0565b50808060010191505061212c565b60019250505092915050565b6101f481565b68a2a15d09519be0000081565b61024c81565b6000809054906101000a900460ff161515156121bb57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561221757600080fd5b600460009054906101000a900460ff1615151561223357600080fd5b68982af34be0697c00006006540360085414151561225057600080fd5b6000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360007f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60646014601260ff16600a0a6305f5e100020281151561238d57fe5b046040518082815260200191505060405180910390a36000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef622247646040518082815260200191505060405180910390a360026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560026000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000806000806000806000809054906101000a900460ff1615151561251757600080fd5b60016000806101000a81548160ff021916908315150217905550612539611ee7565b151561254457600080fd5b865193505b838510156128db57868581518110151561255f57fe5b906020019060200201519050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211156127725761265e8260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b60008311156128ce57600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612822836008546132d590919063ffffffff16565b6008819055508073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398856040518082815260200191505060405180910390a38073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156128cd57600080fd5b5b8480600101955050612549565b600195506000806101000a81549060ff02191690555050505050919050565b61022181565b600080600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561295f57600080fd5b6000809054906101000a900460ff1615151561297a57600080fd5b60016000806101000a81548160ff02191690831515021790555061299c613075565b15156129a757600080fd5b600460019054906101000a900460ff1615156129ca5762eff10042016009819055505b6001600460016101000a81548160ff0219169083151502179055506129ed613488565b90507265d506e475b5dbd76480bafa57fe7c41c783af73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398836040518082815260200191505060405180910390a37265d506e475b5dbd76480bafa57fe7c41c783af73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515612aba57600080fd5b73a70d04dc4a64960c40cd2ed2cde36d76ca4edfab73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63983073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a373a70d04dc4a64960c40cd2ed2cde36d76ca4edfab73ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515612bb557600080fd5b600191506000806101000a81549060ff02191690555090565b60008060008060009054906101000a900460ff16151515612bee57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4a57600080fd5b835191505b81811015612d3457600b60008583815181101515612c6957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558381815181101515612ccb57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f86df4d319dc8c05e5ca005438b3e8a4521a6ddfa127e5cfd589d8c3ead3935bc6000604051808215151515815260200191505060405180910390a28080600101915050612c4f565b600192505050919050565b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b736bf708ef2c1fdce3603c04ce9547aa6e134093b681565b6040805190810160405280600381526020017f454e54000000000000000000000000000000000000000000000000000000000081525081565b73a70d04dc4a64960c40cd2ed2cde36d76ca4edfab81565b6000806000806000612dde6130f7565b9250612de8611ee7565b612e5f57600460019054906101000a900460ff16612e57576359fa60004210612e4f57622e24806359fa6000014211612e4757680821ab0d44149800008610612e3f57828610612e385782612e3a565b855b612e42565b60005b612e4a565b60005b612e52565b60005b612e5a565b60005b612e62565b60005b9150612eac670de0b6b3a7640000612e9e601260ff16600a0a612e906103e88761350090919063ffffffff16565b61350090919063ffffffff16565b61352e90919063ffffffff16565b9350612ec182876132bc90919063ffffffff16565b9550612ecb6131c2565b9050612f2584612f17670de0b6b3a7640000612f09601260ff16600a0a612efb878d61350090919063ffffffff16565b61350090919063ffffffff16565b61352e90919063ffffffff16565b6132d590919063ffffffff16565b9450505050915091565b6103e881565b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f9357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fbc48fdaddfcfb54d36a0ac4d7e52f46cdf854784b9c0978d385a35e8383262d460405160405180910390a281600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a6020528060005260406000206000915090505481565b60006130453384846133e0565b905092915050565b6102ee81565b601481565b60026305f5e100601260ff16600a0a0281151561307157fe5b0481565b600061307f611ee7565b158015613097575068a2a15d09519be0000060065410155b80156130a657506359fa600042115b905090565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60006103e860075481151561310857fe5b04905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60646014601260ff16600a0a6305f5e10002028115156131b157fe5b0481565b680821ab0d441498000081565b60006131cc611ee7565b61329c57600460019054906101000a900460ff16613294576359fa6000421061328c57620151806359fa60000142106132835762093a806359fa600001421061327a57621275006359fa600001421061327157621baf806359fa6000014210613268576224ea006359fa600001421061325f57622e24806359fa600001421061325657600061325a565b6101f45b613263565b6102055b61326c565b6102215b613275565b61024c5b61327e565b61028c5b613287565b6102ee5b61328f565b60005b613297565b60005b61329f565b60005b905090565b733135f4aca3c1ad4758981500f8db20ebdc5a1cab81565b600081830390508281111515156132cf57fe5b92915050565b600081830190508281101515156132e857fe5b92915050565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060009054906101000a900460ff161515156133fd57600080fd5b600460019054906101000a900460ff16151561341857600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561347157600080fd5b61347c848484613550565b50600190509392505050565b600080604368982af34be0697c00003073ffffffffffffffffffffffffffffffffffffffff1631018115156134b957fe5b0490503073ffffffffffffffffffffffffffffffffffffffff16318111156134f8573073ffffffffffffffffffffffffffffffffffffffff16316134fa565b805b91505090565b600081830290506000831480613520575081838281151561351d57fe5b04145b151561352857fe5b92915050565b600080821415151561353c57fe5b818381151561354757fe5b04905092915050565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156135a057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360008214156136175760019050613746565b61366982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136fe82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b9392505050565b6020604051908101604052806000815250905600a165627a7a7230582007db8adb2c78cab9239e31a5e8c86280e5828125d6954cc7431c1a7399950bfe0029
Deployed Bytecode
0x606060405236156102e9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630197d972146102f557806306fdde031461031e5780630739cd26146103ac578063095ea7b3146103d95780630a91cad0146104335780630b7abf771461045c5780630d61a4ff146104855780630ddc4a94146104da578063117803e31461050357806312f5395014610558578063168c81201461058157806317c73ff0146105aa57806318160ddd146105ff5780631f800e8e1461062857806323b872dd14610655578063289cf1e2146106ce5780632d133eee146106f75780632fbd243214610720578063313ce5671461079957806334e41bbf146107c857806335a063b4146107f157806336df05bc1461081e578063372c6533146108475780634a5dddd214610870578063545599ff146108b6578063590e1ae3146108df5780636a745ce91461090c5780636e62de19146109355780636eabcd69146109625780636f95dd0b1461098f57806370a08231146109b857806379ba509714610a055780637c33ebfd14610a325780637e36edce14610ae4578063801db9cc14610b0d5780638121ddd714610b3657806383197ef014610b5f578063838f516514610b745780638717866814610be6578063874fe37014610c0f57806388968bc314610c3c5780638da5cb5b14610cae578063913dd84614610d0357806395d89b4114610d58578063979d6dc714610de6578063a4c8932214610e3b578063a5d68bfd14610e79578063a6f9dae114610ea2578063a82776dd14610ef3578063a9059cbb14610f40578063ba99d1a614610f9a578063bf6888c814610fc3578063c164091314610fec578063c71c0b4014611015578063cd72ab6914611042578063d4ee1d901461106b578063d5e9abfd146110c0578063d735fa2514611111578063dd62ed3e1461113a578063df4e79fa146111a6578063e7a95a7f146111cf578063f9f8bdb7146111f8578063ff41f5cc14611221575b6102f233611276565b50005b341561030057600080fd5b6103086117e9565b6040518082815260200191505060405180910390f35b341561032957600080fd5b6103316117f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610371578082015181840152602081019050610356565b50505050905090810190601f16801561039e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b757600080fd5b6103bf611829565b604051808215151515815260200191505060405180910390f35b34156103e457600080fd5b610419600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061183c565b604051808215151515815260200191505060405180910390f35b341561043e57600080fd5b610446611889565b6040518082815260200191505060405180910390f35b341561046757600080fd5b61046f61188f565b6040518082815260200191505060405180910390f35b341561049057600080fd5b610498611897565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104e557600080fd5b6104ed6118cb565b6040518082815260200191505060405180910390f35b341561050e57600080fd5b6105166118d2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561056357600080fd5b61056b6118ea565b6040518082815260200191505060405180910390f35b341561058c57600080fd5b6105946118f0565b6040518082815260200191505060405180910390f35b34156105b557600080fd5b6105bd6118f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561060a57600080fd5b61061261190c565b6040518082815260200191505060405180910390f35b341561063357600080fd5b61063b611912565b604051808215151515815260200191505060405180910390f35b341561066057600080fd5b6106b4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119f7565b604051808215151515815260200191505060405180910390f35b34156106d957600080fd5b6106e1611ba7565b6040518082815260200191505060405180910390f35b341561070257600080fd5b61070a611bae565b6040518082815260200191505060405180910390f35b341561072b57600080fd5b61077f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611bbb565b604051808215151515815260200191505060405180910390f35b34156107a457600080fd5b6107ac611d3b565b604051808260ff1660ff16815260200191505060405180910390f35b34156107d357600080fd5b6107db611d40565b6040518082815260200191505060405180910390f35b34156107fc57600080fd5b610804611d46565b604051808215151515815260200191505060405180910390f35b341561082957600080fd5b610831611e38565b6040518082815260200191505060405180910390f35b341561085257600080fd5b61085a611e3e565b6040518082815260200191505060405180910390f35b61089c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611276565b604051808215151515815260200191505060405180910390f35b34156108c157600080fd5b6108c9611e46565b6040518082815260200191505060405180910390f35b34156108ea57600080fd5b6108f2611e53565b604051808215151515815260200191505060405180910390f35b341561091757600080fd5b61091f611eda565b6040518082815260200191505060405180910390f35b341561094057600080fd5b610948611ee7565b604051808215151515815260200191505060405180910390f35b341561096d57600080fd5b610975611f28565b604051808215151515815260200191505060405180910390f35b341561099a57600080fd5b6109a2611f3b565b6040518082815260200191505060405180910390f35b34156109c357600080fd5b6109ef600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f41565b6040518082815260200191505060405180910390f35b3415610a1057600080fd5b610a18611f8a565b604051808215151515815260200191505060405180910390f35b3415610a3d57600080fd5b610aca600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506120f3565b604051808215151515815260200191505060405180910390f35b3415610aef57600080fd5b610af7612187565b6040518082815260200191505060405180910390f35b3415610b1857600080fd5b610b2061218d565b6040518082815260200191505060405180910390f35b3415610b4157600080fd5b610b4961219a565b6040518082815260200191505060405180910390f35b3415610b6a57600080fd5b610b726121a0565b005b3415610b7f57600080fd5b610bcc6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506124f3565b604051808215151515815260200191505060405180910390f35b3415610bf157600080fd5b610bf96128fa565b6040518082815260200191505060405180910390f35b3415610c1a57600080fd5b610c22612900565b604051808215151515815260200191505060405180910390f35b3415610c4757600080fd5b610c94600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612bce565b604051808215151515815260200191505060405180910390f35b3415610cb957600080fd5b610cc1612d3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d0e57600080fd5b610d16612d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d6357600080fd5b610d6b612d7d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dab578082015181840152602081019050610d90565b50505050905090810190601f168015610dd85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610df157600080fd5b610df9612db6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e4657600080fd5b610e5c6004808035906020019091905050612dce565b604051808381526020018281526020019250505060405180910390f35b3415610e8457600080fd5b610e8c612f2f565b6040518082815260200191505060405180910390f35b3415610ead57600080fd5b610ed9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612f35565b604051808215151515815260200191505060405180910390f35b3415610efe57600080fd5b610f2a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613020565b6040518082815260200191505060405180910390f35b3415610f4b57600080fd5b610f80600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613038565b604051808215151515815260200191505060405180910390f35b3415610fa557600080fd5b610fad61304d565b6040518082815260200191505060405180910390f35b3415610fce57600080fd5b610fd6613053565b6040518082815260200191505060405180910390f35b3415610ff757600080fd5b610fff613058565b6040518082815260200191505060405180910390f35b341561102057600080fd5b611028613075565b604051808215151515815260200191505060405180910390f35b341561104d57600080fd5b6110556130ab565b6040518082815260200191505060405180910390f35b341561107657600080fd5b61107e6130b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156110cb57600080fd5b6110f7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130d7565b604051808215151515815260200191505060405180910390f35b341561111c57600080fd5b6111246130f7565b6040518082815260200191505060405180910390f35b341561114557600080fd5b611190600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061310e565b6040518082815260200191505060405180910390f35b34156111b157600080fd5b6111b9613195565b6040518082815260200191505060405180910390f35b34156111da57600080fd5b6111e26131b5565b6040518082815260200191505060405180910390f35b341561120357600080fd5b61120b6131c2565b6040518082815260200191505060405180910390f35b341561122c57600080fd5b6112346132a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060009054906101000a900460ff1615151561129657600080fd5b61129e611ee7565b1515156112aa57600080fd5b600460019054906101000a900460ff161515156112c657600080fd5b6359fa6000421115156112d857600080fd5b622e24806359fa60000142111515156112f057600080fd5b6000341115156112ff57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a261135634612dce565b809250819350505060008211151561136d57600080fd5b60026305f5e100601260ff16600a0a0281151561138657fe5b048260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101515156113ea57600080fd5b60008114151561141057611409816007546132bc90919063ffffffff16565b6007819055505b6114768260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36115f0346006546132d590919063ffffffff16565b60068190555061164834600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680821ab0d4414980000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561172d5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117de576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f86df4d319dc8c05e5ca005438b3e8a4521a6ddfa127e5cfd589d8c3ead3935bc6001604051808215151515815260200191505060405180910390a25b600192505050919050565b62eff10081565b6040805190810160405280600d81526020017f487574333420456e74726f70790000000000000000000000000000000000000081525081565b600460019054906101000a900460ff1681565b60008060009054906101000a900460ff1615151561185957600080fd5b600460019054906101000a900460ff16151561187457600080fd5b61187e83836132ee565b506001905092915050565b60095481565b6305f5e10081565b7f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900481565b62bebc2081565b73da3780cff2ae3a59ae16ec1734deec77a7fd8db281565b60085481565b604381565b7265d506e475b5dbd76480bafa57fe7c41c783af81565b60015481565b60006009544211151561192457600080fd5b7f87281fabebb3053dede10cd89db97c95421a1fb9385cd5d0bb6cf8db8dd11ae76009546040518082815260200191505060405180910390a161197562eff1006009546132d590919063ffffffff16565b6009819055506119f27f48757433342056657374696e67000000000000000000000000000000000000006c010000000000000000000000009004733135f4aca3c1ad4758981500f8db20ebdc5a1cab600460646014601260ff16600a0a6305f5e10002028115156119e257fe5b048115156119ec57fe5b046133e0565b905090565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611a8457600080fd5b611b1382600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b9e8484846133e0565b90509392505050565b6222476481565b680821ab0d441498000081565b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1957600080fd5b6000809054906101000a900460ff16151515611c3457600080fd5b60016000806101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611cf957600080fd5b6102c65a03f11515611d0a57600080fd5b505050604051805190501515611d1f57600080fd5b600190506000806101000a81549060ff02191690559392505050565b601281565b61028c81565b60008060009054906101000a900460ff16151515611d6357600080fd5b600460019054906101000a900460ff16151515611d7f57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611de8575062127500622e24806359fa6000010142115b1515611df357600080fd5b600460006101000a81549060ff02191690557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a16001905090565b60075481565b6359fa600081565b622e24806359fa60000181565b6000611e5d61374d565b6001604051805910611e6c5750595b9080825280602002602001820160405250905033816000815181101515611e8f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ed4816124f3565b91505090565b68982af34be0697c000081565b6000600460009054906101000a900460ff161580611f235750622e24806359fa60000142118015611f22575068a2a15d09519be00000600654105b5b905090565b600460009054906101000a900460ff1681565b61020581565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fe857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2748503f8f31d8071821d1d5144384ba6a465036cda17fa1629a8a2509ccee0e60405160405180910390a3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001905090565b60008060008060009054906101000a900460ff1615151561211357600080fd5b8351855114151561212357600080fd5b84519150600090505b8181101561217b5761216d33868381518110151561214657fe5b90602001906020020151868481518110151561215e57fe5b906020019060200201516133e0565b50808060010191505061212c565b60019250505092915050565b6101f481565b68a2a15d09519be0000081565b61024c81565b6000809054906101000a900460ff161515156121bb57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561221757600080fd5b600460009054906101000a900460ff1615151561223357600080fd5b68982af34be0697c00006006540360085414151561225057600080fd5b6000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360007f48757433342056657374696e67000000000000000000000000000000000000006c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60646014601260ff16600a0a6305f5e100020281151561238d57fe5b046040518082815260200191505060405180910390a36000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef622247646040518082815260200191505060405180910390a360026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560026000736bf708ef2c1fdce3603c04ce9547aa6e134093b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000806000806000806000809054906101000a900460ff1615151561251757600080fd5b60016000806101000a81548160ff021916908315150217905550612539611ee7565b151561254457600080fd5b865193505b838510156128db57868581518110151561255f57fe5b906020019060200201519050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211156127725761265e8260026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b60026000733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055733135f4aca3c1ad4758981500f8db20ebdc5a1cab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b60008311156128ce57600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612822836008546132d590919063ffffffff16565b6008819055508073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398856040518082815260200191505060405180910390a38073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156128cd57600080fd5b5b8480600101955050612549565b600195506000806101000a81549060ff02191690555050505050919050565b61022181565b600080600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561295f57600080fd5b6000809054906101000a900460ff1615151561297a57600080fd5b60016000806101000a81548160ff02191690831515021790555061299c613075565b15156129a757600080fd5b600460019054906101000a900460ff1615156129ca5762eff10042016009819055505b6001600460016101000a81548160ff0219169083151502179055506129ed613488565b90507265d506e475b5dbd76480bafa57fe7c41c783af73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398836040518082815260200191505060405180910390a37265d506e475b5dbd76480bafa57fe7c41c783af73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515612aba57600080fd5b73a70d04dc4a64960c40cd2ed2cde36d76ca4edfab73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63983073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a373a70d04dc4a64960c40cd2ed2cde36d76ca4edfab73ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515612bb557600080fd5b600191506000806101000a81549060ff02191690555090565b60008060008060009054906101000a900460ff16151515612bee57600080fd5b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4a57600080fd5b835191505b81811015612d3457600b60008583815181101515612c6957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558381815181101515612ccb57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f86df4d319dc8c05e5ca005438b3e8a4521a6ddfa127e5cfd589d8c3ead3935bc6000604051808215151515815260200191505060405180910390a28080600101915050612c4f565b600192505050919050565b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b736bf708ef2c1fdce3603c04ce9547aa6e134093b681565b6040805190810160405280600381526020017f454e54000000000000000000000000000000000000000000000000000000000081525081565b73a70d04dc4a64960c40cd2ed2cde36d76ca4edfab81565b6000806000806000612dde6130f7565b9250612de8611ee7565b612e5f57600460019054906101000a900460ff16612e57576359fa60004210612e4f57622e24806359fa6000014211612e4757680821ab0d44149800008610612e3f57828610612e385782612e3a565b855b612e42565b60005b612e4a565b60005b612e52565b60005b612e5a565b60005b612e62565b60005b9150612eac670de0b6b3a7640000612e9e601260ff16600a0a612e906103e88761350090919063ffffffff16565b61350090919063ffffffff16565b61352e90919063ffffffff16565b9350612ec182876132bc90919063ffffffff16565b9550612ecb6131c2565b9050612f2584612f17670de0b6b3a7640000612f09601260ff16600a0a612efb878d61350090919063ffffffff16565b61350090919063ffffffff16565b61352e90919063ffffffff16565b6132d590919063ffffffff16565b9450505050915091565b6103e881565b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f9357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fbc48fdaddfcfb54d36a0ac4d7e52f46cdf854784b9c0978d385a35e8383262d460405160405180910390a281600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a6020528060005260406000206000915090505481565b60006130453384846133e0565b905092915050565b6102ee81565b601481565b60026305f5e100601260ff16600a0a0281151561307157fe5b0481565b600061307f611ee7565b158015613097575068a2a15d09519be0000060065410155b80156130a657506359fa600042115b905090565b60065481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60006103e860075481151561310857fe5b04905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60646014601260ff16600a0a6305f5e10002028115156131b157fe5b0481565b680821ab0d441498000081565b60006131cc611ee7565b61329c57600460019054906101000a900460ff16613294576359fa6000421061328c57620151806359fa60000142106132835762093a806359fa600001421061327a57621275006359fa600001421061327157621baf806359fa6000014210613268576224ea006359fa600001421061325f57622e24806359fa600001421061325657600061325a565b6101f45b613263565b6102055b61326c565b6102215b613275565b61024c5b61327e565b61028c5b613287565b6102ee5b61328f565b60005b613297565b60005b61329f565b60005b905090565b733135f4aca3c1ad4758981500f8db20ebdc5a1cab81565b600081830390508281111515156132cf57fe5b92915050565b600081830190508281101515156132e857fe5b92915050565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060009054906101000a900460ff161515156133fd57600080fd5b600460019054906101000a900460ff16151561341857600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561347157600080fd5b61347c848484613550565b50600190509392505050565b600080604368982af34be0697c00003073ffffffffffffffffffffffffffffffffffffffff1631018115156134b957fe5b0490503073ffffffffffffffffffffffffffffffffffffffff16318111156134f8573073ffffffffffffffffffffffffffffffffffffffff16316134fa565b805b91505090565b600081830290506000831480613520575081838281151561351d57fe5b04145b151561352857fe5b92915050565b600080821415151561353c57fe5b818381151561354757fe5b04905092915050565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156135a057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360008214156136175760019050613746565b61366982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136fe82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132d590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b9392505050565b6020604051908101604052806000815250905600a165627a7a7230582007db8adb2c78cab9239e31a5e8c86280e5828125d6954cc7431c1a7399950bfe0029
Swarm Source
bzzr://07db8adb2c78cab9239e31a5e8c86280e5828125d6954cc7431c1a7399950bfe
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.