Overview
ETH Balance
3.110032787276957556 ETH
Eth Value
$12,575.88 (@ $4,043.65/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 9,086 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20354512 | 148 days ago | IN | 0 ETH | 0.00021897 | ||||
Withdraw | 20278565 | 158 days ago | IN | 0 ETH | 0.00041316 | ||||
Withdraw | 14945564 | 919 days ago | IN | 0 ETH | 0.00202695 | ||||
Withdraw | 7760131 | 2042 days ago | IN | 0 ETH | 0.00028608 | ||||
Withdraw | 7758922 | 2043 days ago | IN | 0 ETH | 0.00028608 | ||||
Withdraw | 7758885 | 2043 days ago | IN | 0 ETH | 0.00032555 | ||||
Buy Xid | 7758282 | 2043 days ago | IN | 0.03 ETH | 0.00196859 | ||||
Buy Xaddr | 7755430 | 2043 days ago | IN | 0.001 ETH | 0.00072985 | ||||
Buy Xid | 7755428 | 2043 days ago | IN | 0.001 ETH | 0.00332365 | ||||
Activate | 7755428 | 2043 days ago | IN | 0 ETH | 0.00002193 | ||||
Withdraw | 7109457 | 2155 days ago | IN | 0 ETH | 0.00017164 | ||||
Buy Xaddr | 6454482 | 2264 days ago | IN | 0.00029121 ETH | 0.00021864 | ||||
Withdraw | 6448379 | 2265 days ago | IN | 0 ETH | 0.00031277 | ||||
Withdraw | 6280307 | 2293 days ago | IN | 0 ETH | 0.00025022 | ||||
Withdraw | 6225473 | 2302 days ago | IN | 0 ETH | 0.00031277 | ||||
Withdraw | 6217842 | 2304 days ago | IN | 0 ETH | 0.00047555 | ||||
Withdraw | 6201026 | 2306 days ago | IN | 0 ETH | 0.00021511 | ||||
Withdraw | 6201019 | 2306 days ago | IN | 0 ETH | 0.00074056 | ||||
Buy Xname | 6198702 | 2307 days ago | IN | 0.000075 ETH | 0.0028467 | ||||
Re Load Xname | 6198693 | 2307 days ago | IN | 0 ETH | 0.00011524 | ||||
Withdraw | 6184865 | 2309 days ago | IN | 0 ETH | 0.00025022 | ||||
Withdraw | 6181242 | 2310 days ago | IN | 0 ETH | 0.00004755 | ||||
Withdraw | 6167968 | 2312 days ago | IN | 0 ETH | 0.00012511 | ||||
Withdraw | 6166369 | 2312 days ago | IN | 0 ETH | 0.00031277 | ||||
Withdraw | 6128652 | 2319 days ago | IN | 0 ETH | 0.00019022 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20354512 | 148 days ago | 0.21596078 ETH | ||||
20278565 | 158 days ago | 0.00841917 ETH | ||||
7758885 | 2043 days ago | 0.03159023 ETH | ||||
7758282 | 2043 days ago | 0.0000225 ETH | ||||
7755430 | 2043 days ago | 0.00003 ETH | ||||
7755428 | 2043 days ago | 0.00003 ETH | ||||
6448379 | 2265 days ago | 0.00694177 ETH | ||||
6280307 | 2293 days ago | 1.23724917 ETH | ||||
6225473 | 2302 days ago | 0.01221891 ETH | ||||
6217842 | 2304 days ago | 0.01328817 ETH | ||||
6201026 | 2306 days ago | 0.00005639 ETH | ||||
6201019 | 2306 days ago | 0.00002746 ETH | ||||
6201019 | 2306 days ago | 0.00000123 ETH | ||||
6198702 | 2307 days ago | 0.00000225 ETH | ||||
6184865 | 2309 days ago | 0.00015793 ETH | ||||
6181242 | 2310 days ago | 0.02712876 ETH | ||||
6167968 | 2312 days ago | 0.00046322 ETH | ||||
6166369 | 2312 days ago | 0.30953448 ETH | ||||
6128652 | 2319 days ago | 0.00413163 ETH | ||||
6123881 | 2319 days ago | 0.00231918 ETH | ||||
6104424 | 2323 days ago | 0.43915251 ETH | ||||
6104418 | 2323 days ago | 0.01305469 ETH | ||||
6104418 | 2323 days ago | 0.00000114 ETH | ||||
6102272 | 2323 days ago | 0.00000236 ETH | ||||
6100235 | 2323 days ago | 0.00402175 ETH |
Loading...
Loading
Contract Name:
WorldFomo
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-25 */ pragma solidity ^0.4.24; /** * , , * $, $, , * "ss.$ss. .s' * , .ss$$$$$$$$$$s, * $. s$$$$$$$$$$$$$$`$$Ss * "$$$$$$$$$$$$$$$$$$o$$$ , * s$$$$$$$$$$$$$$$$$$$$$$$$s, ,s * s$$$$$$$$$"$$$$$$""""$$$$$$"$$$$$, * s$$$$$$$$$$s""$$$$ssssss"$$$$$$$$" * s$$$$$$$$$$' `"""ss"$"$s"" * s$$$$$$$$$$, `"""""$ .s$$s * s$$$$$$$$$$$$s,... `s$$' ` * `ssss$$$$$$$$$$$$$$$$$$$$####s. .$$"$. , s- * `""""$$$$$$$$$$$$$$$$$$$$#####$$$$$$" $.$' * 祝你成功 "$$$$$$$$$$$$$$$$$$$$$####s"" .$$$| * 福 喜喜 "$$$$$$$$$$$$$$$$$$$$$$$$##s .$$" $ * $$""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ` * $$" "$"$$$$$$$$$$$$$$$$$$$$S""""' * , ," ' $$$$$$$$$$$$$$$$####s * $. .s$$$$$$$$$$$$$$$$$####" * , "$s. ..ssS$$$$$$$$$$$$$$$$$$$####" * $ .$$$S$$$$$$$$$$$$$$$$$$$$$$$$#####" * Ss ..sS$$$$$$$$$$$$$$$$$$$$$$$$$$$######"" * "$$sS$$$$$$$$$$$$$$$$$$$$$$$$$$$########" * , s$$$$$$$$$$$$$$$$$$$$$$$$#########""' * $ s$$$$$$$$$$$$$$$$$$$$$#######""' s' , * $$..$$$$$$$$$$$$$$$$$$######"' ....,$$.... ,$ * "$$$$$$$$$$$$$$$######"' , .sS$$$$$$$$$$$$$$$$s$$ * $$$$$$$$$$$$#####" $, .s$$$$$$$$$$$$$$$$$$$$$$$$s. * ) $$$$$$$$$$$#####' `$$$$$$$$$###########$$$$$$$$$$$. * (( $$$$$$$$$$$##### $$$$$$$$###" "####$$$$$$$$$$ * ) \ $$$$$$$$$$$$####. $$$$$$###" "###$$$$$$$$$ s' * ( ) $$$$$$$$$$$$$####. $$$$$###" ####$$$$$$$$s$$' * ) ( ( $$"$$$$$$$$$$$#####.$$$$$###' .###$$$$$$$$$$" * ( ) ) _,$" $$$$$$$$$$$$######.$$##' .###$$$$$$$$$$ * ) ( ( \. "$$$$$$$$$$$$$#######,,,. ..####$$$$$$$$$$$" *( )$ ) ) ,$$$$$$$$$$$$$$$$$$####################$$$$$$$$$$$" *( ($$ ( \ _sS" `"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$S$$, * ) )$$$s ) ) . . `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"' `$$ * ( $$$Ss/ .$, .$,,s$$$$$$##S$$$$$$$$$$$$$$$$$$$$$$$$S"" ' * \)_$$$$$$$$$$$$$$$$$$$$$$$##" $$ `$$. `$$. * `"S$$$$$$$$$$$$$$$$$#" $ `$ `$ * `"""""""""""""' ' ' ' */ contract F3Devents { // 只要玩家注册了名字就会被解雇 event onNewName ( uint256 indexed playerID, address indexed playerAddress, bytes32 indexed playerName, bool isNewPlayer, uint256 affiliateID, address affiliateAddress, bytes32 affiliateName, uint256 amountPaid, uint256 timeStamp ); // 在购买或重装结束时解雇 event onEndTx ( uint256 compressedData, uint256 compressedIDs, bytes32 playerName, address playerAddress, uint256 ethIn, uint256 keysBought, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 P3DAmount, uint256 genAmount, uint256 potAmount, uint256 airDropPot ); // 只要有人退出就会被解雇 event onWithdraw ( uint256 indexed playerID, address playerAddress, bytes32 playerName, uint256 ethOut, uint256 timeStamp ); // 每当撤军力量结束时,就会被解雇 event onWithdrawAndDistribute ( address playerAddress, bytes32 playerName, uint256 ethOut, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 P3DAmount, uint256 genAmount ); // (fomo3d免费) 每当玩家尝试一轮又一轮的计时器时就会被解雇 // 命中零,并导致结束回合 event onBuyAndDistribute ( address playerAddress, bytes32 playerName, uint256 ethIn, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 P3DAmount, uint256 genAmount ); // (fomo3d免费) 每当玩家在圆形时间后尝试重新加载时就会触发 // 命中零,并导致结束回合. event onReLoadAndDistribute ( address playerAddress, bytes32 playerName, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 P3DAmount, uint256 genAmount ); // 每当联盟会员付款时就会被解雇 event onAffiliatePayout ( uint256 indexed affiliateID, address affiliateAddress, bytes32 affiliateName, uint256 indexed roundID, uint256 indexed buyerID, uint256 amount, uint256 timeStamp ); // 收到罐子掉期存款 event onPotSwapDeposit ( uint256 roundID, uint256 amountAddedToPot ); } //============================================================================== // _ _ _ _|_ _ _ __|_ _ _ _|_ _ . // (_(_)| | | | (_|(_ | _\(/_ | |_||_) . //====================================|========================================= contract modularShort is F3Devents {} contract WorldFomo is modularShort { using SafeMath for *; using NameFilter for string; using F3DKeysCalcShort for uint256; PlayerBookInterface constant private PlayerBook = PlayerBookInterface(0x6ed17ee485821cd47531f2e4c7b9ef8b48f2bab5); //============================================================================== // _ _ _ |`. _ _ _ |_ | _ _ . // (_(_)| |~|~|(_||_|| (_||_)|(/__\ . (游戏设置) //=================_|=========================================================== address private admin = msg.sender; string constant public name = "WorldFomo"; string constant public symbol = "WF"; uint256 private rndExtra_ = 15 seconds; // 第一个ICO的长度 uint256 private rndGap_ = 30 minutes; // ICO阶段的长度,EOS设定为1年。 uint256 constant private rndInit_ = 30 minutes; // 圆计时器从此开始 uint256 constant private rndInc_ = 10 seconds; // 购买的每一把钥匙都会给计时器增加很多 uint256 constant private rndMax_ = 12 hours; // 圆形计时器的最大长度可以是 //============================================================================== // _| _ _|_ _ _ _ _|_ _ . // (_|(_| | (_| _\(/_ | |_||_) . (用于存储更改的游戏信息的数据) //=============================|================================================ uint256 public airDropPot_; // 获得空投的人赢得了这个锅的一部分 uint256 public airDropTracker_ = 0; // 每次“合格”tx发生时递增。用于确定获胜的空投 uint256 public rID_; // 已发生的轮次ID /总轮数 //**************** // 球员数据 //**************** mapping (address => uint256) public pIDxAddr_; // (addr => pID)按地址返回玩家ID mapping (bytes32 => uint256) public pIDxName_; // (name => pID)按名称返回玩家ID mapping (uint256 => F3Ddatasets.Player) public plyr_; // (pID => data) 球员数据 mapping (uint256 => mapping (uint256 => F3Ddatasets.PlayerRounds)) public plyrRnds_; // (pID => rID => data) 玩家ID和轮次ID的玩家轮数据 mapping (uint256 => mapping (bytes32 => bool)) public plyrNames_; // (pID => name => bool)玩家拥有的名字列表。 (用于这样您可以在您拥有的任何名称中更改您的显示名称) //**************** // 圆形数据 //**************** mapping (uint256 => F3Ddatasets.Round) public round_; // (rID => data) 圆形数据 mapping (uint256 => mapping(uint256 => uint256)) public rndTmEth_; // (rID => tID => 数据)每个团队的eth,by round id和team id //**************** // 团队收费数据 //**************** mapping (uint256 => F3Ddatasets.TeamFee) public fees_; // (team => fees) 按团队分配费用 mapping (uint256 => F3Ddatasets.PotSplit) public potSplit_; // (team => fees) 锅分裂由团队分配 //============================================================================== // _ _ _ __|_ _ __|_ _ _ . // (_(_)| |_\ | | |_|(_ | (_)| . (合同部署时的初始数据设置) //============================================================================== constructor() public { // 团队分配结构 // 0 = europe // 1 = freeforall // 2 = china // 3 = americas // 团队分配百分比 // (F3D, P3D) + (Pot , Referrals, Community) // 介绍人 / 社区奖励在数学上被设计为来自获胜者的底池份额. fees_[0] = F3Ddatasets.TeamFee(32,0); //50% to pot, 15% to aff, 3% to com, 0% to pot swap, 0% to air drop pot fees_[1] = F3Ddatasets.TeamFee(45,0); //37% to pot, 15% to aff, 3% to com, 0% to pot swap, 0% to air drop pot fees_[2] = F3Ddatasets.TeamFee(62,0); //20% to pot, 15% to aff, 3% to com, 0% to pot swap, 0% to air drop pot fees_[3] = F3Ddatasets.TeamFee(47,0); //35% to pot, 15% to aff, 3% to com, 0% to pot swap, 0% to air drop pot // 如何根据选择的球队分割最终的底池 // (F3D, P3D) potSplit_[0] = F3Ddatasets.PotSplit(47,0); //25% to winner, 25% to next round, 3% to com potSplit_[1] = F3Ddatasets.PotSplit(47,0); //25% to winner, 25% to next round, 3% to com potSplit_[2] = F3Ddatasets.PotSplit(62,0); //25% to winner, 10% to next round, 3% to com potSplit_[3] = F3Ddatasets.PotSplit(62,0); //25% to winner, 10% to next round,3% to com } //============================================================================== // _ _ _ _|. |`. _ _ _ . // | | |(_)(_||~|~|(/_| _\ . (这些都是安全检查) //============================================================================== /** * @dev 用于确保在激活之前没有人可以与合同互动. * */ modifier isActivated() { require(activated_ == true, "its not ready yet. check ?eta in discord"); _; } /** * @dev 防止合同与fomo3d交互 */ modifier isHuman() { require(msg.sender == tx.origin, "sorry humans only - FOR REAL THIS TIME"); _; } /** * @dev 设置传入tx的边界 */ modifier isWithinLimits(uint256 _eth) { require(_eth >= 1000000000, "pocket lint: not a valid currency"); require(_eth <= 100000000000000000000000, "no vitalik, no"); _; } //============================================================================== // _ |_ |. _ |` _ __|_. _ _ _ . // |_)|_||_)||(_ ~|~|_|| |(_ | |(_)| |_\ . (用这些来与合同互动) //====|========================================================================= /** * @dev 紧急购买使用最后存储的会员ID和团队潜行 */ function() isActivated() isHuman() isWithinLimits(msg.value) public payable { // 设置我们的tx事件数据并确定玩家是否是新手 F3Ddatasets.EventReturns memory _eventData_ = determinePID(_eventData_); // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 买核心 buyCore(_pID, plyr_[_pID].laff, 2, _eventData_); } /** * @dev 将所有传入的以太坊转换为键. * -functionhash- 0x8f38f309 (使用ID作为会员) * -functionhash- 0x98a0871d (使用联盟会员的地址) * -functionhash- 0xa65b37a1 (使用联盟会员的名称) * @param _affCode 获得联盟费用的玩家的ID /地址/名称 * @param _team 什么球队是球员? */ function buyXid(uint256 _affCode, uint256 _team) isActivated() isHuman() isWithinLimits(msg.value) public payable { // 设置我们的tx事件数据并确定玩家是否是新手 F3Ddatasets.EventReturns memory _eventData_ = determinePID(_eventData_); // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == 0 || _affCode == _pID) { // 使用最后存储的联盟代码 _affCode = plyr_[_pID].laff; // 如果提供联属代码并且它与先前存储的不同 } else if (_affCode != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affCode; } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 买核心 buyCore(_pID, _affCode, _team, _eventData_); } function buyXaddr(address _affCode, uint256 _team) isActivated() isHuman() isWithinLimits(msg.value) public payable { // 设置我们的tx事件数据并确定玩家是否是新手 F3Ddatasets.EventReturns memory _eventData_ = determinePID(_eventData_); // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 uint256 _affID; // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == address(0) || _affCode == msg.sender) { // 使用最后存储的联盟代码 _affID = plyr_[_pID].laff; // 如果是联盟代码 } else { // 从aff Code获取会员ID _affID = pIDxAddr_[_affCode]; // 如果affID与先前存储的不同 if (_affID != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affID; } } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 买核心 buyCore(_pID, _affID, _team, _eventData_); } function buyXname(bytes32 _affCode, uint256 _team) isActivated() isHuman() isWithinLimits(msg.value) public payable { // 设置我们的tx事件数据并确定玩家是否是新手 F3Ddatasets.EventReturns memory _eventData_ = determinePID(_eventData_); // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 uint256 _affID; // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == '' || _affCode == plyr_[_pID].name) { // 使用最后存储的联盟代码 _affID = plyr_[_pID].laff; // 如果是联盟代码 } else { // 从aff Code获取会员ID _affID = pIDxName_[_affCode]; // 如果affID与先前存储的不同 if (_affID != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affID; } } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 买核心 buyCore(_pID, _affID, _team, _eventData_); } /** * @dev 基本上与买相同,但不是你发送以太 * 从您的钱包中,它使用您未提取的收入. * -functionhash- 0x349cdcac (使用ID作为会员) * -functionhash- 0x82bfc739 (使用联盟会员的地址) * -functionhash- 0x079ce327 (使用联盟会员的名称) * @param _affCode 获得联盟费用的玩家的ID /地址/名称 * @param _team 球员在哪支球队? * @param _eth 使用的收入金额(余额退回基金库) */ function reLoadXid(uint256 _affCode, uint256 _team, uint256 _eth) isActivated() isHuman() isWithinLimits(_eth) public { // 设置我们的tx事件数据 F3Ddatasets.EventReturns memory _eventData_; // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == 0 || _affCode == _pID) { // 使用最后存储的联盟代码 _affCode = plyr_[_pID].laff; // 如果提供联属代码并且它与先前存储的不同 } else if (_affCode != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affCode; } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 重装核心 reLoadCore(_pID, _affCode, _team, _eth, _eventData_); } function reLoadXaddr(address _affCode, uint256 _team, uint256 _eth) isActivated() isHuman() isWithinLimits(_eth) public { // 设置我们的tx事件数据 F3Ddatasets.EventReturns memory _eventData_; // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 uint256 _affID; // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == address(0) || _affCode == msg.sender) { // 使用最后存储的联盟代码 _affID = plyr_[_pID].laff; // 如果是联盟代码 } else { // 从aff Code获取会员ID _affID = pIDxAddr_[_affCode]; // 如果affID与先前存储的不同 if (_affID != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affID; } } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 重装核心 reLoadCore(_pID, _affID, _team, _eth, _eventData_); } function reLoadXname(bytes32 _affCode, uint256 _team, uint256 _eth) isActivated() isHuman() isWithinLimits(_eth) public { // 设置我们的tx事件数据 F3Ddatasets.EventReturns memory _eventData_; // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 管理会员残差 uint256 _affID; // 如果没有给出联盟代码或者玩家试图使用他们自己的代码 if (_affCode == '' || _affCode == plyr_[_pID].name) { // 使用最后存储的联盟代码 _affID = plyr_[_pID].laff; // 如果是联盟代码 } else { // 从aff Code获取会员ID _affID = pIDxName_[_affCode]; // 如果affID与先前存储的不同 if (_affID != plyr_[_pID].laff) { // 更新最后一个会员 plyr_[_pID].laff = _affID; } } // 验证是否选择了有效的团队 _team = verifyTeam(_team); // 重装核心 reLoadCore(_pID, _affID, _team, _eth, _eventData_); } /** * @dev 撤回所有收入. * -functionhash- 0x3ccfd60b */ function withdraw() isActivated() isHuman() public { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; // 获取玩家ID uint256 _pID = pIDxAddr_[msg.sender]; // 为玩家eth设置temp var uint256 _eth; // 检查圆是否已经结束并且还没有人绕圈结束 if (_now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0) { // 设置我们的tx事件数据 F3Ddatasets.EventReturns memory _eventData_; // 圆形结束(分配锅) round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // 得到他们的收入 _eth = withdrawEarnings(_pID); // 给钱 if (_eth > 0) plyr_[_pID].addr.transfer(_eth); // 构建事件数据 _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID; // 火灾撤回和分发事件 emit F3Devents.onWithdrawAndDistribute ( msg.sender, plyr_[_pID].name, _eth, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.P3DAmount, _eventData_.genAmount ); // 在任何其他情况下 } else { // 得到他们的收入 _eth = withdrawEarnings(_pID); // 给钱 if (_eth > 0) plyr_[_pID].addr.transfer(_eth); // 消防事件 emit F3Devents.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now); } } /** * @dev 使用这些来注册名称。它们只是将注册请求发送给PlayerBook合同的包装器。所以在这里注册与在那里注册是一样的。 * UI将始终显示您注册的姓氏,但您仍将拥有所有以前注册的名称以用作会员链接。 * - 必须支付注册费 * - 名称必须是唯一的 * - 名称将转换为小写 * - 名称不能以空格开头或结尾 * - 连续不能超过1个空格 * - 不能只是数字 * - 不能以0x开头 * - name必须至少为1个字符 * - 最大长度为32个字符 * - 允许的字符:a-z,0-9和空格 * -functionhash- 0x921dec21 (使用ID作为会员) * -functionhash- 0x3ddd4698 (使用联盟会员的地址) * -functionhash- 0x685ffd83 (使用联盟会员的名称) * @param _nameString 球员想要的名字 * @param _affCode 会员ID,地址或推荐您的人的姓名 * @param _all 如果您希望将信息推送到所有游戏,则设置为true * (这可能会耗费大量气体) */ function registerNameXID(string _nameString, uint256 _affCode, bool _all) isHuman() public payable { bytes32 _name = _nameString.nameFilter(); address _addr = msg.sender; uint256 _paid = msg.value; (bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXIDFromDapp.value(_paid)(_addr, _name, _affCode, _all); uint256 _pID = pIDxAddr_[_addr]; // 火灾事件 emit F3Devents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now); } function registerNameXaddr(string _nameString, address _affCode, bool _all) isHuman() public payable { bytes32 _name = _nameString.nameFilter(); address _addr = msg.sender; uint256 _paid = msg.value; (bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all); uint256 _pID = pIDxAddr_[_addr]; // 火灾事件 emit F3Devents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now); } function registerNameXname(string _nameString, bytes32 _affCode, bool _all) isHuman() public payable { bytes32 _name = _nameString.nameFilter(); address _addr = msg.sender; uint256 _paid = msg.value; (bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXnameFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all); uint256 _pID = pIDxAddr_[_addr]; // 火灾事件 emit F3Devents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now); } //============================================================================== // _ _ _|__|_ _ _ _ . // (_|(/_ | | (/_| _\ . (用于UI和查看etherscan上的东西) //=====_|======================================================================= /** * @dev 退货价格买家将支付下一个个人钥匙. * -functionhash- 0x018a25e8 * @return 购买下一个钥匙的价格(以wei格式) */ function getBuyPrice() public view returns(uint256) { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; // 我们是一个回合? if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].keys.add(1000000000000000000)).ethRec(1000000000000000000) ); else // rounds over. need price for new round return ( 75000000000000 ); // init } /** * @dev 返回剩余时间。不要垃圾邮件,你可以从你的节点提供商那里得到你自己 * -functionhash- 0xc7e284b8 * @return 时间在几秒钟内 */ function getTimeLeft() public view returns(uint256) { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; if (_now < round_[_rID].end) if (_now > round_[_rID].strt + rndGap_) return( (round_[_rID].end).sub(_now) ); else return( (round_[_rID].strt + rndGap_).sub(_now) ); else return(0); } /** * @dev 每个金库返回玩家收入 * -functionhash- 0x63066434 * @return 赢得金库 * @return 一般金库 * @return 会员保险库 */ function getPlayerVaults(uint256 _pID) public view returns(uint256 ,uint256, uint256) { // 设置本地rID uint256 _rID = rID_; // 如果圆结束了但圆形结束尚未运行(因此合同没有分配奖金) if (now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0) { // 如果球员是胜利者 if (round_[_rID].plyr == _pID) { return ( (plyr_[_pID].win).add( ((round_[_rID].pot).mul(25)) / 100 ), (plyr_[_pID].gen).add( getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask) ), plyr_[_pID].aff ); // 如果玩家不是赢家 } else { return ( plyr_[_pID].win, (plyr_[_pID].gen).add( getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask) ), plyr_[_pID].aff ); } // 如果圆形仍在继续,或圆形已经结束并且圆形结束已经运行 } else { return ( plyr_[_pID].win, (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)), plyr_[_pID].aff ); } } /** * 坚固不喜欢堆栈限制。这让我们避免那种仇恨 */ function getPlayerVaultsHelper(uint256 _pID, uint256 _rID) private view returns(uint256) { return( ((((round_[_rID].mask).add(((((round_[_rID].pot).mul(potSplit_[round_[_rID].team].gen)) / 100).mul(1000000000000000000)) / (round_[_rID].keys))).mul(plyrRnds_[_pID][_rID].keys)) / 1000000000000000000) ); } /** * @dev 返回前端所需的所有当前轮次信息 * -functionhash- 0x747dff42 * @return 在ICO阶段投资的eth * @return 圆的身份 * @return 圆的总钥匙 * @return 时间到了 * @return 时间开始了 * @return 目前的锅 * @return 领先的当前球队ID和球员ID * @return 领先地址的当前玩家 * @return 引导名称中的当前玩家 * @return 鲸鱼为了圆形 * @return b耳朵为圆形 * @return 为了回合而进行的 * @return 公牛队参加比赛 * @return 空投跟踪器#&airdrop pot */ function getCurrentRoundInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bytes32, uint256, uint256, uint256, uint256, uint256) { // 设置本地rID uint256 _rID = rID_; return ( round_[_rID].ico, //0 _rID, //1 round_[_rID].keys, //2 round_[_rID].end, //3 round_[_rID].strt, //4 round_[_rID].pot, //5 (round_[_rID].team + (round_[_rID].plyr * 10)), //6 plyr_[round_[_rID].plyr].addr, //7 plyr_[round_[_rID].plyr].name, //8 rndTmEth_[_rID][0], //9 rndTmEth_[_rID][1], //10 rndTmEth_[_rID][2], //11 rndTmEth_[_rID][3], //12 airDropTracker_ + (airDropPot_ * 1000) //13 ); } /** * @dev 根据地址返回玩家信息。如果没有给出地址,它会 * use msg.sender * -functionhash- 0xee0b5d8b * @param _addr 您要查找的播放器的地址 * @return 玩家ID * @return 参赛者姓名 * @return 密钥拥有(当前轮次) * @return 赢得金库 * @return 一般金库 * @return 会员保险库 * @return 球员圆的eth */ function getPlayerInfoByAddress(address _addr) public view returns(uint256, bytes32, uint256, uint256, uint256, uint256, uint256) { // 设置本地rID uint256 _rID = rID_; if (_addr == address(0)) { _addr == msg.sender; } uint256 _pID = pIDxAddr_[_addr]; return ( _pID, //0 plyr_[_pID].name, //1 plyrRnds_[_pID][_rID].keys, //2 plyr_[_pID].win, //3 (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)), //4 plyr_[_pID].aff, //5 plyrRnds_[_pID][_rID].eth //6 ); } //============================================================================== // _ _ _ _ | _ _ . _ . // (_(_)| (/_ |(_)(_||(_ . (这+工具+计算+模块=我们的软件引擎) //=====================_|======================================================= /** * @dev 每当执行买单时,逻辑就会运行。决定如何处理 * 传入的道德取决于我们是否处于活跃轮次 */ function buyCore(uint256 _pID, uint256 _affID, uint256 _team, F3Ddatasets.EventReturns memory _eventData_) private { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; // 如果圆形是活跃的 if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) { // 致电核心 core(_rID, _pID, msg.value, _affID, _team, _eventData_); // 如果圆形不活跃 } else { // 检查是否需要运行结束轮次 if (_now > round_[_rID].end && round_[_rID].ended == false) { // 结束回合(分配锅)并开始新一轮 round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // 构建事件数据 _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID; // 火买和分发事件 emit F3Devents.onBuyAndDistribute ( msg.sender, plyr_[_pID].name, msg.value, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.P3DAmount, _eventData_.genAmount ); } // 将eth放入球员保险库中 plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value); } } /** * @dev 每当执行重新加载订单时,逻辑就会运行。决定如何处理 * 传入的道德取决于我们是否处于活跃轮次 */ function reLoadCore(uint256 _pID, uint256 _affID, uint256 _team, uint256 _eth, F3Ddatasets.EventReturns memory _eventData_) private { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; // 如果圆形是活跃的 if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) { // 从所有金库中获取收益并将未使用的金额归还给gen保险库 // 因为我们使用自定义safemath库。如果玩家,这将抛出 // 他们试图花更多的时间。 plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth); // 致电核心 core(_rID, _pID, _eth, _affID, _team, _eventData_); // 如果round不活动并且需要运行end round } else if (_now > round_[_rID].end && round_[_rID].ended == false) { // end the round (distributes pot) & start new round round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // 构建事件数据 _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID; // 火买和分发事件 emit F3Devents.onReLoadAndDistribute ( msg.sender, plyr_[_pID].name, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.P3DAmount, _eventData_.genAmount ); } } /** * @dev 这是在回合生效期间发生的任何购买/重新加载的核心逻辑 */ function core(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, uint256 _team, F3Ddatasets.EventReturns memory _eventData_) private { // 如果玩家是新手 if (plyrRnds_[_pID][_rID].keys == 0) _eventData_ = managePlayer(_pID, _eventData_); // 早期的道路限制器 if (round_[_rID].eth < 100000000000000000000 && plyrRnds_[_pID][_rID].eth.add(_eth) > 1000000000000000000) { uint256 _availableLimit = (1000000000000000000).sub(plyrRnds_[_pID][_rID].eth); uint256 _refund = _eth.sub(_availableLimit); plyr_[_pID].gen = plyr_[_pID].gen.add(_refund); _eth = _availableLimit; } // 如果留下的eth大于min eth允许(抱歉没有口袋棉绒) if (_eth > 1000000000) { // 铸造新钥匙 uint256 _keys = (round_[_rID].eth).keysRec(_eth); // 如果他们至少买了一把钥匙 if (_keys >= 1000000000000000000) { updateTimer(_keys, _rID); // 树立新的领导者 if (round_[_rID].plyr != _pID) round_[_rID].plyr = _pID; if (round_[_rID].team != _team) round_[_rID].team = _team; // 将新的领导者布尔设为真 _eventData_.compressedData = _eventData_.compressedData + 100; } // 存储空投跟踪器编号(自上次空投以来的购买次数) _eventData_.compressedData = _eventData_.compressedData + (airDropTracker_ * 1000); // 更新播放器 plyrRnds_[_pID][_rID].keys = _keys.add(plyrRnds_[_pID][_rID].keys); plyrRnds_[_pID][_rID].eth = _eth.add(plyrRnds_[_pID][_rID].eth); // 更新回合 round_[_rID].keys = _keys.add(round_[_rID].keys); round_[_rID].eth = _eth.add(round_[_rID].eth); rndTmEth_[_rID][_team] = _eth.add(rndTmEth_[_rID][_team]); // 分配道德 _eventData_ = distributeExternal(_rID, _eth, _team, _eventData_); _eventData_ = distributeInternal(_rID, _pID, _eth, _affID, _team, _keys, _eventData_); // 调用end tx函数来触发结束tx事件。 endTx(_pID, _team, _eth, _keys, _eventData_); } } //============================================================================== // _ _ | _ | _ _|_ _ _ _ . // (_(_||(_|_||(_| | (_)| _\ . //============================================================================== /** * @dev 计算未屏蔽的收入(只计算,不更新掩码)k) * @return earnings in wei format */ function calcUnMaskedEarnings(uint256 _pID, uint256 _rIDlast) private view returns(uint256) { return( (((round_[_rIDlast].mask).mul(plyrRnds_[_pID][_rIDlast].keys)) / (1000000000000000000)).sub(plyrRnds_[_pID][_rIDlast].mask) ); } /** * @dev 返回给出一定数量eth的密钥数量. * -functionhash- 0xce89c80c * @param _rID round ID you want price for * @param _eth amount of eth sent in * @return keys received */ function calcKeysReceived(uint256 _rID, uint256 _eth) public view returns(uint256) { // 抓住时间 uint256 _now = now; // 我们是一个回合? if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].eth).keysRec(_eth) ); else // 转过来。需要新一轮的钥匙 return ( (_eth).keys() ); } /** * @dev 返回X键的当前eth价格。 * -functionhash- 0xcf808000 * @param _keys 所需的键数(18位十进制格式) * @return 需要发送的eth数量 */ function iWantXKeys(uint256 _keys) public view returns(uint256) { // 设置本地rID uint256 _rID = rID_; // 抓住时间 uint256 _now = now; // 我们是一个回合? if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].keys.add(_keys)).ethRec(_keys) ); else // rounds over. need price for new round return ( (_keys).eth() ); } //============================================================================== // _|_ _ _ | _ . // | (_)(_)|_\ . //============================================================================== /** * @dev 从姓名合同中接收姓名/球员信息 */ function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name, uint256 _laff) external { require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm.."); if (pIDxAddr_[_addr] != _pID) pIDxAddr_[_addr] = _pID; if (pIDxName_[_name] != _pID) pIDxName_[_name] = _pID; if (plyr_[_pID].addr != _addr) plyr_[_pID].addr = _addr; if (plyr_[_pID].name != _name) plyr_[_pID].name = _name; if (plyr_[_pID].laff != _laff) plyr_[_pID].laff = _laff; if (plyrNames_[_pID][_name] == false) plyrNames_[_pID][_name] = true; } /** * @dev 接收整个玩家名单 */ function receivePlayerNameList(uint256 _pID, bytes32 _name) external { require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm.."); if(plyrNames_[_pID][_name] == false) plyrNames_[_pID][_name] = true; } /** * @dev 获得现有或注册新的pID。当玩家可能是新手时使用此功能 * @return pID */ function determinePID(F3Ddatasets.EventReturns memory _eventData_) private returns (F3Ddatasets.EventReturns) { uint256 _pID = pIDxAddr_[msg.sender]; // 如果玩家是这个版本的worldfomo的新手 if (_pID == 0) { // 从玩家姓名合同中获取他们的玩家ID,姓名和最后一个身份证 _pID = PlayerBook.getPlayerID(msg.sender); bytes32 _name = PlayerBook.getPlayerName(_pID); uint256 _laff = PlayerBook.getPlayerLAff(_pID); // 设置玩家帐户 pIDxAddr_[msg.sender] = _pID; plyr_[_pID].addr = msg.sender; if (_name != "") { pIDxName_[_name] = _pID; plyr_[_pID].name = _name; plyrNames_[_pID][_name] = true; } if (_laff != 0 && _laff != _pID) plyr_[_pID].laff = _laff; // 将新玩家bool设置为true _eventData_.compressedData = _eventData_.compressedData + 1; } return (_eventData_); } /** * @dev 检查以确保用户选择了一个有效的团队。如果没有设置团队 * 默认(中国) */ function verifyTeam(uint256 _team) private pure returns (uint256) { if (_team < 0 || _team > 3) return(2); else return(_team); } /** * @dev 决定是否需要运行圆形结束并开始新一轮。而如果 * 需要移动之前玩过的球员未经掩盖的收入 */ function managePlayer(uint256 _pID, F3Ddatasets.EventReturns memory _eventData_) private returns (F3Ddatasets.EventReturns) { // 如果玩家已经玩过上一轮,则移动他们未经掩盖的收益 // 从那一轮到生成金库。 if (plyr_[_pID].lrnd != 0) updateGenVault(_pID, plyr_[_pID].lrnd); // 更新玩家的最后一轮比赛 plyr_[_pID].lrnd = rID_; // 将连接的圆形bool设置为true _eventData_.compressedData = _eventData_.compressedData + 10; return(_eventData_); } /** * @dev 结束这一轮。管理支付赢家/拆分锅 */ function endRound(F3Ddatasets.EventReturns memory _eventData_) private returns (F3Ddatasets.EventReturns) { // 设置本地rID uint256 _rID = rID_; // 抓住我们的获胜球员和球队ID uint256 _winPID = round_[_rID].plyr; uint256 _winTID = round_[_rID].team; // 抓住我们的锅量 uint256 _pot = round_[_rID].pot; // 计算我们的赢家份额,社区奖励,发行份额, // 份额,以及为下一个底池保留的金额 uint256 _win = (_pot.mul(25)) / 100; uint256 _com = (_pot.mul(3)) / 100; uint256 _gen = (_pot.mul(potSplit_[_winTID].gen)) / 100; uint256 _p3d = (_pot.mul(potSplit_[_winTID].p3d)) / 100; uint256 _res = (((_pot.sub(_win)).sub(_com)).sub(_gen)).sub(_p3d); // k计算圆形面罩的ppt uint256 _ppt = (_gen.mul(1000000000000000000)) / (round_[_rID].keys); uint256 _dust = _gen.sub((_ppt.mul(round_[_rID].keys)) / 1000000000000000000); if (_dust > 0) { _gen = _gen.sub(_dust); _res = _res.add(_dust); } // 支付我们的赢家 plyr_[_winPID].win = _win.add(plyr_[_winPID].win); // 社区奖励 admin.transfer(_com); // 将gen部分分配给密钥持有者 round_[_rID].mask = _ppt.add(round_[_rID].mask); // 准备事件数据 _eventData_.compressedData = _eventData_.compressedData + (round_[_rID].end * 1000000); _eventData_.compressedIDs = _eventData_.compressedIDs + (_winPID * 100000000000000000000000000) + (_winTID * 100000000000000000); _eventData_.winnerAddr = plyr_[_winPID].addr; _eventData_.winnerName = plyr_[_winPID].name; _eventData_.amountWon = _win; _eventData_.genAmount = _gen; _eventData_.P3DAmount = _p3d; _eventData_.newPot = _res; // 下一轮开始 rID_++; _rID++; round_[_rID].strt = now; round_[_rID].end = now.add(rndInit_).add(rndGap_); round_[_rID].pot = _res; return(_eventData_); } /** * @dev moves any unmasked earnings to gen vault. updates earnings mask */ function updateGenVault(uint256 _pID, uint256 _rIDlast) private { uint256 _earnings = calcUnMaskedEarnings(_pID, _rIDlast); if (_earnings > 0) { // 放入gen库 plyr_[_pID].gen = _earnings.add(plyr_[_pID].gen); // 通过更新面具将收入归零 plyrRnds_[_pID][_rIDlast].mask = _earnings.add(plyrRnds_[_pID][_rIDlast].mask); } } /** * @dev 根据购买的全部密钥数量更新圆形计时器。 */ function updateTimer(uint256 _keys, uint256 _rID) private { // 抓住时间 uint256 _now = now; // 根据购买的钥匙数计算时间 uint256 _newTime; if (_now > round_[_rID].end && round_[_rID].plyr == 0) _newTime = (((_keys) / (1000000000000000000)).mul(rndInc_)).add(_now); else _newTime = (((_keys) / (1000000000000000000)).mul(rndInc_)).add(round_[_rID].end); // 比较max并设置新的结束时间 if (_newTime < (rndMax_).add(_now)) round_[_rID].end = _newTime; else round_[_rID].end = rndMax_.add(_now); } /** * @dev 生成0-99之间的随机数并检查是否存在 * 导致空投获胜 * @return 我们有赢家吗?我们有赢家吗? */ function airdrop() private view returns(bool) { uint256 seed = uint256(keccak256(abi.encodePacked( (block.timestamp).add (block.difficulty).add ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)).add (block.gaslimit).add ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)).add (block.number) ))); if((seed - ((seed / 1000) * 1000)) < airDropTracker_) return(true); else return(false); } /** * @dev 根据对com,aff和p3d的费用分配eth */ function distributeExternal(uint256 _rID, uint256 _eth, uint256 _team, F3Ddatasets.EventReturns memory _eventData_) private returns(F3Ddatasets.EventReturns) { // 支付3%的社区奖励 uint256 _com = (_eth.mul(3)) / 100; uint256 _p3d; if (!address(admin).call.value(_com)()) { _p3d = _com; _com = 0; } // 支付p3d _p3d = _p3d.add((_eth.mul(fees_[_team].p3d)) / (100)); if (_p3d > 0) { round_[_rID].pot = round_[_rID].pot.add(_p3d); // 设置事件数据 _eventData_.P3DAmount = _p3d.add(_eventData_.P3DAmount); } return(_eventData_); } function potSwap() external payable { // 设置本地rID uint256 _rID = rID_ + 1; round_[_rID].pot = round_[_rID].pot.add(msg.value); emit F3Devents.onPotSwapDeposit(_rID, msg.value); } /** * @dev 根据对gen和pot的费用分配eth */ function distributeInternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, uint256 _team, uint256 _keys, F3Ddatasets.EventReturns memory _eventData_) private returns(F3Ddatasets.EventReturns) { // 计算gen份额 uint256 _gen = (_eth.mul(fees_[_team].gen)) / 100; // distribute share to affiliate 15% uint256 _aff = (_eth.mul(15)) / 100; // 更新道德平衡 (eth = eth - (com share + pot swap share + aff share)) _eth = _eth.sub(((_eth.mul(18)) / 100).add((_eth.mul(fees_[_team].p3d)) / 100)); // 计算锅 uint256 _pot = _eth.sub(_gen); // decide what to do with affiliate share of fees // affiliate must not be self, and must have a name registered if (_affID != _pID && plyr_[_affID].name != '') { plyr_[_affID].aff = _aff.add(plyr_[_affID].aff); emit F3Devents.onAffiliatePayout(_affID, plyr_[_affID].addr, plyr_[_affID].name, _rID, _pID, _aff, now); } else { _gen = _gen.add(_aff); } // 分配gen份额(这就是updateMasks()所做的)并进行调整 // 灰尘平衡。 uint256 _dust = updateMasks(_rID, _pID, _gen, _keys); if (_dust > 0) _gen = _gen.sub(_dust); // 添加eth到pot round_[_rID].pot = _pot.add(_dust).add(round_[_rID].pot); // 设置事件数据 _eventData_.genAmount = _gen.add(_eventData_.genAmount); _eventData_.potAmount = _pot; return(_eventData_); } /** * @dev 购买钥匙时更新圆形和玩家的面具 * @return 灰尘遗留下来 */ function updateMasks(uint256 _rID, uint256 _pID, uint256 _gen, uint256 _keys) private returns(uint256) { /* 掩盖笔记 收入面具对人们来说是一个棘手的事情。 这里要理解的基本内容。将有一个全球性的 跟踪器基于每轮的每股利润,增加 相关比例增加份额。 玩家将有一个额外的面具基本上说“基于 在回合面具,我的股票,以及我已经撤回了多少, 还欠我多少钱呢?“ */ // 基于此购买的每个键和圆形面具的钙利润:(灰尘进入锅) uint256 _ppt = (_gen.mul(1000000000000000000)) / (round_[_rID].keys); round_[_rID].mask = _ppt.add(round_[_rID].mask); // 计算玩家从他们自己购买的收入(仅基于钥匙 // 他们刚刚买了)。并更新玩家收入掩 uint256 _pearn = (_ppt.mul(_keys)) / (1000000000000000000); plyrRnds_[_pID][_rID].mask = (((round_[_rID].mask.mul(_keys)) / (1000000000000000000)).sub(_pearn)).add(plyrRnds_[_pID][_rID].mask); // 计算并返回灰尘 return(_gen.sub((_ppt.mul(round_[_rID].keys)) / (1000000000000000000))); } /** * @dev 加上未公开的收入和保险金收入,将它们全部设为0 * @return wei格式的收益 */ function withdrawEarnings(uint256 _pID) private returns(uint256) { // 更新gen保险库 updateGenVault(_pID, plyr_[_pID].lrnd); // 来自金库 uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff); if (_earnings > 0) { plyr_[_pID].win = 0; plyr_[_pID].gen = 0; plyr_[_pID].aff = 0; } return(_earnings); } /** * @dev 准备压缩数据并触发事件以进行购买或重新加载tx */ function endTx(uint256 _pID, uint256 _team, uint256 _eth, uint256 _keys, F3Ddatasets.EventReturns memory _eventData_) private { _eventData_.compressedData = _eventData_.compressedData + (now * 1000000000000000000) + (_team * 100000000000000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID + (rID_ * 10000000000000000000000000000000000000000000000000000); emit F3Devents.onEndTx ( _eventData_.compressedData, _eventData_.compressedIDs, plyr_[_pID].name, msg.sender, _eth, _keys, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.P3DAmount, _eventData_.genAmount, _eventData_.potAmount, airDropPot_ ); } //============================================================================== // (~ _ _ _._|_ . // _)(/_(_|_|| | | \/ . //====================/========================================================= /** 合同部署后,它将被停用。这是一次 * 使用将激活合同的功能。我们这样做是开发者 * 有时间在网络端设置 **/ bool public activated_ = false; function activate() public { // 只有团队才能激活 require(msg.sender == admin, "only admin can activate"); // 只能跑一次 require(activated_ == false, "FOMO Free already activated"); // 激活合同 activated_ = true; // 让我们开始第一轮 rID_ = 1; round_[1].strt = now + rndExtra_ - rndGap_; round_[1].end = now + rndInit_ + rndExtra_; } } //============================================================================== // __|_ _ __|_ _ . // _\ | | |_|(_ | _\ . //============================================================================== library F3Ddatasets { //压缩数据密钥 // [76-33][32][31][30][29][28-18][17][16-6][5-3][2][1][0] // 0 - new player (bool) // 1 - joined round (bool) // 2 - new leader (bool) // 3-5 - air drop tracker (uint 0-999) // 6-16 - round end time // 17 - winnerTeam // 18 - 28 timestamp // 29 - team // 30 - 0 = reinvest (round), 1 = buy (round), 2 = buy (ico), 3 = reinvest (ico) // 31 - airdrop happened bool // 32 - airdrop tier // 33 - airdrop amount won //压缩的ID密钥 // [77-52][51-26][25-0] // 0-25 - pID // 26-51 - winPID // 52-77 - rID struct EventReturns { uint256 compressedData; uint256 compressedIDs; address winnerAddr; // 获胜者地址 bytes32 winnerName; // 获胜者地址 uint256 amountWon; // 金额赢了 uint256 newPot; // 在新锅中的数量 uint256 P3DAmount; // 金额分配给p3d uint256 genAmount; // 金额分配给gen uint256 potAmount; // 加入锅中的量 } struct Player { address addr; // 球员地址 bytes32 name; // 参赛者姓名 uint256 win; // 赢得金库 uint256 gen; // 一般金库 uint256 aff; // 会员保险库 uint256 lrnd; // 上一轮比赛 uint256 laff; // 使用的最后一个会员ID } struct PlayerRounds { uint256 eth; // 玩家加入回合(用于eth限制器) uint256 keys; // 按键 uint256 mask; // 运动员面具 uint256 ico; // ICO阶段投资 } struct Round { uint256 plyr; // 领先的玩家的pID uint256 team; // 领导团队的tID uint256 end; // 时间结束/结束 bool ended; // 已经运行了圆端函数 uint256 strt; // 时间开始了 uint256 keys; // 按键 uint256 eth; // 总人口 uint256 pot; // 罐装(在回合期间)/最终金额支付给获胜者(在回合结束后) uint256 mask; // 全球面具 uint256 ico; // 在ICO阶段发送的总eth uint256 icoGen; // ICO阶段的gen eth总量 uint256 icoAvg; // ICO阶段的平均关键价格 } struct TeamFee { uint256 gen; // 支付给本轮关键持有人的购买百分比 uint256 p3d; // 支付给p3d持有人的购买百分比 } struct PotSplit { uint256 gen; // 支付给本轮关键持有人的底池百分比 uint256 p3d; // 付给p3d持有者的锅的百分比 } } //============================================================================== // | _ _ _ | _ . // |<(/_\/ (_(_||(_ . //=======/====================================================================== library F3DKeysCalcShort { using SafeMath for *; /** * @dev 计算给定X eth时收到的密钥数 * @param _curEth 合同中的当前eth数量 * @param _newEth eth被用掉了 * @return 购买的机票数量 */ function keysRec(uint256 _curEth, uint256 _newEth) internal pure returns (uint256) { return(keys((_curEth).add(_newEth)).sub(keys(_curEth))); } /** * @dev 计算出售X键时收到的eth数量 * @param _curKeys 当前存在的密钥数量 * @param _sellKeys 您希望出售的钥匙数量 * @return 收到的eth数量 */ function ethRec(uint256 _curKeys, uint256 _sellKeys) internal pure returns (uint256) { return((eth(_curKeys)).sub(eth(_curKeys.sub(_sellKeys)))); } /** * @dev 计算给定一定数量的eth会存在多少个密钥 * @param _eth 合同中的道德 * @return 将存在的密钥数 */ function keys(uint256 _eth) internal pure returns(uint256) { return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000); } /** * @dev 在给定一些密钥的情况下计算合同中的eth数量 * @param _keys “契约”中的键数 * @return 存在的道德 */ function eth(uint256 _keys) internal pure returns(uint256) { return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq()); } } //============================================================================== // . _ _|_ _ _ |` _ _ _ _ . // || | | (/_| ~|~(_|(_(/__\ . //============================================================================== interface PlayerBookInterface { function getPlayerID(address _addr) external returns (uint256); function getPlayerName(uint256 _pID) external view returns (bytes32); function getPlayerLAff(uint256 _pID) external view returns (uint256); function getPlayerAddr(uint256 _pID) external view returns (address); function getNameFee() external view returns (uint256); function registerNameXIDFromDapp(address _addr, bytes32 _name, uint256 _affCode, bool _all) external payable returns(bool, uint256); function registerNameXaddrFromDapp(address _addr, bytes32 _name, address _affCode, bool _all) external payable returns(bool, uint256); function registerNameXnameFromDapp(address _addr, bytes32 _name, bytes32 _affCode, bool _all) external payable returns(bool, uint256); } library NameFilter { /** * @dev 过滤名称字符串 * -将大写转换为小写. * -确保它不以空格开始/结束 * -确保它不包含连续的多个空格 * -不能只是数字 * -不能以0x开头 * -将字符限制为A-Z,a-z,0-9和空格。 * @return 以字节32格式重新处理的字符串 */ function nameFilter(string _input) internal pure returns(bytes32) { bytes memory _temp = bytes(_input); uint256 _length = _temp.length; //对不起限于32个字符 require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters"); // 确保它不以空格开头或以空格结尾 require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space"); // 确保前两个字符不是0x if (_temp[0] == 0x30) { require(_temp[1] != 0x78, "string cannot start with 0x"); require(_temp[1] != 0x58, "string cannot start with 0X"); } // 创建一个bool来跟踪我们是否有非数字字符 bool _hasNonNumber; // 转换和检查 for (uint256 i = 0; i < _length; i++) { // 如果它的大写A-Z if (_temp[i] > 0x40 && _temp[i] < 0x5b) { // 转换为小写a-z _temp[i] = byte(uint(_temp[i]) + 32); // 我们有一个非数字 if (_hasNonNumber == false) _hasNonNumber = true; } else { require ( // 要求角色是一个空间 _temp[i] == 0x20 || // 或小写a-z (_temp[i] > 0x60 && _temp[i] < 0x7b) || // 或0-9 (_temp[i] > 0x2f && _temp[i] < 0x3a), "string contains invalid characters" ); // 确保连续两行不是空格 if (_temp[i] == 0x20) require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces"); // 看看我们是否有一个数字以外的字符 if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39)) _hasNonNumber = true; } } require(_hasNonNumber == true, "string cannot be only numbers"); bytes32 _ret; assembly { _ret := mload(add(_temp, 32)) } return (_ret); } } /** * @title SafeMath v0.1.9 * @dev 带有安全检查的数学运算会引发错误 * - 添加 sqrt * - 添加 sq * - 添加 pwr * - 将断言更改为需要带有错误日志输出 * - 删除div,它没用 */ library SafeMath { /** * @dev 将两个数字相乘,抛出溢出。 */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b, "SafeMath mul failed"); return c; } /** * @dev 减去两个数字,在溢出时抛出(即,如果减数大于减数)。 */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath sub failed"); return a - b; } /** * @dev 添加两个数字,溢出时抛出。 */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a, "SafeMath add failed"); return c; } /** * @dev 给出给定x的平方根. */ function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = ((add(x,1)) / 2); y = x; while (z < y) { y = z; z = ((add((x / z),z)) / 2); } } /** * @dev 给广场。将x乘以x */ function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } /** * @dev x到y的力量 */ function pwr(uint256 x, uint256 y) internal pure returns (uint256) { if (x==0) return (0); else if (y==0) return (1); else { uint256 z = x; for (uint256 i=1; i < y; i++) z = mul(z,x); return (z); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"bytes32"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXname","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airDropTracker_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"plyr","type":"uint256"},{"name":"team","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"strt","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"ico","type":"uint256"},{"name":"icoGen","type":"uint256"},{"name":"icoAvg","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"fees_","outputs":[{"name":"gen","type":"uint256"},{"name":"p3d","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"uint256"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"address"},{"name":"_all","type":"bool"}],"name":"registerNameXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"},{"name":"_laff","type":"uint256"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"rndTmEth_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerVaults","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"bytes32"},{"name":"_all","type":"bool"}],"name":"registerNameXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"address"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"uint256"},{"name":"_team","type":"uint256"}],"name":"buyXid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerNameList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"uint256"},{"name":"_all","type":"bool"}],"name":"registerNameXID","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"address"},{"name":"_team","type":"uint256"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"ico","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"bytes32"},{"name":"_team","type":"uint256"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"potSplit_","outputs":[{"name":"gen","type":"uint256"},{"name":"p3d","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rID","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"calcKeysReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_keys","type":"uint256"}],"name":"iWantXKeys","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airDropPot_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"aff","type":"uint256"},{"name":"lrnd","type":"uint256"},{"name":"laff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"potSwap","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"keysBought","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"P3DAmount","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"},{"indexed":false,"name":"potAmount","type":"uint256"},{"indexed":false,"name":"airDropPot","type":"uint256"}],"name":"onEndTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"P3DAmount","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onWithdrawAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"P3DAmount","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onBuyAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"P3DAmount","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onReLoadAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":true,"name":"roundID","type":"uint256"},{"indexed":true,"name":"buyerID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onAffiliatePayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"roundID","type":"uint256"},{"indexed":false,"name":"amountAddedToPot","type":"uint256"}],"name":"onPotSwapDeposit","type":"event"}]
Contract Creation Code
608060405260008054600160a060020a03191633178155600f6001819055610708600255600491909155805460ff1916905534801561003d57600080fd5b5060408051808201825260208082526000818301818152818052600d80845293517f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee55517f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ef5583518085018552602d8152808301828152600180845285855291517ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c555517ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c65584518086018652603e808252818501848152600280865287875292517f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc24955517f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc24a5586518088018852602f808252818701868152600380885298885291517f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e25590517f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e35587518089018952818152808701868152868052600e80895291517fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c55517fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d558851808a018a5291825281870186815294865280875290517fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be9582075592517fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be9582085586518088018852818152808601858152928552838652517f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f04815590517f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f0482558551808701909652855284830182815293909152905290517fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c90814455517fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c90814555614e568061034c6000396000f3006080604052600436106101c15763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036d57806306fdde0314610394578063079ce3271461041e5780630f15f4c01461043e57806310f01eba1461045357806311a09ae71461047457806324c33d33146104895780632660316e146105005780632ce219991461052f5780632e19ebdc14610560578063349cdcac146105785780633ccfd60b146105965780633ddd4698146105ab57806349cc635d146106075780635893d48114610631578063624ae5c01461064c5780636306643414610661578063685ffd8314610697578063747dff42146106ea57806382bfc739146107755780638f38f3091461079c5780638f7140ea146107aa578063921dec21146107c557806395d89b411461081857806398a0871d1461082d578063a2bccae914610844578063a65b37a114610885578063c519500e14610893578063c7e284b8146108ab578063ce89c80c146108c0578063cf808000146108db578063d53b2679146108f3578063d87574e014610908578063de7874f31461091d578063ed78cf4a14610977578063ee0b5d8b1461097f575b6101c9614d31565b600f5460009060ff16151560011461022d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214610284576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156102dc576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561032c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b610335836109d8565b33600090815260066020818152604080842054808552600890925290922001549194509250610368908390600286610c8c565b505050005b34801561037957600080fd5b50610382610ec6565b60408051918252519081900360200190f35b3480156103a057600080fd5b506103a9610f8b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e35781810151838201526020016103cb565b50505050905090810190601f1680156104105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042a57600080fd5b5061043c600435602435604435610fc2565b005b34801561044a57600080fd5b5061043c6111dc565b34801561045f57600080fd5b50610382600160a060020a036004351661130f565b34801561048057600080fd5b50610382611321565b34801561049557600080fd5b506104a1600435611327565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561050c57600080fd5b5061051b60043560243561138a565b604080519115158252519081900360200190f35b34801561053b57600080fd5b506105476004356113aa565b6040805192835260208301919091528051918290030190f35b34801561056c57600080fd5b506103826004356113c3565b34801561058457600080fd5b5061043c6004356024356044356113d5565b3480156105a257600080fd5b5061043c6115c1565b6040805160206004803580820135601f810184900484028501840190955284845261043c94369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611950565b34801561061357600080fd5b5061043c600435600160a060020a0360243516604435606435611b17565b34801561063d57600080fd5b50610382600435602435611d08565b34801561065857600080fd5b50610382611d25565b34801561066d57600080fd5b50610679600435611d2b565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f810184900484028501840190955284845261043c943694929360249392840191908190840183828082843750949750508435955050505050602001351515611ed1565b3480156106f657600080fd5b506106ff611fc1565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b34801561078157600080fd5b5061043c600160a060020a03600435166024356044356121bf565b61043c6004356024356123c9565b3480156107b657600080fd5b5061043c6004356024356125c0565b6040805160206004803580820135601f810184900484028501840190955284845261043c94369492936024939284019190819084018382808284375094975050843595505050505060200135151561269d565b34801561082457600080fd5b506103a961278d565b61043c600160a060020a03600435166024356127c4565b34801561085057600080fd5b5061085f6004356024356129e9565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043c600435602435612a1b565b34801561089f57600080fd5b50610547600435612c28565b3480156108b757600080fd5b50610382612c41565b3480156108cc57600080fd5b50610382600435602435612cd0565b3480156108e757600080fd5b50610382600435612d78565b3480156108ff57600080fd5b5061051b612e2a565b34801561091457600080fd5b50610382612e33565b34801561092957600080fd5b50610935600435612e39565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61043c612e80565b34801561098b57600080fd5b506109a0600160a060020a0360043516612efd565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6109e0614d31565b336000908152600660205260408120549080821515610c8357604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59163e56556a99160248083019260209291908290030181600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506040513d6020811015610a8f57600080fd5b5051604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018390529051919450736ed17ee485821cd47531f2e4c7b9ef8b48f2bab5916382e37b2c916024808201926020929091908290030181600087803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b5051604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018690529051919350736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59163e3c08adf916024808201926020929091908290030181600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6020811015610bc957600080fd5b505133600081815260066020908152604080832088905587835260089091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610c52576000828152600760209081526040808320869055858352600882528083206001908101869055600a8352818420868552909252909120805460ff191690911790555b8015801590610c615750828114155b15610c7b5760008381526008602052604090206006018190555b845160010185525b50929392505050565b6005546002546000828152600b602052604090206004015442910181118015610cf757506000828152600b602052604090206002015481111580610cf757506000828152600b602052604090206002015481118015610cf757506000828152600b6020526040902054155b15610d0f57610d0a828734888888612fd2565b610ebe565b6000828152600b602052604090206002015481118015610d4157506000828152600b602052604090206003015460ff16155b15610e89576000828152600b60205260409020600301805460ff19166001179055610d6b836132df565b925080670de0b6b3a764000002836000015101836000018181525050858360200151018360200181815250507fa7801a70b37e729a11492aad44fd3dba89b4149f0609dc0f6837bf9e57e2671a3360086000898152602001908152602001600020600101543486600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b600086815260086020526040902060030154610eab903463ffffffff6136a216565b6000878152600860205260409020600301555b505050505050565b6005546002546000828152600b602052604081206004015490929142910181118015610f3457506000828152600b602052604090206002015481111580610f3457506000828152600b602052604090206002015481118015610f3457506000828152600b6020526040902054155b15610f7c576000828152600b6020526040902060050154610f7590670de0b6b3a764000090610f69908263ffffffff6136a216565b9063ffffffff61370316565b9250610f86565b6544364c5bb00092505b505090565b60408051808201909152600981527f576f726c64466f6d6f0000000000000000000000000000000000000000000000602082015281565b610fca614d31565b600f54600090819060ff161515600114611030576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611087576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b83633b9aca008110156110df576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561112f576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b33600090815260066020526040902054925086158061115e575060008381526008602052604090206001015487145b1561117c5760008381526008602052604090206006015491506111bb565b60008781526007602090815260408083205486845260089092529091206006015490925082146111bb5760008381526008602052604090206006018290555b6111c486613730565b95506111d38383888888613755565b50505050505050565b600054600160a060020a0316331461123e576040805160e560020a62461bcd02815260206004820152601760248201527f6f6e6c792061646d696e2063616e206163746976617465000000000000000000604482015290519081900360640190fd5b600f5460ff1615611299576040805160e560020a62461bcd02815260206004820152601b60248201527f464f4d4f204672656520616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b600f805460ff1916600190811790915560058190556002548154600092909252600b602052429091019081037f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d355610708017f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d155565b60066020526000908152604090205481565b60045481565b600b60208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b01549a909b0154989a9799969860ff90961697949693959294919390928c565b600a60209081526000928352604080842090915290825290205460ff1681565b600d602052600090815260409020805460019091015482565b60076020526000908152604090205481565b6113dd614d31565b600f5460009060ff161515600114611441576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611498576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b82633b9aca008110156114f0576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115611540576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b33600090815260066020526040902054915085158061155e57508186145b1561157c5760008281526008602052604090206006015495506115a9565b60008281526008602052604090206006015486146115a95760008281526008602052604090206006018690555b6115b285613730565b9450610ebe8287878787613755565b6000806000806115cf614d31565b600f5460ff161515600114611630576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611687576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b60055433600090815260066020908152604080832054848452600b909252909120600201549196504295509350841180156116d457506000858152600b602052604090206003015460ff16155b80156116ed57506000858152600b602052604090205415155b15611893576000858152600b60205260409020600301805460ff19166001179055611717816132df565b905061172283613971565b9150600082111561177357600083815260086020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015611771573d6000803e3d6000fd5b505b83670de0b6b3a764000002816000015101816000018181525050828160200151018160200181815250507f0bd0dba8ab932212fa78150cdb7b0275da72e255875967b5cad11464cf71bedc33600860008681526020019081526020016000206001015484846000015185602001518660400151876060015188608001518960a001518a60c001518b60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1611949565b61189c83613971565b915060008211156118ed57600083815260086020526040808220549051600160a060020a039091169184156108fc02918591818181858888f193505050501580156118eb573d6000803e3d6000fd5b505b6000838152600860209081526040918290206001015482513381529182015280820184905260608101869052905184917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b600080808080803332146119ae576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b6119b7896139f8565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038c1660448301528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263aa4d490b9288926084808201939182900301818588803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b50505050506040513d6040811015611a7357600080fd5b508051602091820151600160a060020a0380891660008181526006865260408082205485835260088852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018a90524260a0870152915193975091955093508892909184917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a4505050505050505050565b33736ed17ee485821cd47531f2e4c7b9ef8b48f2bab514611ba8576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600660205260409020548414611be357600160a060020a03831660009081526006602052604090208490555b6000828152600760205260409020548414611c0a5760008281526007602052604090208490555b600084815260086020526040902054600160a060020a03848116911614611c60576000848152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600860205260409020600101548214611c8d5760008481526008602052604090206001018290555b6000848152600860205260409020600601548114611cba5760008481526008602052604090206006018190555b6000848152600a6020908152604080832085845290915290205460ff161515611d02576000848152600a602090815260408083208584529091529020805460ff191660011790555b50505050565b600c60209081526000928352604080842090915290825290205481565b60055481565b6005546000818152600b60205260408120600201549091829182919042118015611d6757506000818152600b602052604090206003015460ff16155b8015611d8057506000818152600b602052604090205415155b15611ea1576000818152600b6020526040902054851415611e65576000818152600b6020526040902060070154611dee90606490611dc590601963ffffffff61420b16565b811515611dce57fe5b60008881526008602052604090206002015491900463ffffffff6136a216565b6000868152600960209081526040808320858452909152902060020154611e4790611e2990611e1d8986614282565b9063ffffffff61435016565b6000888152600860205260409020600301549063ffffffff6136a216565b60008781526008602052604090206004015491955093509150611ec9565b600085815260086020908152604080832060029081015460098452828520868652909352922090910154611e4790611e2990611e1d8986614282565b60008581526008602052604090206002810154600590910154611e4790611e299088906143b0565b509193909250565b60008080808080333214611f2f576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b611f38896139f8565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018c90528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263745ea0c19288926084808201939182900301818588803b158015611a4857600080fd5b60008060008060008060008060008060008060008060006005549050600b60008281526020019081526020016000206009015481600b600084815260200190815260200160002060050154600b600085815260200190815260200160002060020154600b600086815260200190815260200160002060040154600b600087815260200190815260200160002060070154600b600088815260200190815260200160002060000154600a02600b6000898152602001908152602001600020600101540160086000600b60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a031660086000600b60008c815260200190815260200160002060000154815260200190815260200160002060010154600c60008b8152602001908152602001600020600080815260200190815260200160002054600c60008c815260200190815260200160002060006001815260200190815260200160002054600c60008d815260200190815260200160002060006002815260200190815260200160002054600c60008e8152602001908152602001600020600060038152602001908152602001600020546003546103e802600454019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b6121c7614d31565b600f54600090819060ff16151560011461222d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612284576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b83633b9aca008110156122dc576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561232c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b336000908152600660205260409020549250600160a060020a038716158061235c5750600160a060020a03871633145b1561237a5760008381526008602052604090206006015491506111bb565b600160a060020a0387166000908152600660208181526040808420548785526008909252909220015490925082146111bb5760008381526008602052604090206006018290556111c486613730565b6123d1614d31565b600f5460009060ff161515600114612435576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b33321461248c576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156124e4576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612534576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b61253d836109d8565b33600090815260066020526040902054909350915084158061255e57508185145b1561257c5760008281526008602052604090206006015494506125a9565b60008281526008602052604090206006015485146125a95760008281526008602052604090206006018590555b6125b284613730565b935061194982868686610c8c565b33736ed17ee485821cd47531f2e4c7b9ef8b48f2bab514612651576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600a6020908152604080832084845290915290205460ff161515612699576000828152600a602090815260408083208484529091529020805460ff191660011790555b5050565b600080808080803332146126fb576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b612704896139f8565b604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018c90528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263c0942dfd9288926084808201939182900301818588803b158015611a4857600080fd5b60408051808201909152600281527f5746000000000000000000000000000000000000000000000000000000000000602082015281565b6127cc614d31565b600f54600090819060ff161515600114612832576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612889576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156128e1576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612931576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b61293a846109d8565b336000908152600660205260409020549094509250600160a060020a038616158061296d5750600160a060020a03861633145b1561298b5760008381526008602052604090206006015491506129d2565b600160a060020a0386166000908152600660208181526040808420548785526008909252909220015490925082146129d25760008381526008602052604090206006018290555b6129db85613730565b9450610ebe83838787610c8c565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b612a23614d31565b600f54600090819060ff161515600114612a89576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612ae0576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca00811015612b38576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612b88576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b612b91846109d8565b336000908152600660205260409020549094509250851580612bc3575060008381526008602052604090206001015486145b15612be15760008381526008602052604090206006015491506129d2565b60008681526007602090815260408083205486845260089092529091206006015490925082146129d25760008381526008602052604090206006018290556129db85613730565b600e602052600090815260409020805460019091015482565b6005546000818152600b60205260408120600201549091904290811015612cc7576002546000838152600b602052604090206004015401811115612ca1576000828152600b6020526040902060020154610f75908263ffffffff61435016565b6002546000838152600b6020526040902060040154610f7591018263ffffffff61435016565b60009250610f86565b6002546000838152600b6020526040812060040154909142910181118015612d3a57506000848152600b602052604090206002015481111580612d3a57506000848152600b602052604090206002015481118015612d3a57506000848152600b6020526040902054155b15612d68576000848152600b6020526040902060060154612d61908463ffffffff61440d16565b9150612d71565b612d618361442e565b5092915050565b6005546002546000828152600b602052604081206004015490929142910181118015612de657506000828152600b602052604090206002015481111580612de657506000828152600b602052604090206002015481118015612de657506000828152600b6020526040902054155b15612e1a576000828152600b6020526040902060050154612e13908590610f69908263ffffffff6136a216565b9250612e23565b612e13846144a6565b5050919050565b600f5460ff1681565b60035481565b6008602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b6005546001016000818152600b6020526040902060070154612ea8903463ffffffff6136a216565b6000828152600b6020908152604091829020600701929092558051838152349281019290925280517f74b1d2f771e0eff1b2c36c38499febdbea80fe4013bdace4fc4b653322c2895c9281900390910190a150565b6000806000806000806000806000600554915050600160a060020a038916600090815260066020908152604080832054808452600880845282852060018082015460098752858820898952875294872001549583905293526002830154600590930154909384939091612f9390612f759086906143b0565b6000878152600860205260409020600301549063ffffffff6136a216565b600095865260086020908152604080882060040154600983528189209989529890915290952054939e929d50909b509950919750919550909350915050565b6000858152600960209081526040808320898452909152812060010154819081901515613006576130038885614513565b93505b6000898152600b602052604090206006015468056bc75e2d63100000118015613060575060008881526009602090815260408083208c8452909152902054670de0b6b3a76400009061305e908963ffffffff6136a216565b115b156130e75760008881526009602090815260408083208c845290915290205461309890670de0b6b3a76400009063ffffffff61435016565b92506130aa878463ffffffff61435016565b6000898152600860205260409020600301549092506130cf908363ffffffff6136a216565b60008981526008602052604090206003015591955085915b633b9aca008711156132d4576000898152600b6020526040902060060154613115908863ffffffff61440d16565b9050670de0b6b3a7640000811061318c57613130818a614572565b6000898152600b60205260409020548814613157576000898152600b602052604090208890555b6000898152600b60205260409020600101548514613184576000898152600b602052604090206001018590555b835160640184525b60045484516103e890910201845260008881526009602090815260408083208c84529091529020600101546131c890829063ffffffff6136a216565b60008981526009602090815260408083208d845290915290206001810191909155546131f59088906136a2565b60008981526009602090815260408083208d8452825280832093909355600b9052206005015461322c90829063ffffffff6136a216565b60008a8152600b6020526040902060058101919091556006015461325790889063ffffffff6136a216565b60008a8152600b6020908152604080832060060193909355600c81528282208883529052205461328e90889063ffffffff6136a216565b60008a8152600c602090815260408083208984529091529020556132b48988878761464e565b93506132c58989898989868a61474e565b93506132d48886898488614994565b505050505050505050565b6132e7614d31565b6005546000818152600b60205260408120805460018201546007909201549092808080808080606461332089601963ffffffff61420b16565b81151561332957fe5b049650606461333f89600363ffffffff61420b16565b81151561334857fe5b60008b8152600e60205260409020549190049650606490613370908a9063ffffffff61420b16565b81151561337957fe5b60008b8152600e602052604090206001015491900495506064906133a4908a9063ffffffff61420b16565b8115156133ad57fe5b0493506133c884611e1d87818a818e8e63ffffffff61435016565b60008c8152600b60205260409020600501549093506133f586670de0b6b3a764000063ffffffff61420b16565b8115156133fe57fe5b60008d8152600b6020526040902060050154919004925061344c90670de0b6b3a76400009061343490859063ffffffff61420b16565b81151561343d57fe5b8791900463ffffffff61435016565b9050600081111561347c57613467858263ffffffff61435016565b9450613479838263ffffffff6136a216565b92505b60008a81526008602052604090206002015461349f90889063ffffffff6136a216565b60008b8152600860205260408082206002019290925580549151600160a060020a039092169188156108fc0291899190818181858888f193505050501580156134ec573d6000803e3d6000fd5b5060008b8152600b602052604090206008015461351090839063ffffffff6136a216565b600b60008d815260200190815260200160002060080181905550600b60008c815260200190815260200160002060020154620f4240028d60000151018d60000181815250508867016345785d8a0000028a6a52b7d2dcc80cd2e4000000028e6020015101018d6020018181525050600860008b815260200190815260200160002060000160009054906101000a9004600160a060020a03168d60400190600160a060020a03169081600160a060020a031681525050600860008b8152602001908152602001600020600101548d606001906000191690816000191681525050868d6080018181525050848d60e0018181525050838d60c0018181525050828d60a00181815250506005600081548092919060010191905055508a806001019b505042600b60008d815260200190815260200160002060040181905550613673600254613667610708426136a290919063ffffffff16565b9063ffffffff6136a216565b60008c8152600b6020526040902060028101919091556007018390558c9b505050505050505050505050919050565b818101828110156136fd576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b600061372961372061371b858563ffffffff61435016565b6144a6565b611e1d856144a6565b9392505050565b6000808210806137405750600382115b1561374d57506002613750565b50805b919050565b6005546002546000828152600b6020526040902060040154429101811180156137c057506000828152600b6020526040902060020154811115806137c057506000828152600b6020526040902060020154811180156137c057506000828152600b6020526040902054155b156137f7576137d284611e1d89613971565b6000888152600860205260409020600301556137f2828886898988612fd2565b6111d3565b6000828152600b60205260409020600201548111801561382957506000828152600b602052604090206003015460ff16155b156111d3576000828152600b60205260409020600301805460ff19166001179055613853836132df565b925080670de0b6b3a764000002836000015101836000018181525050868360200151018360200181815250507f88261ac70d02d5ea73e54fa6da17043c974de1021109573ec1f6f57111c823dd33600860008a815260200190815260200160002060010154856000015186602001518760400151886060015189608001518a60a001518b60c001518c60e00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a150505050505050565b6000818152600860205260408120600501548190613990908490614b02565b6000838152600860205260409020600481015460038201546002909201546139c292613667919063ffffffff6136a216565b905060008111156139ee5760008381526008602052604081206002810182905560038101829055600401555b8091505b50919050565b8051600090829082808060208411801590613a135750600084115b1515613a8f576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613a9e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015613b0557508460018503815181101515613add57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515613b81576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613b9057fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415613cd357846001815181101515613bca57fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613c47576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515613c5657fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515613cd3576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156141a35784517f400000000000000000000000000000000000000000000000000000000000000090869084908110613d1057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613d84575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110613d6557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15613df1578482815181101515613d9757fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515613dc857fe5b906020010190600160f860020a031916908160001a905350821515613dec57600192505b614198565b8482815181101515613dff57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480613ecf575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110613e5b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613ecf575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110613eb057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613f79575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110613f0557fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613f79575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110613f5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515613ff5576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561400357fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156140e257848260010181518110151561403f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156140e2576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8215801561418e575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061411b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916108061418e575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061416f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b1561419857600192505b600190910190613cd8565b6001831515146141fd576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b600082151561421c575060006136fd565b5081810281838281151561422c57fe5b04146136fd576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b60008281526009602090815260408083208484528252808320600190810154600b8085528386206005810154938101548752600e8652938620548787529452600790920154670de0b6b3a76400009361433f939261433392909161430a9187916064916142f49163ffffffff61420b16565b8115156142fd57fe5b049063ffffffff61420b16565b81151561431357fe5b6000888152600b602052604090206008015491900463ffffffff6136a216565b9063ffffffff61420b16565b81151561434857fe5b049392505050565b6000828211156143aa576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260096020908152604080832084845282528083206002810154600190910154600b9093529083206008015461372992670de0b6b3a7640000916143f79161420b565b81151561440057fe5b049063ffffffff61435016565b600061372961441b8461442e565b611e1d61442e868663ffffffff6136a216565b60006309502f906144966d03b2a1d15167e7c5699bfde00000611e1d6144917a0dac7055469777a6122ee4310dd6c14410500f29048400000000006136676b01027e72f1f12813088000006143338a670de0b6b3a764000063ffffffff61420b16565b614b99565b81151561449f57fe5b0492915050565b60006144b9670de0b6b3a7640000614bec565b61449660026144ec6144d986670de0b6b3a764000063ffffffff61420b16565b65886c8f6730709063ffffffff61420b16565b8115156144f557fe5b0461366761450286614bec565b6304a817c89063ffffffff61420b16565b61451b614d31565b6000838152600860205260409020600501541561454f5760008381526008602052604090206005015461454f908490614b02565b506005805460009384526008602052604090932001919091558051600a01815290565b6000818152600b6020526040812060020154429190821180156145a157506000838152600b6020526040902054155b156145c5576145be82613667600a670de0b6b3a7640000886142fd565b90506145f2565b6000838152600b60205260409020600201546145ef90613667600a670de0b6b3a7640000886142fd565b90505b61460461a8c08363ffffffff6136a216565b811015614624576000838152600b60205260409020600201819055611d02565b61463661a8c08363ffffffff6136a216565b6000848152600b602052604090206002015550505050565b614656614d31565b600080606461466c87600363ffffffff61420b16565b81151561467557fe5b60008054604051939092049450600160a060020a0390911691849181818185875af19250505015156146a657506000905b6000858152600d60205260409020600101546146e8906064906146d090899063ffffffff61420b16565b8115156146d957fe5b8391900463ffffffff6136a216565b90506000811115614743576000878152600b6020526040902060070154614715908263ffffffff6136a216565b6000888152600b602052604090206007015560c084015161473d90829063ffffffff6136a216565b60c08501525b509195945050505050565b614756614d31565b6000848152600d602052604081205481908190819060649061477f908c9063ffffffff61420b16565b81151561478857fe5b049350606461479e8b600f63ffffffff61420b16565b8115156147a757fe5b04925061481b61480e60646147db600d60008d8152602001908152602001600020600101548e61420b90919063ffffffff16565b8115156147e457fe5b0460646147f88e601263ffffffff61420b16565b81151561480157fe5b049063ffffffff6136a216565b8b9063ffffffff61435016565b995061482d8a8563ffffffff61435016565b91508a891415801561484f575060008981526008602052604090206001015415155b156148ef5760008981526008602052604090206004015461487790849063ffffffff6136a216565b60008a815260086020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518c918e918c917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4614902565b6148ff848463ffffffff6136a216565b93505b61490e8c8c868a614bf8565b9050600081111561492c57614929848263ffffffff61435016565b93505b60008c8152600b602052604090206007015461495290613667848463ffffffff6136a216565b60008d8152600b602052604090206007015560e086015161497a90859063ffffffff6136a216565b60e087015250610100850152509198975050505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600554751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f500e72a0e114930aebdbcb371ccdbf43922c49f979794b5de4257ff7e310c7468160000151826020015160086000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151600354604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a0316815260200188600019166000191681526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b6000614b0e83836143b0565b90506000811115614b9457600083815260086020526040902060030154614b3c90829063ffffffff6136a216565b6000848152600860209081526040808320600301939093556009815282822085835290522060020154614b7690829063ffffffff6136a216565b60008481526009602090815260408083208684529091529020600201555b505050565b6000806002614ba98460016136a2565b811515614bb257fe5b0490508291505b818110156139f2578091506002614bdb8285811515614bd457fe5b04836136a2565b811515614be457fe5b049050614bb9565b60006136fd828361420b565b6000848152600b602052604081206005015481908190614c2686670de0b6b3a764000063ffffffff61420b16565b811515614c2f57fe5b6000898152600b60205260409020600801549190049250614c5790839063ffffffff6136a216565b6000888152600b6020526040902060080155670de0b6b3a7640000614c82838663ffffffff61420b16565b811515614c8b57fe5b60008881526009602090815260408083208c8452825280832060020154600b90925290912060080154929091049250614cde91613667908490670de0b6b3a7640000906143f7908a63ffffffff61420b16565b60008781526009602090815260408083208b8452825280832060020193909355600b90522060050154614d2690670de0b6b3a76400009061343490859063ffffffff61420b16565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152509056006e20646973636f72640000000000000000000000000000000000000000000000736f7272792068756d616e73206f6e6c79202d20464f52205245414c20544849706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63697473206e6f74207265616479207965742e2020636865636b203f65746120696e6f20766974616c696b2c206e6f000000000000000000000000000000000000a165627a7a723058200c216b1463a1e61efe8c5815d68997bc70ee3fb88341cc71bcc2502819a6316e0029
Deployed Bytecode
0x6080604052600436106101c15763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036d57806306fdde0314610394578063079ce3271461041e5780630f15f4c01461043e57806310f01eba1461045357806311a09ae71461047457806324c33d33146104895780632660316e146105005780632ce219991461052f5780632e19ebdc14610560578063349cdcac146105785780633ccfd60b146105965780633ddd4698146105ab57806349cc635d146106075780635893d48114610631578063624ae5c01461064c5780636306643414610661578063685ffd8314610697578063747dff42146106ea57806382bfc739146107755780638f38f3091461079c5780638f7140ea146107aa578063921dec21146107c557806395d89b411461081857806398a0871d1461082d578063a2bccae914610844578063a65b37a114610885578063c519500e14610893578063c7e284b8146108ab578063ce89c80c146108c0578063cf808000146108db578063d53b2679146108f3578063d87574e014610908578063de7874f31461091d578063ed78cf4a14610977578063ee0b5d8b1461097f575b6101c9614d31565b600f5460009060ff16151560011461022d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214610284576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156102dc576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561032c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b610335836109d8565b33600090815260066020818152604080842054808552600890925290922001549194509250610368908390600286610c8c565b505050005b34801561037957600080fd5b50610382610ec6565b60408051918252519081900360200190f35b3480156103a057600080fd5b506103a9610f8b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e35781810151838201526020016103cb565b50505050905090810190601f1680156104105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042a57600080fd5b5061043c600435602435604435610fc2565b005b34801561044a57600080fd5b5061043c6111dc565b34801561045f57600080fd5b50610382600160a060020a036004351661130f565b34801561048057600080fd5b50610382611321565b34801561049557600080fd5b506104a1600435611327565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561050c57600080fd5b5061051b60043560243561138a565b604080519115158252519081900360200190f35b34801561053b57600080fd5b506105476004356113aa565b6040805192835260208301919091528051918290030190f35b34801561056c57600080fd5b506103826004356113c3565b34801561058457600080fd5b5061043c6004356024356044356113d5565b3480156105a257600080fd5b5061043c6115c1565b6040805160206004803580820135601f810184900484028501840190955284845261043c94369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611950565b34801561061357600080fd5b5061043c600435600160a060020a0360243516604435606435611b17565b34801561063d57600080fd5b50610382600435602435611d08565b34801561065857600080fd5b50610382611d25565b34801561066d57600080fd5b50610679600435611d2b565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f810184900484028501840190955284845261043c943694929360249392840191908190840183828082843750949750508435955050505050602001351515611ed1565b3480156106f657600080fd5b506106ff611fc1565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b34801561078157600080fd5b5061043c600160a060020a03600435166024356044356121bf565b61043c6004356024356123c9565b3480156107b657600080fd5b5061043c6004356024356125c0565b6040805160206004803580820135601f810184900484028501840190955284845261043c94369492936024939284019190819084018382808284375094975050843595505050505060200135151561269d565b34801561082457600080fd5b506103a961278d565b61043c600160a060020a03600435166024356127c4565b34801561085057600080fd5b5061085f6004356024356129e9565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043c600435602435612a1b565b34801561089f57600080fd5b50610547600435612c28565b3480156108b757600080fd5b50610382612c41565b3480156108cc57600080fd5b50610382600435602435612cd0565b3480156108e757600080fd5b50610382600435612d78565b3480156108ff57600080fd5b5061051b612e2a565b34801561091457600080fd5b50610382612e33565b34801561092957600080fd5b50610935600435612e39565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61043c612e80565b34801561098b57600080fd5b506109a0600160a060020a0360043516612efd565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6109e0614d31565b336000908152600660205260408120549080821515610c8357604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59163e56556a99160248083019260209291908290030181600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506040513d6020811015610a8f57600080fd5b5051604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018390529051919450736ed17ee485821cd47531f2e4c7b9ef8b48f2bab5916382e37b2c916024808201926020929091908290030181600087803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b5051604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018690529051919350736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59163e3c08adf916024808201926020929091908290030181600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6020811015610bc957600080fd5b505133600081815260066020908152604080832088905587835260089091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610c52576000828152600760209081526040808320869055858352600882528083206001908101869055600a8352818420868552909252909120805460ff191690911790555b8015801590610c615750828114155b15610c7b5760008381526008602052604090206006018190555b845160010185525b50929392505050565b6005546002546000828152600b602052604090206004015442910181118015610cf757506000828152600b602052604090206002015481111580610cf757506000828152600b602052604090206002015481118015610cf757506000828152600b6020526040902054155b15610d0f57610d0a828734888888612fd2565b610ebe565b6000828152600b602052604090206002015481118015610d4157506000828152600b602052604090206003015460ff16155b15610e89576000828152600b60205260409020600301805460ff19166001179055610d6b836132df565b925080670de0b6b3a764000002836000015101836000018181525050858360200151018360200181815250507fa7801a70b37e729a11492aad44fd3dba89b4149f0609dc0f6837bf9e57e2671a3360086000898152602001908152602001600020600101543486600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b600086815260086020526040902060030154610eab903463ffffffff6136a216565b6000878152600860205260409020600301555b505050505050565b6005546002546000828152600b602052604081206004015490929142910181118015610f3457506000828152600b602052604090206002015481111580610f3457506000828152600b602052604090206002015481118015610f3457506000828152600b6020526040902054155b15610f7c576000828152600b6020526040902060050154610f7590670de0b6b3a764000090610f69908263ffffffff6136a216565b9063ffffffff61370316565b9250610f86565b6544364c5bb00092505b505090565b60408051808201909152600981527f576f726c64466f6d6f0000000000000000000000000000000000000000000000602082015281565b610fca614d31565b600f54600090819060ff161515600114611030576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611087576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b83633b9aca008110156110df576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561112f576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b33600090815260066020526040902054925086158061115e575060008381526008602052604090206001015487145b1561117c5760008381526008602052604090206006015491506111bb565b60008781526007602090815260408083205486845260089092529091206006015490925082146111bb5760008381526008602052604090206006018290555b6111c486613730565b95506111d38383888888613755565b50505050505050565b600054600160a060020a0316331461123e576040805160e560020a62461bcd02815260206004820152601760248201527f6f6e6c792061646d696e2063616e206163746976617465000000000000000000604482015290519081900360640190fd5b600f5460ff1615611299576040805160e560020a62461bcd02815260206004820152601b60248201527f464f4d4f204672656520616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b600f805460ff1916600190811790915560058190556002548154600092909252600b602052429091019081037f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d355610708017f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d155565b60066020526000908152604090205481565b60045481565b600b60208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b01549a909b0154989a9799969860ff90961697949693959294919390928c565b600a60209081526000928352604080842090915290825290205460ff1681565b600d602052600090815260409020805460019091015482565b60076020526000908152604090205481565b6113dd614d31565b600f5460009060ff161515600114611441576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611498576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b82633b9aca008110156114f0576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115611540576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b33600090815260066020526040902054915085158061155e57508186145b1561157c5760008281526008602052604090206006015495506115a9565b60008281526008602052604090206006015486146115a95760008281526008602052604090206006018690555b6115b285613730565b9450610ebe8287878787613755565b6000806000806115cf614d31565b600f5460ff161515600114611630576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214611687576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b60055433600090815260066020908152604080832054848452600b909252909120600201549196504295509350841180156116d457506000858152600b602052604090206003015460ff16155b80156116ed57506000858152600b602052604090205415155b15611893576000858152600b60205260409020600301805460ff19166001179055611717816132df565b905061172283613971565b9150600082111561177357600083815260086020526040808220549051600160a060020a039091169184156108fc02918591818181858888f19350505050158015611771573d6000803e3d6000fd5b505b83670de0b6b3a764000002816000015101816000018181525050828160200151018160200181815250507f0bd0dba8ab932212fa78150cdb7b0275da72e255875967b5cad11464cf71bedc33600860008681526020019081526020016000206001015484846000015185602001518660400151876060015188608001518960a001518a60c001518b60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1611949565b61189c83613971565b915060008211156118ed57600083815260086020526040808220549051600160a060020a039091169184156108fc02918591818181858888f193505050501580156118eb573d6000803e3d6000fd5b505b6000838152600860209081526040918290206001015482513381529182015280820184905260608101869052905184917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b600080808080803332146119ae576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b6119b7896139f8565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038c1660448301528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263aa4d490b9288926084808201939182900301818588803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b50505050506040513d6040811015611a7357600080fd5b508051602091820151600160a060020a0380891660008181526006865260408082205485835260088852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018a90524260a0870152915193975091955093508892909184917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a4505050505050505050565b33736ed17ee485821cd47531f2e4c7b9ef8b48f2bab514611ba8576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600660205260409020548414611be357600160a060020a03831660009081526006602052604090208490555b6000828152600760205260409020548414611c0a5760008281526007602052604090208490555b600084815260086020526040902054600160a060020a03848116911614611c60576000848152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600860205260409020600101548214611c8d5760008481526008602052604090206001018290555b6000848152600860205260409020600601548114611cba5760008481526008602052604090206006018190555b6000848152600a6020908152604080832085845290915290205460ff161515611d02576000848152600a602090815260408083208584529091529020805460ff191660011790555b50505050565b600c60209081526000928352604080842090915290825290205481565b60055481565b6005546000818152600b60205260408120600201549091829182919042118015611d6757506000818152600b602052604090206003015460ff16155b8015611d8057506000818152600b602052604090205415155b15611ea1576000818152600b6020526040902054851415611e65576000818152600b6020526040902060070154611dee90606490611dc590601963ffffffff61420b16565b811515611dce57fe5b60008881526008602052604090206002015491900463ffffffff6136a216565b6000868152600960209081526040808320858452909152902060020154611e4790611e2990611e1d8986614282565b9063ffffffff61435016565b6000888152600860205260409020600301549063ffffffff6136a216565b60008781526008602052604090206004015491955093509150611ec9565b600085815260086020908152604080832060029081015460098452828520868652909352922090910154611e4790611e2990611e1d8986614282565b60008581526008602052604090206002810154600590910154611e4790611e299088906143b0565b509193909250565b60008080808080333214611f2f576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b611f38896139f8565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018c90528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263745ea0c19288926084808201939182900301818588803b158015611a4857600080fd5b60008060008060008060008060008060008060008060006005549050600b60008281526020019081526020016000206009015481600b600084815260200190815260200160002060050154600b600085815260200190815260200160002060020154600b600086815260200190815260200160002060040154600b600087815260200190815260200160002060070154600b600088815260200190815260200160002060000154600a02600b6000898152602001908152602001600020600101540160086000600b60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a031660086000600b60008c815260200190815260200160002060000154815260200190815260200160002060010154600c60008b8152602001908152602001600020600080815260200190815260200160002054600c60008c815260200190815260200160002060006001815260200190815260200160002054600c60008d815260200190815260200160002060006002815260200190815260200160002054600c60008e8152602001908152602001600020600060038152602001908152602001600020546003546103e802600454019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b6121c7614d31565b600f54600090819060ff16151560011461222d576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612284576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b83633b9aca008110156122dc576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561232c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b336000908152600660205260409020549250600160a060020a038716158061235c5750600160a060020a03871633145b1561237a5760008381526008602052604090206006015491506111bb565b600160a060020a0387166000908152600660208181526040808420548785526008909252909220015490925082146111bb5760008381526008602052604090206006018290556111c486613730565b6123d1614d31565b600f5460009060ff161515600114612435576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b33321461248c576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156124e4576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612534576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b61253d836109d8565b33600090815260066020526040902054909350915084158061255e57508185145b1561257c5760008281526008602052604090206006015494506125a9565b60008281526008602052604090206006015485146125a95760008281526008602052604090206006018590555b6125b284613730565b935061194982868686610c8c565b33736ed17ee485821cd47531f2e4c7b9ef8b48f2bab514612651576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600a6020908152604080832084845290915290205460ff161515612699576000828152600a602090815260408083208484529091529020805460ff191660011790555b5050565b600080808080803332146126fb576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b612704896139f8565b604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018c90528a1515606483015282519399509750349650736ed17ee485821cd47531f2e4c7b9ef8b48f2bab59263c0942dfd9288926084808201939182900301818588803b158015611a4857600080fd5b60408051808201909152600281527f5746000000000000000000000000000000000000000000000000000000000000602082015281565b6127cc614d31565b600f54600090819060ff161515600114612832576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612889576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca008110156128e1576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612931576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b61293a846109d8565b336000908152600660205260409020549094509250600160a060020a038616158061296d5750600160a060020a03861633145b1561298b5760008381526008602052604090206006015491506129d2565b600160a060020a0386166000908152600660208181526040808420548785526008909252909220015490925082146129d25760008381526008602052604090206006018290555b6129db85613730565b9450610ebe83838787610c8c565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b612a23614d31565b600f54600090819060ff161515600114612a89576040805160e560020a62461bcd0281526020600482015260296024820152600080516020614deb8339815191526044820152600080516020614d8b833981519152606482015290519081900360840190fd5b333214612ae0576040805160e560020a62461bcd0281526020600482015260266024820152600080516020614dab833981519152604482015260d060020a65532054494d4502606482015290519081900360840190fd5b34633b9aca00811015612b38576040805160e560020a62461bcd0281526020600482015260216024820152600080516020614dcb833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612b88576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614e0b833981519152604482015290519081900360640190fd5b612b91846109d8565b336000908152600660205260409020549094509250851580612bc3575060008381526008602052604090206001015486145b15612be15760008381526008602052604090206006015491506129d2565b60008681526007602090815260408083205486845260089092529091206006015490925082146129d25760008381526008602052604090206006018290556129db85613730565b600e602052600090815260409020805460019091015482565b6005546000818152600b60205260408120600201549091904290811015612cc7576002546000838152600b602052604090206004015401811115612ca1576000828152600b6020526040902060020154610f75908263ffffffff61435016565b6002546000838152600b6020526040902060040154610f7591018263ffffffff61435016565b60009250610f86565b6002546000838152600b6020526040812060040154909142910181118015612d3a57506000848152600b602052604090206002015481111580612d3a57506000848152600b602052604090206002015481118015612d3a57506000848152600b6020526040902054155b15612d68576000848152600b6020526040902060060154612d61908463ffffffff61440d16565b9150612d71565b612d618361442e565b5092915050565b6005546002546000828152600b602052604081206004015490929142910181118015612de657506000828152600b602052604090206002015481111580612de657506000828152600b602052604090206002015481118015612de657506000828152600b6020526040902054155b15612e1a576000828152600b6020526040902060050154612e13908590610f69908263ffffffff6136a216565b9250612e23565b612e13846144a6565b5050919050565b600f5460ff1681565b60035481565b6008602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b6005546001016000818152600b6020526040902060070154612ea8903463ffffffff6136a216565b6000828152600b6020908152604091829020600701929092558051838152349281019290925280517f74b1d2f771e0eff1b2c36c38499febdbea80fe4013bdace4fc4b653322c2895c9281900390910190a150565b6000806000806000806000806000600554915050600160a060020a038916600090815260066020908152604080832054808452600880845282852060018082015460098752858820898952875294872001549583905293526002830154600590930154909384939091612f9390612f759086906143b0565b6000878152600860205260409020600301549063ffffffff6136a216565b600095865260086020908152604080882060040154600983528189209989529890915290952054939e929d50909b509950919750919550909350915050565b6000858152600960209081526040808320898452909152812060010154819081901515613006576130038885614513565b93505b6000898152600b602052604090206006015468056bc75e2d63100000118015613060575060008881526009602090815260408083208c8452909152902054670de0b6b3a76400009061305e908963ffffffff6136a216565b115b156130e75760008881526009602090815260408083208c845290915290205461309890670de0b6b3a76400009063ffffffff61435016565b92506130aa878463ffffffff61435016565b6000898152600860205260409020600301549092506130cf908363ffffffff6136a216565b60008981526008602052604090206003015591955085915b633b9aca008711156132d4576000898152600b6020526040902060060154613115908863ffffffff61440d16565b9050670de0b6b3a7640000811061318c57613130818a614572565b6000898152600b60205260409020548814613157576000898152600b602052604090208890555b6000898152600b60205260409020600101548514613184576000898152600b602052604090206001018590555b835160640184525b60045484516103e890910201845260008881526009602090815260408083208c84529091529020600101546131c890829063ffffffff6136a216565b60008981526009602090815260408083208d845290915290206001810191909155546131f59088906136a2565b60008981526009602090815260408083208d8452825280832093909355600b9052206005015461322c90829063ffffffff6136a216565b60008a8152600b6020526040902060058101919091556006015461325790889063ffffffff6136a216565b60008a8152600b6020908152604080832060060193909355600c81528282208883529052205461328e90889063ffffffff6136a216565b60008a8152600c602090815260408083208984529091529020556132b48988878761464e565b93506132c58989898989868a61474e565b93506132d48886898488614994565b505050505050505050565b6132e7614d31565b6005546000818152600b60205260408120805460018201546007909201549092808080808080606461332089601963ffffffff61420b16565b81151561332957fe5b049650606461333f89600363ffffffff61420b16565b81151561334857fe5b60008b8152600e60205260409020549190049650606490613370908a9063ffffffff61420b16565b81151561337957fe5b60008b8152600e602052604090206001015491900495506064906133a4908a9063ffffffff61420b16565b8115156133ad57fe5b0493506133c884611e1d87818a818e8e63ffffffff61435016565b60008c8152600b60205260409020600501549093506133f586670de0b6b3a764000063ffffffff61420b16565b8115156133fe57fe5b60008d8152600b6020526040902060050154919004925061344c90670de0b6b3a76400009061343490859063ffffffff61420b16565b81151561343d57fe5b8791900463ffffffff61435016565b9050600081111561347c57613467858263ffffffff61435016565b9450613479838263ffffffff6136a216565b92505b60008a81526008602052604090206002015461349f90889063ffffffff6136a216565b60008b8152600860205260408082206002019290925580549151600160a060020a039092169188156108fc0291899190818181858888f193505050501580156134ec573d6000803e3d6000fd5b5060008b8152600b602052604090206008015461351090839063ffffffff6136a216565b600b60008d815260200190815260200160002060080181905550600b60008c815260200190815260200160002060020154620f4240028d60000151018d60000181815250508867016345785d8a0000028a6a52b7d2dcc80cd2e4000000028e6020015101018d6020018181525050600860008b815260200190815260200160002060000160009054906101000a9004600160a060020a03168d60400190600160a060020a03169081600160a060020a031681525050600860008b8152602001908152602001600020600101548d606001906000191690816000191681525050868d6080018181525050848d60e0018181525050838d60c0018181525050828d60a00181815250506005600081548092919060010191905055508a806001019b505042600b60008d815260200190815260200160002060040181905550613673600254613667610708426136a290919063ffffffff16565b9063ffffffff6136a216565b60008c8152600b6020526040902060028101919091556007018390558c9b505050505050505050505050919050565b818101828110156136fd576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b600061372961372061371b858563ffffffff61435016565b6144a6565b611e1d856144a6565b9392505050565b6000808210806137405750600382115b1561374d57506002613750565b50805b919050565b6005546002546000828152600b6020526040902060040154429101811180156137c057506000828152600b6020526040902060020154811115806137c057506000828152600b6020526040902060020154811180156137c057506000828152600b6020526040902054155b156137f7576137d284611e1d89613971565b6000888152600860205260409020600301556137f2828886898988612fd2565b6111d3565b6000828152600b60205260409020600201548111801561382957506000828152600b602052604090206003015460ff16155b156111d3576000828152600b60205260409020600301805460ff19166001179055613853836132df565b925080670de0b6b3a764000002836000015101836000018181525050868360200151018360200181815250507f88261ac70d02d5ea73e54fa6da17043c974de1021109573ec1f6f57111c823dd33600860008a815260200190815260200160002060010154856000015186602001518760400151886060015189608001518a60a001518b60c001518c60e00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a150505050505050565b6000818152600860205260408120600501548190613990908490614b02565b6000838152600860205260409020600481015460038201546002909201546139c292613667919063ffffffff6136a216565b905060008111156139ee5760008381526008602052604081206002810182905560038101829055600401555b8091505b50919050565b8051600090829082808060208411801590613a135750600084115b1515613a8f576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613a9e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015613b0557508460018503815181101515613add57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515613b81576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613b9057fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415613cd357846001815181101515613bca57fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613c47576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515613c5657fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515613cd3576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156141a35784517f400000000000000000000000000000000000000000000000000000000000000090869084908110613d1057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613d84575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110613d6557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15613df1578482815181101515613d9757fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515613dc857fe5b906020010190600160f860020a031916908160001a905350821515613dec57600192505b614198565b8482815181101515613dff57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480613ecf575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110613e5b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613ecf575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110613eb057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613f79575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110613f0557fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613f79575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110613f5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515613ff5576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561400357fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156140e257848260010181518110151561403f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156140e2576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8215801561418e575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061411b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916108061418e575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061416f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b1561419857600192505b600190910190613cd8565b6001831515146141fd576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b600082151561421c575060006136fd565b5081810281838281151561422c57fe5b04146136fd576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b60008281526009602090815260408083208484528252808320600190810154600b8085528386206005810154938101548752600e8652938620548787529452600790920154670de0b6b3a76400009361433f939261433392909161430a9187916064916142f49163ffffffff61420b16565b8115156142fd57fe5b049063ffffffff61420b16565b81151561431357fe5b6000888152600b602052604090206008015491900463ffffffff6136a216565b9063ffffffff61420b16565b81151561434857fe5b049392505050565b6000828211156143aa576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260096020908152604080832084845282528083206002810154600190910154600b9093529083206008015461372992670de0b6b3a7640000916143f79161420b565b81151561440057fe5b049063ffffffff61435016565b600061372961441b8461442e565b611e1d61442e868663ffffffff6136a216565b60006309502f906144966d03b2a1d15167e7c5699bfde00000611e1d6144917a0dac7055469777a6122ee4310dd6c14410500f29048400000000006136676b01027e72f1f12813088000006143338a670de0b6b3a764000063ffffffff61420b16565b614b99565b81151561449f57fe5b0492915050565b60006144b9670de0b6b3a7640000614bec565b61449660026144ec6144d986670de0b6b3a764000063ffffffff61420b16565b65886c8f6730709063ffffffff61420b16565b8115156144f557fe5b0461366761450286614bec565b6304a817c89063ffffffff61420b16565b61451b614d31565b6000838152600860205260409020600501541561454f5760008381526008602052604090206005015461454f908490614b02565b506005805460009384526008602052604090932001919091558051600a01815290565b6000818152600b6020526040812060020154429190821180156145a157506000838152600b6020526040902054155b156145c5576145be82613667600a670de0b6b3a7640000886142fd565b90506145f2565b6000838152600b60205260409020600201546145ef90613667600a670de0b6b3a7640000886142fd565b90505b61460461a8c08363ffffffff6136a216565b811015614624576000838152600b60205260409020600201819055611d02565b61463661a8c08363ffffffff6136a216565b6000848152600b602052604090206002015550505050565b614656614d31565b600080606461466c87600363ffffffff61420b16565b81151561467557fe5b60008054604051939092049450600160a060020a0390911691849181818185875af19250505015156146a657506000905b6000858152600d60205260409020600101546146e8906064906146d090899063ffffffff61420b16565b8115156146d957fe5b8391900463ffffffff6136a216565b90506000811115614743576000878152600b6020526040902060070154614715908263ffffffff6136a216565b6000888152600b602052604090206007015560c084015161473d90829063ffffffff6136a216565b60c08501525b509195945050505050565b614756614d31565b6000848152600d602052604081205481908190819060649061477f908c9063ffffffff61420b16565b81151561478857fe5b049350606461479e8b600f63ffffffff61420b16565b8115156147a757fe5b04925061481b61480e60646147db600d60008d8152602001908152602001600020600101548e61420b90919063ffffffff16565b8115156147e457fe5b0460646147f88e601263ffffffff61420b16565b81151561480157fe5b049063ffffffff6136a216565b8b9063ffffffff61435016565b995061482d8a8563ffffffff61435016565b91508a891415801561484f575060008981526008602052604090206001015415155b156148ef5760008981526008602052604090206004015461487790849063ffffffff6136a216565b60008a815260086020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518c918e918c917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4614902565b6148ff848463ffffffff6136a216565b93505b61490e8c8c868a614bf8565b9050600081111561492c57614929848263ffffffff61435016565b93505b60008c8152600b602052604090206007015461495290613667848463ffffffff6136a216565b60008d8152600b602052604090206007015560e086015161497a90859063ffffffff6136a216565b60e087015250610100850152509198975050505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600554751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f500e72a0e114930aebdbcb371ccdbf43922c49f979794b5de4257ff7e310c7468160000151826020015160086000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151600354604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a0316815260200188600019166000191681526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b6000614b0e83836143b0565b90506000811115614b9457600083815260086020526040902060030154614b3c90829063ffffffff6136a216565b6000848152600860209081526040808320600301939093556009815282822085835290522060020154614b7690829063ffffffff6136a216565b60008481526009602090815260408083208684529091529020600201555b505050565b6000806002614ba98460016136a2565b811515614bb257fe5b0490508291505b818110156139f2578091506002614bdb8285811515614bd457fe5b04836136a2565b811515614be457fe5b049050614bb9565b60006136fd828361420b565b6000848152600b602052604081206005015481908190614c2686670de0b6b3a764000063ffffffff61420b16565b811515614c2f57fe5b6000898152600b60205260409020600801549190049250614c5790839063ffffffff6136a216565b6000888152600b6020526040902060080155670de0b6b3a7640000614c82838663ffffffff61420b16565b811515614c8b57fe5b60008881526009602090815260408083208c8452825280832060020154600b90925290912060080154929091049250614cde91613667908490670de0b6b3a7640000906143f7908a63ffffffff61420b16565b60008781526009602090815260408083208b8452825280832060020193909355600b90522060050154614d2690670de0b6b3a76400009061343490859063ffffffff61420b16565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152509056006e20646973636f72640000000000000000000000000000000000000000000000736f7272792068756d616e73206f6e6c79202d20464f52205245414c20544849706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63697473206e6f74207265616479207965742e2020636865636b203f65746120696e6f20766974616c696b2c206e6f000000000000000000000000000000000000a165627a7a723058200c216b1463a1e61efe8c5815d68997bc70ee3fb88341cc71bcc2502819a6316e0029
Swarm Source
bzzr://0c216b1463a1e61efe8c5815d68997bc70ee3fb88341cc71bcc2502819a6316e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $4,043.65 | 3.11 | $12,575.88 |
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.