FairDapp
0x26936b691450a838b6df4965b58f2c53a9139d29
Баланс
1135.18 ETH.
Динамика пополнений
от общего пополнения за день
0%
Ввод
За последний час
0 ETH.
Всего
2432.52 ETH.
Выводы
За последний час
0 ETH.
Всего
1297.34 ETH.
Условия
В день
-
В час
-
Инвесторов
122
Повторные пополнения
За последний час
0 ETH.
Всего
1902.4 ETH.
Средняя оценка аудиторов
-
- Таймлайн:
- час
- день
- неделя
- месяц
Пополнения (1752)
Выводы (1847)
Аудит
Код
API
Комменторы
Дата | Блок | TxHash | От кого | Кому | Сумма |
---|---|---|---|---|---|
24 окт. 2018 г. 21:17 | 6576245 | 0xf521b4c97b4fa7b6602edae52d8f4d07032155dc4272015c6e00dcb2bb01df47 | 0x674a8fa194d3eb3e286cc10760d3a19caf3e4886 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 1 Ether |
24 окт. 2018 г. 21:15 | 6576233 | 0x4e01d620c82900947297156f72db874118830927b62ebc1c6fa5f3c78b9289cc | 0x190a2409fc6434483d4c2cab804e75e3bc5ebfa6 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.2 Ether |
24 окт. 2018 г. 21:10 | 6576219 | 0x63f33b5b9e364f7005d0bf1e637186d7bbc794e29e2dd86274c0be17f8efb0b3 | 0x43d32e4d22ded1fd3935270fc4e7923b4899b5f6 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 21:10 | 6576218 | 0xa38e1a18b9afe012a5fc0227235048e7e79c02286e293e876a965d2b75976a3d | 0x20920c6df10c08ff92d74143a86a330185a726bf | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.1 Ether |
24 окт. 2018 г. 21:10 | 6576215 | 0xa0c3df8bc635209f2ffe2dd2a63bb19b555b6c69f0db0fcb7f2c1536bbd071b8 | 0x20920c6df10c08ff92d74143a86a330185a726bf | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 21:09 | 6576214 | 0x43a6f9813f7e24c19b69d182271035535baa78083cee5f2b7219be6bc09200d3 | 0xb74d5f0a81ce99ac1857133e489bc2b4954935ff | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 21:08 | 6576210 | 0x0d9bdd254b92938c1a4dcd6f466b1b7871b71c05d4c5acd34649da6d70245c78 | 0x1dff003e16e93823cdb91e20bfd1d31ad05b6224 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 21:07 | 6576203 | 0xcacaa97cc0f64a27136fcbf410150057658dcef582c072158cbd34fdac38a24a | 0x674a8fa194d3eb3e286cc10760d3a19caf3e4886 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.001 Ether |
24 окт. 2018 г. 21:07 | 6576203 | 0x91d21a1947b5b836ff039b6b04cf948fea5e2b1e4fa91df70f7e75042d7868ae | 0x973a6af6a6a63a4b348f076bcaad6eba3630af97 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.1 Ether |
24 окт. 2018 г. 21:03 | 6576186 | 0x5191e775cf1345761257c3f45662119d23212a0eb42d9b73741557aaea1a8ac3 | 0x43d32e4d22ded1fd3935270fc4e7923b4899b5f6 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 21:03 | 6576185 |
0x4c256d1b1b9da316ec27236a3320f64a0db31115c1ebd70321dfd6e1a47e699c Транзакция с ошибкой |
0x674a8fa194d3eb3e286cc10760d3a19caf3e4886 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.001 Ether |
24 окт. 2018 г. 21:01 | 6576176 | 0xf34e56c727b50ae78a5f5a601d274efc5293e0b6c0e0309b71c36d9906c141c7 | 0xb74d5f0a81ce99ac1857133e489bc2b4954935ff | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 20:52 | 6576141 | 0x6c81ced2548268136add76ed719249afe848acdb38f5b4f95f9dc4b7be10d5af | 0x1dff003e16e93823cdb91e20bfd1d31ad05b6224 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 20:49 | 6576126 | 0x94474dc654b2f16aa31389e7fdae0152c8ca77087a9f639990b11b0528c6c579 | 0x52f2cc12b89a3fb4d4f2230487297fd402e6a711 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 20:48 | 6576122 | 0xfc5819cd18fb29cd5e53bad762fcee5844121c6c6155413a16cb5802f55c5c0d | 0x11dcb85916423c46f70552ddb220e2583d2a830f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 20:46 | 6576115 |
0xf17c86b2c841f8395081bd3a66937aaeea94594e848a57e91fa7a614bc618e58 Транзакция с ошибкой |
0x20920c6df10c08ff92d74143a86a330185a726bf | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.1 Ether |
24 окт. 2018 г. 20:45 | 6576106 | 0x16a34a8fd226a78757fca40612490af7ab081614c58f38aab174d9ba4013b7cd | 0x1dff003e16e93823cdb91e20bfd1d31ad05b6224 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.5 Ether |
24 окт. 2018 г. 20:45 | 6576106 |
0x6c9cf73f02a85d5628ad75f8f88b7cedd01f04732e4327d89a06bc68b216545e Транзакция с ошибкой |
0x11dcb85916423c46f70552ddb220e2583d2a830f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 1 Ether |
24 окт. 2018 г. 20:45 | 6576105 | 0x025ad24a0c103565a52ac35256a2ced68f4e365dc447029e5e1e93c5d206510c | 0x070f3492cd778cfc3dbad6d25bfb3bcbb498298b | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.4769271709090909 Ether |
24 окт. 2018 г. 19:55 | 6575868 | 0x102bde538868f329a83154f519f4ee7019476ee2ddf010d67666184380abda51 | 0xb74d5f0a81ce99ac1857133e489bc2b4954935ff | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 1 Ether |
24 окт. 2018 г. 19:55 | 6575866 | 0xddcc0d7d1a7e155761da0d8a0c73a2a9e29fe5017e44486afe2fa54144d73cce | 0xca3bfc62accc432daebeb9445f2860db51215a36 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 19:53 | 6575858 | 0x7184d7a4c1b64afb57bd5c7387984bbcb6ce420e29f5bfa53129e6d245f0ee14 | 0xb74d5f0a81ce99ac1857133e489bc2b4954935ff | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 19:53 | 6575858 | 0xdcd9ec7a0d9d8c5d656750090e8b9925ebc6b5bba210d257ca597d9fbd7ef3d9 | 0x43d32e4d22ded1fd3935270fc4e7923b4899b5f6 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 1 Ether |
24 окт. 2018 г. 19:48 | 6575830 | 0x87fa35f069f19ffa3b06245a954587f36ae550f7ab6e49884ddd270ac421dc7f | 0x7f675ab732ac59b8df0d1ac32b33955598f70a87 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0 Ether |
24 окт. 2018 г. 19:46 | 6575821 | 0x445f0ff52faa92c13fad7bfc4d953285f33189d9a785d6318ef78c022f030137 | 0x52f2cc12b89a3fb4d4f2230487297fd402e6a711 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0.1 Ether |
Дата | Блок | parentTxHash | От кого | Кому | Сумма |
---|---|---|---|---|---|
15 янв. 14:12 | 7070084 | 0x132cc4128ed4e07a6f5afe0d577628592804774aca1f863c487da943c691be0b | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x9c45a3d852a91ac06b42778524b255330e5deb31 | 0.002107583915008127 Ether |
30 ноя. 2018 г. 02:25 | 6797055 | 0x07865d31448f193b44d3d699807a4db958333ee3579b6e5d2b3bce005daef42f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x6a87dd44fb782ee9b09b203ac6ad412b8c146797 | 0.024158849746685168 Ether |
9 ноя. 2018 г. 01:37 | 6668848 | 0xf5855c22f56699f4bd8dfcaf7ef4646451f4dbccb1e2ebf5cc3776b119822621 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x868b90e2a1017f14fbee4b9a7921a39624413b22 | 0.5230659086920088 Ether |
8 ноя. 2018 г. 17:24 | 6666754 | 0xeab7cfc0f28e945b00aaf9b49e2db146604374489e8ad40fb376f577c0e3f26e | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x20920c6df10c08ff92d74143a86a330185a726bf | 0.088 Ether |
7 ноя. 2018 г. 15:43 | 6660164 | 0xd3569deda303b9669e647466b2adf07c9f47588f3dd682ab4922c141be10304d | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x6e06469a45fb778efc3d487fdab89850a916ddf0 | 2.069500897800959 Ether |
26 окт. 2018 г. 20:39 | 6588315 | 0x2f07aad234360faeeb71ee0ca09eb5b263290c1255fdcabd6024e87a009d6db2 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x190a2409fc6434483d4c2cab804e75e3bc5ebfa6 | 0.008315743490048766 Ether |
26 окт. 2018 г. 15:58 | 6587091 | 0x80c90dbe20202a4c4415366e8056e6754f3dce5dfb2c7edbbc519c5406dfadfc | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x22f14cb872871a37b1d981b342b865f8a31fbaf9 | 0.009248908698009753 Ether |
26 окт. 2018 г. 12:35 | 6586254 | 0x4af61b007140e8511ccb58fad45c60e21223c14277b74f3bb0e9d9e239ddb197 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0xab3c379ab712b2671db021b6baf32c8d9b536131 | 0.00001 Ether |
26 окт. 2018 г. 12:35 | 6586254 | 0x4af61b007140e8511ccb58fad45c60e21223c14277b74f3bb0e9d9e239ddb197 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x53a39eef083c4a91e36145176cc9f52be29b7288 | 0.00002 Ether |
26 окт. 2018 г. 05:20 | 6584427 | 0xbf6aeea43ab7be657bb353caacbcfdbd085f708642d5668fdafca92530682ca2 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x47169f78750be1e6ec2deb2974458ac4f8751714 | 0.0001 Ether |
26 окт. 2018 г. 05:20 | 6584427 | 0xbf6aeea43ab7be657bb353caacbcfdbd085f708642d5668fdafca92530682ca2 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x53a39eef083c4a91e36145176cc9f52be29b7288 | 0.0002 Ether |
25 окт. 2018 г. 17:00 | 6581241 | 0x4344b503c3cdf7dabe5d8aa5347b60a99c0402d9bcebb7e0410b29540b07f364 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x0659836869772cf479cfcedb659ce6099560b1e5 | 0.059012349620227576 Ether |
25 окт. 2018 г. 11:59 | 6579957 | 0x297829832032b7df8396b0b342d44fbc462a193e94402a98f8b18a4a1f080d83 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x1dff003e16e93823cdb91e20bfd1d31ad05b6224 | 0.002107583915008127 Ether |
25 окт. 2018 г. 06:25 | 6578544 | 0x4f9c23b43a98f63e7f9359d6ed6f1e5dd2ea730c24b7df5c8811d44567cf7262 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x2f52362c266c1df356a2313f79e4be4e7de281cc | 0.00001 Ether |
25 окт. 2018 г. 06:25 | 6578544 | 0x4f9c23b43a98f63e7f9359d6ed6f1e5dd2ea730c24b7df5c8811d44567cf7262 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x53a39eef083c4a91e36145176cc9f52be29b7288 | 0.00002 Ether |
25 окт. 2018 г. 04:19 | 6578025 | 0x421430af307a72cc21ab045014bab2e04177968cfb134b2e14c01e9ea01225de | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x11dcb85916423c46f70552ddb220e2583d2a830f | 0.8106295939323399 Ether |
25 окт. 2018 г. 03:59 | 6577950 | 0x7821ed4987049670594c9988ebfa866ab457d2d54650231a98ae7bbb8189d85f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x070f3492cd778cfc3dbad6d25bfb3bcbb498298b | 1.3827327496838568 Ether |
25 окт. 2018 г. 03:40 | 6577877 | 0x214a557dec2c129e0062f83f1a18c413cd2a4f513023a7bb1721076fdb358ee2 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0xe5b81a1b5c457fb2687e5ed9eb5894eec22bc474 | 0.092643382163696 Ether |
25 окт. 2018 г. 03:20 | 6577780 | 0xd151ddbfbe0f89a8e3290d1b590d75c799460f9316e34dcbb3fa6130b3bafe9f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x9c45a3d852a91ac06b42778524b255330e5deb31 | 0.00001 Ether |
25 окт. 2018 г. 03:20 | 6577780 | 0xd151ddbfbe0f89a8e3290d1b590d75c799460f9316e34dcbb3fa6130b3bafe9f | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x53a39eef083c4a91e36145176cc9f52be29b7288 | 0.00002 Ether |
25 окт. 2018 г. 03:20 | 6577779 | 0x599ee8c5b78e363ca5214664c8722a4ceb9bc82072903b7ce6edacffd18de95c | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x9c45a3d852a91ac06b42778524b255330e5deb31 | 0.00028 Ether |
25 окт. 2018 г. 03:20 | 6577779 | 0x599ee8c5b78e363ca5214664c8722a4ceb9bc82072903b7ce6edacffd18de95c | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x53a39eef083c4a91e36145176cc9f52be29b7288 | 0.00056 Ether |
25 окт. 2018 г. 03:10 | 6577732 | 0xf5b42db9e71809d3f7084b713a5f5a8b5b9bdf3924c111196625ff0f6077d1e6 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x0659836869772cf479cfcedb659ce6099560b1e5 | 0.001096401482211259 Ether |
25 окт. 2018 г. 02:30 | 6577560 | 0xdd2fcfc92be74948934928b36d1731efe734322972e2aad516f351511a1af7cc | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db | 0.10964014822112599 Ether |
25 окт. 2018 г. 02:24 | 6577527 | 0x932b5e9cce1c2b8668217fb3a5e982703bcacb9653f42c32f8f9a6cc9b5a76c7 | 0x26936b691450a838b6df4965b58f2c53a9139d29 | 0x1dff003e16e93823cdb91e20bfd1d31ad05b6224 | 0.5482007411056299 Ether |
Средняя оценка аудиторов -
Contract Source Code </>
pragma solidity ^0.4.25; /** * * https://fairdapp.com/bankfomo/ https://fairdapp.com/bankfomo/ https://fairdapp.com/bankfomo/ * * _______ _ ______ _______ ______ ______ * (_______) (_) (______)(_______|_____ (_____ \ * _____ _____ _ ____ _ _ _______ _____) )____) ) * | ___|____ | |/ ___) | | | ___ | ____/ ____/ * | | / ___ | | | | |__/ /| | | | | | | * |_| \_____|_|_| |_____/ |_| |_|_| |_| * * ______ _ * (____ \ | | * ____) )_____ ____ | | _ * | __ ((____ | _ \| |_/ ) * | |__) ) ___ | | | | _ ( * |______/\_____|_| |_|_| \_) * * _______ * (_______) * _____ ___ ____ ___ * | ___) _ \| \ / _ \ * | | | |_| | | | | |_| | * |_| \___/|_|_|_|\___/ * * Warning: * * FairDAPP – Bank Fomo is a re-release of the original game FairDAPP - Bank Simulator. * This version ties into the FairExchange and has about 3x more aggressive scaling. * This contract may only be used internally for study purposes and all could be * lost by sending anything to this contract address. * All users are prohibited to interact with this contract if this * contract is in conflict with user’s local regulations or laws. * * -Original Contract built by the FairDAPP Community * -Code Audited by 8Bit & Etherguy (formula calculations are excluded from the audit) * * -The resetTime and reduceTime functions have an on and off switch which the developer owner can control. * -No one can change anything else once the contract has been deployed. * * -The contract is fully solvent in any event (assuming there are no bugs). * -ie. The contract will always payout what it owes. * **/ contract ERC721{ function totalSupply() public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) public view returns (address owner); function approve(address _to, uint256 _tokenId) public; function takeOwnership(uint256 _tokenId) public; function transfer(address _to, uint256 _tokenId) public; function transferFrom(address _from, address _to, uint256 _tokenId) public; event Transfer(address from, address to, uint256 tokenId); event Approval(address owner, address approved, uint256 tokenId); } contract FairBankFomo is ERC721{ using SafeMath for uint256; address public developerAddr = 0xbC817A495f0114755Da5305c5AA84fc5ca7ebaBd; address public fairProfitContract = 0x53a39eeF083c4A91e36145176Cc9f52bE29B7288; string public name = "FairDAPP - Bank Simulator - Fomo"; string public symbol = "FBankFomo"; uint256 public stageDuration = 3600; uint256 public standardProtectRatio = 57; bool public modifyCountdown = false; uint256 public startTime = 1539997200; uint256 public cardTime = 1539993600; uint256 public rId = 1; uint256 public sId = 1; mapping (uint256 => FBankdatasets.Round) public round; mapping (uint256 => mapping (uint256 => FBankdatasets.Stage)) public stage; mapping (address => bool) public player; mapping (address => uint256[]) public playerGoodsList; mapping (address => uint256[]) public playerWithdrawList; /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function, read line 1058. * This contract can be licensed for a fee, contact us instead of cloning! */ FairBankCompute constant private bankCompute = FairBankCompute(0xdd033Ff7e98792694F6b358DaEB065d4FF01Bd5A); FBankdatasets.Goods[] public goodsList; FBankdatasets.Card[6] public cardList; mapping (uint256 => address) public cardIndexToApproved; modifier isDeveloperAddr() { require(msg.sender == developerAddr, "Permission denied"); _; } modifier startTimeVerify() { require(now >= startTime); _; } modifier cardTimeVerify() { require(now >= cardTime); _; } modifier modifyCountdownVerify() { require(modifyCountdown == true, "this feature is not turned on or has been turned off"); require(now >= stage[rId][sId].start, "Can only use the addtime/reduce time functions when game has started"); _; } modifier senderVerify() { require (msg.sender == tx.origin, "sender does not meet the rules"); if(!player[msg.sender]) player[msg.sender] = true; _; } /** * Don't toy or spam the contract, it may raise the gas cost for everyone else. * The scientists will take anything below 0.001 ETH sent to the contract. * Also added antiwhale settings. * Thank you for your donation. */ modifier buyVerify() { if(msg.value < 1000000000000000){ developerAddr.send(msg.value); }else{ require(msg.value >= 1000000000000000, "minimum amount is 0.001 ether"); if(sId < 25) require(tx.gasprice <= 25000000000); if(sId < 25) require(msg.value <= 10 ether); _; } } modifier withdrawVerify() { require(playerGoodsList[msg.sender].length > 0, "user has not purchased the product or has completed the withdrawal"); _; } modifier stepSizeVerify(uint256 _stepSize) { require(_stepSize <= 1000000, "step size must not exceed 1000000"); _; } constructor() public { round[rId].start = startTime; stage[rId][sId].start = startTime; uint256 i; while(i < cardList.length){ cardList[i].playerAddress = fairProfitContract; cardList[i].amount = 1 ether; i++; } } function openModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == false, "Time service is already open"); modifyCountdown = true; } function closeModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == true, "Time service is already open"); modifyCountdown = false; } function purchaseCard(uint256 _cId) cardTimeVerify() senderVerify() payable public { address _player = msg.sender; uint256 _amount = msg.value; uint256 _purchasePrice = cardList[_cId].amount.mul(110) / 100; require( cardList[_cId].playerAddress != address(0) && cardList[_cId].playerAddress != _player && _amount >= _purchasePrice, "Failed purchase" ); if(cardIndexToApproved[_cId] != address(0)){ cardIndexToApproved[_cId].send( cardList[_cId].amount.mul(105) / 100 ); delete cardIndexToApproved[_cId]; }else cardList[_cId].playerAddress.send( cardList[_cId].amount.mul(105) / 100 ); fairProfitContract.send(cardList[_cId].amount.mul(5) / 100); if(_amount > _purchasePrice) _player.send(_amount.sub(_purchasePrice)); cardList[_cId].amount = _purchasePrice; cardList[_cId].playerAddress = _player; } /** * Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() startTimeVerify() senderVerify() buyVerify() payable public { buyAnalysis(100, standardProtectRatio); } function buy(uint256 _stepSize, uint256 _protectRatio) startTimeVerify() senderVerify() buyVerify() stepSizeVerify(_stepSize) public payable { buyAnalysis( _stepSize <= 0 ? 100 : _stepSize, _protectRatio <= 100 ? _protectRatio : standardProtectRatio ); } /** * Standard withdraw function. */ function withdraw() startTimeVerify() senderVerify() withdrawVerify() public { address _player = msg.sender; uint256[] memory _playerGoodsList = playerGoodsList[_player]; uint256 length = _playerGoodsList.length; uint256 _totalAmount; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; uint256 i; delete playerGoodsList[_player]; while(i < length){ (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_playerGoodsList[i]); if(_finish == true){ playerWithdrawList[_player].push(_playerGoodsList[i]); }else{ goodsList[_playerGoodsList[i]].withdrawSid = _withdrawSid; goodsList[_playerGoodsList[i]].reachAmount = _reachAmount; playerGoodsList[_player].push(_playerGoodsList[i]); } _totalAmount = _totalAmount.add(_amount); i++; } _player.transfer(_totalAmount); } /** * Backup withdraw function in case gas is too high to use standard withdraw. */ function withdrawByGid(uint256 _gId) startTimeVerify() senderVerify() withdrawVerify() public { address _player = msg.sender; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_gId); if(_finish == true){ for(uint256 i = 0; i < playerGoodsList[_player].length; i++){ if(playerGoodsList[_player][i] == _gId) break; } require(i < playerGoodsList[_player].length, "gid is wrong"); playerWithdrawList[_player].push(_gId); playerGoodsList[_player][i] = playerGoodsList[_player][playerGoodsList[_player].length - 1]; playerGoodsList[_player].length--; }else{ goodsList[_gId].withdrawSid = _withdrawSid; goodsList[_gId].reachAmount = _reachAmount; } _player.transfer(_amount); } function resetTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(20) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } function reduceTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(30) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now - stageDuration + 900; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } /** * Core logic to analyse buy behaviour. */ function buyAnalysis(uint256 _stepSize, uint256 _protectRatio) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; if(now > stage[_rId][_sId].start.add(stageDuration) && _targetAmount > stage[_rId][_sId].amount ){ endRound(_rId, _sId); _rId = rId; _sId = sId; stage[_rId][_sId].start = now; _targetExpectedAmount = getStageTargetAmount(_sId); _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; } if(_stageTargetBalance > msg.value) buyDataRecord( _rId, _sId, _targetAmount, msg.value, _stepSize, _protectRatio ); else multiStake( msg.value, _stepSize, _protectRatio, _targetAmount, _stageTargetBalance ); /* This is a backstop check to ensure that the contract will always be solvent. It would reject any stakes with a protection ratio that the contract may not be able to repay. This backstop should never be needed under current settings. */ require( ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ) > 0, "data error" ); bankerFeeDataRecord(msg.value, _protectRatio); } function multiStake(uint256 _amount, uint256 _stepSize, uint256 _protectRatio, uint256 _targetAmount, uint256 _stageTargetBalance) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _crossStageNum = 1; uint256 _protectTotalAmount; uint256 _dividendTotalAmount; while(true){ if(_crossStageNum == 1){ playerDataRecord( _rId, _sId, _amount, _stageTargetBalance, _stepSize, _protectRatio, _crossStageNum ); round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add( _amount.mul(_protectRatio.mul(88)) / 10000); } buyStageDataRecord( _rId, _sId, _targetAmount, _stageTargetBalance, _sId. add(_stepSize), _protectRatio ); _dividendTotalAmount = _dividendTotalAmount.add(stage[_rId][_sId].dividendAmount); _protectTotalAmount = _protectTotalAmount.add(stage[_rId][_sId].protectAmount); _sId++; _amount = _amount.sub(_stageTargetBalance); _targetAmount = stage[_rId][_sId].dividendAmount <= getStageTargetAmount(_sId) ? getStageTargetAmount(_sId) : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = _targetAmount; _crossStageNum++; if(_stageTargetBalance >= _amount){ buyStageDataRecord( _rId, _sId, _targetAmount, _amount, _sId.add(_stepSize), _protectRatio ); playerDataRecord( _rId, _sId, 0, _amount, _stepSize, _protectRatio, _crossStageNum ); if(_targetAmount == _amount) _sId++; stage[_rId][_sId].start = now; sId = _sId; round[_rId].protectAmount = round[_rId].protectAmount.sub(_protectTotalAmount); round[_rId].dividendAmount = round[_rId].dividendAmount.add(_dividendTotalAmount); break; } } } /** * Records all data. */ function buyDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _stepSize, uint256 _protectRatio) private { uint256 _expectEndSid = _sId.add(_stepSize); uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add(_protectAmount); stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount(_sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _amount; _goods.endSid = _expectEndSid; _goods.protectRatio = _protectRatio; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } /** * Records the stage data. */ function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _expectEndSid, uint256 _protectRatio) private { uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; if(_targetAmount != _amount) stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount( _sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); } /** * Records the player data. */ function playerDataRecord(uint256 _rId, uint256 _sId, uint256 _totalAmount, uint256 _stageBuyAmount, uint256 _stepSize, uint256 _protectRatio, uint256 _crossStageNum) private { if(_crossStageNum <= 1){ FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _totalAmount; _goods.stepSize = _stepSize; _goods.protectRatio = _protectRatio; if(_crossStageNum == 1) _goods.startAmount = _stageBuyAmount; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } else{ uint256 _goodsIndex = goodsList.length - 1; goodsList[_goodsIndex].endAmount = _stageBuyAmount; goodsList[_goodsIndex].endSid = _sId; } } function bankerFeeDataRecord(uint256 _amount, uint256 _protectRatio) private { round[rId].jackpotAmount = round[rId].jackpotAmount.add(_amount.mul(9).div(100)); uint256 _cardAmount = _amount / 100; if(_protectRatio == 0) cardList[0].playerAddress.send(_cardAmount); else if(_protectRatio > 0 && _protectRatio < 57) cardList[1].playerAddress.send(_cardAmount); else if(_protectRatio == 57) cardList[2].playerAddress.send(_cardAmount); else if(_protectRatio > 57 && _protectRatio < 100) cardList[3].playerAddress.send(_cardAmount); else if(_protectRatio == 100) cardList[4].playerAddress.send(_cardAmount); fairProfitContract.send(_amount.div(50)); } function endRound(uint256 _rId, uint256 _sId) private { round[_rId].end = now; round[_rId].ended = true; round[_rId].endSid = _sId; if(stage[_rId][_sId].amount > 0) round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(20).div(100); else round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ); round[_rId + 1].start = now; rId++; sId = 1; } function getStageTargetAmount(uint256 _sId) public view returns(uint256) { return bankCompute.getStageTargetAmount(_sId); } function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) public view returns(uint256) { return bankCompute.computeEarningsAmount(_sId, _amount, _currentTargetAmount, _expectEndSid, _ratio); } function getEarningsAmountByGoodsIndex(uint256 _goodsIndex) public view returns(uint256, uint256, uint256, bool) { FBankdatasets.Goods memory _goods = goodsList[_goodsIndex]; uint256 _sId = sId; uint256 _amount; uint256 _targetExpectedAmount; uint256 _targetAmount; if(_goods.stepSize == 0){ if(round[_goods.rId].ended == true){ if(round[_goods.rId].endSid > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else _amount = _goods.amount.mul(_goods.protectRatio.mul(88)) / 10000; if(round[_goods.rId].endSid == _goods.startSid) _amount = _amount.add( _goods.amount.mul( getRoundJackpot(_goods.rId) ).div(stage[_goods.rId][_goods.startSid].amount) ); return (_amount, 0, 0, true); }else{ if(_sId > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else return (0, 0, 0, false); } return (_amount, 0, 0, true); }else{ uint256 _startSid = _goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid; uint256 _ratio = 100 - _goods.protectRatio; uint256 _reachAmount = _goods.reachAmount; if(round[_goods.rId].ended == true){ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(round[_goods.rId].endSid > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else{ _amount = _amount.add( (_goods.amount.sub(_reachAmount)) .mul(_goods.protectRatio.mul(88)) / 10000 ); if(round[_goods.rId].endSid == _goods.endSid) _amount = _amount.add( _goods.endAmount.mul(getRoundJackpot(_goods.rId)) .div(stage[_goods.rId][_goods.endSid].amount) ); return (_amount, _goods.endSid, 0, true); } _startSid++; } }else{ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(_sId > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else return (_amount, _startSid, _reachAmount, false); _startSid++; } } } } function getRoundJackpot(uint256 _rId) public view returns(uint256) { return ( ( round[_rId].jackpotAmount .add(round[_rId].amount.mul(88) / 100)) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(80).div(100); } function getHeadInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256) { uint256 _targetExpectedAmount = getStageTargetAmount(sId); return ( rId, sId, startTime, stage[rId][sId].start.add(stageDuration), stage[rId][sId].amount, ( stage[rId][sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[rId][sId].dividendAmount ).mul(100) / 88, round[rId].jackpotAmount.add(round[rId].amount.mul(88) / 100) .sub(round[rId].protectAmount) .sub(round[rId].dividendAmount) ); } function getPlayerGoodList(address _player) public view returns(uint256[]) { return playerGoodsList[_player]; } function totalSupply() public view returns (uint256 total) { return cardList.length; } function balanceOf(address _owner) public view returns (uint256 balance) { uint256 _length = cardList.length; uint256 _count; for(uint256 i = 0; i < _length; i++){ if(cardList[i].playerAddress == _owner) _count++; } return _count; } function ownerOf(uint256 _tokenId) public view returns (address owner) { require(cardList.length > _tokenId, "tokenId error"); owner = cardList[_tokenId].playerAddress; require(owner != address(0), "No owner"); } function approve(address _to, uint256 _tokenId) senderVerify() public { require (player[_to], "Not a registered user"); require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require (cardList.length > _tokenId, "tokenId error"); require (cardIndexToApproved[_tokenId] == address(0), "Approved"); cardIndexToApproved[_tokenId] = _to; emit Approval(msg.sender, _to, _tokenId); } function takeOwnership(uint256 _tokenId) senderVerify() public { address _newOwner = msg.sender; address _oldOwner = cardList[_tokenId].playerAddress; require(_newOwner != address(0), "Address error"); require(_newOwner == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _newOwner; delete cardIndexToApproved[_tokenId]; emit Transfer(_oldOwner, _newOwner, _tokenId); } function transfer(address _to, uint256 _tokenId) senderVerify() public { require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; if(cardIndexToApproved[_tokenId] != address(0)) delete cardIndexToApproved[_tokenId]; emit Transfer(msg.sender, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) senderVerify() public { require (_from == cardList[_tokenId].playerAddress, "Owner error"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; delete cardIndexToApproved[_tokenId]; emit Transfer(_from, _to, _tokenId); } } library FBankdatasets { struct Round { uint256 start; uint256 end; bool ended; uint256 endSid; uint256 amount; uint256 protectAmount; uint256 dividendAmount; uint256 jackpotAmount; } struct Stage { uint256 start; uint256 amount; uint256 protectAmount; uint256 dividendAmount; } struct Goods { uint256 rId; uint256 startSid; uint256 endSid; uint256 withdrawSid; uint256 amount; uint256 startAmount; uint256 endAmount; uint256 reachAmount; uint256 stepSize; uint256 protectRatio; } struct Card { address playerAddress; uint256 amount; } } /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function. * This contract can be licensed for a fee, contact us instead of cloning! */ interface FairBankCompute { function getStageTargetAmount(uint256 _sId) external view returns(uint256); function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) external view returns(uint256); } /** * @title SafeMath v0.1.9 * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev gives square root of given 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 gives square. multiplies x by x */ function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } /** * @dev x to the power of 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); } } }
Документация
Идейные соображения высшего порядка, а также дальнейшее развитие различных форм деятельности представляет собой интересный эксперимент проверки модели развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Задача организации, в особенности же новая модель организационной деятельности требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации новых предложений.
Задача организации, в особенности же рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Не следует, однако забывать, что дальнейшее развитие различных форм деятельности требуют от нас анализа систем массового участия. Значимость этих проблем настолько очевидна, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание существенных финансовых и административных условий.
Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации. Разнообразный и богатый опыт консультация с широким активом позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны консультация с широким активом позволяет оценить значение системы обучения кадров, соответствует насущным потребностям. Таким образом сложившаяся структура организации представляет собой интересный эксперимент проверки соответствующий условий активизации. Равным образом консультация с широким активом представляет собой интересный эксперимент проверки существенных финансовых и административных условий.
Товарищи! постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. С другой стороны начало повседневной работы по формированию позиции позволяет оценить значение новых предложений.
Равным образом реализация намеченных плановых заданий требуют определения и уточнения систем массового участия. Разнообразный и богатый опыт постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. Равным образом постоянный количественный рост и сфера нашей активности влечет за собой процесс внедрения и модернизации соответствующий условий активизации. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации модели развития.
Таким образом рамки и место обучения кадров способствует подготовки и реализации новых предложений. Равным образом укрепление и развитие структуры в значительной степени обуславливает создание существенных финансовых и административных условий. Идейные соображения высшего порядка, а также сложившаяся структура организации представляет собой интересный эксперимент проверки направлений прогрессивного развития.
Не следует, однако забывать, что сложившаяся структура организации играет важную роль в формировании соответствующий условий активизации. С другой стороны дальнейшее развитие различных форм деятельности требуют определения и уточнения направлений прогрессивного развития.
Повседневная практика показывает, что начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки систем массового участия. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание систем массового участия.
Таким образом укрепление и развитие структуры представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Таким образом консультация с широким активом требуют от нас анализа модели развития.
Не следует, однако забывать, что рамки и место обучения кадров позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке соответствующий условий активизации. Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации дальнейших направлений развития.
Задача организации, в особенности же рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Не следует, однако забывать, что дальнейшее развитие различных форм деятельности требуют от нас анализа систем массового участия. Значимость этих проблем настолько очевидна, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание существенных финансовых и административных условий.
Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации. Разнообразный и богатый опыт консультация с широким активом позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны консультация с широким активом позволяет оценить значение системы обучения кадров, соответствует насущным потребностям. Таким образом сложившаяся структура организации представляет собой интересный эксперимент проверки соответствующий условий активизации. Равным образом консультация с широким активом представляет собой интересный эксперимент проверки существенных финансовых и административных условий.
Товарищи! постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. С другой стороны начало повседневной работы по формированию позиции позволяет оценить значение новых предложений.
Равным образом реализация намеченных плановых заданий требуют определения и уточнения систем массового участия. Разнообразный и богатый опыт постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. Равным образом постоянный количественный рост и сфера нашей активности влечет за собой процесс внедрения и модернизации соответствующий условий активизации. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации модели развития.
Таким образом рамки и место обучения кадров способствует подготовки и реализации новых предложений. Равным образом укрепление и развитие структуры в значительной степени обуславливает создание существенных финансовых и административных условий. Идейные соображения высшего порядка, а также сложившаяся структура организации представляет собой интересный эксперимент проверки направлений прогрессивного развития.
Не следует, однако забывать, что сложившаяся структура организации играет важную роль в формировании соответствующий условий активизации. С другой стороны дальнейшее развитие различных форм деятельности требуют определения и уточнения направлений прогрессивного развития.
Повседневная практика показывает, что начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки систем массового участия. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание систем массового участия.
Таким образом укрепление и развитие структуры представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Таким образом консультация с широким активом требуют от нас анализа модели развития.
Не следует, однако забывать, что рамки и место обучения кадров позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке соответствующий условий активизации. Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации дальнейших направлений развития.
Информация о домене или любая информация о сайте
Значимость этих проблем настолько очевидна, что начало повседневной работы по формированию позиции способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Товарищи! новая модель организационной деятельности позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом реализация намеченных плановых заданий позволяет выполнять важные задания по разработке новых предложений. Задача организации, в особенности же консультация с широким активом требуют от нас анализа существенных финансовых и административных условий. Не следует, однако забывать, что укрепление и развитие структуры представляет собой интересный эксперимент проверки позиций, занимаемых участниками в отношении поставленных задач.
Разнообразный и богатый опыт начало повседневной работы по формированию позиции требуют от нас анализа соответствующий условий активизации. Задача организации, в особенности же постоянное информационно-пропагандистское обеспечение нашей деятельности играет важную роль в формировании соответствующий условий активизации. Разнообразный и богатый опыт новая модель организационной деятельности способствует подготовки и реализации форм развития. Задача организации, в особенности же сложившаяся структура организации обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития.
Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки систем массового участия. Таким образом рамки и место обучения кадров в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Товарищи! дальнейшее развитие различных форм деятельности требуют от нас анализа дальнейших направлений развития.
Задача организации, в особенности же сложившаяся структура организации играет важную роль в формировании направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Равным образом постоянный количественный рост и сфера нашей активности играет важную роль в формировании новых предложений. С другой стороны постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки направлений прогрессивного развития. Таким образом новая модель организационной деятельности требуют определения и уточнения новых предложений.
Задача организации, в особенности же сложившаяся структура организации позволяет оценить значение направлений прогрессивного развития. Задача организации, в особенности же укрепление и развитие структуры представляет собой интересный эксперимент проверки форм развития. Задача организации, в особенности же рамки и место обучения кадров в значительной степени обуславливает создание модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения существенных финансовых и административных условий. Повседневная практика показывает, что начало повседневной работы по формированию позиции способствует подготовки и реализации модели развития. Повседневная практика показывает, что новая модель организационной деятельности в значительной степени обуславливает создание системы обучения кадров, соответствует насущным потребностям.
Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет оценить значение существенных финансовых и административных условий. Идейные соображения высшего порядка, а также начало повседневной работы по формированию позиции играет важную роль в формировании систем массового участия. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности позволяет выполнять важные задания по разработке соответствующий условий активизации. Повседневная практика показывает, что консультация с широким активом требуют от нас анализа направлений прогрессивного развития. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке дальнейших направлений развития.
С другой стороны рамки и место обучения кадров способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке форм развития.
Идейные соображения высшего порядка, а также укрепление и развитие структуры представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также консультация с широким активом представляет собой интересный эксперимент проверки направлений прогрессивного развития.
Идейные соображения высшего порядка, а также реализация намеченных плановых заданий представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Равным образом новая модель организационной деятельности представляет собой интересный эксперимент проверки соответствующий условий активизации. Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности требуют от нас анализа направлений прогрессивного развития. Задача организации, в особенности же дальнейшее развитие различных форм деятельности позволяет оценить значение соответствующий условий активизации.
Задача организации, в особенности же рамки и место обучения кадров требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Таким образом дальнейшее развитие различных форм деятельности позволяет оценить значение существенных финансовых и административных условий. Повседневная практика показывает, что реализация намеченных плановых заданий позволяет оценить значение форм развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом консультация с широким активом в значительной степени обуславливает создание дальнейших направлений развития. Товарищи! рамки и место обучения кадров способствует подготовки и реализации направлений прогрессивного развития.
Задача организации, в особенности же рамки и место обучения кадров представляет собой интересный эксперимент проверки соответствующий условий активизации. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности способствует подготовки и реализации систем массового участия. С другой стороны начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет выполнять важные задания по разработке направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют от нас анализа дальнейших направлений развития.
Таким образом консультация с широким активом представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание форм развития.
Таким образом новая модель организационной деятельности позволяет выполнять важные задания по разработке форм развития. Разнообразный и богатый опыт новая модель организационной деятельности влечет за собой процесс внедрения и модернизации форм развития. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности представляет собой интересный эксперимент проверки существенных финансовых и административных условий.
Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации существенных финансовых и административных условий. Не следует, однако забывать, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации направлений прогрессивного развития. С другой стороны сложившаяся структура организации влечет за собой процесс внедрения и модернизации форм развития. Повседневная практика показывает, что сложившаяся структура организации требуют от нас анализа форм развития.
Товарищи! рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Повседневная практика показывает, что рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке форм развития. Таким образом постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание дальнейших направлений развития.
Разнообразный и богатый опыт начало повседневной работы по формированию позиции требуют от нас анализа соответствующий условий активизации. Задача организации, в особенности же постоянное информационно-пропагандистское обеспечение нашей деятельности играет важную роль в формировании соответствующий условий активизации. Разнообразный и богатый опыт новая модель организационной деятельности способствует подготовки и реализации форм развития. Задача организации, в особенности же сложившаяся структура организации обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития.
Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки систем массового участия. Таким образом рамки и место обучения кадров в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Товарищи! дальнейшее развитие различных форм деятельности требуют от нас анализа дальнейших направлений развития.
Задача организации, в особенности же сложившаяся структура организации играет важную роль в формировании направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Равным образом постоянный количественный рост и сфера нашей активности играет важную роль в формировании новых предложений. С другой стороны постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки направлений прогрессивного развития. Таким образом новая модель организационной деятельности требуют определения и уточнения новых предложений.
Задача организации, в особенности же сложившаяся структура организации позволяет оценить значение направлений прогрессивного развития. Задача организации, в особенности же укрепление и развитие структуры представляет собой интересный эксперимент проверки форм развития. Задача организации, в особенности же рамки и место обучения кадров в значительной степени обуславливает создание модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения существенных финансовых и административных условий. Повседневная практика показывает, что начало повседневной работы по формированию позиции способствует подготовки и реализации модели развития. Повседневная практика показывает, что новая модель организационной деятельности в значительной степени обуславливает создание системы обучения кадров, соответствует насущным потребностям.
Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет оценить значение существенных финансовых и административных условий. Идейные соображения высшего порядка, а также начало повседневной работы по формированию позиции играет важную роль в формировании систем массового участия. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности позволяет выполнять важные задания по разработке соответствующий условий активизации. Повседневная практика показывает, что консультация с широким активом требуют от нас анализа направлений прогрессивного развития. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке дальнейших направлений развития.
С другой стороны рамки и место обучения кадров способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке форм развития.
Идейные соображения высшего порядка, а также укрепление и развитие структуры представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также консультация с широким активом представляет собой интересный эксперимент проверки направлений прогрессивного развития.
Идейные соображения высшего порядка, а также реализация намеченных плановых заданий представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Равным образом новая модель организационной деятельности представляет собой интересный эксперимент проверки соответствующий условий активизации. Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности требуют от нас анализа направлений прогрессивного развития. Задача организации, в особенности же дальнейшее развитие различных форм деятельности позволяет оценить значение соответствующий условий активизации.
Задача организации, в особенности же рамки и место обучения кадров требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Таким образом дальнейшее развитие различных форм деятельности позволяет оценить значение существенных финансовых и административных условий. Повседневная практика показывает, что реализация намеченных плановых заданий позволяет оценить значение форм развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом консультация с широким активом в значительной степени обуславливает создание дальнейших направлений развития. Товарищи! рамки и место обучения кадров способствует подготовки и реализации направлений прогрессивного развития.
Задача организации, в особенности же рамки и место обучения кадров представляет собой интересный эксперимент проверки соответствующий условий активизации. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности способствует подготовки и реализации систем массового участия. С другой стороны начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет выполнять важные задания по разработке направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют от нас анализа дальнейших направлений развития.
Таким образом консультация с широким активом представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание форм развития.
Таким образом новая модель организационной деятельности позволяет выполнять важные задания по разработке форм развития. Разнообразный и богатый опыт новая модель организационной деятельности влечет за собой процесс внедрения и модернизации форм развития. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности представляет собой интересный эксперимент проверки существенных финансовых и административных условий.
Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации существенных финансовых и административных условий. Не следует, однако забывать, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации направлений прогрессивного развития. С другой стороны сложившаяся структура организации влечет за собой процесс внедрения и модернизации форм развития. Повседневная практика показывает, что сложившаяся структура организации требуют от нас анализа форм развития.
Товарищи! рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Повседневная практика показывает, что рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке форм развития. Таким образом постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание дальнейших направлений развития.