Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
761,345,650.471980483423256292 RBM
Holders
324
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:
RobomedIco
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-10-24 */ pragma solidity ^0.4.11; /** * @title Math * @dev Assorted math operations y */ library Math { function max64(uint64 a, uint64 b) internal pure returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal pure returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) constant public returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) constant public returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC223 { uint public totalSupply; function balanceOf(address who) constant public returns (uint); function name() constant public returns (string _name); function symbol() constant public returns (string _symbol); function decimals() constant public returns (uint8 _decimals); function totalSupply() constant public returns (uint256 _supply); function transfer(address to, uint value) public returns (bool ok); function transfer(address to, uint value, bytes data) public returns (bool ok); event Transfer(address indexed from, address indexed to, uint value, bytes indexed data); } /* * Contract that is working with ERC223 tokens */ contract ContractReceiver { string public functionName; address public sender; uint public value; bytes public data; function tokenFallback(address _from, uint _value, bytes _data) public { sender = _from; value = _value; data = _data; functionName = "tokenFallback"; //uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24); //tkn.sig = bytes4(u); /* tkn variable is analogue of msg variable of Ether transaction * tkn.sender is person who initiated this token transaction (analogue of msg.sender) * tkn.value the number of tokens that were sent (analogue of msg.value) * tkn.data is data of token transaction (analogue of msg.data) * tkn.sig is 4 bytes signature of function * if data of token transaction is a function execution */ } function customFallback(address _from, uint _value, bytes _data) public { tokenFallback(_from, _value, _data); functionName = "customFallback"; } } contract RobomedIco is ERC223, ERC20 { using SafeMath for uint256; string public name = "RobomedToken"; string public symbol = "RBM"; uint8 public decimals = 18; //addresses /* * ADDR_OWNER - владелец контракта - распределяет вип токены, начисляет баунти и team, осуществляет переход по стадиям */ address public constant ADDR_OWNER = 0x21F6C4D926B705aD244Ec33271559dA8c562400F; /* * ADDR_WITHDRAWAL1, ADDR_WITHDRAWAL2 - участники контракта, которые совместно выводят eth после наступления PostIco */ address public constant ADDR_WITHDRAWAL1 = 0x0dD97e6259a7de196461B36B028456a97e3268bE; /* * ADDR_WITHDRAWAL1, ADDR_WITHDRAWAL2 - участники контракта, которые совместно выводят eth после наступления PostIco */ address public constant ADDR_WITHDRAWAL2 = 0x8c5B02144F7664D37FDfd4a2f90148d08A04838D; /** * Адрес на который кладуться токены для раздачи по Baunty */ address public constant ADDR_BOUNTY_TOKENS_ACCOUNT = 0x6542393623Db0D7F27fDEd83e6feDBD767BfF9b4; /** * Адрес на который кладуться токены для раздачи Team */ address public constant ADDR_TEAM_TOKENS_ACCOUNT = 0x28c6bCAB2204CEd29677fEE6607E872E3c40d783; //VipPlacement constants /** * Количество токенов для стадии VipPlacement */ uint256 public constant INITIAL_COINS_FOR_VIPPLACEMENT =507937500 * 10 ** 18; /** * Длительность стадии VipPlacement */ uint256 public constant DURATION_VIPPLACEMENT = 1 seconds;// 1 minutes;// 1 days; //end VipPlacement constants //PreSale constants /** * Количество токенов для стадии PreSale */ uint256 public constant EMISSION_FOR_PRESALE = 76212500 * 10 ** 18; /** * Длительность стадии PreSale */ uint256 public constant DURATION_PRESALE = 1 days;//2 minutes;//1 days; /** * Курс стадии PreSale */ uint256 public constant RATE_PRESALE = 2702; //end PreSale constants //SaleStage1 constants /** * Общая длительность стадий Sale с SaleStage1 по SaleStage7 включительно */ uint256 public constant DURATION_SALESTAGES = 10 days; //2 minutes;//30 days; /** * Курс стадии SaleStage1 */ uint256 public constant RATE_SALESTAGE1 = 2536; /** * Эмиссия токенов для стадии SaleStage1 */ uint256 public constant EMISSION_FOR_SALESTAGE1 = 40835000 * 10 ** 18; //end SaleStage1 constants //SaleStage2 constants /** * Курс стадии SaleStage2 */ uint256 public constant RATE_SALESTAGE2 = 2473; /** * Эмиссия токенов для стадии SaleStage2 */ uint256 public constant EMISSION_FOR_SALESTAGE2 = 40835000 * 10 ** 18; //end SaleStage2 constants //SaleStage3 constants /** * Курс стадии SaleStage3 */ uint256 public constant RATE_SALESTAGE3 = 2390; /** * Эмиссия токенов для стадии SaleStage3 */ uint256 public constant EMISSION_FOR_SALESTAGE3 = 40835000 * 10 ** 18; //end SaleStage3 constants //SaleStage4 constants /** * Курс стадии SaleStage4 */ uint256 public constant RATE_SALESTAGE4 = 2349; /** * Эмиссия токенов для стадии SaleStage4 */ uint256 public constant EMISSION_FOR_SALESTAGE4 = 40835000 * 10 ** 18; //end SaleStage4 constants //SaleStage5 constants /** * Курс стадии SaleStage5 */ uint256 public constant RATE_SALESTAGE5 = 2286; /** * Эмиссия токенов для стадии SaleStage5 */ uint256 public constant EMISSION_FOR_SALESTAGE5 = 40835000 * 10 ** 18; //end SaleStage5 constants //SaleStage6 constants /** * Курс стадии SaleStage6 */ uint256 public constant RATE_SALESTAGE6 = 2224; /** * Эмиссия токенов для стадии SaleStage6 */ uint256 public constant EMISSION_FOR_SALESTAGE6 = 40835000 * 10 ** 18; //end SaleStage6 constants //SaleStage7 constants /** * Курс стадии SaleStage7 */ uint256 public constant RATE_SALESTAGE7 = 2182; /** * Эмиссия токенов для стадии SaleStage7 */ uint256 public constant EMISSION_FOR_SALESTAGE7 = 40835000 * 10 ** 18; //end SaleStage7 constants //SaleStageLast constants /** * Длительность стадии SaleStageLast */ uint256 public constant DURATION_SALESTAGELAST = 1 days;// 20 minutes;//10 days; /** * Курс стадии SaleStageLast */ uint256 public constant RATE_SALESTAGELAST = 2078; /** * Эмиссия токенов для стадии SaleStageLast */ uint256 public constant EMISSION_FOR_SALESTAGELAST = 302505000 * 10 ** 18; //end SaleStageLast constants //PostIco constants /** * Длительность периода на который нельзя использовать team токены, полученные при распределении */ uint256 public constant DURATION_NONUSETEAM = 180 days;//10 days; /** * Длительность периода на который нельзя восстановить нераспроданные unsoldTokens токены, * отсчитывается после наступления PostIco */ uint256 public constant DURATION_BEFORE_RESTORE_UNSOLD = 270 days; //end PostIco constants /** * Эмиссия токенов для BOUNTY */ uint256 public constant EMISSION_FOR_BOUNTY = 83750000 * 10 ** 18; /** * Эмиссия токенов для TEAM */ uint256 public constant EMISSION_FOR_TEAM = 418750000 * 10 ** 18; /** * Кол-во токенов, которое будет начислено каждому участнику команды */ uint256 public constant TEAM_MEMBER_VAL = 2000000 * 10 ** 18; /** * Перечисление состояний контракта */ enum IcoStates { /** * Состояние для которого выполняется заданная эмиссия на кошелёк владельца, * далее все выпущенные токены распределяются владельцем из своего кошелька на произвольные кошельки, распределение может происходить всегда. * Владелец не может распределить из своего кошелька, количество превышающее INITIAL_COINS_FOR_VIPPLACEMENT до прекращения ICO * Состояние завершается по наступлению времени endDateOfVipPlacement */ VipPlacement, /** * Состояние для которого выполняется заданная эмиссия в свободный пул freeMoney. * далее все выпущенные свободные токены покупаются всеми желающими вплоть до endDateOfPreSale, * не выкупленные токены будут уничтожены * Состояние завершается по наступлению времени endDateOfPreSale. * С момента наступления PreSale покупка токенов становиться разрешена */ PreSale, /** * Состояние представляющее из себя подстадию продаж, * при наступлении данного состояния выпускается заданное количество токенов, * количество свободных токенов приравнивается к этой эмиссии * Состояние завершается при выкупе всех свободных токенов или по наступлению времени startDateOfSaleStageLast. * Если выкупаются все свободные токены - переход осуществляется на следующую стадию - * например [с SaleStage1 на SaleStage2] или [с SaleStage2 на SaleStage3] * Если наступает время startDateOfSaleStageLast, то независимо от выкупленных токенов переходим на стостояние SaleStageLast */ SaleStage1, /** * Аналогично SaleStage1 */ SaleStage2, /** * Аналогично SaleStage1 */ SaleStage3, /** * Аналогично SaleStage1 */ SaleStage4, /** * Аналогично SaleStage1 */ SaleStage5, /** * Аналогично SaleStage1 */ SaleStage6, /** * Аналогично SaleStage1 */ SaleStage7, /** * Состояние представляющее из себя последнюю подстадию продаж, * при наступлении данного состояния выпускается заданное количество токенов, * количество свободных токенов приравнивается к этой эмиссии, * плюс остатки нераспроданных токенов со стадий SaleStage1,SaleStage2,SaleStage3,SaleStage4,SaleStage5,SaleStage6,SaleStage7 * Состояние завершается по наступлению времени endDateOfSaleStageLast. */ SaleStageLast, /** * Состояние наступающее после завершения Ico, * при наступлении данного состояния свободные токены сохраняются в unsoldTokens, * также происходит бонусное распределение дополнительных токенов Bounty и Team, * С момента наступления PostIco покупка токенов невозможна */ PostIco } /** * Здесь храним балансы токенов */ mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; /** * Здесь храним начисленные премиальные токены, могут быть выведены на кошелёк начиная с даты startDateOfUseTeamTokens */ mapping (address => uint256) teamBalances; /** * Владелец контракта - распределяет вип токены, начисляет баунти и team, осуществляет переход по стадиям, */ address public owner; /** * Участник контракта - выводит eth после наступления PostIco, совместно с withdrawal2 */ address public withdrawal1; /** * Участник контракта - только при его участии может быть выведены eth после наступления PostIco, совместно с withdrawal1 */ address public withdrawal2; /** * Адрес на счёте которого находятся нераспределённые bounty токены */ address public bountyTokensAccount; /** * Адрес на счёте которого находятся нераспределённые team токены */ address public teamTokensAccount; /** *Адрес на который инициирован вывод eth (владельцем) */ address public withdrawalTo; /** * Количество eth который предполагается выводить на адрес withdrawalTo */ uint256 public withdrawalValue; /** * Количество нераспределённых токенов bounty * */ uint256 public bountyTokensNotDistributed; /** * Количество нераспределённых токенов team * */ uint256 public teamTokensNotDistributed; /** * Текущее состояние */ IcoStates public currentState; /** * Количество собранного эфира */ uint256 public totalBalance; /** * Количество свободных токенов (никто ими не владеет) */ uint256 public freeMoney = 0; /** * Общее количество выпущенных токенов * */ uint256 public totalSupply = 0; /** * Общее количество купленных токенов * */ uint256 public totalBought = 0; /** * Количество не распределённых токенов от стадии VipPlacement */ uint256 public vipPlacementNotDistributed; /** * Дата окончания стадии VipPlacement */ uint256 public endDateOfVipPlacement; /** * Дата окончания стадии PreSale */ uint256 public endDateOfPreSale = 0; /** * Дата начала стадии SaleStageLast */ uint256 public startDateOfSaleStageLast; /** * Дата окончания стадии SaleStageLast */ uint256 public endDateOfSaleStageLast = 0; /** * Остаток нераспроданных токенов для состояний с SaleStage1 по SaleStage7, которые переходят в свободные на момент наступления SaleStageLast */ uint256 public remForSalesBeforeStageLast = 0; /** * Дата, начиная с которой можно получить team токены непосредственно на кошелёк */ uint256 public startDateOfUseTeamTokens = 0; /** * Дата, начиная с которой можно восстановить-перевести нераспроданные токены unsoldTokens */ uint256 public startDateOfRestoreUnsoldTokens = 0; /** * Количество нераспроданных токенов на момент наступления PostIco */ uint256 public unsoldTokens = 0; /** * How many token units a buyer gets per wei */ uint256 public rate = 0; /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Throws if called by any account other than the withdrawal1. */ modifier onlyWithdrawal1() { require(msg.sender == withdrawal1); _; } /** * @dev Throws if called by any account other than the withdrawal2. */ modifier onlyWithdrawal2() { require(msg.sender == withdrawal2); _; } /** * Модификатор позволяющий выполнять вызов, * только если состояние PostIco или выше */ modifier afterIco() { require(uint(currentState) >= uint(IcoStates.PostIco)); _; } /** * Модификатор проверяющий допустимость операций transfer */ modifier checkForTransfer(address _from, address _to, uint256 _value) { //проверяем размер перевода require(_value > 0); //проверяем кошелёк назначения require(_to != 0x0 && _to != _from); //на стадиях перед ico переводить может только владелец require(currentState == IcoStates.PostIco || _from == owner); //операции на bounty и team не допустимы до окончания ico require(currentState == IcoStates.PostIco || (_to != bountyTokensAccount && _to != teamTokensAccount)); _; } /** * Событие изменения состояния контракта */ event StateChanged(IcoStates state); /** * Событие покупки токенов */ event Buy(address beneficiary, uint256 boughtTokens, uint256 ethValue); /** * @dev Конструктор */ function RobomedIco() public { //проверяем, что все указанные адреса не равны 0, также они отличаются от создающего контракт //по сути контракт создаёт некое 3-ее лицо не имеющее в дальнейшем ни каких особенных прав //так же действует условие что все перичисленные адреса разные (нельзя быть одновременно владельцем и кошельком для токенов - например) require(ADDR_OWNER != 0x0 && ADDR_OWNER != msg.sender); require(ADDR_WITHDRAWAL1 != 0x0 && ADDR_WITHDRAWAL1 != msg.sender); require(ADDR_WITHDRAWAL2 != 0x0 && ADDR_WITHDRAWAL2 != msg.sender); require(ADDR_BOUNTY_TOKENS_ACCOUNT != 0x0 && ADDR_BOUNTY_TOKENS_ACCOUNT != msg.sender); require(ADDR_TEAM_TOKENS_ACCOUNT != 0x0 && ADDR_TEAM_TOKENS_ACCOUNT != msg.sender); require(ADDR_BOUNTY_TOKENS_ACCOUNT != ADDR_TEAM_TOKENS_ACCOUNT); require(ADDR_OWNER != ADDR_TEAM_TOKENS_ACCOUNT); require(ADDR_OWNER != ADDR_BOUNTY_TOKENS_ACCOUNT); require(ADDR_WITHDRAWAL1 != ADDR_OWNER); require(ADDR_WITHDRAWAL1 != ADDR_BOUNTY_TOKENS_ACCOUNT); require(ADDR_WITHDRAWAL1 != ADDR_TEAM_TOKENS_ACCOUNT); require(ADDR_WITHDRAWAL2 != ADDR_OWNER); require(ADDR_WITHDRAWAL2 != ADDR_BOUNTY_TOKENS_ACCOUNT); require(ADDR_WITHDRAWAL2 != ADDR_TEAM_TOKENS_ACCOUNT); require(ADDR_WITHDRAWAL2 != ADDR_WITHDRAWAL1); //выставляем адреса //test owner = ADDR_OWNER; withdrawal1 = ADDR_WITHDRAWAL1; withdrawal2 = ADDR_WITHDRAWAL2; bountyTokensAccount = ADDR_BOUNTY_TOKENS_ACCOUNT; teamTokensAccount = ADDR_TEAM_TOKENS_ACCOUNT; //устанавливаем начальное значение на предопределённых аккаунтах balances[owner] = INITIAL_COINS_FOR_VIPPLACEMENT; balances[bountyTokensAccount] = EMISSION_FOR_BOUNTY; balances[teamTokensAccount] = EMISSION_FOR_TEAM; //нераспределённые токены bountyTokensNotDistributed = EMISSION_FOR_BOUNTY; teamTokensNotDistributed = EMISSION_FOR_TEAM; vipPlacementNotDistributed = INITIAL_COINS_FOR_VIPPLACEMENT; currentState = IcoStates.VipPlacement; totalSupply = INITIAL_COINS_FOR_VIPPLACEMENT + EMISSION_FOR_BOUNTY + EMISSION_FOR_TEAM; endDateOfVipPlacement = now.add(DURATION_VIPPLACEMENT); remForSalesBeforeStageLast = 0; //set team for members owner = msg.sender; //ildar transferTeam(0xa19DC4c158169bC45b17594d3F15e4dCb36CC3A3, TEAM_MEMBER_VAL); //vova transferTeam(0xdf66490Fe9F2ada51967F71d6B5e26A9D77065ED, TEAM_MEMBER_VAL); //kirill transferTeam(0xf0215C6A553AD8E155Da69B2657BeaBC51d187c5, TEAM_MEMBER_VAL); //evg transferTeam(0x6c1666d388302385AE5c62993824967a097F14bC, TEAM_MEMBER_VAL); //igor transferTeam(0x82D550dC74f8B70B202aB5b63DAbe75E6F00fb36, TEAM_MEMBER_VAL); owner = ADDR_OWNER; } /** * Function to access name of token . */ function name() public constant returns (string) { return name; } /** * Function to access symbol of token . */ function symbol() public constant returns (string) { return symbol; } /** * Function to access decimals of token . */ function decimals() public constant returns (uint8) { return decimals; } /** * Function to access total supply of tokens . */ function totalSupply() public constant returns (uint256) { return totalSupply; } /** * Метод получающий количество начисленных премиальных токенов */ function teamBalanceOf(address _owner) public constant returns (uint256){ return teamBalances[_owner]; } /** * Метод зачисляющий предварительно распределённые team токены на кошелёк */ function accrueTeamTokens() public afterIco { //зачисление возможно только после определённой даты require(startDateOfUseTeamTokens <= now); //добавляем в общее количество выпущенных totalSupply = totalSupply.add(teamBalances[msg.sender]); //зачисляем на кошелёк и обнуляем не начисленные balances[msg.sender] = balances[msg.sender].add(teamBalances[msg.sender]); teamBalances[msg.sender] = 0; } /** * Метод проверяющий возможность восстановления нераспроданных токенов */ function canRestoreUnsoldTokens() public constant returns (bool) { //восстановление возможно только после ico if (currentState != IcoStates.PostIco) return false; //восстановление возможно только после определённой даты if (startDateOfRestoreUnsoldTokens > now) return false; //восстановление возможно только если есть что восстанавливать if (unsoldTokens == 0) return false; return true; } /** * Метод выполняющий восстановление нераспроданных токенов */ function restoreUnsoldTokens(address _to) public onlyOwner { require(_to != 0x0); require(canRestoreUnsoldTokens()); balances[_to] = balances[_to].add(unsoldTokens); totalSupply = totalSupply.add(unsoldTokens); unsoldTokens = 0; } /** * Метод переводящий контракт в следующее доступное состояние, * Для выяснения возможности перехода можно использовать метод canGotoState */ function gotoNextState() public onlyOwner returns (bool) { if (gotoPreSale() || gotoSaleStage1() || gotoSaleStageLast() || gotoPostIco()) { return true; } return false; } /** * Инициация снятия эфира на указанный кошелёк */ function initWithdrawal(address _to, uint256 _value) public afterIco onlyWithdrawal1 { withdrawalTo = _to; withdrawalValue = _value; } /** * Подтверждение снятия эфира на указанный кошелёк */ function approveWithdrawal(address _to, uint256 _value) public afterIco onlyWithdrawal2 { require(_to != 0x0 && _value > 0); require(_to == withdrawalTo); require(_value == withdrawalValue); totalBalance = totalBalance.sub(_value); withdrawalTo.transfer(_value); withdrawalTo = 0x0; withdrawalValue = 0; } /** * Метод проверяющий возможность перехода в указанное состояние */ function canGotoState(IcoStates toState) public constant returns (bool){ if (toState == IcoStates.PreSale) { return (currentState == IcoStates.VipPlacement && endDateOfVipPlacement <= now); } else if (toState == IcoStates.SaleStage1) { return (currentState == IcoStates.PreSale && endDateOfPreSale <= now); } else if (toState == IcoStates.SaleStage2) { return (currentState == IcoStates.SaleStage1 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStage3) { return (currentState == IcoStates.SaleStage2 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStage4) { return (currentState == IcoStates.SaleStage3 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStage5) { return (currentState == IcoStates.SaleStage4 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStage6) { return (currentState == IcoStates.SaleStage5 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStage7) { return (currentState == IcoStates.SaleStage6 && freeMoney == 0 && startDateOfSaleStageLast > now); } else if (toState == IcoStates.SaleStageLast) { //переход на состояние SaleStageLast возможен только из состояний SaleStages if ( currentState != IcoStates.SaleStage1 && currentState != IcoStates.SaleStage2 && currentState != IcoStates.SaleStage3 && currentState != IcoStates.SaleStage4 && currentState != IcoStates.SaleStage5 && currentState != IcoStates.SaleStage6 && currentState != IcoStates.SaleStage7) return false; //переход осуществляется если на состоянии SaleStage7 не осталось свободных токенов //или на одном из состояний SaleStages наступило время startDateOfSaleStageLast if (!(currentState == IcoStates.SaleStage7 && freeMoney == 0) && startDateOfSaleStageLast > now) { return false; } return true; } else if (toState == IcoStates.PostIco) { return (currentState == IcoStates.SaleStageLast && endDateOfSaleStageLast <= now); } } /** * Fallback функция - из неё по сути просто происходит вызов покупки токенов для отправителя */ function() public payable { buyTokens(msg.sender); } /** * Метод покупки токенов */ function buyTokens(address beneficiary) public payable { require(beneficiary != 0x0); require(msg.value != 0); //нельзя покупать на токены bounty и team require(beneficiary != bountyTokensAccount && beneficiary != teamTokensAccount); //выставляем остаток средств //в процессе покупки будем его уменьшать на каждой итерации - итерация - покупка токенов на определённой стадии //суть - если покупающий переводит количество эфира, //большее чем возможное количество свободных токенов на определённой стадии, //то выполняется переход на следующую стадию (курс тоже меняется) //и на остаток идёт покупка на новой стадии и т.д. //если же в процессе покупке все свободные токены израсходуются (со всех допустимых стадий) //будет выкинуто исключение uint256 remVal = msg.value; //увеличиваем количество эфира пришедшего к нам totalBalance = totalBalance.add(msg.value); //общее количество токенов которые купили за этот вызов uint256 boughtTokens = 0; while (remVal > 0) { //покупать токены можно только на указанных стадиях require( currentState != IcoStates.VipPlacement && currentState != IcoStates.PostIco); //выполняем покупку для вызывающего //смотрим, есть ли у нас такое количество свободных токенов на текущей стадии uint256 tokens = remVal.mul(rate); if (tokens > freeMoney) { remVal = remVal.sub(freeMoney.div(rate)); tokens = freeMoney; } else { remVal = 0; //если остаток свободных токенов меньше чем курс - отдаём их покупателю uint256 remFreeTokens = freeMoney.sub(tokens); if (0 < remFreeTokens && remFreeTokens < rate) { tokens = freeMoney; } } assert(tokens > 0); freeMoney = freeMoney.sub(tokens); totalBought = totalBought.add(tokens); balances[beneficiary] = balances[beneficiary].add(tokens); boughtTokens = boughtTokens.add(tokens); //если покупка была выполнена на любой из стадий Sale кроме последней if ( uint(currentState) >= uint(IcoStates.SaleStage1) && uint(currentState) <= uint(IcoStates.SaleStage7)) { //уменьшаем количество остатка по токенам которые необходимо продать на этих стадиях remForSalesBeforeStageLast = remForSalesBeforeStageLast.sub(tokens); //пробуем перейти между SaleStages transitionBetweenSaleStages(); } } Buy(beneficiary, boughtTokens, msg.value); } /** * Метод выполняющий выдачу баунти-токенов на указанный адрес */ function transferBounty(address _to, uint256 _value) public onlyOwner { //проверяем кошелёк назначения require(_to != 0x0 && _to != msg.sender); //уменьшаем количество нераспределённых bountyTokensNotDistributed = bountyTokensNotDistributed.sub(_value); //переводим с акаунта баунти на акаунт назначения balances[_to] = balances[_to].add(_value); balances[bountyTokensAccount] = balances[bountyTokensAccount].sub(_value); Transfer(bountyTokensAccount, _to, _value); } /** * Метод выполняющий выдачу баунти-токенов на указанный адрес */ function transferTeam(address _to, uint256 _value) public onlyOwner { //проверяем кошелёк назначения require(_to != 0x0 && _to != msg.sender); //уменьшаем количество нераспределённых teamTokensNotDistributed = teamTokensNotDistributed.sub(_value); //переводим с акаунта team на team акаунт назначения teamBalances[_to] = teamBalances[_to].add(_value); balances[teamTokensAccount] = balances[teamTokensAccount].sub(_value); //убираем токены из общего количества выпущенных totalSupply = totalSupply.sub(_value); } /** * Function that is called when a user or another contract wants to transfer funds . */ function transfer(address _to, uint _value, bytes _data) checkForTransfer(msg.sender, _to, _value) public returns (bool) { if (isContract(_to)) { return transferToContract(_to, _value, _data); } else { return transferToAddress(_to, _value, _data); } } /** * @dev transfer token for a specified address * Standard function transfer similar to ERC20 transfer with no _data . * Added due to backwards compatibility reasons . * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint _value) checkForTransfer(msg.sender, _to, _value) public returns (bool) { //standard function transfer similar to ERC20 transfer with no _data //added due to backwards compatibility reasons bytes memory empty; if (isContract(_to)) { return transferToContract(_to, _value, empty); } else { return transferToAddress(_to, _value, empty); } } /** * assemble the given address bytecode. If bytecode exists then the _addr is a contract. */ function isContract(address _addr) private view returns (bool) { uint length; assembly { //retrieve the size of the code on target address, this needs assembly length := extcodesize(_addr) } return (length > 0); } /** * function that is called when transaction target is an address */ function transferToAddress(address _to, uint _value, bytes _data) private returns (bool) { _transfer(msg.sender, _to, _value); Transfer(msg.sender, _to, _value, _data); return true; } /** * function that is called when transaction target is a contract */ function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) { _transfer(msg.sender, _to, _value); ContractReceiver receiver = ContractReceiver(_to); receiver.tokenFallback(msg.sender, _value, _data); Transfer(msg.sender, _to, _value, _data); return true; } function _transfer(address _from, address _to, uint _value) private { require(balances[_from] >= _value); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); if (currentState != IcoStates.PostIco) { //общая сумма переводов от владельца (до завершения) ico не может превышать InitialCoinsFor_VipPlacement vipPlacementNotDistributed = vipPlacementNotDistributed.sub(_value); } } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amout of tokens to be transfered */ function transferFrom(address _from, address _to, uint256 _value) public afterIco returns (bool) { var _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_to] = balances[_to].add(_value); balances[_from] = balances[_from].sub(_value); allowed[_from][msg.sender] = _allowance.sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public afterIco returns (bool) { // To change the approve amount you first have to reduce the addresses` // allowance to zero by calling `approve(_spender, 0)` if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifing the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } /** * Вспомогательный метод выставляющий количество свободных токенов, рейт и добавляющий количество эмитированных */ function setMoney(uint256 _freeMoney, uint256 _emission, uint256 _rate) private { freeMoney = _freeMoney; totalSupply = totalSupply.add(_emission); rate = _rate; } /** * Метод переводящий контракт в состояние PreSale */ function gotoPreSale() private returns (bool) { //проверяем возможность перехода if (!canGotoState(IcoStates.PreSale)) return false; //да нужно переходить //переходим в PreSale currentState = IcoStates.PreSale; //выставляем состояние токенов setMoney(EMISSION_FOR_PRESALE, EMISSION_FOR_PRESALE, RATE_PRESALE); //устанавливаем дату окончания PreSale endDateOfPreSale = now.add(DURATION_PRESALE); //разим событие изменения состояния StateChanged(IcoStates.PreSale); return true; } /** * Метод переводящий контракт в состояние SaleStage1 */ function gotoSaleStage1() private returns (bool) { //проверяем возможность перехода if (!canGotoState(IcoStates.SaleStage1)) return false; //да нужно переходить //переходим в SaleStage1 currentState = IcoStates.SaleStage1; //непроданные токены сгорают totalSupply = totalSupply.sub(freeMoney); //выставляем состояние токенов setMoney(EMISSION_FOR_SALESTAGE1, EMISSION_FOR_SALESTAGE1, RATE_SALESTAGE1); //определяем количество токенов которое можно продать на всех стадиях Sale кроме последней remForSalesBeforeStageLast = EMISSION_FOR_SALESTAGE1 + EMISSION_FOR_SALESTAGE2 + EMISSION_FOR_SALESTAGE3 + EMISSION_FOR_SALESTAGE4 + EMISSION_FOR_SALESTAGE5 + EMISSION_FOR_SALESTAGE6 + EMISSION_FOR_SALESTAGE7; //устанавливаем дату начала последней стадии продаж startDateOfSaleStageLast = now.add(DURATION_SALESTAGES); //разим событие изменения состояния StateChanged(IcoStates.SaleStage1); return true; } /** * Метод выполняющий переход между состояниями Sale */ function transitionBetweenSaleStages() private { //переход между состояниями SaleStages возможен только если находимся в одном из них, кроме последнего if ( currentState != IcoStates.SaleStage1 && currentState != IcoStates.SaleStage2 && currentState != IcoStates.SaleStage3 && currentState != IcoStates.SaleStage4 && currentState != IcoStates.SaleStage5 && currentState != IcoStates.SaleStage6 && currentState != IcoStates.SaleStage7) return; //если есть возможность сразу переходим в состояние StageLast if (gotoSaleStageLast()) { return; } //смотрим в какое состояние можем перейти и выполняем переход if (canGotoState(IcoStates.SaleStage2)) { currentState = IcoStates.SaleStage2; setMoney(EMISSION_FOR_SALESTAGE2, EMISSION_FOR_SALESTAGE2, RATE_SALESTAGE2); StateChanged(IcoStates.SaleStage2); } else if (canGotoState(IcoStates.SaleStage3)) { currentState = IcoStates.SaleStage3; setMoney(EMISSION_FOR_SALESTAGE3, EMISSION_FOR_SALESTAGE3, RATE_SALESTAGE3); StateChanged(IcoStates.SaleStage3); } else if (canGotoState(IcoStates.SaleStage4)) { currentState = IcoStates.SaleStage4; setMoney(EMISSION_FOR_SALESTAGE4, EMISSION_FOR_SALESTAGE4, RATE_SALESTAGE4); StateChanged(IcoStates.SaleStage4); } else if (canGotoState(IcoStates.SaleStage5)) { currentState = IcoStates.SaleStage5; setMoney(EMISSION_FOR_SALESTAGE5, EMISSION_FOR_SALESTAGE5, RATE_SALESTAGE5); StateChanged(IcoStates.SaleStage5); } else if (canGotoState(IcoStates.SaleStage6)) { currentState = IcoStates.SaleStage6; setMoney(EMISSION_FOR_SALESTAGE6, EMISSION_FOR_SALESTAGE6, RATE_SALESTAGE6); StateChanged(IcoStates.SaleStage6); } else if (canGotoState(IcoStates.SaleStage7)) { currentState = IcoStates.SaleStage7; setMoney(EMISSION_FOR_SALESTAGE7, EMISSION_FOR_SALESTAGE7, RATE_SALESTAGE7); StateChanged(IcoStates.SaleStage7); } } /** * Метод переводящий контракт в состояние SaleStageLast */ function gotoSaleStageLast() private returns (bool) { if (!canGotoState(IcoStates.SaleStageLast)) return false; //ок переходим на состояние SaleStageLast currentState = IcoStates.SaleStageLast; //выставляем состояние токенов, с учётом всех остатков setMoney(remForSalesBeforeStageLast + EMISSION_FOR_SALESTAGELAST, EMISSION_FOR_SALESTAGELAST, RATE_SALESTAGELAST); //устанавливаем дату окончания SaleStageLast endDateOfSaleStageLast = now.add(DURATION_SALESTAGELAST); StateChanged(IcoStates.SaleStageLast); return true; } /** * Метод переводящий контракт в состояние PostIco */ function gotoPostIco() private returns (bool) { if (!canGotoState(IcoStates.PostIco)) return false; //ок переходим на состояние PostIco currentState = IcoStates.PostIco; //выставляем дату после которой можно использовать премиальные токены startDateOfUseTeamTokens = now + DURATION_NONUSETEAM; //выставляем дату после которой можно зачислять оставшиеся (не распроданные) токены, на произвольный кошелёк startDateOfRestoreUnsoldTokens = now + DURATION_BEFORE_RESTORE_UNSOLD; //запоминаем количество нераспроданных токенов unsoldTokens = freeMoney; //уничтожаем свободные токены totalSupply = totalSupply.sub(freeMoney); setMoney(0, 0, 0); StateChanged(IcoStates.PostIco); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGELAST","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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGELAST","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDateOfSaleStageLast","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADDR_BOUNTY_TOKENS_ACCOUNT","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferBounty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"initWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_BOUNTY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startDateOfUseTeamTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"toState","type":"uint8"}],"name":"canGotoState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"gotoNextState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalBought","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_VIPPLACEMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE6","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE5","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueTeamTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADDR_OWNER","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTokensAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vipPlacementNotDistributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE7","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":"INITIAL_COINS_FOR_VIPPLACEMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE1","outputs":[{"name":"","type":"uint256"}],"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":"ADDR_TEAM_TOKENS_ACCOUNT","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"freeMoney","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startDateOfRestoreUnsoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensNotDistributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_NONUSETEAM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE7","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_SALESTAGELAST","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TEAM_MEMBER_VAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startDateOfSaleStageLast","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_SALESTAGES","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unsoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DURATION_BEFORE_RESTORE_UNSOLD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADDR_WITHDRAWAL2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE5","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTokensNotDistributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canRestoreUnsoldTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawal2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE4","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":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE6","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE4","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawal1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDateOfVipPlacement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ADDR_WITHDRAWAL1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_TEAM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remForSalesBeforeStageLast","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"EMISSION_FOR_SALESTAGE3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"teamBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"restoreUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"approveWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endDateOfPreSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_SALESTAGE2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"state","type":"uint8"}],"name":"StateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"boughtTokens","type":"uint256"},{"indexed":false,"name":"ethValue","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":true,"name":"data","type":"bytes"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60606040526040805190810160405280600c81526020017f526f626f6d6564546f6b656e0000000000000000000000000000000000000000815250600290805190602001906200005192919062000ffa565b506040805190810160405280600381526020017f52424d0000000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000ffa565b506012600460006101000a81548160ff021916908360ff16021790555060006013556000601455600060155560006018556000601a556000601b556000601c556000601d556000601e556000601f553415620000fa57600080fd5b60007321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff16141580156200017657503373ffffffffffffffffffffffffffffffffffffffff167321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff1614155b15156200018257600080fd5b6000730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff1614158015620001fe57503373ffffffffffffffffffffffffffffffffffffffff16730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff1614155b15156200020a57600080fd5b6000738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff16141580156200028657503373ffffffffffffffffffffffffffffffffffffffff16738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff1614155b15156200029257600080fd5b6000736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff16141580156200030e57503373ffffffffffffffffffffffffffffffffffffffff16736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff1614155b15156200031a57600080fd5b60007328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff16141580156200039657503373ffffffffffffffffffffffffffffffffffffffff167328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff1614155b1515620003a257600080fd5b7328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff16736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff16141515156200040657600080fd5b7328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff167321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff16141515156200046a57600080fd5b736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff167321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff1614151515620004ce57600080fd5b7321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff16730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff16141515156200053257600080fd5b736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff16730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff16141515156200059657600080fd5b7328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff16730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff1614151515620005fa57600080fd5b7321f6c4d926b705ad244ec33271559da8c562400f73ffffffffffffffffffffffffffffffffffffffff16738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff16141515156200065e57600080fd5b736542393623db0d7f27fded83e6fedbd767bff9b473ffffffffffffffffffffffffffffffffffffffff16738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff1614151515620006c257600080fd5b7328c6bcab2204ced29677fee6607e872e3c40d78373ffffffffffffffffffffffffffffffffffffffff16738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff16141515156200072657600080fd5b730dd97e6259a7de196461b36b028456a97e3268be73ffffffffffffffffffffffffffffffffffffffff16738c5b02144f7664d37fdfd4a2f90148d08a04838d73ffffffffffffffffffffffffffffffffffffffff16141515156200078a57600080fd5b7321f6c4d926b705ad244ec33271559da8c562400f600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730dd97e6259a7de196461b36b028456a97e3268be600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738c5b02144f7664d37fdfd4a2f90148d08a04838d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736542393623db0d7f27fded83e6fedbd767bff9b4600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507328c6bcab2204ced29677fee6607e872e3c40d783600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b01a427f30ca1babca1f0000060056000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506a4546c098e78abd6bc0000060056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506b015a61c2fc85b5b31ac0000060056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506a4546c098e78abd6bc00000600f819055506b015a61c2fc85b5b31ac000006010819055506b01a427f30ca1babca1f000006016819055506000601160006101000a81548160ff0219169083600a81111562000ae057fe5b02179055506b015a61c2fc85b5b31ac000006a4546c098e78abd6bc000006b01a427f30ca1babca1f00000010160148190555062000b3760014262000d1c64010000000002620038d4179091906401000000009004565b6017819055506000601b8190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000bc573a19dc4c158169bc45b17594d3f15e4dcb36cc3a36a01a784379d99db4200000062000d3b640100000000026200216c176401000000009004565b62000c0473df66490fe9f2ada51967f71d6b5e26a9d77065ed6a01a784379d99db4200000062000d3b640100000000026200216c176401000000009004565b62000c4373f0215c6a553ad8e155da69b2657beabc51d187c56a01a784379d99db4200000062000d3b640100000000026200216c176401000000009004565b62000c82736c1666d388302385ae5c62993824967a097f14bc6a01a784379d99db4200000062000d3b640100000000026200216c176401000000009004565b62000cc17382d550dc74f8b70b202ab5b63dabe75e6f00fb366a01a784379d99db4200000062000d3b640100000000026200216c176401000000009004565b7321f6c4d926b705ad244ec33271559da8c562400f600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620010a9565b600080828401905083811015151562000d3157fe5b8091505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000d9857600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801562000dec57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151562000df857600080fd5b62000e1d8160105462000fe06401000000000262003940179091906401000000009004565b60108190555062000e8581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000d1c64010000000002620038d4179091906401000000009004565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000f4c8160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000fe06401000000000262003940179091906401000000009004565b60056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000fd68160145462000fe06401000000000262003940179091906401000000009004565b6014819055505050565b600082821115151562000fef57fe5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200103d57805160ff19168380011785556200106e565b828001600101855582156200106e579182015b828111156200106d57825182559160200191906001019062001050565b5b5090506200107d919062001081565b5090565b620010a691905b80821115620010a257600081600090555060010162001088565b5090565b90565b61471e80620010b96000396000f300606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680625733e61461038f57806306fdde03146103b8578063095ea7b3146104465780630c3f6acf146104a057806318160ddd146104d75780631db199591461050057806321a4a5bb1461052957806323b872dd14610552578063285f6a55146105cb5780632c4e722e146106205780632f7442bb14610649578063301058c91461068b5780633129e6d4146106b4578063313ce567146106dd5780633146a6bb1461070c578063357a03331461074e578063369388cc1461079057806337ec33b7146107b95780633d5a3016146107e257806349c1ad0f146108205780634a91f1951461084d5780634d7a757714610876578063554dbfc21461089f57806355d7fe2b146108c85780635bbdc7c5146108f15780636cbc9ca01461090657806370a082311461095b57806385a242d7146109a85780638a5651e3146109fd5780638be3df0a14610a265780638bf7452714610a4f5780638da5cb5b14610a7857806392d588a014610acd578063941e98a814610af657806395d89b4114610b1f57806396744afb14610bad578063973dbfb714610c0257806397a0933814610c2b5780639999bd2e14610c545780639e697cd314610c7d5780639e69a6d214610ca65780639f8970dd14610ccf578063a2bf1d0614610d24578063a3316ccc14610d4d578063a7322d9d14610d76578063a9059cbb14610d9f578063a9cdf64314610df9578063ad7a672f14610e22578063b3f2c86614610e4b578063b5b2650514610e74578063b670a4b114610e9d578063bb1adf9b14610ec6578063be45fd6214610eef578063c144a51014610f8c578063c1d4691a14610fe1578063c1ee22dd14611036578063c54421ae1461105f578063c5699ac214611088578063ca313539146110b5578063d0b4755c146110de578063d2234b3714611107578063db77032d1461115c578063dd62ed3e14611185578063de459c9b146111f1578063de530bbb1461121a578063deaa0d0a14611243578063e1b5428514611298578063e339886c146112c1578063e57405e214611316578063e64715551461133f578063ec8ac4d814611368578063ef8f122914611396578063f21ddc7a146113bf578063f3cca49a1461140c578063f4970e7114611445578063fccf82a414611487578063ff359cb8146114b0575b61038d336114d9565b005b341561039a57600080fd5b6103a26118dc565b6040518082815260200191505060405180910390f35b34156103c357600080fd5b6103cb6118eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040b5780820151818401526020810190506103f0565b50505050905090810190601f1680156104385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045157600080fd5b610486600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611993565b604051808215151515815260200191505060405180910390f35b34156104ab57600080fd5b6104b3611b4f565b6040518082600a8111156104c357fe5b60ff16815260200191505060405180910390f35b34156104e257600080fd5b6104ea611b62565b6040518082815260200191505060405180910390f35b341561050b57600080fd5b610513611b6c565b6040518082815260200191505060405180910390f35b341561053457600080fd5b61053c611b72565b6040518082815260200191505060405180910390f35b341561055d57600080fd5b6105b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b78565b604051808215151515815260200191505060405180910390f35b34156105d657600080fd5b6105de611e5c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611e74565b6040518082815260200191505060405180910390f35b341561065457600080fd5b610689600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e7a565b005b341561069657600080fd5b61069e612148565b6040518082815260200191505060405180910390f35b34156106bf57600080fd5b6106c761214f565b6040518082815260200191505060405180910390f35b34156106e857600080fd5b6106f0612155565b604051808260ff1660ff16815260200191505060405180910390f35b341561071757600080fd5b61074c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061216c565b005b341561075957600080fd5b61078e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506123ce565b005b341561079b57600080fd5b6107a36124aa565b6040518082815260200191505060405180910390f35b34156107c457600080fd5b6107cc6124b9565b6040518082815260200191505060405180910390f35b34156107ed57600080fd5b610806600480803560ff169060200190919050506124bf565b604051808215151515815260200191505060405180910390f35b341561082b57600080fd5b610833612a38565b604051808215151515815260200191505060405180910390f35b341561085857600080fd5b610860612ae1565b6040518082815260200191505060405180910390f35b341561088157600080fd5b610889612ae7565b6040518082815260200191505060405180910390f35b34156108aa57600080fd5b6108b2612aec565b6040518082815260200191505060405180910390f35b34156108d357600080fd5b6108db612afb565b6040518082815260200191505060405180910390f35b34156108fc57600080fd5b610904612b01565b005b341561091157600080fd5b610919612cbb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561096657600080fd5b610992600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612cd3565b6040518082815260200191505060405180910390f35b34156109b357600080fd5b6109bb612d1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a0857600080fd5b610a10612d42565b6040518082815260200191505060405180910390f35b3415610a3157600080fd5b610a39612d51565b6040518082815260200191505060405180910390f35b3415610a5a57600080fd5b610a62612d57565b6040518082815260200191505060405180910390f35b3415610a8357600080fd5b610a8b612d66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610ad857600080fd5b610ae0612d8c565b6040518082815260200191505060405180910390f35b3415610b0157600080fd5b610b09612d9c565b6040518082815260200191505060405180910390f35b3415610b2a57600080fd5b610b32612dab565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b72578082015181840152602081019050610b57565b50505050905090810190601f168015610b9f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bb857600080fd5b610bc0612e53565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c0d57600080fd5b610c15612e6b565b6040518082815260200191505060405180910390f35b3415610c3657600080fd5b610c3e612e71565b6040518082815260200191505060405180910390f35b3415610c5f57600080fd5b610c67612e77565b6040518082815260200191505060405180910390f35b3415610c8857600080fd5b610c90612e7d565b6040518082815260200191505060405180910390f35b3415610cb157600080fd5b610cb9612e83565b6040518082815260200191505060405180910390f35b3415610cda57600080fd5b610ce2612e89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d2f57600080fd5b610d37612eaf565b6040518082815260200191505060405180910390f35b3415610d5857600080fd5b610d60612eb6565b6040518082815260200191505060405180910390f35b3415610d8157600080fd5b610d89612ebc565b6040518082815260200191505060405180910390f35b3415610daa57600080fd5b610ddf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ec3565b604051808215151515815260200191505060405180910390f35b3415610e0457600080fd5b610e0c6130e6565b6040518082815260200191505060405180910390f35b3415610e2d57600080fd5b610e356130f5565b6040518082815260200191505060405180910390f35b3415610e5657600080fd5b610e5e6130fb565b6040518082815260200191505060405180910390f35b3415610e7f57600080fd5b610e87613101565b6040518082815260200191505060405180910390f35b3415610ea857600080fd5b610eb0613108565b6040518082815260200191505060405180910390f35b3415610ed157600080fd5b610ed961310e565b6040518082815260200191505060405180910390f35b3415610efa57600080fd5b610f72600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613116565b604051808215151515815260200191505060405180910390f35b3415610f9757600080fd5b610f9f613331565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610fec57600080fd5b610ff4613349565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561104157600080fd5b61104961336f565b6040518082815260200191505060405180910390f35b341561106a57600080fd5b61107261337e565b6040518082815260200191505060405180910390f35b341561109357600080fd5b61109b613384565b604051808215151515815260200191505060405180910390f35b34156110c057600080fd5b6110c86133ec565b6040518082815260200191505060405180910390f35b34156110e957600080fd5b6110f16133fb565b6040518082815260200191505060405180910390f35b341561111257600080fd5b61111a613401565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561116757600080fd5b61116f613427565b6040518082815260200191505060405180910390f35b341561119057600080fd5b6111db600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061342d565b6040518082815260200191505060405180910390f35b34156111fc57600080fd5b6112046134b4565b6040518082815260200191505060405180910390f35b341561122557600080fd5b61122d6134ba565b6040518082815260200191505060405180910390f35b341561124e57600080fd5b6112566134c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156112a357600080fd5b6112ab6134ef565b6040518082815260200191505060405180910390f35b34156112cc57600080fd5b6112d46134f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561132157600080fd5b61132961350d565b6040518082815260200191505060405180910390f35b341561134a57600080fd5b61135261351d565b6040518082815260200191505060405180910390f35b611394600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114d9565b005b34156113a157600080fd5b6113a9613523565b6040518082815260200191505060405180910390f35b34156113ca57600080fd5b6113f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613532565b6040518082815260200191505060405180910390f35b341561141757600080fd5b611443600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061357b565b005b341561145057600080fd5b611485600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506136cf565b005b341561149257600080fd5b61149a6138c8565b6040518082815260200191505060405180910390f35b34156114bb57600080fd5b6114c36138ce565b6040518082815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff161415151561150557600080fd5b6000341415151561151557600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156115c15750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15156115cc57600080fd5b3493506115e4346012546138d490919063ffffffff16565b601281905550600092505b6000841115611862576000600a81111561160557fe5b601160009054906101000a900460ff16600a81111561162057fe5b141580156116535750600a8081111561163557fe5b601160009054906101000a900460ff16600a81111561165057fe5b14155b151561165e57600080fd5b611673601f54856138f290919063ffffffff16565b91506013548211156116b4576116a8611699601f5460135461392590919063ffffffff16565b8561394090919063ffffffff16565b935060135491506116ec565b600093506116cd8260135461394090919063ffffffff16565b90508060001080156116e05750601f5481105b156116eb5760135491505b5b6000821115156116f857fe5b61170d8260135461394090919063ffffffff16565b601381905550611728826015546138d490919063ffffffff16565b60158190555061178082600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117d682846138d490919063ffffffff16565b92506002600a8111156117e557fe5b601160009054906101000a900460ff16600a81111561180057fe5b1015801561183457506008600a81111561181657fe5b601160009054906101000a900460ff16600a81111561183157fe5b11155b1561185d5761184e82601b5461394090919063ffffffff16565b601b8190555061185c613959565b5b6115ef565b7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed858434604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050505050565b6afa39ece8cd8ba817a0000081565b6118f36146ca565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119895780601f1061195e57610100808354040283529160200191611989565b820191906000526020600020905b81548152906001019060200180831161196c57829003601f168201915b5050505050905090565b6000600a808111156119a157fe5b601160009054906101000a900460ff16600a8111156119bc57fe5b101515156119c957600080fd5b6000821480611a5457506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515611a5f57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b6000601454905090565b61081e81565b601a5481565b600080600a80811115611b8757fe5b601160009054906101000a900460ff16600a811115611ba257fe5b10151515611baf57600080fd5b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c8083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1583600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d6b838261394090919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b736542393623db0d7f27fded83e6fedbd767bff9b481565b601f5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ed657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611f2957503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611f3457600080fd5b611f4981600f5461394090919063ffffffff16565b600f81905550611fa181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120588160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b60056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6201518081565b61095681565b6000600460009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121c857600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561221b57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561222657600080fd5b61223b8160105461394090919063ffffffff16565b60108190555061229381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a8160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b60056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c48160145461394090919063ffffffff16565b6014819055505050565b600a808111156123da57fe5b601160009054906101000a900460ff16600a8111156123f557fe5b1015151561240257600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561245e57600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e819055505050565b6a4546c098e78abd6bc0000081565b601c5481565b60006001600a8111156124ce57fe5b82600a8111156124da57fe5b141561251e576000600a8111156124ed57fe5b601160009054906101000a900460ff16600a81111561250857fe5b14801561251757504260175411155b9050612a33565b6002600a81111561252b57fe5b82600a81111561253757fe5b141561257b576001600a81111561254a57fe5b601160009054906101000a900460ff16600a81111561256557fe5b14801561257457504260185411155b9050612a33565b6003600a81111561258857fe5b82600a81111561259457fe5b14156125e5576002600a8111156125a757fe5b601160009054906101000a900460ff16600a8111156125c257fe5b1480156125d157506000601354145b80156125de575042601954115b9050612a33565b6004600a8111156125f257fe5b82600a8111156125fe57fe5b141561264f576003600a81111561261157fe5b601160009054906101000a900460ff16600a81111561262c57fe5b14801561263b57506000601354145b8015612648575042601954115b9050612a33565b6005600a81111561265c57fe5b82600a81111561266857fe5b14156126b9576004600a81111561267b57fe5b601160009054906101000a900460ff16600a81111561269657fe5b1480156126a557506000601354145b80156126b2575042601954115b9050612a33565b6006600a8111156126c657fe5b82600a8111156126d257fe5b1415612723576005600a8111156126e557fe5b601160009054906101000a900460ff16600a81111561270057fe5b14801561270f57506000601354145b801561271c575042601954115b9050612a33565b6007600a81111561273057fe5b82600a81111561273c57fe5b141561278d576006600a81111561274f57fe5b601160009054906101000a900460ff16600a81111561276a57fe5b14801561277957506000601354145b8015612786575042601954115b9050612a33565b6008600a81111561279a57fe5b82600a8111156127a657fe5b14156127f7576007600a8111156127b957fe5b601160009054906101000a900460ff16600a8111156127d457fe5b1480156127e357506000601354145b80156127f0575042601954115b9050612a33565b6009600a81111561280457fe5b82600a81111561281057fe5b14156129d6576002600a81111561282357fe5b601160009054906101000a900460ff16600a81111561283e57fe5b1415801561287257506003600a81111561285457fe5b601160009054906101000a900460ff16600a81111561286f57fe5b14155b80156128a457506004600a81111561288657fe5b601160009054906101000a900460ff16600a8111156128a157fe5b14155b80156128d657506005600a8111156128b857fe5b601160009054906101000a900460ff16600a8111156128d357fe5b14155b801561290857506006600a8111156128ea57fe5b601160009054906101000a900460ff16600a81111561290557fe5b14155b801561293a57506007600a81111561291c57fe5b601160009054906101000a900460ff16600a81111561293757fe5b14155b801561296c57506008600a81111561294e57fe5b601160009054906101000a900460ff16600a81111561296957fe5b14155b1561297a5760009050612a33565b6008600a81111561298757fe5b601160009054906101000a900460ff16600a8111156129a257fe5b1480156129b157506000601354145b1580156129bf575042601954115b156129cd5760009050612a33565b60019050612a33565b600a808111156129e257fe5b82600a8111156129ee57fe5b1415612a32576009600a811115612a0157fe5b601160009054906101000a900460ff16600a811115612a1c57fe5b148015612a2b575042601a5411155b9050612a33565b5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a9657600080fd5b612a9e613e53565b80612aad5750612aac613f14565b5b80612abc5750612abb614031565b5b80612acb5750612aca614101565b5b15612ad95760019050612ade565b600090505b90565b60155481565b600181565b6a21c725c921d1864be0000081565b6108ee81565b600a80811115612b0d57fe5b601160009054906101000a900460ff16600a811115612b2857fe5b10151515612b3557600080fd5b42601c5411151515612b4657600080fd5b612b9a600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546014546138d490919063ffffffff16565b601481905550612c31600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b7321f6c4d926b705ad244ec33271559da8c562400f81565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a3f0a9fe74d954b17d0000081565b60165481565b6a21c725c921d1864be0000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b01a427f30ca1babca1f0000081565b6a21c725c921d1864be0000081565b612db36146ca565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e495780601f10612e1e57610100808354040283529160200191612e49565b820191906000526020600020905b815481529060010190602001808311612e2c57829003601f168201915b5050505050905090565b7328c6bcab2204ced29677fee6607e872e3c40d78381565b600e5481565b60135481565b610a8e81565b601d5481565b600f5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b62ed4e0081565b61088681565b6201518081565b6000612ecd6146de565b338484600081111515612edf57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612f3257508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612f3d57600080fd5b600a80811115612f4957fe5b601160009054906101000a900460ff16600a811115612f6457fe5b1480612fbd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1515612fc857600080fd5b600a80811115612fd457fe5b601160009054906101000a900460ff16600a811115612fef57fe5b14806130a35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130a25750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15156130ae57600080fd5b6130b7876141da565b156130ce576130c78787866141ed565b94506130dc565b6130d98787866143f5565b94505b5050505092915050565b6a01a784379d99db4200000081565b60125481565b60195481565b620d2f0081565b601e5481565b630163f50081565b600033848460008111151561312a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561317d57508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561318857600080fd5b600a8081111561319457fe5b601160009054906101000a900460ff16600a8111156131af57fe5b14806132085750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b151561321357600080fd5b600a8081111561321f57fe5b601160009054906101000a900460ff16600a81111561323a57fe5b14806132ee5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156132ed5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15156132f957600080fd5b613302876141da565b15613319576133128787876141ed565b9350613327565b6133248787876143f5565b93505b5050509392505050565b738c5b02144f7664d37fdfd4a2f90148d08a04838d81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a21c725c921d1864be0000081565b60105481565b6000600a8081111561339257fe5b601160009054906101000a900460ff16600a8111156133ad57fe5b1415156133bd57600090506133e9565b42601d5411156133d057600090506133e9565b6000601e5414156133e457600090506133e9565b600190505b90565b6a21c725c921d1864be0000081565b6109e881565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61092d81565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108b081565b6a21c725c921d1864be0000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b730dd97e6259a7de196461b36b028456a97e3268be81565b6b015a61c2fc85b5b31ac0000081565b601b5481565b6a21c725c921d1864be0000081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135d757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156135fd57600080fd5b613605613384565b151561361057600080fd5b613664601e54600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136be601e546014546138d490919063ffffffff16565b6014819055506000601e8190555050565b600a808111156136db57fe5b601160009054906101000a900460ff16600a8111156136f657fe5b1015151561370357600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561375f57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156137865750600081115b151561379157600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156137ed57600080fd5b600e54811415156137fd57600080fd5b6138128160125461394090919063ffffffff16565b601281905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561387a57600080fd5b6000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e819055505050565b60185481565b6109a981565b60008082840190508381101515156138e857fe5b8091505092915050565b60008082840290506000841480613913575082848281151561391057fe5b04145b151561391b57fe5b8091505092915050565b600080828481151561393357fe5b0490508091505092915050565b600082821115151561394e57fe5b818303905092915050565b6002600a81111561396657fe5b601160009054906101000a900460ff16600a81111561398157fe5b141580156139b557506003600a81111561399757fe5b601160009054906101000a900460ff16600a8111156139b257fe5b14155b80156139e757506004600a8111156139c957fe5b601160009054906101000a900460ff16600a8111156139e457fe5b14155b8015613a1957506005600a8111156139fb57fe5b601160009054906101000a900460ff16600a811115613a1657fe5b14155b8015613a4b57506006600a811115613a2d57fe5b601160009054906101000a900460ff16600a811115613a4857fe5b14155b8015613a7d57506007600a811115613a5f57fe5b601160009054906101000a900460ff16600a811115613a7a57fe5b14155b8015613aaf57506008600a811115613a9157fe5b601160009054906101000a900460ff16600a811115613aac57fe5b14155b15613ab957613e51565b613ac1614031565b15613acb57613e51565b613ad560036124bf565b15613b61576003601160006101000a81548160ff0219169083600a811115613af957fe5b0217905550613b166a21c725c921d1864be00000806109a96144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660036040518082600a811115613b4957fe5b60ff16815260200191505060405180910390a1613e50565b613b6b60046124bf565b15613bf7576004601160006101000a81548160ff0219169083600a811115613b8f57fe5b0217905550613bac6a21c725c921d1864be00000806109566144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660046040518082600a811115613bdf57fe5b60ff16815260200191505060405180910390a1613e4f565b613c0160056124bf565b15613c8d576005601160006101000a81548160ff0219169083600a811115613c2557fe5b0217905550613c426a21c725c921d1864be000008061092d6144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660056040518082600a811115613c7557fe5b60ff16815260200191505060405180910390a1613e4e565b613c9760066124bf565b15613d23576006601160006101000a81548160ff0219169083600a811115613cbb57fe5b0217905550613cd86a21c725c921d1864be00000806108ee6144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660066040518082600a811115613d0b57fe5b60ff16815260200191505060405180910390a1613e4d565b613d2d60076124bf565b15613db9576007601160006101000a81548160ff0219169083600a811115613d5157fe5b0217905550613d6e6a21c725c921d1864be00000806108b06144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660076040518082600a811115613da157fe5b60ff16815260200191505060405180910390a1613e4c565b613dc360086124bf565b15613e4b576008601160006101000a81548160ff0219169083600a811115613de757fe5b0217905550613e046a21c725c921d1864be00000806108866144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660086040518082600a811115613e3757fe5b60ff16815260200191505060405180910390a15b5b5b5b5b5b5b565b6000613e5f60016124bf565b1515613e6e5760009050613f11565b6001601160006101000a81548160ff0219169083600a811115613e8d57fe5b0217905550613eaa6a3f0a9fe74d954b17d0000080610a8e6144d5565b613ec062015180426138d490919063ffffffff16565b6018819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660016040518082600a811115613ef957fe5b60ff16815260200191505060405180910390a1600190505b90565b6000613f2060026124bf565b1515613f2f576000905061402e565b6002601160006101000a81548160ff0219169083600a811115613f4e57fe5b0217905550613f6a60135460145461394090919063ffffffff16565b601481905550613f886a21c725c921d1864be00000806109e86144d5565b6a21c725c921d1864be00000806a21c725c921d1864be00000806a21c725c921d1864be00000806a21c725c921d1864be00000010101010101601b81905550613fdd620d2f00426138d490919063ffffffff16565b6019819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660026040518082600a81111561401657fe5b60ff16815260200191505060405180910390a1600190505b90565b600061403d60096124bf565b151561404c57600090506140fe565b6009601160006101000a81548160ff0219169083600a81111561406b57fe5b02179055506140976afa39ece8cd8ba817a00000601b54016afa39ece8cd8ba817a0000061081e6144d5565b6140ad62015180426138d490919063ffffffff16565b601a819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660096040518082600a8111156140e657fe5b60ff16815260200191505060405180910390a1600190505b90565b600061410d600a6124bf565b151561411c57600090506141d7565b600a601160006101000a81548160ff0219169083600a81111561413b57fe5b021790555062ed4e004201601c81905550630163f5004201601d81905550601354601e8190555061417960135460145461394090919063ffffffff16565b60148190555061418c60008060006144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb6600a6040518082600a8111156141bf57fe5b60ff16815260200191505060405180910390a1600190505b90565b600080823b905060008111915050919050565b6000806141fb338686614503565b8490508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156142c05780820151818401526020810190506142a5565b50505050905090810190601f1680156142ed5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151561430d57600080fd5b6102c65a03f1151561431e57600080fd5b505050826040518082805190602001908083835b6020831015156143575780518252602082019150602081019050602083039250614332565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16876040518082815260200191505060405180910390a460019150509392505050565b6000614402338585614503565b816040518082805190602001908083835b6020831015156144385780518252602082019150602081019050602083039250614413565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16866040518082815260200191505060405180910390a4600190509392505050565b826013819055506144f1826014546138d490919063ffffffff16565b60148190555080601f81905550505050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561455157600080fd5b6145a381600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061463881600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a8081111561468757fe5b601160009054906101000a900460ff16600a8111156146a257fe5b1415156146c5576146be8160165461394090919063ffffffff16565b6016819055505b505050565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a72305820eee07b209fafbdf7a9cdc39a8d28540e4dc9a5ee7aa09bb3552da31a99c688d60029
Deployed Bytecode
0x606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680625733e61461038f57806306fdde03146103b8578063095ea7b3146104465780630c3f6acf146104a057806318160ddd146104d75780631db199591461050057806321a4a5bb1461052957806323b872dd14610552578063285f6a55146105cb5780632c4e722e146106205780632f7442bb14610649578063301058c91461068b5780633129e6d4146106b4578063313ce567146106dd5780633146a6bb1461070c578063357a03331461074e578063369388cc1461079057806337ec33b7146107b95780633d5a3016146107e257806349c1ad0f146108205780634a91f1951461084d5780634d7a757714610876578063554dbfc21461089f57806355d7fe2b146108c85780635bbdc7c5146108f15780636cbc9ca01461090657806370a082311461095b57806385a242d7146109a85780638a5651e3146109fd5780638be3df0a14610a265780638bf7452714610a4f5780638da5cb5b14610a7857806392d588a014610acd578063941e98a814610af657806395d89b4114610b1f57806396744afb14610bad578063973dbfb714610c0257806397a0933814610c2b5780639999bd2e14610c545780639e697cd314610c7d5780639e69a6d214610ca65780639f8970dd14610ccf578063a2bf1d0614610d24578063a3316ccc14610d4d578063a7322d9d14610d76578063a9059cbb14610d9f578063a9cdf64314610df9578063ad7a672f14610e22578063b3f2c86614610e4b578063b5b2650514610e74578063b670a4b114610e9d578063bb1adf9b14610ec6578063be45fd6214610eef578063c144a51014610f8c578063c1d4691a14610fe1578063c1ee22dd14611036578063c54421ae1461105f578063c5699ac214611088578063ca313539146110b5578063d0b4755c146110de578063d2234b3714611107578063db77032d1461115c578063dd62ed3e14611185578063de459c9b146111f1578063de530bbb1461121a578063deaa0d0a14611243578063e1b5428514611298578063e339886c146112c1578063e57405e214611316578063e64715551461133f578063ec8ac4d814611368578063ef8f122914611396578063f21ddc7a146113bf578063f3cca49a1461140c578063f4970e7114611445578063fccf82a414611487578063ff359cb8146114b0575b61038d336114d9565b005b341561039a57600080fd5b6103a26118dc565b6040518082815260200191505060405180910390f35b34156103c357600080fd5b6103cb6118eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040b5780820151818401526020810190506103f0565b50505050905090810190601f1680156104385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045157600080fd5b610486600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611993565b604051808215151515815260200191505060405180910390f35b34156104ab57600080fd5b6104b3611b4f565b6040518082600a8111156104c357fe5b60ff16815260200191505060405180910390f35b34156104e257600080fd5b6104ea611b62565b6040518082815260200191505060405180910390f35b341561050b57600080fd5b610513611b6c565b6040518082815260200191505060405180910390f35b341561053457600080fd5b61053c611b72565b6040518082815260200191505060405180910390f35b341561055d57600080fd5b6105b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b78565b604051808215151515815260200191505060405180910390f35b34156105d657600080fd5b6105de611e5c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611e74565b6040518082815260200191505060405180910390f35b341561065457600080fd5b610689600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e7a565b005b341561069657600080fd5b61069e612148565b6040518082815260200191505060405180910390f35b34156106bf57600080fd5b6106c761214f565b6040518082815260200191505060405180910390f35b34156106e857600080fd5b6106f0612155565b604051808260ff1660ff16815260200191505060405180910390f35b341561071757600080fd5b61074c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061216c565b005b341561075957600080fd5b61078e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506123ce565b005b341561079b57600080fd5b6107a36124aa565b6040518082815260200191505060405180910390f35b34156107c457600080fd5b6107cc6124b9565b6040518082815260200191505060405180910390f35b34156107ed57600080fd5b610806600480803560ff169060200190919050506124bf565b604051808215151515815260200191505060405180910390f35b341561082b57600080fd5b610833612a38565b604051808215151515815260200191505060405180910390f35b341561085857600080fd5b610860612ae1565b6040518082815260200191505060405180910390f35b341561088157600080fd5b610889612ae7565b6040518082815260200191505060405180910390f35b34156108aa57600080fd5b6108b2612aec565b6040518082815260200191505060405180910390f35b34156108d357600080fd5b6108db612afb565b6040518082815260200191505060405180910390f35b34156108fc57600080fd5b610904612b01565b005b341561091157600080fd5b610919612cbb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561096657600080fd5b610992600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612cd3565b6040518082815260200191505060405180910390f35b34156109b357600080fd5b6109bb612d1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a0857600080fd5b610a10612d42565b6040518082815260200191505060405180910390f35b3415610a3157600080fd5b610a39612d51565b6040518082815260200191505060405180910390f35b3415610a5a57600080fd5b610a62612d57565b6040518082815260200191505060405180910390f35b3415610a8357600080fd5b610a8b612d66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610ad857600080fd5b610ae0612d8c565b6040518082815260200191505060405180910390f35b3415610b0157600080fd5b610b09612d9c565b6040518082815260200191505060405180910390f35b3415610b2a57600080fd5b610b32612dab565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b72578082015181840152602081019050610b57565b50505050905090810190601f168015610b9f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bb857600080fd5b610bc0612e53565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c0d57600080fd5b610c15612e6b565b6040518082815260200191505060405180910390f35b3415610c3657600080fd5b610c3e612e71565b6040518082815260200191505060405180910390f35b3415610c5f57600080fd5b610c67612e77565b6040518082815260200191505060405180910390f35b3415610c8857600080fd5b610c90612e7d565b6040518082815260200191505060405180910390f35b3415610cb157600080fd5b610cb9612e83565b6040518082815260200191505060405180910390f35b3415610cda57600080fd5b610ce2612e89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d2f57600080fd5b610d37612eaf565b6040518082815260200191505060405180910390f35b3415610d5857600080fd5b610d60612eb6565b6040518082815260200191505060405180910390f35b3415610d8157600080fd5b610d89612ebc565b6040518082815260200191505060405180910390f35b3415610daa57600080fd5b610ddf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ec3565b604051808215151515815260200191505060405180910390f35b3415610e0457600080fd5b610e0c6130e6565b6040518082815260200191505060405180910390f35b3415610e2d57600080fd5b610e356130f5565b6040518082815260200191505060405180910390f35b3415610e5657600080fd5b610e5e6130fb565b6040518082815260200191505060405180910390f35b3415610e7f57600080fd5b610e87613101565b6040518082815260200191505060405180910390f35b3415610ea857600080fd5b610eb0613108565b6040518082815260200191505060405180910390f35b3415610ed157600080fd5b610ed961310e565b6040518082815260200191505060405180910390f35b3415610efa57600080fd5b610f72600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613116565b604051808215151515815260200191505060405180910390f35b3415610f9757600080fd5b610f9f613331565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610fec57600080fd5b610ff4613349565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561104157600080fd5b61104961336f565b6040518082815260200191505060405180910390f35b341561106a57600080fd5b61107261337e565b6040518082815260200191505060405180910390f35b341561109357600080fd5b61109b613384565b604051808215151515815260200191505060405180910390f35b34156110c057600080fd5b6110c86133ec565b6040518082815260200191505060405180910390f35b34156110e957600080fd5b6110f16133fb565b6040518082815260200191505060405180910390f35b341561111257600080fd5b61111a613401565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561116757600080fd5b61116f613427565b6040518082815260200191505060405180910390f35b341561119057600080fd5b6111db600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061342d565b6040518082815260200191505060405180910390f35b34156111fc57600080fd5b6112046134b4565b6040518082815260200191505060405180910390f35b341561122557600080fd5b61122d6134ba565b6040518082815260200191505060405180910390f35b341561124e57600080fd5b6112566134c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156112a357600080fd5b6112ab6134ef565b6040518082815260200191505060405180910390f35b34156112cc57600080fd5b6112d46134f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561132157600080fd5b61132961350d565b6040518082815260200191505060405180910390f35b341561134a57600080fd5b61135261351d565b6040518082815260200191505060405180910390f35b611394600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114d9565b005b34156113a157600080fd5b6113a9613523565b6040518082815260200191505060405180910390f35b34156113ca57600080fd5b6113f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613532565b6040518082815260200191505060405180910390f35b341561141757600080fd5b611443600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061357b565b005b341561145057600080fd5b611485600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506136cf565b005b341561149257600080fd5b61149a6138c8565b6040518082815260200191505060405180910390f35b34156114bb57600080fd5b6114c36138ce565b6040518082815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff161415151561150557600080fd5b6000341415151561151557600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156115c15750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15156115cc57600080fd5b3493506115e4346012546138d490919063ffffffff16565b601281905550600092505b6000841115611862576000600a81111561160557fe5b601160009054906101000a900460ff16600a81111561162057fe5b141580156116535750600a8081111561163557fe5b601160009054906101000a900460ff16600a81111561165057fe5b14155b151561165e57600080fd5b611673601f54856138f290919063ffffffff16565b91506013548211156116b4576116a8611699601f5460135461392590919063ffffffff16565b8561394090919063ffffffff16565b935060135491506116ec565b600093506116cd8260135461394090919063ffffffff16565b90508060001080156116e05750601f5481105b156116eb5760135491505b5b6000821115156116f857fe5b61170d8260135461394090919063ffffffff16565b601381905550611728826015546138d490919063ffffffff16565b60158190555061178082600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117d682846138d490919063ffffffff16565b92506002600a8111156117e557fe5b601160009054906101000a900460ff16600a81111561180057fe5b1015801561183457506008600a81111561181657fe5b601160009054906101000a900460ff16600a81111561183157fe5b11155b1561185d5761184e82601b5461394090919063ffffffff16565b601b8190555061185c613959565b5b6115ef565b7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed858434604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050505050565b6afa39ece8cd8ba817a0000081565b6118f36146ca565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119895780601f1061195e57610100808354040283529160200191611989565b820191906000526020600020905b81548152906001019060200180831161196c57829003601f168201915b5050505050905090565b6000600a808111156119a157fe5b601160009054906101000a900460ff16600a8111156119bc57fe5b101515156119c957600080fd5b6000821480611a5457506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515611a5f57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b6000601454905090565b61081e81565b601a5481565b600080600a80811115611b8757fe5b601160009054906101000a900460ff16600a811115611ba257fe5b10151515611baf57600080fd5b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c8083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1583600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d6b838261394090919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b736542393623db0d7f27fded83e6fedbd767bff9b481565b601f5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ed657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611f2957503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611f3457600080fd5b611f4981600f5461394090919063ffffffff16565b600f81905550611fa181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120588160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b60056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6201518081565b61095681565b6000600460009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121c857600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561221b57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561222657600080fd5b61223b8160105461394090919063ffffffff16565b60108190555061229381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a8160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b60056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c48160145461394090919063ffffffff16565b6014819055505050565b600a808111156123da57fe5b601160009054906101000a900460ff16600a8111156123f557fe5b1015151561240257600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561245e57600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e819055505050565b6a4546c098e78abd6bc0000081565b601c5481565b60006001600a8111156124ce57fe5b82600a8111156124da57fe5b141561251e576000600a8111156124ed57fe5b601160009054906101000a900460ff16600a81111561250857fe5b14801561251757504260175411155b9050612a33565b6002600a81111561252b57fe5b82600a81111561253757fe5b141561257b576001600a81111561254a57fe5b601160009054906101000a900460ff16600a81111561256557fe5b14801561257457504260185411155b9050612a33565b6003600a81111561258857fe5b82600a81111561259457fe5b14156125e5576002600a8111156125a757fe5b601160009054906101000a900460ff16600a8111156125c257fe5b1480156125d157506000601354145b80156125de575042601954115b9050612a33565b6004600a8111156125f257fe5b82600a8111156125fe57fe5b141561264f576003600a81111561261157fe5b601160009054906101000a900460ff16600a81111561262c57fe5b14801561263b57506000601354145b8015612648575042601954115b9050612a33565b6005600a81111561265c57fe5b82600a81111561266857fe5b14156126b9576004600a81111561267b57fe5b601160009054906101000a900460ff16600a81111561269657fe5b1480156126a557506000601354145b80156126b2575042601954115b9050612a33565b6006600a8111156126c657fe5b82600a8111156126d257fe5b1415612723576005600a8111156126e557fe5b601160009054906101000a900460ff16600a81111561270057fe5b14801561270f57506000601354145b801561271c575042601954115b9050612a33565b6007600a81111561273057fe5b82600a81111561273c57fe5b141561278d576006600a81111561274f57fe5b601160009054906101000a900460ff16600a81111561276a57fe5b14801561277957506000601354145b8015612786575042601954115b9050612a33565b6008600a81111561279a57fe5b82600a8111156127a657fe5b14156127f7576007600a8111156127b957fe5b601160009054906101000a900460ff16600a8111156127d457fe5b1480156127e357506000601354145b80156127f0575042601954115b9050612a33565b6009600a81111561280457fe5b82600a81111561281057fe5b14156129d6576002600a81111561282357fe5b601160009054906101000a900460ff16600a81111561283e57fe5b1415801561287257506003600a81111561285457fe5b601160009054906101000a900460ff16600a81111561286f57fe5b14155b80156128a457506004600a81111561288657fe5b601160009054906101000a900460ff16600a8111156128a157fe5b14155b80156128d657506005600a8111156128b857fe5b601160009054906101000a900460ff16600a8111156128d357fe5b14155b801561290857506006600a8111156128ea57fe5b601160009054906101000a900460ff16600a81111561290557fe5b14155b801561293a57506007600a81111561291c57fe5b601160009054906101000a900460ff16600a81111561293757fe5b14155b801561296c57506008600a81111561294e57fe5b601160009054906101000a900460ff16600a81111561296957fe5b14155b1561297a5760009050612a33565b6008600a81111561298757fe5b601160009054906101000a900460ff16600a8111156129a257fe5b1480156129b157506000601354145b1580156129bf575042601954115b156129cd5760009050612a33565b60019050612a33565b600a808111156129e257fe5b82600a8111156129ee57fe5b1415612a32576009600a811115612a0157fe5b601160009054906101000a900460ff16600a811115612a1c57fe5b148015612a2b575042601a5411155b9050612a33565b5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a9657600080fd5b612a9e613e53565b80612aad5750612aac613f14565b5b80612abc5750612abb614031565b5b80612acb5750612aca614101565b5b15612ad95760019050612ade565b600090505b90565b60155481565b600181565b6a21c725c921d1864be0000081565b6108ee81565b600a80811115612b0d57fe5b601160009054906101000a900460ff16600a811115612b2857fe5b10151515612b3557600080fd5b42601c5411151515612b4657600080fd5b612b9a600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546014546138d490919063ffffffff16565b601481905550612c31600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b7321f6c4d926b705ad244ec33271559da8c562400f81565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a3f0a9fe74d954b17d0000081565b60165481565b6a21c725c921d1864be0000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b01a427f30ca1babca1f0000081565b6a21c725c921d1864be0000081565b612db36146ca565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e495780601f10612e1e57610100808354040283529160200191612e49565b820191906000526020600020905b815481529060010190602001808311612e2c57829003601f168201915b5050505050905090565b7328c6bcab2204ced29677fee6607e872e3c40d78381565b600e5481565b60135481565b610a8e81565b601d5481565b600f5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b62ed4e0081565b61088681565b6201518081565b6000612ecd6146de565b338484600081111515612edf57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612f3257508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612f3d57600080fd5b600a80811115612f4957fe5b601160009054906101000a900460ff16600a811115612f6457fe5b1480612fbd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1515612fc857600080fd5b600a80811115612fd457fe5b601160009054906101000a900460ff16600a811115612fef57fe5b14806130a35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130a25750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15156130ae57600080fd5b6130b7876141da565b156130ce576130c78787866141ed565b94506130dc565b6130d98787866143f5565b94505b5050505092915050565b6a01a784379d99db4200000081565b60125481565b60195481565b620d2f0081565b601e5481565b630163f50081565b600033848460008111151561312a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561317d57508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561318857600080fd5b600a8081111561319457fe5b601160009054906101000a900460ff16600a8111156131af57fe5b14806132085750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b151561321357600080fd5b600a8081111561321f57fe5b601160009054906101000a900460ff16600a81111561323a57fe5b14806132ee5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156132ed5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15156132f957600080fd5b613302876141da565b15613319576133128787876141ed565b9350613327565b6133248787876143f5565b93505b5050509392505050565b738c5b02144f7664d37fdfd4a2f90148d08a04838d81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a21c725c921d1864be0000081565b60105481565b6000600a8081111561339257fe5b601160009054906101000a900460ff16600a8111156133ad57fe5b1415156133bd57600090506133e9565b42601d5411156133d057600090506133e9565b6000601e5414156133e457600090506133e9565b600190505b90565b6a21c725c921d1864be0000081565b6109e881565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61092d81565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108b081565b6a21c725c921d1864be0000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b730dd97e6259a7de196461b36b028456a97e3268be81565b6b015a61c2fc85b5b31ac0000081565b601b5481565b6a21c725c921d1864be0000081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135d757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156135fd57600080fd5b613605613384565b151561361057600080fd5b613664601e54600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136be601e546014546138d490919063ffffffff16565b6014819055506000601e8190555050565b600a808111156136db57fe5b601160009054906101000a900460ff16600a8111156136f657fe5b1015151561370357600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561375f57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156137865750600081115b151561379157600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156137ed57600080fd5b600e54811415156137fd57600080fd5b6138128160125461394090919063ffffffff16565b601281905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561387a57600080fd5b6000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e819055505050565b60185481565b6109a981565b60008082840190508381101515156138e857fe5b8091505092915050565b60008082840290506000841480613913575082848281151561391057fe5b04145b151561391b57fe5b8091505092915050565b600080828481151561393357fe5b0490508091505092915050565b600082821115151561394e57fe5b818303905092915050565b6002600a81111561396657fe5b601160009054906101000a900460ff16600a81111561398157fe5b141580156139b557506003600a81111561399757fe5b601160009054906101000a900460ff16600a8111156139b257fe5b14155b80156139e757506004600a8111156139c957fe5b601160009054906101000a900460ff16600a8111156139e457fe5b14155b8015613a1957506005600a8111156139fb57fe5b601160009054906101000a900460ff16600a811115613a1657fe5b14155b8015613a4b57506006600a811115613a2d57fe5b601160009054906101000a900460ff16600a811115613a4857fe5b14155b8015613a7d57506007600a811115613a5f57fe5b601160009054906101000a900460ff16600a811115613a7a57fe5b14155b8015613aaf57506008600a811115613a9157fe5b601160009054906101000a900460ff16600a811115613aac57fe5b14155b15613ab957613e51565b613ac1614031565b15613acb57613e51565b613ad560036124bf565b15613b61576003601160006101000a81548160ff0219169083600a811115613af957fe5b0217905550613b166a21c725c921d1864be00000806109a96144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660036040518082600a811115613b4957fe5b60ff16815260200191505060405180910390a1613e50565b613b6b60046124bf565b15613bf7576004601160006101000a81548160ff0219169083600a811115613b8f57fe5b0217905550613bac6a21c725c921d1864be00000806109566144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660046040518082600a811115613bdf57fe5b60ff16815260200191505060405180910390a1613e4f565b613c0160056124bf565b15613c8d576005601160006101000a81548160ff0219169083600a811115613c2557fe5b0217905550613c426a21c725c921d1864be000008061092d6144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660056040518082600a811115613c7557fe5b60ff16815260200191505060405180910390a1613e4e565b613c9760066124bf565b15613d23576006601160006101000a81548160ff0219169083600a811115613cbb57fe5b0217905550613cd86a21c725c921d1864be00000806108ee6144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660066040518082600a811115613d0b57fe5b60ff16815260200191505060405180910390a1613e4d565b613d2d60076124bf565b15613db9576007601160006101000a81548160ff0219169083600a811115613d5157fe5b0217905550613d6e6a21c725c921d1864be00000806108b06144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660076040518082600a811115613da157fe5b60ff16815260200191505060405180910390a1613e4c565b613dc360086124bf565b15613e4b576008601160006101000a81548160ff0219169083600a811115613de757fe5b0217905550613e046a21c725c921d1864be00000806108866144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660086040518082600a811115613e3757fe5b60ff16815260200191505060405180910390a15b5b5b5b5b5b5b565b6000613e5f60016124bf565b1515613e6e5760009050613f11565b6001601160006101000a81548160ff0219169083600a811115613e8d57fe5b0217905550613eaa6a3f0a9fe74d954b17d0000080610a8e6144d5565b613ec062015180426138d490919063ffffffff16565b6018819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660016040518082600a811115613ef957fe5b60ff16815260200191505060405180910390a1600190505b90565b6000613f2060026124bf565b1515613f2f576000905061402e565b6002601160006101000a81548160ff0219169083600a811115613f4e57fe5b0217905550613f6a60135460145461394090919063ffffffff16565b601481905550613f886a21c725c921d1864be00000806109e86144d5565b6a21c725c921d1864be00000806a21c725c921d1864be00000806a21c725c921d1864be00000806a21c725c921d1864be00000010101010101601b81905550613fdd620d2f00426138d490919063ffffffff16565b6019819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660026040518082600a81111561401657fe5b60ff16815260200191505060405180910390a1600190505b90565b600061403d60096124bf565b151561404c57600090506140fe565b6009601160006101000a81548160ff0219169083600a81111561406b57fe5b02179055506140976afa39ece8cd8ba817a00000601b54016afa39ece8cd8ba817a0000061081e6144d5565b6140ad62015180426138d490919063ffffffff16565b601a819055507f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb660096040518082600a8111156140e657fe5b60ff16815260200191505060405180910390a1600190505b90565b600061410d600a6124bf565b151561411c57600090506141d7565b600a601160006101000a81548160ff0219169083600a81111561413b57fe5b021790555062ed4e004201601c81905550630163f5004201601d81905550601354601e8190555061417960135460145461394090919063ffffffff16565b60148190555061418c60008060006144d5565b7f551dc40198cc79684bb69e4931dba4ac16e4598792ee1c0a5000aeea366d7bb6600a6040518082600a8111156141bf57fe5b60ff16815260200191505060405180910390a1600190505b90565b600080823b905060008111915050919050565b6000806141fb338686614503565b8490508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156142c05780820151818401526020810190506142a5565b50505050905090810190601f1680156142ed5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151561430d57600080fd5b6102c65a03f1151561431e57600080fd5b505050826040518082805190602001908083835b6020831015156143575780518252602082019150602081019050602083039250614332565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16876040518082815260200191505060405180910390a460019150509392505050565b6000614402338585614503565b816040518082805190602001908083835b6020831015156144385780518252602082019150602081019050602083039250614413565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16866040518082815260200191505060405180910390a4600190509392505050565b826013819055506144f1826014546138d490919063ffffffff16565b60148190555080601f81905550505050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561455157600080fd5b6145a381600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461394090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061463881600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d490919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a8081111561468757fe5b601160009054906101000a900460ff16600a8111156146a257fe5b1415156146c5576146be8160165461394090919063ffffffff16565b6016819055505b505050565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a72305820eee07b209fafbdf7a9cdc39a8d28540e4dc9a5ee7aa09bb3552da31a99c688d60029
Swarm Source
bzzr://eee07b209fafbdf7a9cdc39a8d28540e4dc9a5ee7aa09bb3552da31a99c688d6
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.