Overview
ETH Balance
0.007111727847116135 ETH
Eth Value
$22.91 (@ $3,221.42/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,553 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Wd Earn | 12527663 | 1263 days ago | IN | 0 ETH | 0.00158558 | ||||
Wd Earn | 12527606 | 1263 days ago | IN | 0 ETH | 0.00158558 | ||||
Wd Earn | 12527571 | 1263 days ago | IN | 0 ETH | 0.00158558 | ||||
Wd Earn | 12527551 | 1263 days ago | IN | 0 ETH | 0.00158558 | ||||
Wd Earn | 12520844 | 1264 days ago | IN | 0 ETH | 0.00173659 | ||||
Wd Earn | 12489040 | 1269 days ago | IN | 0 ETH | 0.00227267 | ||||
Wd Earn | 11685441 | 1393 days ago | IN | 0 ETH | 0.00594593 | ||||
Wd Earn | 11508251 | 1420 days ago | IN | 0 ETH | 0.00473646 | ||||
Wd Earn | 11508237 | 1420 days ago | IN | 0 ETH | 0.00639047 | ||||
Wd Earn | 11444700 | 1430 days ago | IN | 0 ETH | 0.00188162 | ||||
Wd Earn | 11444107 | 1430 days ago | IN | 0 ETH | 0.00112897 | ||||
Wd Earn | 11395540 | 1438 days ago | IN | 0 ETH | 0.0017367 | ||||
Wd Earn | 11395540 | 1438 days ago | IN | 0 ETH | 0.00210509 | ||||
Wd Earn | 11395540 | 1438 days ago | IN | 0 ETH | 0.00142845 | ||||
Wd Earn | 11261122 | 1458 days ago | IN | 0 ETH | 0.00116713 | ||||
Wd Earn | 11259821 | 1458 days ago | IN | 0 ETH | 0.00143003 | ||||
Wd Earn | 11232335 | 1463 days ago | IN | 0 ETH | 0.00225795 | ||||
Wd Earn | 11232324 | 1463 days ago | IN | 0 ETH | 0.00143756 | ||||
Wd Earn | 11229371 | 1463 days ago | IN | 0 ETH | 0.00316113 | ||||
Wd Earn | 11227136 | 1463 days ago | IN | 0 ETH | 0.00376325 | ||||
Wd Earn | 11227135 | 1463 days ago | IN | 0 ETH | 0.00195689 | ||||
Wd Earn | 11227125 | 1463 days ago | IN | 0 ETH | 0.00195689 | ||||
Wd Earn | 11216389 | 1465 days ago | IN | 0 ETH | 0.00143003 | ||||
Wd Earn | 11195936 | 1468 days ago | IN | 0 ETH | 0.00158809 | ||||
Wd Earn | 11195752 | 1468 days ago | IN | 0 ETH | 0.00180436 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11175344 | 1471 days ago | 0.04 ETH | ||||
11174202 | 1472 days ago | 0.045 ETH | ||||
11173310 | 1472 days ago | 0.019161 ETH | ||||
11173296 | 1472 days ago | 0.01801 ETH | ||||
11170758 | 1472 days ago | 0.126 ETH | ||||
11170735 | 1472 days ago | 0.117 ETH | ||||
11170262 | 1472 days ago | 0.005 ETH | ||||
11170253 | 1472 days ago | 0.044 ETH | ||||
11170249 | 1472 days ago | 0.07109408 ETH | ||||
11170247 | 1472 days ago | 0.0702328 ETH | ||||
11170240 | 1472 days ago | 0.18 ETH | ||||
11169871 | 1472 days ago | 0.036 ETH | ||||
11169798 | 1472 days ago | 0.125 ETH | ||||
11169734 | 1472 days ago | 0.286 ETH | ||||
11169084 | 1472 days ago | 0.21134 ETH | ||||
11169071 | 1472 days ago | 0.027 ETH | ||||
11168576 | 1472 days ago | 0.0378 ETH | ||||
11168447 | 1473 days ago | 0.04 ETH | ||||
11167983 | 1473 days ago | 0.12 ETH | ||||
11166873 | 1473 days ago | 0.0297 ETH | ||||
11166827 | 1473 days ago | 0.005 ETH | ||||
11166827 | 1473 days ago | 0.006 ETH | ||||
11166815 | 1473 days ago | 0.208 ETH | ||||
11166812 | 1473 days ago | 0.0052 ETH | ||||
11166809 | 1473 days ago | 0.026 ETH |
Loading...
Loading
Contract Name:
INSSMiner
Compiler Version
v0.6.9+commit.3e3065ac
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-08 */ pragma solidity =0.6.9; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the `nonReentrant` modifier * available, which can be aplied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. */ contract ReentrancyGuard { /// @dev counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () internal { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ // function mod(uint256 a, uint256 b) internal pure returns (uint256) { // require(b != 0, "SafeMath: modulo by zero"); // return a % b; // } } /** ########################################################################################################################### # ### # # # # ##### ###### ##### #### ##### ###### # # ## ##### #### # #### # # ## # # # # # # # # # # # # # # # # # # # # # # # # ##### # # #### # ##### # # # # # # #### # # # # # # # # # # ##### # # # # # ###### ##### # ### # # # # # # ## # # # # # # # # # # # # # # # # ### # # # # ### # # # ###### # # #### # ###### ###### ###### # # # # #### ### # #### ############################################################################################################################ **/ interface IINSS { function mint(address user, uint amount) external; function totalSupply() external view returns (uint256); } // SPDX-License-Identifier: UNLICENSED contract INSSMiner is ReentrancyGuard { using SafeMath for uint256; uint constant DAY = 24 * 60 * 60; uint constant ONE = 10 ** 18; uint constant PERDIFF = 100000; uint constant PERCENT_250 = 250; uint constant PERCENT_100 = 100; uint constant LUCKY_1000_AMOUNT = 1000 ether; uint constant LUCKY_100_AMOUNT = 100 ether; address private immutable feeTo; address private immutable referFrom; IINSS private inss; // a slot for save gas uint96 private topPool; uint80 private luckyPool; // Up to 1.2 million eth uint80 private feePool; struct Order { uint104 value; uint112 withdrawed; uint8 level; uint32 ts; } struct Earn { uint32 earnTs; uint112 luckyBonus; uint112 superBonus; uint96 referBonus; uint80 matchBonus; uint80 topBonus; } struct Lucky { uint112 inValue; uint112 luckyValue; uint32 ts; address user; } mapping(address => Order) orders; mapping(address => Earn) earns; mapping(address => address) refers; mapping(address => uint) cycles; Lucky lucky; // total uint totalDeposit; // mapping(address => uint) refereeNums; mapping(address => uint) partners; mapping(address => uint) referValues; mapping(uint => mapping(address => uint)) public dayReferValues; mapping(uint => address[]) private topAddrs; event NewStaking(address indexed user, address indexed partner, uint256 amount); constructor (address feeto, address referfrom) public { feeTo = feeto; referFrom = referfrom; } function initINSS(address token) external { require(msg.sender == token && address(inss) == address(0), "inss error"); inss = IINSS(token); } function getLucky() external view returns (uint112, uint112, uint32, address) { return (lucky.inValue, lucky.luckyValue, lucky.ts, lucky.user); } function getPools() external view returns (uint , uint96, uint80, uint80) { return (totalDeposit, topPool, luckyPool, feePool); } function referInfo() external view returns (uint, uint, uint) { return (refereeNums[msg.sender], referValues[msg.sender], partners[msg.sender] ); } function myOrder() external view returns (uint104, uint112, uint8, uint, uint32, uint112, uint112, uint96, uint80, uint80, uint, uint) { Order memory order = orders[msg.sender]; Earn memory earn = earns[msg.sender]; (uint wdableEarn, uint edays,) = myEarns(msg.sender); return (order.value, order.withdrawed, order.level, cycles[msg.sender], earn.earnTs, earn.luckyBonus, earn.superBonus, earn.referBonus, earn.matchBonus, earn.topBonus, wdableEarn, edays); } function dayTopAddrs(uint day) external view returns (address[] memory) { return topAddrs[day]; } function join(address p, uint8 level) external payable nonReentrant { address user = msg.sender; uint value = msg.value; require(user != referFrom, "E/refer error"); (uint earned, ,) = myEarns(user); require(earned == 0, "E/need wd"); require(orders[user].withdrawed >= (PERCENT_250 * orders[user].value / PERCENT_100) || !liveUser(user) , "E/aleady"); require(checkValue(user, value), "E/invalid value"); emit NewStaking(user, p, value); mintInss(user, value * (10 + level) / 10); totalDeposit += value; topPool += uint96(value / 20); luckyPool += uint80(value * 3 / 100); feePool += uint80(value * 5 / 100); orders[user] = Order(uint104(value), uint112(0), level, uint32(block.timestamp)); earns[user] = Earn(uint32(block.timestamp), uint112(0), uint112(0), uint96(0), uint80(0), uint80(0)); address refer = refers[user]; if(refer == address(0)) { refer = p; if(!liveUser(p)) { refer = referFrom; } else { refereeNums[refer] += 1; address partnerRefer = refers[refer]; for(uint layer=2; layer<=10 && partnerRefer != referFrom; layer++) { partners[partnerRefer] += 1; partnerRefer = refers[partnerRefer]; } } refers[user] = refer; } awardRefer(refer, 1, value); lucky1000(user, value); } function inssPrice() public view returns (uint) { return ONE - (inss.totalSupply() / ONE * ONE / PERDIFF); } function mintInss(address user, uint value) internal { uint amount = inssAmount(value); inss.mint(user, amount); inss.mint(feeTo, amount / 20); } function inssAmount(uint ethAmount) public view returns (uint) { uint price = inssPrice(); if(price == 0) { return 0; } uint leftEth = ethAmount; uint inssTotal = 0; uint leftInss = ONE - (inss.totalSupply() % ONE); uint spendEth; while(leftEth > 0) { spendEth = leftInss * ONE / price; if (leftEth >= spendEth) { inssTotal += leftInss; leftEth -= spendEth; price -= PERDIFF; leftInss = ONE; } else { inssTotal += leftEth.mul(price).div(ONE); return inssTotal; } } return inssTotal; } function openDayTop() external { return openTopAward(block.timestamp - DAY); } function openTopAward(uint timestamp) public nonReentrant { require(timestamp < block.timestamp, "ts not valid"); uint day = getDay(timestamp); uint nowDay = getDay(block.timestamp); require(nowDay > day, "day not end"); require(topAddrs[day].length > 0, "aleady opened"); uint length = topAddrs[day].length; uint topAward = topPool/10; uint awarded; address topUser; uint percent; for (uint i=0;i < length && i<8; i++) { topUser = topAddrs[day][i]; if(i==0) { percent = 40; } else if (i == 1) { percent = 20; } else if (i == 2) { percent = 12; } else if (i == 3) { percent = 8; } else if (i >= 4) { percent = 5; } earns[topUser].topBonus += uint80(topAward * percent / PERCENT_100); awarded += topAward * percent / PERCENT_100; } topPool -= uint96(awarded); delete topAddrs[day]; } function awardRefer(address refer, uint layer, uint value) internal { if(layer == 1) { earns[refer].referBonus += uint96(value * 7 / PERCENT_100); if (referFrom == refer) { return; } referValues[refer] += value; superRefer100(refer, value); uint day = getDay(block.timestamp); dayReferValues[day][refer] += value; fitTopPos(day, refer); if(refers[refer] == referFrom || !liveUser(refers[refer]) || refereeNums[refers[refer]] < 3) { awardRefer(referFrom, 2, value); } else { awardRefer(refers[refer], 2, value); } } else if (layer == 2) { earns[refer].referBonus += uint96(value * 3 / PERCENT_100); } } function liveUser(address user) internal view returns (bool) { Order memory order = orders[user]; if(order.value > 0) { Earn memory earn = earns[user]; uint earnedValue = userEarn(user); uint valueTop = order.value * PERCENT_250 / PERCENT_100; if(order.withdrawed + earnedValue < valueTop) { uint passDays = (block.timestamp - earn.earnTs) / DAY; if (order.level > 0) { passDays = (passDays / (order.level + 1)) * (order.level + 1); } uint interest = order.value * passDays * (10 + order.level) / 1000; if(order.withdrawed + earnedValue + interest < valueTop) { return true; } } } } function userEarn(address user) internal view returns (uint) { Earn memory earn = earns[user]; return earn.referBonus + earn.matchBonus + earn.topBonus + earn.luckyBonus; } function checkValue(address user, uint value) internal view returns (bool) { uint lastValue = orders[user].value; if(cycles[user] == 0) { if(value >= 0.1 ether && value <= 20 ether) { return true; } } else if (cycles[user] >= 5) { if(value >= lastValue) { return true; } } else { if(value >= lastValue && value <= (10 * (2 ** (cycles[user] + 1 ))) * 1 ether) { return true; } } return false; } // UTC+2 (8:00) OK function getDay(uint ts) internal pure returns (uint) { return (ts - 21600) / DAY; // 6 * 60 * 60 86400 } function lucky1000(address user, uint value) internal { uint times = 1 + ((address(this).balance - value) / LUCKY_1000_AMOUNT); uint luckyV = times * LUCKY_1000_AMOUNT; if(address(this).balance >= luckyV && (address(this).balance - value) < luckyV ) { uint112 lv = uint112(luckyPool/2); earns[user].luckyBonus += lv; luckyPool = luckyPool / 2; lucky = Lucky(uint112(value), lv, uint32(block.timestamp), user); } } // super bonus function superRefer100(address refer, uint value) internal { uint times = 1 + ((referValues[refer] - value) / LUCKY_100_AMOUNT); uint luckyV = times * LUCKY_100_AMOUNT; if(referValues[refer] >= luckyV && (referValues[refer] - value) < luckyV ) { earns[refer].superBonus += 3 ether; } } function wdFee() external { uint fee = feePool; feePool = 0; payable(feeTo).transfer(fee); } function wdEarn() external nonReentrant { address payable user = msg.sender; (uint earn, uint earnDays, bool over) = myEarns(user); uint superBonus = earns[user].superBonus; if(earn + superBonus == 0) { return; } orders[user].withdrawed += uint112(earn); uint32 earnTs = earns[user].earnTs + uint32(earnDays * DAY); earns[user] = Earn(earnTs, uint112(0), uint112(0), uint96(0), uint80(0), uint80(0)); if(over) { cycles[user] += 1; } user.transfer(earn + superBonus); address refer = user; for(uint layer=1; layer<=10 && refer != referFrom; layer++) { refer = refers[refer]; matchAward(refer, layer, earn); } } function matchAward(address refer, uint layer, uint value) internal { if(layer == 1) { earns[refer].matchBonus += uint80(value * 20 / PERCENT_100); } else if(refereeNums[refer] >= layer) { if(layer == 2) { earns[refer].matchBonus += uint80(value * 10 / PERCENT_100); } else if(layer == 3 || layer == 4 || layer == 5 ) { earns[refer].matchBonus += uint80(value * 7 / PERCENT_100); } else if (layer >= 6) { earns[refer].matchBonus += uint80(value * 3 / PERCENT_100); } } } // bool : over function myEarns(address user) internal view returns(uint, uint , bool) { if(user == referFrom) { return (earns[user].referBonus + earns[user].matchBonus, 0 , false); } Order memory order = orders[user]; Earn memory earned = earns[user]; uint earnedValue = userEarn(user); uint valueTop = order.value * PERCENT_250 / PERCENT_100; if(order.value > 0 && order.withdrawed < valueTop) { uint passDays = (block.timestamp - earned.earnTs) / DAY; if (order.level > 0) { passDays = (passDays / (order.level + 1)) * (order.level + 1); } uint yield = order.value * passDays * (10 + order.level) / 1000; if(order.withdrawed + earnedValue + yield < valueTop) { return (earnedValue + yield, passDays, false); } else { return (valueTop - order.withdrawed, passDays, true); } } } function fitTopPos(uint day, address refer) internal { uint length = topAddrs[day].length ; for (uint i = 0 ; i < length ; i++) { if (refer == topAddrs[day][i]) { // aleady in top8. swapLast(day, i, refer); return ; } } // if top8 list has space. if (length < 8) { topAddrs[day].push(refer); swapLast(day, length, refer); } else { // compare the last one. if(dayReferValues[day][refer] > dayReferValues[day][topAddrs[day][7]]) { topAddrs[day][7] = refer; swapLast(day, 7, refer); } } } function swapLast(uint day, uint pos, address refer) internal { while (pos >= 1 && dayReferValues[day][refer] > dayReferValues[day][topAddrs[day][pos-1]] ) { // big then pre , then swap topAddrs[day][pos] = topAddrs[day][pos-1]; // pre move to back topAddrs[day][pos-1] = refer; // move the curr to pre pos -= 1; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"feeto","type":"address"},{"internalType":"address","name":"referfrom","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"partner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewStaking","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"dayReferValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"dayTopAddrs","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLucky","outputs":[{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"initINSS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"inssAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inssPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"join","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"myOrder","outputs":[{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openDayTop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"openTopAward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wdEarn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wdFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b5060405162004a7f38038062004a7f8339818101604052604081101561003557600080fd5b81019080805190602001909291908051906020019092919050505060016000819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505060805160601c60a05160601c6149656200011a600039806116c65280611a72528061231d528061240a52806126e4528061387e528061398c5280613b5b5250806106a7528061371152506149656000f3fe6080604052600436106100dd5760003560e01c806397392cdf1161007f578063da3ef8d011610059578063da3ef8d0146104df578063e5147f6f1461052e578063ee9a9ef414610545578063f43706a814610596576100dd565b806397392cdf146103e7578063985019f714610438578063b7a347081461044f576100dd565b8063673a2a1f116100bb578063673a2a1f146101935780636b5a53831461021f57806378169c671461025857806383faec0814610293576100dd565b8063496f03d3146100e25780634cf2f4c8146100f957806363757a0d14610124575b600080fd5b3480156100ee57600080fd5b506100f761064e565b005b34801561010557600080fd5b5061010e61070f565b6040518082815260200191505060405180910390f35b34801561013057600080fd5b5061017d6004803603604081101561014757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e2565b6040518082815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610807565b60405180858152602001846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff1681526020018269ffffffffffffffffffff1669ffffffffffffffffffff16815260200194505050505060405180910390f35b34801561022b57600080fd5b5061023461086b565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561026457600080fd5b506102916004803603602081101561027b57600080fd5b810190808035906020019092919050505061093b565b005b34801561029f57600080fd5b506102a8610da6565b604051808d6cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1681526020018c6dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018b60ff1660ff1681526020018a81526020018963ffffffff1663ffffffff168152602001886dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001876dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112e565b005b34801561044457600080fd5b5061044d61126d565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050611817565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104cb5780820151818401526020810190506104b0565b505050509050019250505060405180910390f35b3480156104eb57600080fd5b506105186004803603602081101561050257600080fd5b81019080803590602001909291905050506118b8565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b50610543611a40565b005b6105946004803603604081101561055b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a50565b005b3480156105a257600080fd5b506105ab612633565b60405180856dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018363ffffffff1663ffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b60006002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16905060006002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561070b573d6000803e3d6000fd5b5050565b6000620186a0670de0b6b3a764000080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d60208110156107b157600080fd5b8101908080519060200190929190505050816107c957fe5b0402816107d257fe5b04670de0b6b3a764000003905090565b600d602052816000526040600020602052806000526040600020600091509150505481565b600080600080600954600160149054906101000a90046bffffffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff16935093509350935090919293565b6000806000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925092509250909192565b600160008082825401925050819055506000805490504282106109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7473206e6f742076616c6964000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006109d1836126c3565b905060006109de426126c3565b9050818111610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f646179206e6f7420656e6400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905011610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c65616479206f70656e65640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905090506000600a600160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1681610b3057fe5b046bffffffffffffffffffffffff169050600080600080600090505b8581108015610b5b5750600881105b15610cb657600e60008981526020019081526020016000208181548110610b7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000811415610bbd5760289150610c04565b6001811415610bcf5760149150610c03565b6002811415610be157600c9150610c02565b6003811415610bf35760089150610c01565b60048110610c0057600591505b5b5b5b5b606482860281610c1057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160168282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606482860281610ca457fe5b04840193508080600101915050610b4c565b5082600160148282829054906101000a90046bffffffffffffffffffffffff160392506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600e60008881526020019081526020016000206000610d2491906147f6565b505050505050506000548114610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b600080600080600080600080600080600080610dc0614817565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050610edc614867565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600080611090336126dd565b5091509150836000015184602001518560400151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486600001518760200151886040015189606001518a608001518b60a001518b8b9f509f509f509f509f509f509f509f509f509f509f509f5050505050909192939495969798999a9b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156111b75750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f696e7373206572726f720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600080828254019250508190555060008054905060003390506000806000611296846126dd565b9250925092506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000818501141561132257505050505061179d565b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d8282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506000620151808402600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff160190506040518060c001604052808263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050508215611663576001600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8573ffffffffffffffffffffffffffffffffffffffff166108fc8387019081150290604051600060405180830381858888f193505050501580156116ab573d6000803e3d6000fd5b5060008690506000600190505b600a811115801561171557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611787828289612c41565b80806001019150506116b8565b50505050505050505b6000548114611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b50565b6060600e60008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611862575b50505050509050919050565b6000806118c361070f565b905060008114156118d8576000915050611a3b565b600083905060008090506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195557600080fd5b505afa158015611969573d6000803e3d6000fd5b505050506040513d602081101561197f57600080fd5b81019080805190602001909291905050508161199757fe5b06670de0b6b3a764000003905060005b6000841115611a325784670de0b6b3a76400008302816119c357fe5b0490508084106119ef5781830192508084039350620186a085039450670de0b6b3a76400009150611a2d565b611a1c670de0b6b3a7640000611a0e8787612f2d90919063ffffffff16565b612fb390919063ffffffff16565b830192508295505050505050611a3b565b6119a7565b82955050505050505b919050565b611a4e62015180420361093b565b565b60016000808282540192505081905550600080549050600033905060003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f452f7265666572206572726f720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611b3d836126dd565b5050905060008114611bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f452f6e656564207764000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1660fa0281611c2e57fe5b04600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16101580611caf5750611cad83613042565b155b611d21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f452f616c6561647900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d2b838361343a565b611d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f452f696e76616c69642076616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fbc77f75c7aee3e428696f7c010334a24f2af57782220ce937041f2f6ddb3b09f846040518082815260200191505060405180910390a3611e1e83600a87600a0160ff16850281611e1857fe5b04613603565b8160096000828254019250508190555060148281611e3857fe5b04600160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060646003830281611e9357fe5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646005830281611ee857fe5b046002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280836cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681526020018660ff1681526020014263ffffffff16815250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601b6101000a81548160ff021916908360ff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518060c001604052804263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259d5786905061231787613042565b612343577f0000000000000000000000000000000000000000000000000000000000000000905061251e565b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600290505b600a811115801561245957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561251b576001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080806001019150506123fc565b50505b80600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6125a9816001856137c1565b6125b38484613ca5565b50505050600054811461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b505050565b600080600080600760000160009054906101000a90046dffffffffffffffffffffffffffff166007600001600e9054906101000a90046dffffffffffffffffffffffffffff166007600001601c9054906101000a900463ffffffff16600760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000620151806154608303816126d557fe5b049050919050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561281957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046bffffffffffffffffffffffff1601600080826bffffffffffffffffffffffff169250819150925092509250612c3a565b612821614817565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905061293d614867565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff168152505090506000612af087613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff160281612b1457fe5b049050600084600001516cffffffffffffffffffffffffff16118015612b4d57508084602001516dffffffffffffffffffffffffffff16105b15612c3557600062015180846000015163ffffffff16420381612b6c57fe5b0490506000856040015160ff161115612ba257600185604001510160ff16600186604001510160ff168281612b9d57fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff16020281612bd057fe5b04905082818588602001516dffffffffffffffffffffffffffff1601011015612c0a57808401826000985098509850505050505050612c3a565b85602001516dffffffffffffffffffffffffffff168303826001985098509850505050505050612c3a565b505050505b9193909250565b6001821415612ce45760646014820281612c5757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f28565b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f27576002821415612dcd576064600a820281612d4057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f26565b6003821480612ddc5750600482145b80612de75750600582145b15612e865760646007820281612df957fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f25565b60068210612f245760646003820281612e9b57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5b5b5b505050565b600080831415612f405760009050612fad565b6000828402905082848281612f5157fe5b0414612fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061490f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161303557fe5b0490508091505092915050565b600061304c614817565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001516cffffffffffffffffffffffffff16111561343357613184614867565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600061333785613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff16028161335b57fe5b049050808285602001516dffffffffffffffffffffffffffff1601101561342f57600062015180846000015163ffffffff1642038161339657fe5b0490506000856040015160ff1611156133cc57600185604001510160ff16600186604001510160ff1682816133c757fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff160202816133fa57fe5b04905082818588602001516dffffffffffffffffffffffffffff160101101561342c5760019650505050505050613435565b50505b5050505b505b919050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135275767016345785d8a0000831015801561351357506801158e460913d000008311155b156135225760019150506135fd565b6135f7565b6005600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135845780831061357f5760019150506135fd565b6135f6565b8083101580156135e65750670de0b6b3a76400006001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160020a600a02028311155b156135f55760019150506135fd565b5b5b60009150505b92915050565b600061360e826118b8565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156136b957600080fd5b505af11580156136cd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f197f00000000000000000000000000000000000000000000000000000000000000006014848161373a57fe5b046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137a457600080fd5b505af11580156137b8573d6000803e3d6000fd5b50505050505050565b6001821415613bf957606460078202816137d757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614156138be57613ca0565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506139158382614168565b6000613920426126c3565b905081600d600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061398a818561430a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613aa85750613aa6600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613042565b155b80613b5157506003600a6000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613b8757613b827f00000000000000000000000000000000000000000000000000000000000000006002846137c1565b613bf3565b613bf2600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002846137c1565b5b50613c9f565b6002821415613c9e5760646003820281613c0f57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b5b5b505050565b6000683635c9adc5dea0000082470381613cbb57fe5b0460010190506000683635c9adc5dea0000082029050804710158015613ce2575080834703105b15613f5b57600060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613d1657fe5b0469ffffffffffffffffffff16905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160048282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613de657fe5b04600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280856dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020014263ffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250600760008201518160000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550602082015181600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050505b50505050565b6000613f6b614867565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681525050905080602001518160a0015169ffffffffffffffffffff16826080015169ffffffffffffffffffff16836060015101016bffffffffffffffffffffffff16016dffffffffffffffffffffffffffff16915050919050565b600068056bc75e2d6310000082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403816141bd57fe5b046001019050600068056bc75e2d631000008202905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561426257508083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15614304576729a2241af62c0000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160128282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b50505050565b6000600e600084815260200190815260200160002080549050905060008090505b818110156143ce57600e6000858152602001908152602001600020818154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143c1576143ba8482856145c9565b50506145c5565b808060010191505061432b565b50600881101561445c57600e6000848152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506144578382846145c9565b6145c3565b600d60008481526020019081526020016000206000600e600086815260200190815260200160002060078154811061449057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156145c25781600e600085815260200190815260200160002060078154811061456d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145c1836007846145c9565b5b5b505b5050565b5b600182101580156146c55750600d60008481526020019081526020016000206000600e6000868152602001908152602001600020600185038154811061460c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156147f157600e600084815260200190815260200160002060018303815481106146eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e6000858152602001908152602001600020838154811061473457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e6000858152602001908152602001600020600184038154811061479e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820391506145ca565b505050565b508054600082559060005260206000209081019061481491906148e9565b50565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff168152602001600060ff168152602001600063ffffffff1681525090565b6040518060c00160405280600063ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff1681525090565b61490b91905b808211156149075760008160009055506001016148ef565b5090565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122040a1c13ce8c373343e433935689c7243fdb952688db7f7f8a1eeb3b293a57d2c64736f6c63430006090033000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c806397392cdf1161007f578063da3ef8d011610059578063da3ef8d0146104df578063e5147f6f1461052e578063ee9a9ef414610545578063f43706a814610596576100dd565b806397392cdf146103e7578063985019f714610438578063b7a347081461044f576100dd565b8063673a2a1f116100bb578063673a2a1f146101935780636b5a53831461021f57806378169c671461025857806383faec0814610293576100dd565b8063496f03d3146100e25780634cf2f4c8146100f957806363757a0d14610124575b600080fd5b3480156100ee57600080fd5b506100f761064e565b005b34801561010557600080fd5b5061010e61070f565b6040518082815260200191505060405180910390f35b34801561013057600080fd5b5061017d6004803603604081101561014757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e2565b6040518082815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610807565b60405180858152602001846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff1681526020018269ffffffffffffffffffff1669ffffffffffffffffffff16815260200194505050505060405180910390f35b34801561022b57600080fd5b5061023461086b565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561026457600080fd5b506102916004803603602081101561027b57600080fd5b810190808035906020019092919050505061093b565b005b34801561029f57600080fd5b506102a8610da6565b604051808d6cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1681526020018c6dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018b60ff1660ff1681526020018a81526020018963ffffffff1663ffffffff168152602001886dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001876dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112e565b005b34801561044457600080fd5b5061044d61126d565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050611817565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104cb5780820151818401526020810190506104b0565b505050509050019250505060405180910390f35b3480156104eb57600080fd5b506105186004803603602081101561050257600080fd5b81019080803590602001909291905050506118b8565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b50610543611a40565b005b6105946004803603604081101561055b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a50565b005b3480156105a257600080fd5b506105ab612633565b60405180856dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018363ffffffff1663ffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b60006002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16905060006002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055507f000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561070b573d6000803e3d6000fd5b5050565b6000620186a0670de0b6b3a764000080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d60208110156107b157600080fd5b8101908080519060200190929190505050816107c957fe5b0402816107d257fe5b04670de0b6b3a764000003905090565b600d602052816000526040600020602052806000526040600020600091509150505481565b600080600080600954600160149054906101000a90046bffffffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff16935093509350935090919293565b6000806000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925092509250909192565b600160008082825401925050819055506000805490504282106109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7473206e6f742076616c6964000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006109d1836126c3565b905060006109de426126c3565b9050818111610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f646179206e6f7420656e6400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905011610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c65616479206f70656e65640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905090506000600a600160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1681610b3057fe5b046bffffffffffffffffffffffff169050600080600080600090505b8581108015610b5b5750600881105b15610cb657600e60008981526020019081526020016000208181548110610b7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000811415610bbd5760289150610c04565b6001811415610bcf5760149150610c03565b6002811415610be157600c9150610c02565b6003811415610bf35760089150610c01565b60048110610c0057600591505b5b5b5b5b606482860281610c1057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160168282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606482860281610ca457fe5b04840193508080600101915050610b4c565b5082600160148282829054906101000a90046bffffffffffffffffffffffff160392506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600e60008881526020019081526020016000206000610d2491906147f6565b505050505050506000548114610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b600080600080600080600080600080600080610dc0614817565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050610edc614867565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600080611090336126dd565b5091509150836000015184602001518560400151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486600001518760200151886040015189606001518a608001518b60a001518b8b9f509f509f509f509f509f509f509f509f509f509f509f5050505050909192939495969798999a9b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156111b75750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f696e7373206572726f720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600080828254019250508190555060008054905060003390506000806000611296846126dd565b9250925092506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000818501141561132257505050505061179d565b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d8282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506000620151808402600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff160190506040518060c001604052808263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050508215611663576001600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8573ffffffffffffffffffffffffffffffffffffffff166108fc8387019081150290604051600060405180830381858888f193505050501580156116ab573d6000803e3d6000fd5b5060008690506000600190505b600a811115801561171557507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611787828289612c41565b80806001019150506116b8565b50505050505050505b6000548114611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b50565b6060600e60008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611862575b50505050509050919050565b6000806118c361070f565b905060008114156118d8576000915050611a3b565b600083905060008090506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195557600080fd5b505afa158015611969573d6000803e3d6000fd5b505050506040513d602081101561197f57600080fd5b81019080805190602001909291905050508161199757fe5b06670de0b6b3a764000003905060005b6000841115611a325784670de0b6b3a76400008302816119c357fe5b0490508084106119ef5781830192508084039350620186a085039450670de0b6b3a76400009150611a2d565b611a1c670de0b6b3a7640000611a0e8787612f2d90919063ffffffff16565b612fb390919063ffffffff16565b830192508295505050505050611a3b565b6119a7565b82955050505050505b919050565b611a4e62015180420361093b565b565b60016000808282540192505081905550600080549050600033905060003490507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f452f7265666572206572726f720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611b3d836126dd565b5050905060008114611bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f452f6e656564207764000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1660fa0281611c2e57fe5b04600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16101580611caf5750611cad83613042565b155b611d21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f452f616c6561647900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d2b838361343a565b611d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f452f696e76616c69642076616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fbc77f75c7aee3e428696f7c010334a24f2af57782220ce937041f2f6ddb3b09f846040518082815260200191505060405180910390a3611e1e83600a87600a0160ff16850281611e1857fe5b04613603565b8160096000828254019250508190555060148281611e3857fe5b04600160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060646003830281611e9357fe5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646005830281611ee857fe5b046002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280836cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681526020018660ff1681526020014263ffffffff16815250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601b6101000a81548160ff021916908360ff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518060c001604052804263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259d5786905061231787613042565b612343577f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725905061251e565b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600290505b600a811115801561245957507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561251b576001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080806001019150506123fc565b50505b80600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6125a9816001856137c1565b6125b38484613ca5565b50505050600054811461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b505050565b600080600080600760000160009054906101000a90046dffffffffffffffffffffffffffff166007600001600e9054906101000a90046dffffffffffffffffffffffffffff166007600001601c9054906101000a900463ffffffff16600760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000620151806154608303816126d557fe5b049050919050565b60008060007f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561281957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046bffffffffffffffffffffffff1601600080826bffffffffffffffffffffffff169250819150925092509250612c3a565b612821614817565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905061293d614867565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff168152505090506000612af087613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff160281612b1457fe5b049050600084600001516cffffffffffffffffffffffffff16118015612b4d57508084602001516dffffffffffffffffffffffffffff16105b15612c3557600062015180846000015163ffffffff16420381612b6c57fe5b0490506000856040015160ff161115612ba257600185604001510160ff16600186604001510160ff168281612b9d57fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff16020281612bd057fe5b04905082818588602001516dffffffffffffffffffffffffffff1601011015612c0a57808401826000985098509850505050505050612c3a565b85602001516dffffffffffffffffffffffffffff168303826001985098509850505050505050612c3a565b505050505b9193909250565b6001821415612ce45760646014820281612c5757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f28565b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f27576002821415612dcd576064600a820281612d4057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f26565b6003821480612ddc5750600482145b80612de75750600582145b15612e865760646007820281612df957fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f25565b60068210612f245760646003820281612e9b57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5b5b5b505050565b600080831415612f405760009050612fad565b6000828402905082848281612f5157fe5b0414612fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061490f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161303557fe5b0490508091505092915050565b600061304c614817565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001516cffffffffffffffffffffffffff16111561343357613184614867565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600061333785613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff16028161335b57fe5b049050808285602001516dffffffffffffffffffffffffffff1601101561342f57600062015180846000015163ffffffff1642038161339657fe5b0490506000856040015160ff1611156133cc57600185604001510160ff16600186604001510160ff1682816133c757fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff160202816133fa57fe5b04905082818588602001516dffffffffffffffffffffffffffff160101101561342c5760019650505050505050613435565b50505b5050505b505b919050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135275767016345785d8a0000831015801561351357506801158e460913d000008311155b156135225760019150506135fd565b6135f7565b6005600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135845780831061357f5760019150506135fd565b6135f6565b8083101580156135e65750670de0b6b3a76400006001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160020a600a02028311155b156135f55760019150506135fd565b5b5b60009150505b92915050565b600061360e826118b8565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156136b957600080fd5b505af11580156136cd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f197f000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d6014848161373a57fe5b046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137a457600080fd5b505af11580156137b8573d6000803e3d6000fd5b50505050505050565b6001821415613bf957606460078202816137d757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff1614156138be57613ca0565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506139158382614168565b6000613920426126c3565b905081600d600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061398a818561430a565b7f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613aa85750613aa6600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613042565b155b80613b5157506003600a6000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613b8757613b827f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d7256002846137c1565b613bf3565b613bf2600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002846137c1565b5b50613c9f565b6002821415613c9e5760646003820281613c0f57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b5b5b505050565b6000683635c9adc5dea0000082470381613cbb57fe5b0460010190506000683635c9adc5dea0000082029050804710158015613ce2575080834703105b15613f5b57600060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613d1657fe5b0469ffffffffffffffffffff16905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160048282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613de657fe5b04600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280856dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020014263ffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250600760008201518160000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550602082015181600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050505b50505050565b6000613f6b614867565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681525050905080602001518160a0015169ffffffffffffffffffff16826080015169ffffffffffffffffffff16836060015101016bffffffffffffffffffffffff16016dffffffffffffffffffffffffffff16915050919050565b600068056bc75e2d6310000082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403816141bd57fe5b046001019050600068056bc75e2d631000008202905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561426257508083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15614304576729a2241af62c0000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160128282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b50505050565b6000600e600084815260200190815260200160002080549050905060008090505b818110156143ce57600e6000858152602001908152602001600020818154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143c1576143ba8482856145c9565b50506145c5565b808060010191505061432b565b50600881101561445c57600e6000848152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506144578382846145c9565b6145c3565b600d60008481526020019081526020016000206000600e600086815260200190815260200160002060078154811061449057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156145c25781600e600085815260200190815260200160002060078154811061456d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145c1836007846145c9565b5b5b505b5050565b5b600182101580156146c55750600d60008481526020019081526020016000206000600e6000868152602001908152602001600020600185038154811061460c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156147f157600e600084815260200190815260200160002060018303815481106146eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e6000858152602001908152602001600020838154811061473457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e6000858152602001908152602001600020600184038154811061479e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820391506145ca565b505050565b508054600082559060005260206000209081019061481491906148e9565b50565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff168152602001600060ff168152602001600063ffffffff1681525090565b6040518060c00160405280600063ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff1681525090565b61490b91905b808211156149075760008160009055506001016148ef565b5090565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122040a1c13ce8c373343e433935689c7243fdb952688db7f7f8a1eeb3b293a57d2c64736f6c63430006090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725
-----Decoded View---------------
Arg [0] : feeto (address): 0xbB46Bb15F1F710C9C559CdDf0325ccd16C1f970d
Arg [1] : referfrom (address): 0xb2ff63B2a2dFc719523f169Ed13D36604839d725
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d
Arg [1] : 000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,221.42 | 0.00711173 | $22.91 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.