tx · 4EbzTKshDBTuVWUL49Cv8rcPoy6tBZuoz1bkHrcUMgr5

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02600000 Waves

2024.11.25 15:23 [3386937] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "4EbzTKshDBTuVWUL49Cv8rcPoy6tBZuoz1bkHrcUMgr5", "fee": 2600000, "feeAssetId": null, "timestamp": 1732537442927, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "3BLnsL5KdRjCBSKfqHZnypQyxnMG3g4kueMbq3tfZm7HAXuu1Kevfz9AmAWPSy2Q6ShDKBxfioNHNqhFHnx6D18" ], "script": "base64:BgJHCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEBEgCRAQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUtTX0FMTE9XX05GVF9EUkFXBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBwMJAAACAQFUBQckbWF0Y2gwBgkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4ABFJZHhDZmdTdGFraW5nRGFwcAABAA9JZHhDZmdBY3Jlc0RhcHAACAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyARJrZXlVc2VyV2Vla1RpY2tldHMCBGFkZHIEd2VlawkArAICCQCsAgIJAKwCAgIQdXNlcldlZWtUaWNrZXRzXwUEYWRkcgIBXwkApAMBBQR3ZWVrARNrZXlUb3RhbFdlZWtUaWNrZXRzAQR3ZWVrCQCsAgICEXRvdGFsV2Vla1RpY2tldHNfCQCkAwEFBHdlZWsBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEEd2VlawkArAICAhZ0b3RhbFdlZWtQYXJ0aWNpcGFudHNfCQCkAwEFBHdlZWsBDmtleU51bU5GVDJEcmF3AQR3ZWVrCQCsAgICDG51bU5GVDJEcmF3XwkApAMBBQR3ZWVrAQ5rZXlOdW1ORlREcmF3bgEEd2VlawkArAICAgxudW1ORlREcmF3bl8JAKQDAQUEd2VlawEOa2V5V2Vla1dpbm5lcnMBBHdlZWsJAKwCAgIMd2Vla1dpbm5lcnNfCQCkAwEFBHdlZWsBCndpbm5pbmdCZXQBA2RheQkAagIJALEJAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAaAIFA2RheQUKREFZX0JMT0NLUwN2cmYABAEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAPd2xnQmFzZUFtb3VudFhwAIDQ28P0AgEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyAAV4cFdsZwCQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwACE1JTExJT042AICA6YOx3hYAC1BMQVlFUlNIQVJFAIC1GAAJREFZTUlMTElTAIC4mSkAC3RlYW1BZGRyS2V5Agh0ZWFtQWRkcgAPbGFzdFRlYW1UaW1lS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQARdGVhbUFtb3VudExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABVsYXN0QWN0aXZpdGllc1RpbWVLZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzABBhY3RBbW91bnRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQRhZGRyCQCsAgICEWxhc3RXbGdMaW1pdFVzZXJfBQRhZGRyAA93bGdJc3N1ZVRpbWVLZXkCDXdsZ19pc3N1ZVRpbWUAEndsZ0lzc3VlZEFtb3VudEtleQIQd2xnX2lzc3VlZEFtb3VudAEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIWd2xnU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgARd2xnU3Rha2VkVG90YWxLZXkCFHdsZ1N0YWtlZEFtb3VudFRvdGFsARZrZXlXbGdTdGFrZWRUaW1lQnlVc2VyAQRhZGRyCQCsAgICFHdsZ1N0YWtlZFRpbWVCeVVzZXJfBQRhZGRyAANNNl8AwIQ9AANNOF8AgMLXLwAKVEVBTV9TSEFSRQDAmgwADkFDVElWSVRZX1NIQVJFAKCNBgAMUExBWUVSX1NIQVJFAIC1GAALWUVBUl9NSUxMSVMAgIbrx3UABkRBWV9NUwCAuJkpAAdJU1NVRTEwAICU69wDAA9QTEFZRVJTMTBfU0hBUkUAgOowABFNQVJLRVRJTkcxMF9TSEFSRQCgjQYADFRFQU0xMF9TSEFSRQCgjQYAEU5FV19TVEFLSU5HX1NUQVJUAIDzuMKxMgAQbWFya2V0aW5nQWRkcktleQINbWFya2V0aW5nQWRkcgAKdGVhbUFkcktleQIIdGVhbUFkZHIADmxhc3RUZWFtVGltS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQAOdGVhbUFtdExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABRsYXN0QWN0aXZpdGllc1RpbUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMADWFjdEFtdExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABFzdGFrZXJzQW10TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBDWRpc3RyQnlQZXJpb2QCDGlzc3VlZEFtb3VudAZwZXJpb2QJAGsDBQxpc3N1ZWRBbW91bnQJAGgCBQxQTEFZRVJfU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUDTTZfABF3bGdJc3N1ZTEwVGltZUtleQIPd2xnX2lzc3VlMTBUaW1lAA53bGdJc3N1ZVRpbUtleQINd2xnX2lzc3VlVGltZQAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEmFjcmVzU3Rha2RUb3RhbEtleQIWYWNyZXNTdGFrZWRBbW91bnRUb3RhbAAUdG90YWxGYXJtaW5nUG93ZXJLZXkCEXRvdGFsRmFybWluZ1Bvd2VyAAlkYXBwMlJlc3QAAAAMZGFwcDJTdGFraW5nAAEACGRhcHAyV2xnAAIAC2RhcHAyUHV6emxlAAMAD2RhcHAySW52ZXN0RnVuZAAEABRJZHhEdHgxUGVyY0dlbVdpbm5lcgABABVERUZBVUxUX1dFRUtMWV9QUklaRVMABQANQUNSRVNfRk9SX0JFVACAwtcvARBrZXlVc2VyRnVsbEJvbnVzAQRhZGRyCQCsAgICDnVzZXJGdWxsQm9udXNfBQRhZGRyAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgVhY3JlcwZib251czYECm5vdEJvbnVzZWQJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUFYWNyZXMJAJQKAgkAawMFCm5vdEJvbnVzZWQJAGQCBQNNNl8FBmJvbnVzNgUDTTZfBQpub3RCb251c2VkARBnZXRGYXJtaW5nUG93ZXJzAhJ1c2VyQWRkclN0ck9yRW1wdHkOYWNyZXMyQ29udHJhY3QEB3RvdGFsRlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAECXVzZXJBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBRJ1c2VyQWRkclN0ck9yRW1wdHkAAAQIJHQwNzkxNDMJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQl1c2VyQWNyZXMFCXVzZXJCb251cwQNdXNlckZQYm9udXNlZAgFCCR0MDc5MTQzAl8xBBB1c2VyRlBub3RCb251c2VkCAUIJHQwNzkxNDMCXzIJAMwIAgUHdG90YWxGUAkAzAgCBQ11c2VyRlBib251c2VkCQDMCAIFEHVzZXJGUG5vdEJvbnVzZWQJAMwIAgUJdXNlckJvbnVzBQNuaWwACmlkeFRvdGFsRlAAAAAQaWR4VXNlckZQYm9udXNlZAABAAtpeFdsZ0Ftb3VudAAAAAhpeFdsZ1dsZwABAAppeFdsZ1ByaWNlAAIADml4V2xnSXNzdWVUaW1lAAgAD2l4V2xnVGVhbUFtTGVmdAALABNpeFdsZ1RlYW1BbUF2YWlsTm93AAwADml4V2xnQWN0QW1MZWZ0AA8AEml4V2xnQWN0QW1BdmFpbE5vdwAQABBpeFdsZ0FtTGVmdFRvdGFsABMAE2l4V2xnVXNlckFtQXZhaWxOb3cAFwAQaXhXbGdFZmZVc2VyVGltZQAYABJpeFdsZ0lzc3VlMTBBbW91bnQAGQAbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50ABoAFml4V2xnVGVhbUlzc3VlMTBBbW91bnQAGwAPaXhXbGdVc2VyMTBwYXJ0ABwAEGl4V2xnSXNzdWUxMFRpbWUAHQEMZ2V0V2xnU3RhdHMyBAt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQZ1c2R0SWQEBndsZ1VzZAkAZQIJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQZ1c2R0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQJcHV6emxlVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQtkYXBwMlB1enpsZQUGdXNkdElkBAlhY3JlczJVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwUGdXNkdElkBBFpbnZlc3RGbmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFD2RhcHAySW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRFpbnZlc3RGbmRDb250cmFjdAUGdXNkdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEWludmVzdEZuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABA10b3RhbEZ1bmRzVXNkCQBkAgkAZAIFCWFjcmVzMlVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnAgt3bGdfYXNzZXRJZAITTm90IGluaXRpYWxpemVkIHlldAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ53bGdJc3N1ZVRpbUtleQIPTm90IGluaXRpYWxpemVkBAZ3bGdXbGcJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQV3bGdJZAQJdGVhbVRvdGFsCQBrAwUMaXNzdWVkQW1vdW50BQpURUFNX1NIQVJFBQNNNl8EDnRlYW1BbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUOdGVhbUFtdExlZnRLZXkFCXRlYW1Ub3RhbAQMbGFzdFRlYW1UaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUObGFzdFRlYW1UaW1LZXkFCWlzc3VlVGltZQQIdGVhbUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAJ0IAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQp0ZWFtQWRyS2V5BBZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCXRlYW1Ub3RhbAkAZQIFA25vdwUMbGFzdFRlYW1UaW1lCQBoAgADBQtZRUFSX01JTExJUwkAzAgCBQ50ZWFtQW1vdW50TGVmdAUDbmlsBAp0ZWFtV2xnb2xkCQDwBwIFCHRlYW1BZGRyBQV3bGdJZAQIYWN0VG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFDkFDVElWSVRZX1NIQVJFBQNNNl8EDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ1hY3RBbXRMZWZ0S2V5BQhhY3RUb3RhbAQSbGFzdEFjdGl2aXRpZXNUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUUbGFzdEFjdGl2aXRpZXNUaW1LZXkFCWlzc3VlVGltZQQVYWN0QW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCGFjdFRvdGFsCQBlAgUDbm93BRJsYXN0QWN0aXZpdGllc1RpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDWFjdEFtb3VudExlZnQFA25pbAQJYWN0V2xnb2xkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnCQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFC3VzZXJBZGRyT3B0BQlpc3N1ZVRpbWUEDmxhc3RVc2VyUGVyaW9kCQBpAgkAZQIFDGxhc3RVc2VyVGltZQUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQtZRUFSX01JTExJUwUDbmlsBAljdXJQZXJpb2QJAJcDAQkAzAgCCQBpAgkAZQIFA25vdwUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwkAzAgCAAIFA25pbAQDZWZmCQEQZ2V0RmFybWluZ1Bvd2VycwIFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBBVjdXJQZXJpb2REaXN0cmlidXRpb24JAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50BQljdXJQZXJpb2QEDXByZXZQZXJpb2RFbmQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kBBFwcmV2UHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTCQBlAgUJY3VyUGVyaW9kAAEEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQNdXNlckF2YWlsYWJsZQMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kBQJhMAMJAAACBQ5sYXN0VXNlclBlcmlvZAkAZQIFCWN1clBlcmlvZAABBAJhMQkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGUCBQ1wcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTCQBkAgUCYTEFAmEwBAJhMgkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAIJAGUCBRFwcmV2UHJldlBlcmlvZEVuZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQCYTEJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGQCCQBkAgUCYTIFAmExBQJhMAQPYW1vdW50TGVmdFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwURc3Rha2Vyc0FtdExlZnRLZXkAAAQKdXNlckFtb3VudAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDBQ11c2VyQXZhaWxhYmxlCQCRAwIFA2VmZgUQaWR4VXNlckZQYm9udXNlZAkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAQPbGFzdElzc3VlMTBUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwURd2xnSXNzdWUxMFRpbWVLZXkFEU5FV19TVEFLSU5HX1NUQVJUBA1pc3N1ZTEwQW1vdW50CQBrAwUHSVNTVUUxMAkAlgMBCQDMCAIJAGUCBQNub3cFD2xhc3RJc3N1ZTEwVGltZQkAzAgCAAAFA25pbAUGREFZX01TBBZtYXJrZXRpbmdJc3N1ZTEwQW1vdW50CQBrAwUNaXNzdWUxMEFtb3VudAURTUFSS0VUSU5HMTBfU0hBUkUFA002XwQRdGVhbUlzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BQxURUFNMTBfU0hBUkUFA002XwQOdXNlcjEwSW50ZXJ2YWwJAJYDAQkAzAgCCQBlAgUDbm93CQCWAwEJAMwIAgURTkVXX1NUQUtJTkdfU1RBUlQJAMwIAgUMbGFzdFVzZXJUaW1lBQNuaWwJAMwIAgAABQNuaWwECnVzZXIxMHBhcnQDCQECIT0CCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAACQBrAwkAawMJAGsDBQdJU1NVRTEwBQ51c2VyMTBJbnRlcnZhbAUGREFZX01TCQCRAwIFA2VmZgUQaWR4VXNlckZQYm9udXNlZAkAkQMCBQNlZmYFCmlkeFRvdGFsRlAFD1BMQVlFUlMxMF9TSEFSRQUDTTZfAAAEDm5ld0lzc3VlMTBUaW1lCQCWAwEJAMwIAgURTkVXX1NUQUtJTkdfU1RBUlQJAMwIAgUDbm93BQNuaWwEEGFjcmVzU3Rha2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwUSYWNyZXNTdGFrZFRvdGFsS2V5AAAJAMwIAgUMaXNzdWVkQW1vdW50CQDMCAIFBndsZ1dsZwkAzAgCCQBrAwUNdG90YWxGdW5kc1VzZAUDTThfBQxpc3N1ZWRBbW91bnQJAMwIAgUNdG90YWxGdW5kc1VzZAkAzAgCBQdyZXN0VXNkCQDMCAIFCWFjcmVzMlVzZAkAzAgCBQZ3bGdVc2QJAMwIAgUJcHV6emxlVXNkCQDMCAIFCWlzc3VlVGltZQkAzAgCBQxsYXN0VGVhbVRpbWUJAMwIAgUJdGVhbVRvdGFsCQDMCAIFDnRlYW1BbW91bnRMZWZ0CQDMCAIFFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAMwIAgUKdGVhbVdsZ29sZAkAzAgCBQhhY3RUb3RhbAkAzAgCBQ1hY3RBbW91bnRMZWZ0CQDMCAIFFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQlhY3RXbGdvbGQJAMwIAgUJY3VyUGVyaW9kCQDMCAIFD2Ftb3VudExlZnRUb3RhbAkAzAgCBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgUMbGFzdFVzZXJUaW1lCQDMCAIFD2ludmVzdEZ1bmRUb3RhbAkAzAgCBQp1c2VyQW1vdW50CQDMCAIFCm5vd0xpbWl0ZWQJAMwIAgUNaXNzdWUxMEFtb3VudAkAzAgCBRZtYXJrZXRpbmdJc3N1ZTEwQW1vdW50CQDMCAIFEXRlYW1Jc3N1ZTEwQW1vdW50CQDMCAIFCnVzZXIxMHBhcnQJAMwIAgUObmV3SXNzdWUxMFRpbWUJAMwIAgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAJAMwIAgUQYWNyZXNTdGFrZWRUb3RhbAUDbmlsAA1wcm9maXRBZGRyS2V5Agpwcm9maXRBZGRyABlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AhZzdGFrZXJzQW1vdW50UGFpZFRvdGFsARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBGFkZHIJAKwCAgIWc3Rha2Vyc0Ftb3VudFBhaWRVc2VyXwUEYWRkcgEHcHJvbG9nMgAJAQVhc0ludAEJAP0HBAUOYWNyZXMyQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsARJnZXRTd2FwTGltaXRXbGdvbGQBBGFkZHIECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUEYWRkcgAABAxkZWZhdWx0TGltaXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIAAAQNbGFzdExpbWl0TGVmdAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEaa2V5TGFzdFdsZ1RyYWRlTGltaXRCeVVzZXIBBQRhZGRyBQxkZWZhdWx0TGltaXQEDGN1cnJlbnRMaW1pdAkAZAIFDWxhc3RMaW1pdExlZnQJAGsDBQxkZWZhdWx0TGltaXQJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIbGFzdFRpbWUFCkRBWV9NSUxMSVMJAJcDAQkAzAgCBQxjdXJyZW50TGltaXQJAMwIAgUMZGVmYXVsdExpbWl0BQNuaWwBDmNsYWltSW50ZXJuYWwyAQRhZGRyBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQFBGFkZHIJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEC3VzZXJUaW1lS2V5CQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFBGFkZHIEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQt1c2VyVGltZUtleQAABAt1c2VyRWZmVGltZQkAkQMCBQhjdXJTdGF0cwUQaXhXbGdFZmZVc2VyVGltZQMJAAACBQxsYXN0VXNlclRpbWUFC3VzZXJFZmZUaW1lCQCUCgIFA25pbAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJAJEDAgUIY3VyU3RhdHMFDml4V2xnSXNzdWVUaW1lBA50ZWFtQW1vdW50TGVmdAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdUZWFtQW1MZWZ0BAp0ZWFtQW1vdW50CQBkAgkAkQMCBQhjdXJTdGF0cwUTaXhXbGdUZWFtQW1BdmFpbE5vdwkAkQMCBQhjdXJTdGF0cwUWaXhXbGdUZWFtSXNzdWUxMEFtb3VudAQMdGVhbVRyYW5zZmVyAwkAZgIFCnRlYW1BbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFC3RlYW1BZGRyS2V5BQp0ZWFtQW1vdW50BQp3bGdBc3NldElkBQNuaWwFA25pbAQNYWN0QW1vdW50TGVmdAkAkQMCBQhjdXJTdGF0cwUOaXhXbGdBY3RBbUxlZnQECWFjdEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdBY3RBbUF2YWlsTm93BAthY3RUcmFuc2ZlcgMJAGYCBQlhY3RBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFCWFjdEFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwED21hcmtldGluZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwUbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50BBFtYXJrZXRpbmdUcmFuc2ZlcgMJAGYCBQ9tYXJrZXRpbmdBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFEG1hcmtldGluZ0FkZHJLZXkFD21hcmtldGluZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwECnVzZXJBbW91bnQJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVXNlckFtQXZhaWxOb3cEB3VzZXJLZXkJARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBQRhZGRyBAl1c2VyVG90YWwJAGQCBQp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBQ9peFdsZ1VzZXIxMHBhcnQEDmlzc3VlZDEwQW1vdW50CQCRAwIFCGN1clN0YXRzBRJpeFdsZ0lzc3VlMTBBbW91bnQJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFDmlzc3VlZDEwQW1vdW50BgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBkAgkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQFDmlzc3VlZDEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF3bGdJc3N1ZTEwVGltZUtleQkAkQMCBQhjdXJTdGF0cwUQaXhXbGdJc3N1ZTEwVGltZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdXNlcktleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdXNlcktleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AAAFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBlAgkAkQMCBQhjdXJTdGF0cwUQaXhXbGdBbUxlZnRUb3RhbAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURdGVhbUFtb3VudExlZnRLZXkJAGQCCQBlAgUOdGVhbUFtb3VudExlZnQFCnRlYW1BbW91bnQJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2xhc3RUZWFtVGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBhY3RBbW91bnRMZWZ0S2V5CQBlAgUNYWN0QW1vdW50TGVmdAUJYWN0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0QWN0aXZpdGllc1RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgULdXNlclRpbWVLZXkFC3VzZXJFZmZUaW1lBQNuaWwFDHRlYW1UcmFuc2ZlcgULYWN0VHJhbnNmZXIFEW1hcmtldGluZ1RyYW5zZmVyBQl1c2VyVG90YWwBDnRha2VYcEludGVybmFsAgRhZGRyBWRlbHRhBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAd0aW1lS2V5CQEWa2V5V2xnU3Rha2VkVGltZUJ5VXNlcgEFBGFkZHIECWFtb3VudEtleQkBGGtleVdsZ1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFB3RpbWVLZXkAAAQHb2xkVXNlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlhbW91bnRLZXkAAAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURd2xnU3Rha2VkVG90YWxLZXkAAAQCeHAJAGsDCQBrAwUFeHBXbGcFB29sZFVzZXIFD3dsZ0Jhc2VBbW91bnRYcAkAZQIFCGxhc3RUaW1lBQNub3cFCURBWU1JTExJUwkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFCWFtb3VudEtleQkAZAIFB29sZFVzZXIFBWRlbHRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF3bGdTdGFrZWRUb3RhbEtleQkAZAIFCG9sZFRvdGFsBQVkZWx0YQUDbmlsBQJ4cAUHb2xkVXNlcgERb3BlbkNoZXN0SW50ZXJuYWwBBGFkZHIEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAhkcmF3V2VlawkAZQIFBHdlZWsAAQQJbnVtUHJpemVzCQELdmFsdWVPckVsc2UCCQCfCAEJAQ5rZXlOdW1ORlQyRHJhdwEFCGRyYXdXZWVrBRVERUZBVUxUX1dFRUtMWV9QUklaRVMEC3ByaXplc0RyYXduCQELdmFsdWVPckVsc2UCCQCfCAEJAQ5rZXlOdW1ORlREcmF3bgEFCGRyYXdXZWVrAAAEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAAAwkAZwIAAAULdXNlclRpY2tldHMJAJQKAgUDbmlsBQR1bml0BAt3ZWVrVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFCGRyYXdXZWVrAAADCQBnAgAABQt3ZWVrVGlja2V0cwkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawUDbmlsBQR1bml0BAdlbnRyb3B5CQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBCQBoAgUEd2VlawULV0VFS19CTE9DS1MDdnJmBARzYWx0CQDZBAEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQRhZGRyAgo0Ml9ERUZBVUxUAgFfAAEEBnJhbmRvbQkBD2dldFJhbmRvbU51bWJlcgMFC3dlZWtUaWNrZXRzBQRzYWx0BQdlbnRyb3B5AwkAZgIJAGgCBQt1c2VyVGlja2V0cwUJbnVtUHJpemVzBQZyYW5kb20EC2lzc3VlUmVzdWx0CQD8BwQFDmFjcmVzMkNvbnRyYWN0Aghpc3N1ZU5GVAkAzAgCBQRhZGRyCQDMCAIFFElkeER0eDFQZXJjR2VtV2lubmVyBQNuaWwFA25pbAQHd2lubmVycwkAoggBCQEOa2V5V2Vla1dpbm5lcnMBBQhkcmF3V2VlawQKbmV3V2lubmVycwMJAQlpc0RlZmluZWQBBQd3aW5uZXJzCQCsAgIJAKwCAgkBBXZhbHVlAQUHd2lubmVycwIBXwUEYWRkcgUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawkAZAIFC3ByaXplc0RyYXduAAEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlXZWVrV2lubmVycwEFCGRyYXdXZWVrBQpuZXdXaW5uZXJzBQNuaWwFC2lzc3VlUmVzdWx0BAdyYW5kb20xCQBkAgkBD2dldFJhbmRvbU51bWJlcgMACQkAywECAQFCBQRzYWx0BQdlbnRyb3B5AAEEC2NvbnNUaWNrZXRzCQBrAwULdXNlclRpY2tldHMFB3JhbmRvbTEACgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFBHdlZWsFC2NvbnNUaWNrZXRzBQNuaWwFC2NvbnNUaWNrZXRzARRjbGFpbVRpY2tldHNJbnRlcm5hbAIEYWRkcgp1c2VyQmV0U3RyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQKdGlja2V0c0tleQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFBHdlZWsEBmRheUJldAkAtQkCBQp1c2VyQmV0U3RyAgFfBA9vbGRUb3RhbFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrAAAECm9sZFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKdGlja2V0c0tleQAABAxkZWx0YVRpY2tldHMDCQAAAgkBCndpbm5pbmdCZXQBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGZGF5QmV0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZkYXlCZXQAAQABAAAED29sZFBhcnRpY2lwYW50cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawAABBJ1cGRhdGVQYXJ0aWNpcGFudHMDAwkAAAIFCm9sZFRpY2tldHMAAAkAAAIFDGRlbHRhVGlja2V0cwABBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsJAGQCBQ9vbGRQYXJ0aWNpcGFudHMAAQUDbmlsBQNuaWwJAJQKAgMJAAACBQxkZWx0YVRpY2tldHMAAAUDbmlsCQDNCAIJAM0IAgUSdXBkYXRlUGFydGljaXBhbnRzCQEMSW50ZWdlckVudHJ5AgUKdGlja2V0c0tleQkAZAIFCm9sZFRpY2tldHMFDGRlbHRhVGlja2V0cwkBDEludGVnZXJFbnRyeQIJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawkAZAIFD29sZFRvdGFsVGlja2V0cwUMZGVsdGFUaWNrZXRzBQxkZWx0YVRpY2tldHMOAWkBDWNvbnN0cnVjdG9yVjEECHJlc3RBZGRyDW1hcmtldGluZ0FkZHIIdGVhbUFkZHIKcHJvZml0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKEIAQUNd2xnQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQEDGlzc3VlZEFtb3VudAUITUlMTElPTjYEBWlzc3VlCQDDCAcCBldMR09MRAIgV2F2ZXNMYW5kcyBHb2xkIGludmVzdG1lbnQgdG9rZW4FDGlzc3VlZEFtb3VudAAIBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ93bGdJc3N1ZVRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDGlzc3VlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAawMFCE1JTExJT042BQtQTEFZRVJTSEFSRQUFTVVMVDYJAMwIAgkBC0JpbmFyeUVudHJ5AgUNd2xnQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBRBtYXJrZXRpbmdBZGRyS2V5BQ1tYXJrZXRpbmdBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFC3RlYW1BZGRyS2V5BQh0ZWFtQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ1wcm9maXRBZGRyS2V5BQpwcm9maXRBZGRyBQNuaWwBaQENY29uc3RydWN0b3JWMgEJcmVzdDJBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleVJlc3QyQWRkcmVzcwAFCXJlc3QyQWRkcgUDbmlsAWkBBmJ1eVdsZwEMbWluVG9SZWNlaXZlBAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAd1c2R0QW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQGY2FsbGVyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUGY2FsbGVyAwkAZgIFDk1JTlNIT1BQQVlNRU5UBQd1c2R0QW10CQACAQkArAICCQCsAgICEllvdSBjYW4gdHJhZGUgbWluIAkBCmZpeGVkUG9pbnQCBQ5NSU5TSE9QUEFZTUVOVAAGAgUgVVNEVAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkBQd1c2R0QW10BAxjdXJXbGdBbW91bnQJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BAh3bGdQcmljZQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQQIYnV5UHJpY2UJAG4EBQh3bGdQcmljZQAGAAUFB0NFSUxJTkcECXdsZ0Ftb3VudAkAawMFB3VzZHRBbXQFBU1VTFQ4BQhidXlQcmljZQQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUEYWRkcgMJAGYCBQl3bGdBbW91bnQFBm1heFdsZwkAAgEJAKwCAgkArAICAhBZb3UgY2FuIGdldCBtYXggCQEKZml4ZWRQb2ludAIFBm1heFdsZwAIAhUgV0xHT0xEIGF0IHRoZSBtb21lbnQDCQBmAgUMbWluVG9SZWNlaXZlBQl3bGdBbW91bnQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgkAlAoCCQDMCAIJAQdSZWlzc3VlAwUKd2xnQXNzZXRJZAUJd2xnQW1vdW50BgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBkAgUMY3VyV2xnQW1vdW50BQl3bGdBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEFBGFkZHIJAGUCBQZtYXhXbGcFCXdsZ0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFDXByb2ZpdEFkZHJLZXkFDHByb2ZpdEFtb3VudAULdXNkdEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQl3bGdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUMcHJvbG9nUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmJ1eVdsZ1JFQURPTkxZAgdhZGRyZXNzB3VzZHRBbXQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQId2xnUHJpY2UJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UECGJ1eVByaWNlCQBuBAUId2xnUHJpY2UABgAFBQdDRUlMSU5HBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFB2FkZHJlc3MEB21heFVzZHQJAGsDBQZtYXhXbGcFCGJ1eVByaWNlBQVNVUxUOAQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAGCQCUCgIFA25pbAkAzAgCBQl3bGdBbW91bnQJAMwIAgUOTUlOU0hPUFBBWU1FTlQJAMwIAgUHbWF4VXNkdAkAzAgCBQxwcm9maXRBbW91bnQFA25pbAFpAQdzZWxsV2xnAQltaW5BbW91bnQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUEYWRkcgMJAGYCBQZ3bGdBbXQFBm1heFdsZwkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHNwZW5kIG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCFSBXTEdPTEQgYXQgdGhlIG1vbWVudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAxjdXJXbGdBbW91bnQJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BAlzZWxsUHJpY2UJAGkCCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlAAIEB3VzZHRBbXQJAGsDBQZ3bGdBbXQFCXNlbGxQcmljZQUFTVVMVDgDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUAwkAZgIFCW1pbkFtb3VudAUHdXNkdEFtdAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAFCQCUCgIJAMwIAgkBBEJ1cm4CBQp3bGdBc3NldElkBQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZQIFDGN1cldsZ0Ftb3VudAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5TGFzdFdsZ1RyYWRlTGltaXRCeVVzZXIBBQRhZGRyCQBlAgUGbWF4V2xnBQZ3bGdBbXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUHdXNkdEFtdAULdXNkdEFzc2V0SWQFA25pbAUMcHJvbG9nUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3NlbGxXbGdSRUFET05MWQIHYWRkcmVzcwZ3bGdBbXQEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFB2FkZHJlc3MECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAlzZWxsUHJpY2UJAGkCCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlAAIEB3VzZHRBbXQJAGsDBQZ3bGdBbXQFCXNlbGxQcmljZQUFTVVMVDgEBm1pbldsZwkAawMFDk1JTlNIT1BQQVlNRU5UBQVNVUxUOAUJc2VsbFByaWNlBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAUJAJQKAgUDbmlsCQDMCAIFB3VzZHRBbXQJAMwIAgUGbWluV2xnCQDMCAIFBm1heFdsZwkAzAgCBQxwcm9maXRBbW91bnQFA25pbAFpAQVjbGFpbQAEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEDSR0MDE0MDQ1MTQxMTQJAQ5jbGFpbUludGVybmFsMgEJAKUIAQgFAWkGY2FsbGVyBAdhY3Rpb25zCAUNJHQwMTQwNDUxNDExNAJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDE0MDQ1MTQxMTQCXzIJAJQKAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJvblN0YWtlVW5zdGFrZUxhbmQBBGFkZHIDAwMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQECIT0CCAUBaQZjYWxsZXIFDWFjcmVzQ29udHJhY3QHCQECIT0CCAUBaQZjYWxsZXIFDmFjcmVzMkNvbnRyYWN0BwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA0kdDAxNDQzMzE0NDg3CQEOY2xhaW1JbnRlcm5hbDIBBQRhZGRyBAdhY3Rpb25zCAUNJHQwMTQ0MzMxNDQ4NwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDE0NDMzMTQ0ODcCXzIJAJQKAgMJAGYCBRB3bGdDbGFpbWVkQW1vdW50AAAJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgUQd2xnQ2xhaW1lZEFtb3VudAUKd2xnQXNzZXRJZAUHYWN0aW9ucwUQd2xnQ2xhaW1lZEFtb3VudAFpAQpidXJuV2xnb2xkAQZ3bGdBbXQDCQECIT0CCAUBaQZjYWxsZXIFDmFjcmVzMkNvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAAAwkAZgIFBndsZ0FtdAkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcJAAIBCQCsAgIJAKwCAgkArAICAgVPbmx5IAkBCmZpeGVkUG9pbnQCCQCRAwIFCGN1clN0YXRzBQhpeFdsZ1dsZwAIAiUgV0xHT0xEIGxlZnQgb24gY29udHJhY3QsIGNhbid0IGJ1cm4gCQEKZml4ZWRQb2ludAIFBndsZ0FtdAAIBA13bGdBbW91bnRMZWZ0CQBlAgkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQFBndsZ0FtdAkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDXdsZ0Ftb3VudExlZnQFA25pbAUNd2xnQW1vdW50TGVmdAFpAQxiZXRGb3JUaWNrZXQBA2JldAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIECGRyYXdXZWVrCQBlAgkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MAAQQLdXNlclRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrAAAEC3dlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUIZHJhd1dlZWsAAAMDCQBmAgULdXNlclRpY2tldHMAAAkAZgIFC3dlZWtUaWNrZXRzAAAHCQACAQIbUGxlYXNlIG9wZW4gdGhlIGNoZXN0IGZpcnN0AwkBAiE9AgkAaQIFA2JldAAEAAAJAAIBAhtJbnZhbGlkIGJldDogc2hvdWxkIGJlIDAuLjMEBm1vbWVudAkAagIFBmhlaWdodAUKREFZX0JMT0NLUwMJAGYCBQZtb21lbnQJAGUCBQpEQVlfQkxPQ0tTAAMJAAIBCQCsAgIJAKwCAgIxQ2Fubm90IGJldDogdGhlIGRheSBpcyBhbG1vc3QgZW5kZWQsIHBsZWFzZSB3YWl0IAkApAMBCQBlAgUKREFZX0JMT0NLUwUGbW9tZW50AgcgYmxvY2tzBAtzdGFrZWRBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUEYWRkcgAAAwkAZgIFDUFDUkVTX0ZPUl9CRVQFC3N0YWtlZEFjcmVzCQACAQkArAICCQCsAgICG1lvdSBuZWVkIHRvIHN0YWtlIGF0IGxlYXN0IAkBCmZpeGVkUG9pbnQCBQ1BQ1JFU19GT1JfQkVUAAgCDSBBQ1JFUyB0byBiZXQECHRvbW9ycm93CQBkAgkAaQIFBmhlaWdodAUKREFZX0JMT0NLUwABBAZiZXRLZXkJAQprZXlVc2VyQmV0AQUEYWRkcgQNb2xkVXNlckJldFN0cgkAoggBBQZiZXRLZXkEC25ld0JldEVudHJ5CQELU3RyaW5nRW50cnkCBQZiZXRLZXkJAKwCAgkArAICCQCkAwEFCHRvbW9ycm93AgFfCQCkAwEFA2JldAMJAQlpc0RlZmluZWQBBQ1vbGRVc2VyQmV0U3RyBAd1c2VyQmV0CQEFdmFsdWUBBQ1vbGRVc2VyQmV0U3RyAwkAAAIJAJEDAgkAtQkCBQd1c2VyQmV0AgFfAAAJAKQDAQUIdG9tb3Jyb3cJAAIBAhxZb3UgYWxyZWFkeSBiZXQgZm9yIHRvbW9ycm93BAFyCQEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBQRhZGRyBQd1c2VyQmV0CQCUCgIJAM0IAggFAXICXzEFC25ld0JldEVudHJ5CAUBcgJfMgkAlAoCCQDMCAIFC25ld0JldEVudHJ5BQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQl0YWtlV2xnWHABBGFkZHIDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA0kdDAxNzA5NzE3MTQwCQEOdGFrZVhwSW50ZXJuYWwCBQRhZGRyAAAEB2FjdGlvbnMIBQ0kdDAxNzA5NzE3MTQwAl8xBAJ4cAgFDSR0MDE3MDk3MTcxNDACXzIJAJQKAgUHYWN0aW9ucwUCeHABaQESY2hlY2tXbGdYcFJFQURPTkxZAQRhZGRyBA0kdDAxNzIxNzE3MjY1CQEOdGFrZVhwSW50ZXJuYWwCBQRhZGRyAAAEB2lnbm9yZWQIBQ0kdDAxNzIxNzE3MjY1Al8xBAdkZWx0YVhQCAUNJHQwMTcyMTcxNzI2NQJfMgQFbmV3WFAJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBCWtleVVzZXJYUAEFBGFkZHIAAAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5VXNlckxldmVsAQUEYWRkcgAABQVuZXdYUAkAlAoCBQNuaWwJAM0IAgUJbHZsUG9pbnRzBQVuZXdYUAFpAQxzZXROdW1Qcml6ZXMBCW51bVByaXplcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5TnVtTkZUMkRyYXcBBQR3ZWVrBQludW1Qcml6ZXMFA25pbAUJbnVtUHJpemVzAWkBCW9wZW5DaGVzdAADCQEBIQEFEUtTX0FMTE9XX05GVF9EUkFXCQACAQIUVGVtcG9yYXJpbHkgZGlzYWJsZWQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECGRyYXdXZWVrCQBlAgkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MAAQQEYWRkcgkApQgBCAUBaQZjYWxsZXIEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAAAwkAZwIAAAULdXNlclRpY2tldHMJAAIBAhlObyBnZW1zIHRvIG9wZW4gdGhlIGNoZXN0CQERb3BlbkNoZXN0SW50ZXJuYWwBBQRhZGRyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuABiwFq0=", "height": 3386937, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 14MoyMZUbpiiwVuCi246oZZa9zNjuKUtYq4YDRy7VB9D Next: AsStSyGat4zjoxBfsjDmJDPZrWYizWLEHSDibvyXTCJV Diff:
OldNewDifferences
314314
315315 let bE = 5
316316
317-func bF (O) = ("userFullBonus_" + O)
317+let bF = 100000000
318+
319+func bG (O) = ("userFullBonus_" + O)
318320
319321
320-let bG = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
322+let bH = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
321323
322-func bH (bI) = {
323- let bJ = ((bI + 99999999) / aV)
324- func bK (bL,bM) = if ((bM >= bJ))
325- then bL
326- else (bL + 1)
324+func bI (bJ) = {
325+ let bK = ((bJ + 99999999) / aV)
326+ func bL (bM,bN) = if ((bN >= bK))
327+ then bM
328+ else (bM + 1)
327329
328- let bN = bG
329- let bO = size(bN)
330- let bP = 0
331- func bQ (bR,bS) = if ((bS >= bO))
332- then bR
333- else bK(bR, bN[bS])
330+ let bO = bH
331+ let bP = size(bO)
332+ let bQ = 0
333+ func bR (bS,bT) = if ((bT >= bP))
334+ then bS
335+ else bL(bS, bO[bT])
334336
335- func bT (bR,bS) = if ((bS >= bO))
336- then bR
337+ func bU (bS,bT) = if ((bT >= bP))
338+ then bS
337339 else throw("List size exceeds 10")
338340
339- bT(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
341+ bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
340342 }
341343
342344
343-func bU (bI) = ((bI * 20) * (bH(bI) + 4))
345+func bV (bJ) = ((bJ * 20) * (bI(bJ) + 4))
344346
345347
346-func bV (bI,bW) = {
347- let bX = bU(bI)
348- $Tuple2(fraction(bX, (aU + bW), aU), bX)
348+func bW (bJ,bX) = {
349+ let bY = bV(bJ)
350+ $Tuple2(fraction(bY, (aU + bX), aU), bY)
349351 }
350352
351353
352-func bY (bZ,J) = {
353- let ca = valueOrElse(getInteger(J, bx), 0)
354- let cb = valueOrElse(getInteger(J, bv(bZ)), 0)
355- let cc = valueOrElse(getInteger(J, bF(bZ)), 0)
356- let cd = bV(cb, cc)
357- let ce = cd._1
358- let cf = cd._2
359-[ca, ce, cf, cc]
354+func bZ (ca,J) = {
355+ let cb = valueOrElse(getInteger(J, bx), 0)
356+ let cc = valueOrElse(getInteger(J, bv(ca)), 0)
357+ let cd = valueOrElse(getInteger(J, bG(ca)), 0)
358+ let ce = bW(cc, cd)
359+ let cf = ce._1
360+ let cg = ce._2
361+[cb, cf, cg, cd]
360362 }
361363
362364
363-let cg = 0
365+let ch = 0
364366
365-let ch = 1
367+let ci = 1
366368
367-let ci = 0
369+let cj = 0
368370
369-let cj = 1
371+let ck = 1
370372
371-let ck = 2
373+let cl = 2
372374
373-let cl = 8
375+let cm = 8
374376
375-let cm = 11
377+let cn = 11
376378
377-let cn = 12
379+let co = 12
378380
379-let co = 15
381+let cp = 15
380382
381-let cp = 16
383+let cq = 16
382384
383-let cq = 19
385+let cr = 19
384386
385-let cr = 23
387+let cs = 23
386388
387-let cs = 24
389+let ct = 24
388390
389-let ct = 25
391+let cu = 25
390392
391-let cu = 26
393+let cv = 26
392394
393-let cv = 27
395+let cw = 27
394396
395-let cw = 28
397+let cx = 28
396398
397-let cx = 29
399+let cy = 29
398400
399-func cy (cz,cA,cB,cC) = {
400- let bp = valueOrErrorMessage(getInteger(cA[bA], bt), "WLGOLD is not issued yet")
401- let cD = assetBalance(cA[by], cB)
402- let cE = (assetBalance(cA[bA], cB) - cC)
403- let cF = assetBalance(cA[bB], cB)
404- let cG = assetBalance(cA[bz], cB)
405- let cH = cA[bC]
406- let cI = (assetBalance(cH, cB) + valueOrElse(getInteger(cH, bu), 0))
407- let cJ = ((cG + cE) + cI)
408- let cK = valueOrErrorMessage(getBinary(cA[bA], "wlg_assetId"), "Not initialized yet")
409- let cL = lastBlock.timestamp
410- let cM = valueOrErrorMessage(getInteger(cA[bA], bs), "Not initialized")
411- let cN = assetBalance(cA[bA], cK)
412- let cO = fraction(bp, aW, aU)
413- let cP = valueOrElse(getInteger(cA[bA], bj), cO)
414- let cQ = valueOrElse(getInteger(cA[bA], bi), cM)
415- let cR = addressFromStringValue(value(getString(cA[bA], bh)))
416- let cS = min([fraction(cO, (cL - cQ), (3 * aZ)), cP])
417- let cT = assetBalance(cR, cK)
418- let cU = fraction(bp, aX, aU)
419- let cV = valueOrElse(getInteger(cA[bA], bl), cU)
420- let cW = valueOrElse(getInteger(cA[bA], bk), cM)
421- let cX = min([fraction(cU, (cL - cW), (3 * aZ)), cV])
422- let cY = assetBalance(cA[by], cK)
423- let cZ = valueOrElse(getInteger(cA[bA], bn(cz)), cM)
424- let da = ((cZ - cM) / aZ)
425- let db = min([cL, (cM + (3 * aZ))])
426- let dc = min([((cL - cM) / aZ), 2])
427- let dd = bY(cz, cA[bz])
428- let de = bo(bp, dc)
429- let df = (cM + (aZ * dc))
430- let dg = (cM + (aZ * (dc - 1)))
431- let dh = fraction(de, (db - cZ), aZ)
432- let di = if ((da == dc))
433- then dh
434- else if ((da == (dc - 1)))
401+func cz (cA,cB,cC,cD) = {
402+ let bp = valueOrErrorMessage(getInteger(cB[bA], bt), "WLGOLD is not issued yet")
403+ let cE = assetBalance(cB[by], cC)
404+ let cF = (assetBalance(cB[bA], cC) - cD)
405+ let cG = assetBalance(cB[bB], cC)
406+ let cH = assetBalance(cB[bz], cC)
407+ let cI = cB[bC]
408+ let cJ = (assetBalance(cI, cC) + valueOrElse(getInteger(cI, bu), 0))
409+ let cK = ((cH + cF) + cJ)
410+ let cL = valueOrErrorMessage(getBinary(cB[bA], "wlg_assetId"), "Not initialized yet")
411+ let cM = lastBlock.timestamp
412+ let cN = valueOrErrorMessage(getInteger(cB[bA], bs), "Not initialized")
413+ let cO = assetBalance(cB[bA], cL)
414+ let cP = fraction(bp, aW, aU)
415+ let cQ = valueOrElse(getInteger(cB[bA], bj), cP)
416+ let cR = valueOrElse(getInteger(cB[bA], bi), cN)
417+ let cS = addressFromStringValue(value(getString(cB[bA], bh)))
418+ let cT = min([fraction(cP, (cM - cR), (3 * aZ)), cQ])
419+ let cU = assetBalance(cS, cL)
420+ let cV = fraction(bp, aX, aU)
421+ let cW = valueOrElse(getInteger(cB[bA], bl), cV)
422+ let cX = valueOrElse(getInteger(cB[bA], bk), cN)
423+ let cY = min([fraction(cV, (cM - cX), (3 * aZ)), cW])
424+ let cZ = assetBalance(cB[by], cL)
425+ let da = valueOrElse(getInteger(cB[bA], bn(cA)), cN)
426+ let db = ((da - cN) / aZ)
427+ let dc = min([cM, (cN + (3 * aZ))])
428+ let dd = min([((cM - cN) / aZ), 2])
429+ let de = bZ(cA, cB[bz])
430+ let df = bo(bp, dd)
431+ let dg = (cN + (aZ * dd))
432+ let dh = (cN + (aZ * (dd - 1)))
433+ let di = fraction(df, (dc - da), aZ)
434+ let dj = if ((db == dd))
435+ then di
436+ else if ((db == (dd - 1)))
435437 then {
436- let dj = fraction(bo(bp, (dc - 1)), (df - cZ), aZ)
437- (dj + dh)
438+ let dk = fraction(bo(bp, (dd - 1)), (dg - da), aZ)
439+ (dk + di)
438440 }
439441 else {
440- let dk = fraction(bo(bp, (dc - 2)), (dg - cZ), aZ)
441- let dj = bo(bp, (dc - 1))
442- ((dk + dj) + dh)
442+ let dl = fraction(bo(bp, (dd - 2)), (dh - da), aZ)
443+ let dk = bo(bp, (dd - 1))
444+ ((dl + dk) + di)
443445 }
444- let dl = valueOrElse(getInteger(cA[bA], bm), 0)
445- let dm = if ((dd[cg] != 0))
446- then fraction(di, dd[ch], dd[cg])
446+ let dm = valueOrElse(getInteger(cB[bA], bm), 0)
447+ let dn = if ((de[ch] != 0))
448+ then fraction(dj, de[ci], de[ch])
447449 else 0
448- let dn = valueOrElse(getInteger(cA[bA], br), bf)
449- let do = fraction(bb, max([(cL - dn), 0]), ba)
450- let dp = fraction(do, bd, aU)
451- let dq = fraction(do, be, aU)
452- let dr = max([(cL - max([bf, cZ])), 0])
453- let ds = if ((dd[cg] != 0))
454- then fraction(fraction(fraction(bb, dr, ba), dd[ch], dd[cg]), bc, aU)
450+ let do = valueOrElse(getInteger(cB[bA], br), bf)
451+ let dp = fraction(bb, max([(cM - do), 0]), ba)
452+ let dq = fraction(dp, bd, aU)
453+ let dr = fraction(dp, be, aU)
454+ let ds = max([(cM - max([bf, da])), 0])
455+ let dt = if ((de[ch] != 0))
456+ then fraction(fraction(fraction(bb, ds, ba), de[ci], de[ch]), bc, aU)
455457 else 0
456- let dt = max([bf, cL])
457- let du = valueOrElse(getInteger(cA[bz], bw), 0)
458-[bp, cN, fraction(cJ, aV, bp), cJ, cD, cG, cE, cF, cM, cQ, cO, cP, cS, cT, cU, cV, cX, cY, dc, dl, de, cZ, cI, dm, db, do, dp, dq, ds, dt, dd[cg], du]
458+ let du = max([bf, cM])
459+ let dv = valueOrElse(getInteger(cB[bz], bw), 0)
460+[bp, cO, fraction(cK, aV, bp), cK, cE, cH, cF, cG, cN, cR, cP, cQ, cT, cU, cV, cW, cY, cZ, dd, dm, df, da, cJ, dn, dc, dp, dq, dr, dt, du, de[ch], dv]
459461 }
460462
461463
462-let dv = "profitAddr"
464+let dw = "profitAddr"
463465
464-let dw = "stakersAmountPaidTotal"
466+let dx = "stakersAmountPaidTotal"
465467
466-func dx (O) = ("stakersAmountPaidUser_" + O)
468+func dy (O) = ("stakersAmountPaidUser_" + O)
467469
468470
469-func dy () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
471+func dz () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
470472
471473
472-func dz (O) = {
473- let dA = valueOrElse(getInteger(aM(O)), 0)
474- let dB = valueOrElse(getInteger(J, aQ(O)), 0)
475- let dC = valueOrElse(getInteger(aN(O)), dB)
476- let dD = (dC + fraction(dB, (lastBlock.timestamp - dA), e))
477- min([dD, dB])
474+func dA (O) = {
475+ let dB = valueOrElse(getInteger(aM(O)), 0)
476+ let dC = valueOrElse(getInteger(J, aQ(O)), 0)
477+ let dD = valueOrElse(getInteger(aN(O)), dC)
478+ let dE = (dD + fraction(dC, (lastBlock.timestamp - dB), e))
479+ min([dE, dC])
478480 }
479481
480482
481-func dE (O) = {
482- let dF = cy(O, [I, J, K, L, M], j, 0)
483- let dG = bn(O)
484- let cZ = valueOrElse(getInteger(dG), 0)
485- let dH = dF[cs]
486- if ((cZ == dH))
483+func dF (O) = {
484+ let dG = cz(O, [I, J, K, L, M], j, 0)
485+ let dH = bn(O)
486+ let da = valueOrElse(getInteger(dH), 0)
487+ let dI = dG[ct]
488+ if ((da == dI))
487489 then $Tuple2(nil, 0)
488490 else {
489- let cL = lastBlock.timestamp
490- let cM = dF[cl]
491- let cP = dF[cm]
492- let dI = (dF[cn] + dF[cv])
493- let dJ = if ((dI > 0))
494- then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dI, Q)]
491+ let cM = lastBlock.timestamp
492+ let cN = dG[cm]
493+ let cQ = dG[cn]
494+ let dJ = (dG[co] + dG[cw])
495+ let dK = if ((dJ > 0))
496+ then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dJ, Q)]
495497 else nil
496- let cV = dF[co]
497- let dK = dF[cp]
498- let dL = if ((dK > 0))
499- then [ScriptTransfer(x, dK, Q)]
498+ let cW = dG[cp]
499+ let dL = dG[cq]
500+ let dM = if ((dL > 0))
501+ then [ScriptTransfer(x, dL, Q)]
500502 else nil
501- let dM = dF[cu]
502- let dN = if ((dM > 0))
503- then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dM, Q)]
503+ let dN = dG[cv]
504+ let dO = if ((dN > 0))
505+ then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dN, Q)]
504506 else nil
505- let dm = dF[cr]
506- let dO = dx(O)
507- let dP = (dm + dF[cw])
508- let dQ = dF[ct]
509- $Tuple2(((([Reissue(Q, dQ, true), IntegerEntry(aP, (dF[ci] + dQ)), IntegerEntry(br, dF[cx]), IntegerEntry(dO, (valueOrElse(getInteger(dO), 0) + dm)), IntegerEntry(dw, (valueOrElse(getInteger(dw), 0) + dm)), IntegerEntry(aL, (dF[cq] - dm)), IntegerEntry(aI, ((cP - dI) + dF[cv])), IntegerEntry(aH, cL), IntegerEntry(aK, (cV - dK)), IntegerEntry(aJ, cL), IntegerEntry(dG, dH)] ++ dJ) ++ dL) ++ dN), dP)
507+ let dn = dG[cs]
508+ let dP = dy(O)
509+ let dQ = (dn + dG[cx])
510+ let dR = dG[cu]
511+ $Tuple2(((([Reissue(Q, dR, true), IntegerEntry(aP, (dG[cj] + dR)), IntegerEntry(br, dG[cy]), IntegerEntry(dP, (valueOrElse(getInteger(dP), 0) + dn)), IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + dn)), IntegerEntry(aL, (dG[cr] - dn)), IntegerEntry(aI, ((cQ - dJ) + dG[cw])), IntegerEntry(aH, cM), IntegerEntry(aK, (cW - dL)), IntegerEntry(aJ, cM), IntegerEntry(dH, dI)] ++ dK) ++ dM) ++ dO), dQ)
510512 }
511513 }
512514
513515
514-func dR (O,dS) = {
515- let cL = lastBlock.timestamp
516- let dT = aT(O)
517- let dU = aR(O)
518- let dA = valueOrElse(getInteger(dT), 0)
519- let dV = valueOrElse(getInteger(dU), 0)
520- let dW = valueOrElse(getInteger(aS), 0)
521- let ay = fraction(fraction(aw, dV, at), (dA - cL), aF)
522- $Tuple3([IntegerEntry(dT, cL), IntegerEntry(dU, (dV + dS)), IntegerEntry(aS, (dW + dS))], ay, dV)
516+func dS (O,dT) = {
517+ let cM = lastBlock.timestamp
518+ let dU = aT(O)
519+ let dV = aR(O)
520+ let dB = valueOrElse(getInteger(dU), 0)
521+ let dW = valueOrElse(getInteger(dV), 0)
522+ let dX = valueOrElse(getInteger(aS), 0)
523+ let ay = fraction(fraction(aw, dW, at), (dB - cM), aF)
524+ $Tuple3([IntegerEntry(dU, cM), IntegerEntry(dV, (dW + dT)), IntegerEntry(aS, (dX + dT))], ay, dW)
523525 }
524526
525527
526-func dX (O) = {
528+func dY (O) = {
527529 let T = (height / i)
528- let dY = (T - 1)
529- let dZ = valueOrElse(getInteger(W(dY)), bE)
530- let ea = valueOrElse(getInteger(X(dY)), 0)
531- let eb = valueOrElse(getInteger(S(O, dY)), 0)
532- if ((0 >= eb))
530+ let dZ = (T - 1)
531+ let ea = valueOrElse(getInteger(W(dZ)), bE)
532+ let eb = valueOrElse(getInteger(X(dZ)), 0)
533+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
534+ if ((0 >= ec))
533535 then $Tuple2(nil, unit)
534536 else {
535- let ec = valueOrElse(getInteger(U(dY)), 0)
536- if ((0 >= ec))
537- then $Tuple2([DeleteEntry(S(O, dY))], unit)
537+ let ed = valueOrElse(getInteger(U(dZ)), 0)
538+ if ((0 >= ed))
539+ then $Tuple2([DeleteEntry(S(O, dZ))], unit)
538540 else {
539541 let an = value(value(blockInfoByHeight((T * i))).vrf)
540542 let am = fromBase58String(split(valueOrElse(getString(N(O)), "42_DEFAULT"), "_")[1])
541- let ed = ak(ec, am, an)
542- if (((eb * dZ) > ed))
543+ let ee = ak(ed, am, an)
544+ if (((ec * ea) > ee))
543545 then {
544- let ee = invoke(J, "issueNFT", [O, bD], nil)
545- let ef = getString(Y(dY))
546- let eg = if (isDefined(ef))
547- then ((value(ef) + "_") + O)
546+ let ef = invoke(J, "issueNFT", [O, bD], nil)
547+ let eg = getString(Y(dZ))
548+ let eh = if (isDefined(eg))
549+ then ((value(eg) + "_") + O)
548550 else O
549- $Tuple2([IntegerEntry(X(dY), (ea + 1)), DeleteEntry(S(O, dY)), StringEntry(Y(dY), eg)], ee)
551+ $Tuple2([IntegerEntry(X(dZ), (eb + 1)), DeleteEntry(S(O, dZ)), StringEntry(Y(dZ), eh)], ef)
550552 }
551553 else {
552- let eh = (ak(9, (base58'29' + am), an) + 1)
553- let ei = fraction(eb, eh, 10)
554- $Tuple2([DeleteEntry(S(O, dY)), IntegerEntry(S(O, T), ei)], ei)
554+ let ei = (ak(9, (base58'29' + am), an) + 1)
555+ let ej = fraction(ec, ei, 10)
556+ $Tuple2([DeleteEntry(S(O, dZ)), IntegerEntry(S(O, T), ej)], ej)
555557 }
556558 }
557559 }
558560 }
559561
560562
561-func ej (O,ek) = {
563+func ek (O,el) = {
562564 let T = (height / i)
563- let el = S(O, T)
564- let em = split(ek, "_")
565- let en = valueOrElse(getInteger(U(T)), 0)
566- let eo = valueOrElse(getInteger(el), 0)
567- let ep = if ((Z(parseIntValue(em[0])) == parseIntValue(em[1])))
565+ let em = S(O, T)
566+ let en = split(el, "_")
567+ let eo = valueOrElse(getInteger(U(T)), 0)
568+ let ep = valueOrElse(getInteger(em), 0)
569+ let eq = if ((Z(parseIntValue(en[0])) == parseIntValue(en[1])))
568570 then 1
569571 else 0
570- let eq = valueOrElse(getInteger(V(T)), 0)
571- let er = if (if ((eo == 0))
572- then (ep == 1)
572+ let er = valueOrElse(getInteger(V(T)), 0)
573+ let es = if (if ((ep == 0))
574+ then (eq == 1)
573575 else false)
574- then [IntegerEntry(V(T), (eq + 1))]
576+ then [IntegerEntry(V(T), (er + 1))]
575577 else nil
576- $Tuple2(if ((ep == 0))
578+ $Tuple2(if ((eq == 0))
577579 then nil
578- else ((er :+ IntegerEntry(el, (eo + ep))) :+ IntegerEntry(U(T), (en + ep))), ep)
580+ else ((es :+ IntegerEntry(em, (ep + eq))) :+ IntegerEntry(U(T), (eo + eq))), eq)
579581 }
580582
581583
582-@Callable(es)
583-func constructorV1 (et,eu,cR,ev) = if ((es.caller != this))
584+@Callable(et)
585+func constructorV1 (eu,ev,cS,ew) = if ((et.caller != this))
584586 then throw("Permission denied")
585587 else if (isDefined(getBinary(P)))
586588 then throw("Already initialized")
587589 else {
588590 let bp = aD
589- let ew = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
590- let ex = calculateAssetId(ew)
591-[ew, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dw, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ex), StringEntry(w(), et), StringEntry(bg, eu), StringEntry(aG, cR), StringEntry(dv, ev)]
591+ let ex = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
592+ let ey = calculateAssetId(ex)
593+[ex, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dx, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ey), StringEntry(w(), eu), StringEntry(bg, ev), StringEntry(aG, cS), StringEntry(dw, ew)]
592594 }
593595
594596
595597
596-@Callable(es)
597-func constructorV2 (ey) = if ((es.caller != this))
598+@Callable(et)
599+func constructorV2 (ez) = if ((et.caller != this))
598600 then throw("Permission denied")
599- else [StringEntry(v(), ey)]
601+ else [StringEntry(v(), ez)]
600602
601603
602604
603-@Callable(es)
604-func buyWlg (ez) = {
605- let eA = dy()
606- if ((eA == eA))
607- then if ((size(es.payments) != 1))
605+@Callable(et)
606+func buyWlg (eA) = {
607+ let eB = dz()
608+ if ((eB == eB))
609+ then if ((size(et.payments) != 1))
608610 then throw("exactly 1 payment must be attached")
609611 else {
610- let eB = es.payments[0]
611- let eC = eB.amount
612- if (if (!(isDefined(eB.assetId)))
612+ let eC = et.payments[0]
613+ let eD = eC.amount
614+ if (if (!(isDefined(eC.assetId)))
613615 then true
614- else (value(eB.assetId) != j))
616+ else (value(eC.assetId) != j))
615617 then throw("USDT payments only!")
616618 else {
617- let eD = es.caller
618- let O = toString(eD)
619- if ((d > eC))
619+ let eE = et.caller
620+ let O = toString(eE)
621+ if ((d > eD))
620622 then throw((("You can trade min " + ae(d, 6)) + " USDT"))
621623 else {
622- let dF = cy("", [I, J, K, L, M], j, eC)
623- let eE = dF[ci]
624- let eF = dF[ck]
625- let eG = fraction(eF, 6, 5, CEILING)
626- let eH = fraction(eC, c, eG)
627- let eI = dz(O)
628- if ((eH > eI))
629- then throw((("You can get max " + ae(eI, 8)) + " WLGOLD at the moment"))
630- else if ((ez > eH))
624+ let dG = cz("", [I, J, K, L, M], j, eD)
625+ let eF = dG[cj]
626+ let eG = dG[cl]
627+ let eH = fraction(eG, 6, 5, CEILING)
628+ let eI = fraction(eD, c, eH)
629+ let eJ = dA(O)
630+ if ((eI > eJ))
631+ then throw((("You can get max " + ae(eJ, 8)) + " WLGOLD at the moment"))
632+ else if ((eA > eI))
631633 then throw("Price changed during operation, please try again")
632634 else {
633- let eJ = (eC / 6)
634- $Tuple2([Reissue(Q, eH, true), IntegerEntry(aP, (eE + eH)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eI - eH)), ScriptTransfer(addressFromStringValue(value(getString(dv))), eJ, j), ScriptTransfer(eD, eH, Q)], eA)
635+ let eK = (eD / 6)
636+ $Tuple2([Reissue(Q, eI, true), IntegerEntry(aP, (eF + eI)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eI)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eI, Q)], eB)
635637 }
636638 }
637639 }
641643
642644
643645
644-@Callable(es)
645-func buyWlgREADONLY (o,eC) = {
646- let dF = cy("", [I, J, K, L, M], j, eC)
647- let eF = dF[ck]
648- let eG = fraction(eF, 6, 5, CEILING)
649- let eH = fraction(eC, c, eG)
650- let eI = dz(o)
651- let eK = fraction(eI, eG, c)
652- let eJ = (eC / 6)
653- $Tuple2(nil, [eH, d, eK, eJ])
646+@Callable(et)
647+func buyWlgREADONLY (o,eD) = {
648+ let dG = cz("", [I, J, K, L, M], j, eD)
649+ let eG = dG[cl]
650+ let eH = fraction(eG, 6, 5, CEILING)
651+ let eI = fraction(eD, c, eH)
652+ let eJ = dA(o)
653+ let eL = fraction(eJ, eH, c)
654+ let eK = (eD / 6)
655+ $Tuple2(nil, [eI, d, eL, eK])
654656 }
655657
656658
657659
658-@Callable(es)
659-func sellWlg (eL) = {
660- let eA = dy()
661- if ((eA == eA))
662- then if ((size(es.payments) != 1))
660+@Callable(et)
661+func sellWlg (eM) = {
662+ let eB = dz()
663+ if ((eB == eB))
664+ then if ((size(et.payments) != 1))
663665 then throw("exactly 1 payment must be attached")
664666 else {
665- let eB = es.payments[0]
666- let eM = eB.amount
667- let eD = es.caller
668- let O = toString(eD)
669- let eI = dz(O)
670- if ((eM > eI))
671- then throw((("You can spend max " + ae(eI, 8)) + " WLGOLD at the moment"))
672- else if (if (!(isDefined(eB.assetId)))
667+ let eC = et.payments[0]
668+ let eN = eC.amount
669+ let eE = et.caller
670+ let O = toString(eE)
671+ let eJ = dA(O)
672+ if ((eN > eJ))
673+ then throw((("You can spend max " + ae(eJ, 8)) + " WLGOLD at the moment"))
674+ else if (if (!(isDefined(eC.assetId)))
673675 then true
674- else (value(eB.assetId) != Q))
676+ else (value(eC.assetId) != Q))
675677 then throw("WLGOLD payments only!")
676678 else {
677- let dF = cy("", [I, J, K, L, M], j, 0)
678- let eE = dF[ci]
679- let eN = (dF[ck] / 2)
680- let eC = fraction(eM, eN, c)
681- if ((d > eC))
679+ let dG = cz("", [I, J, K, L, M], j, 0)
680+ let eF = dG[cj]
681+ let eO = (dG[cl] / 2)
682+ let eD = fraction(eN, eO, c)
683+ if ((d > eD))
682684 then throw((("You can trade min " + ae(d, 6)) + " USDT"))
683- else if ((eL > eC))
685+ else if ((eM > eD))
684686 then throw("Price changed during operation, please try again")
685687 else {
686- let eJ = (eC / 5)
687- $Tuple2([Burn(Q, eM), IntegerEntry(aP, (eE - eM)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eI - eM)), ScriptTransfer(addressFromStringValue(value(getString(dv))), eJ, j), ScriptTransfer(eD, eC, j)], eA)
688+ let eK = (eD / 5)
689+ $Tuple2([Burn(Q, eN), IntegerEntry(aP, (eF - eN)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eN)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eD, j)], eB)
688690 }
689691 }
690692 }
693695
694696
695697
696-@Callable(es)
697-func sellWlgREADONLY (o,eM) = {
698- let eI = dz(o)
699- let dF = cy("", [I, J, K, L, M], j, 0)
700- let eN = (dF[ck] / 2)
701- let eC = fraction(eM, eN, c)
702- let eO = fraction(d, c, eN)
703- let eJ = (eC / 5)
704- $Tuple2(nil, [eC, eO, eI, eJ])
698+@Callable(et)
699+func sellWlgREADONLY (o,eN) = {
700+ let eJ = dA(o)
701+ let dG = cz("", [I, J, K, L, M], j, 0)
702+ let eO = (dG[cl] / 2)
703+ let eD = fraction(eN, eO, c)
704+ let eP = fraction(d, c, eO)
705+ let eK = (eD / 5)
706+ $Tuple2(nil, [eD, eP, eJ, eK])
705707 }
706708
707709
708710
709-@Callable(es)
711+@Callable(et)
710712 func claim () = {
711- let eA = dy()
712- if ((eA == eA))
713- then if ((size(es.payments) != 0))
713+ let eB = dz()
714+ if ((eB == eB))
715+ then if ((size(et.payments) != 0))
714716 then throw("No payments required")
715717 else {
716- let eP = dE(toString(es.caller))
717- let eQ = eP._1
718- let eR = eP._2
719- $Tuple2((eQ :+ ScriptTransfer(es.caller, eR, Q)), eA)
718+ let eQ = dF(toString(et.caller))
719+ let eR = eQ._1
720+ let eS = eQ._2
721+ $Tuple2((eR :+ ScriptTransfer(et.caller, eS, Q)), eB)
720722 }
721723 else throw("Strict value is not equal to itself.")
722724 }
723725
724726
725727
726-@Callable(es)
727-func onStakeUnstakeLand (O) = if (if (if ((es.caller != G))
728- then (es.caller != H)
728+@Callable(et)
729+func onStakeUnstakeLand (O) = if (if (if ((et.caller != G))
730+ then (et.caller != H)
729731 else false)
730- then (es.caller != J)
732+ then (et.caller != J)
731733 else false)
732734 then throw("Permission denied")
733735 else {
734- let eS = dE(O)
735- let eQ = eS._1
736- let eR = eS._2
737- $Tuple2(if ((eR > 0))
738- then (eQ :+ ScriptTransfer(addressFromStringValue(O), eR, Q))
739- else eQ, eR)
736+ let eT = dF(O)
737+ let eR = eT._1
738+ let eS = eT._2
739+ $Tuple2(if ((eS > 0))
740+ then (eR :+ ScriptTransfer(addressFromStringValue(O), eS, Q))
741+ else eR, eS)
740742 }
741743
742744
743745
744-@Callable(es)
745-func burnWlgold (eM) = if ((es.caller != J))
746+@Callable(et)
747+func burnWlgold (eN) = if ((et.caller != J))
746748 then throw("Permission denied")
747749 else {
748- let dF = cy("", [I, J, K, L, M], j, 0)
749- if ((eM > dF[cj]))
750- then throw(((("Only " + ae(dF[cj], 8)) + " WLGOLD left on contract, can't burn ") + ae(eM, 8)))
750+ let dG = cz("", [I, J, K, L, M], j, 0)
751+ if ((eN > dG[ck]))
752+ then throw(((("Only " + ae(dG[ck], 8)) + " WLGOLD left on contract, can't burn ") + ae(eN, 8)))
751753 else {
752- let eT = (dF[ci] - eM)
753- $Tuple2([Burn(Q, eM), IntegerEntry(aP, eT)], eT)
754+ let eU = (dG[cj] - eN)
755+ $Tuple2([Burn(Q, eN), IntegerEntry(aP, eU)], eU)
754756 }
755757 }
756758
757759
758760
759-@Callable(es)
760-func betForTicket (eU) = {
761- let eA = dy()
762- if ((eA == eA))
763- then if ((size(es.payments) != 0))
761+@Callable(et)
762+func betForTicket (eV) = {
763+ let eB = dz()
764+ if ((eB == eB))
765+ then if ((size(et.payments) != 0))
764766 then throw("No payments required")
765767 else {
766- let O = toString(es.caller)
767- let dY = ((height / i) - 1)
768- let eb = valueOrElse(getInteger(S(O, dY)), 0)
769- let ec = valueOrElse(getInteger(U(dY)), 0)
770- if (if ((eb > 0))
771- then (ec > 0)
768+ let O = toString(et.caller)
769+ let dZ = ((height / i) - 1)
770+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
771+ let ed = valueOrElse(getInteger(U(dZ)), 0)
772+ if (if ((ec > 0))
773+ then (ed > 0)
772774 else false)
773775 then throw("Please open the chest first")
774- else if (((eU / 4) != 0))
776+ else if (((eV / 4) != 0))
775777 then throw("Invalid bet: should be 0..3")
776778 else {
777- let eV = (height % g)
778- if ((eV > (g - 3)))
779- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eV))) + " blocks"))
779+ let eW = (height % g)
780+ if ((eW > (g - 3)))
781+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eW))) + " blocks"))
780782 else {
781- let eW = valueOrElse(getInteger(J, bv(O)), 0)
782- let eX = bH(eW)
783- if ((eX == 0))
784- then throw("You need to stake some ACRES to bet")
783+ let eX = valueOrElse(getInteger(J, bv(O)), 0)
784+ if ((bF > eX))
785+ then throw((("You need to stake at least " + ae(bF, 8)) + " ACRES to bet"))
785786 else {
786787 let eY = ((height / g) + 1)
787788 let eZ = R(O)
788789 let fa = getString(eZ)
789- let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eU)))
790+ let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eV)))
790791 if (isDefined(fa))
791792 then {
792793 let fc = value(fa)
793794 if ((split(fc, "_")[0] == toString(eY)))
794795 then throw("You already bet for tomorrow")
795796 else {
796- let fd = ej(O, fc)
797+ let fd = ek(O, fc)
797798 $Tuple2((fd._1 :+ fb), fd._2)
798799 }
799800 }
807808
808809
809810
810-@Callable(es)
811-func takeWlgXp (O) = if ((es.caller != G))
811+@Callable(et)
812+func takeWlgXp (O) = if ((et.caller != G))
812813 then throw("Permission denied")
813814 else {
814- let fe = dR(O, 0)
815- let eQ = fe._1
815+ let fe = dS(O, 0)
816+ let eR = fe._1
816817 let ay = fe._2
817- $Tuple2(eQ, ay)
818+ $Tuple2(eR, ay)
818819 }
819820
820821
821822
822-@Callable(es)
823+@Callable(et)
823824 func checkWlgXpREADONLY (O) = {
824- let ff = dR(O, 0)
825+ let ff = dS(O, 0)
825826 let fg = ff._1
826827 let fh = ff._2
827828 let aB = (valueOrElse(getInteger(G, au(O)), 0) + fh)
831832
832833
833834
834-@Callable(es)
835-func setNumPrizes (dZ) = if ((es.caller != this))
835+@Callable(et)
836+func setNumPrizes (ea) = if ((et.caller != this))
836837 then throw("Permission denied")
837838 else {
838839 let T = (height / i)
839- $Tuple2([IntegerEntry(W(T), dZ)], dZ)
840+ $Tuple2([IntegerEntry(W(T), ea)], ea)
840841 }
841842
842843
843844
844-@Callable(es)
845+@Callable(et)
845846 func openChest () = if (!(m))
846847 then throw("Temporarily disabled")
847848 else {
848- let eA = dy()
849- if ((eA == eA))
850- then if ((size(es.payments) != 0))
849+ let eB = dz()
850+ if ((eB == eB))
851+ then if ((size(et.payments) != 0))
851852 then throw("No payments required")
852853 else {
853- let dY = ((height / i) - 1)
854- let O = toString(es.caller)
855- let eb = valueOrElse(getInteger(S(O, dY)), 0)
856- if ((0 >= eb))
854+ let dZ = ((height / i) - 1)
855+ let O = toString(et.caller)
856+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
857+ if ((0 >= ec))
857858 then throw("No gems to open the chest")
858- else dX(O)
859+ else dY(O)
859860 }
860861 else throw("Strict value is not equal to itself.")
861862 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = 100000
1111
1212 let e = 86400000
1313
1414 let f = take(drop(this.bytes, 1), 1)
1515
1616 let g = {
1717 let h = f
1818 if ((base58'2W' == h))
1919 then 1440
2020 else if ((base58'2T' == h))
2121 then 60
2222 else throw("Unknown chain")
2323 }
2424
2525 let i = {
2626 let h = f
2727 if ((base58'2W' == h))
2828 then 10080
2929 else if ((base58'2T' == h))
3030 then 180
3131 else throw("Unknown chain")
3232 }
3333
3434 let j = {
3535 let h = f
3636 if ((base58'2W' == h))
3737 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3838 else if ((base58'2T' == h))
3939 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4040 else throw("Unknown chain")
4141 }
4242
4343 let k = {
4444 let h = f
4545 if ((base58'2W' == h))
4646 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
4747 else if ((base58'2T' == h))
4848 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
4949 else throw("Unknown chain")
5050 }
5151
5252 let l = {
5353 let h = f
5454 if ((base58'2W' == h))
5555 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
5656 else if ((base58'2T' == h))
5757 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
5858 else throw("Unknown chain")
5959 }
6060
6161 let m = {
6262 let h = f
6363 if ((base58'2W' == h))
6464 then false
6565 else if ((base58'2T' == h))
6666 then true
6767 else throw("Unknown chain")
6868 }
6969
7070 func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
7171
7272
7373 let q = 1
7474
7575 let r = 2
7676
7777 let s = 4
7878
7979 let t = 5
8080
8181 func u () = "%s__restConfig"
8282
8383
8484 func v () = "%s__rest2Addr"
8585
8686
8787 func w () = "%s__restAddr"
8888
8989
9090 let x = addressFromStringValue(valueOrElse(getString(this, w()), l))
9191
9292 func y (z) = split_4C(n(z, u()), a)
9393
9494
9595 func A (B,C) = valueOrErrorMessage(addressFromString(B[C]), ("Rest cfg doesn't contain address at index " + toString(C)))
9696
9797
9898 let D = 1
9999
100100 let E = 8
101101
102102 let F = y(x)
103103
104104 let G = A(F, D)
105105
106106 let H = A(F, E)
107107
108108 let I = addressFromStringValue(valueOrElse(getString(this, v()), k))
109109
110110 let B = y(I)
111111
112112 let J = A(B, q)
113113
114114 let K = A(B, r)
115115
116116 let L = A(B, s)
117117
118118 let M = A(B, t)
119119
120120 func N (O) = ("lastWeekTxIdByUser_" + O)
121121
122122
123123 let P = "wlg_assetId"
124124
125125 let Q = valueOrErrorMessage(getBinary(K, P), "WLGOLD is not issued yet")
126126
127127 func R (O) = ("userBet_" + O)
128128
129129
130130 func S (O,T) = ((("userWeekTickets_" + O) + "_") + toString(T))
131131
132132
133133 func U (T) = ("totalWeekTickets_" + toString(T))
134134
135135
136136 func V (T) = ("totalWeekParticipants_" + toString(T))
137137
138138
139139 func W (T) = ("numNFT2Draw_" + toString(T))
140140
141141
142142 func X (T) = ("numNFTDrawn_" + toString(T))
143143
144144
145145 func Y (T) = ("weekWinners_" + toString(T))
146146
147147
148148 func Z (aa) = (toInt(value(value(blockInfoByHeight((aa * g))).vrf)) % 4)
149149
150150
151151 func ab (ac) = {
152152 let h = ac
153153 if ($isInstanceOf(h, "Int"))
154154 then {
155155 let ad = h
156156 ad
157157 }
158158 else throw("fail to cast into Int")
159159 }
160160
161161
162162 func ae (af,ag) = {
163163 let ah = pow(10, 0, ag, 0, 0, DOWN)
164164 let ai = toString((af % ah))
165165 let aj = drop(toString(ah), (1 + size(ai)))
166166 (((toString((af / ah)) + ".") + aj) + ai)
167167 }
168168
169169
170170 func ak (al,am,an) = if ((0 >= al))
171171 then throw("maxValue should be > 0")
172172 else {
173173 let ao = sha256_16Kb((am + an))
174174 (toInt(ao) % al)
175175 }
176176
177177
178178 let ap = 100000000
179179
180180 let aq = 3200
181181
182182 let ar = 4000
183183
184184 let as = 3
185185
186186 let at = 100000000000
187187
188188 func au (O) = ("userXP_" + O)
189189
190190
191191 func av (O) = ("userLevel_" + O)
192192
193193
194194 let aw = 10000
195195
196196 func ax (ay) = fraction(aq, pow(ay, 4, ar, 4, 4, DOWN), ap)
197197
198198
199199 func az (aA,aB) = {
200200 let aC = ax(aB)
201201 [aC, (as * (aC - aA))]
202202 }
203203
204204
205205 let aD = 100000000000000
206206
207207 let aE = 400000
208208
209209 let aF = 86400000
210210
211211 let aG = "teamAddr"
212212
213213 let aH = "lastClaimedTime_team"
214214
215215 let aI = "teamAmountLeft"
216216
217217 let aJ = "lastClaimedTime_activities"
218218
219219 let aK = "activitiesAmountLeft"
220220
221221 let aL = "stakersAmountLeft"
222222
223223 func aM (O) = ("lastArbTimeUser_" + O)
224224
225225
226226 func aN (O) = ("lastWlgLimitUser_" + O)
227227
228228
229229 let aO = "wlg_issueTime"
230230
231231 let aP = "wlg_issuedAmount"
232232
233233 func aQ (O) = ("acresStakedAmountByUser_" + O)
234234
235235
236236 func aR (O) = ("wlgStakedAmountByUser_" + O)
237237
238238
239239 let aS = "wlgStakedAmountTotal"
240240
241241 func aT (O) = ("wlgStakedTimeByUser_" + O)
242242
243243
244244 let aU = 1000000
245245
246246 let aV = 100000000
247247
248248 let aW = 200000
249249
250250 let aX = 100000
251251
252252 let aY = 400000
253253
254254 let aZ = 31557600000
255255
256256 let ba = 86400000
257257
258258 let bb = 1000000000
259259
260260 let bc = 800000
261261
262262 let bd = 100000
263263
264264 let be = 100000
265265
266266 let bf = 1731279600000
267267
268268 let bg = "marketingAddr"
269269
270270 let bh = "teamAddr"
271271
272272 let bi = "lastClaimedTime_team"
273273
274274 let bj = "teamAmountLeft"
275275
276276 let bk = "lastClaimedTime_activities"
277277
278278 let bl = "activitiesAmountLeft"
279279
280280 let bm = "stakersAmountLeft"
281281
282282 func bn (O) = ("lastClaimedTimeUser_" + O)
283283
284284
285285 func bo (bp,bq) = fraction(bp, (aY * (bq + 1)), (6 * aU))
286286
287287
288288 let br = "wlg_issue10Time"
289289
290290 let bs = "wlg_issueTime"
291291
292292 let bt = "wlg_issuedAmount"
293293
294294 let bu = "zbill_issuedAmount"
295295
296296 func bv (O) = ("acresStakedAmountByUser_" + O)
297297
298298
299299 let bw = "acresStakedAmountTotal"
300300
301301 let bx = "totalFarmingPower"
302302
303303 let by = 0
304304
305305 let bz = 1
306306
307307 let bA = 2
308308
309309 let bB = 3
310310
311311 let bC = 4
312312
313313 let bD = 1
314314
315315 let bE = 5
316316
317-func bF (O) = ("userFullBonus_" + O)
317+let bF = 100000000
318+
319+func bG (O) = ("userFullBonus_" + O)
318320
319321
320-let bG = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
322+let bH = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
321323
322-func bH (bI) = {
323- let bJ = ((bI + 99999999) / aV)
324- func bK (bL,bM) = if ((bM >= bJ))
325- then bL
326- else (bL + 1)
324+func bI (bJ) = {
325+ let bK = ((bJ + 99999999) / aV)
326+ func bL (bM,bN) = if ((bN >= bK))
327+ then bM
328+ else (bM + 1)
327329
328- let bN = bG
329- let bO = size(bN)
330- let bP = 0
331- func bQ (bR,bS) = if ((bS >= bO))
332- then bR
333- else bK(bR, bN[bS])
330+ let bO = bH
331+ let bP = size(bO)
332+ let bQ = 0
333+ func bR (bS,bT) = if ((bT >= bP))
334+ then bS
335+ else bL(bS, bO[bT])
334336
335- func bT (bR,bS) = if ((bS >= bO))
336- then bR
337+ func bU (bS,bT) = if ((bT >= bP))
338+ then bS
337339 else throw("List size exceeds 10")
338340
339- bT(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bQ(bP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
341+ bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
340342 }
341343
342344
343-func bU (bI) = ((bI * 20) * (bH(bI) + 4))
345+func bV (bJ) = ((bJ * 20) * (bI(bJ) + 4))
344346
345347
346-func bV (bI,bW) = {
347- let bX = bU(bI)
348- $Tuple2(fraction(bX, (aU + bW), aU), bX)
348+func bW (bJ,bX) = {
349+ let bY = bV(bJ)
350+ $Tuple2(fraction(bY, (aU + bX), aU), bY)
349351 }
350352
351353
352-func bY (bZ,J) = {
353- let ca = valueOrElse(getInteger(J, bx), 0)
354- let cb = valueOrElse(getInteger(J, bv(bZ)), 0)
355- let cc = valueOrElse(getInteger(J, bF(bZ)), 0)
356- let cd = bV(cb, cc)
357- let ce = cd._1
358- let cf = cd._2
359-[ca, ce, cf, cc]
354+func bZ (ca,J) = {
355+ let cb = valueOrElse(getInteger(J, bx), 0)
356+ let cc = valueOrElse(getInteger(J, bv(ca)), 0)
357+ let cd = valueOrElse(getInteger(J, bG(ca)), 0)
358+ let ce = bW(cc, cd)
359+ let cf = ce._1
360+ let cg = ce._2
361+[cb, cf, cg, cd]
360362 }
361363
362364
363-let cg = 0
365+let ch = 0
364366
365-let ch = 1
367+let ci = 1
366368
367-let ci = 0
369+let cj = 0
368370
369-let cj = 1
371+let ck = 1
370372
371-let ck = 2
373+let cl = 2
372374
373-let cl = 8
375+let cm = 8
374376
375-let cm = 11
377+let cn = 11
376378
377-let cn = 12
379+let co = 12
378380
379-let co = 15
381+let cp = 15
380382
381-let cp = 16
383+let cq = 16
382384
383-let cq = 19
385+let cr = 19
384386
385-let cr = 23
387+let cs = 23
386388
387-let cs = 24
389+let ct = 24
388390
389-let ct = 25
391+let cu = 25
390392
391-let cu = 26
393+let cv = 26
392394
393-let cv = 27
395+let cw = 27
394396
395-let cw = 28
397+let cx = 28
396398
397-let cx = 29
399+let cy = 29
398400
399-func cy (cz,cA,cB,cC) = {
400- let bp = valueOrErrorMessage(getInteger(cA[bA], bt), "WLGOLD is not issued yet")
401- let cD = assetBalance(cA[by], cB)
402- let cE = (assetBalance(cA[bA], cB) - cC)
403- let cF = assetBalance(cA[bB], cB)
404- let cG = assetBalance(cA[bz], cB)
405- let cH = cA[bC]
406- let cI = (assetBalance(cH, cB) + valueOrElse(getInteger(cH, bu), 0))
407- let cJ = ((cG + cE) + cI)
408- let cK = valueOrErrorMessage(getBinary(cA[bA], "wlg_assetId"), "Not initialized yet")
409- let cL = lastBlock.timestamp
410- let cM = valueOrErrorMessage(getInteger(cA[bA], bs), "Not initialized")
411- let cN = assetBalance(cA[bA], cK)
412- let cO = fraction(bp, aW, aU)
413- let cP = valueOrElse(getInteger(cA[bA], bj), cO)
414- let cQ = valueOrElse(getInteger(cA[bA], bi), cM)
415- let cR = addressFromStringValue(value(getString(cA[bA], bh)))
416- let cS = min([fraction(cO, (cL - cQ), (3 * aZ)), cP])
417- let cT = assetBalance(cR, cK)
418- let cU = fraction(bp, aX, aU)
419- let cV = valueOrElse(getInteger(cA[bA], bl), cU)
420- let cW = valueOrElse(getInteger(cA[bA], bk), cM)
421- let cX = min([fraction(cU, (cL - cW), (3 * aZ)), cV])
422- let cY = assetBalance(cA[by], cK)
423- let cZ = valueOrElse(getInteger(cA[bA], bn(cz)), cM)
424- let da = ((cZ - cM) / aZ)
425- let db = min([cL, (cM + (3 * aZ))])
426- let dc = min([((cL - cM) / aZ), 2])
427- let dd = bY(cz, cA[bz])
428- let de = bo(bp, dc)
429- let df = (cM + (aZ * dc))
430- let dg = (cM + (aZ * (dc - 1)))
431- let dh = fraction(de, (db - cZ), aZ)
432- let di = if ((da == dc))
433- then dh
434- else if ((da == (dc - 1)))
401+func cz (cA,cB,cC,cD) = {
402+ let bp = valueOrErrorMessage(getInteger(cB[bA], bt), "WLGOLD is not issued yet")
403+ let cE = assetBalance(cB[by], cC)
404+ let cF = (assetBalance(cB[bA], cC) - cD)
405+ let cG = assetBalance(cB[bB], cC)
406+ let cH = assetBalance(cB[bz], cC)
407+ let cI = cB[bC]
408+ let cJ = (assetBalance(cI, cC) + valueOrElse(getInteger(cI, bu), 0))
409+ let cK = ((cH + cF) + cJ)
410+ let cL = valueOrErrorMessage(getBinary(cB[bA], "wlg_assetId"), "Not initialized yet")
411+ let cM = lastBlock.timestamp
412+ let cN = valueOrErrorMessage(getInteger(cB[bA], bs), "Not initialized")
413+ let cO = assetBalance(cB[bA], cL)
414+ let cP = fraction(bp, aW, aU)
415+ let cQ = valueOrElse(getInteger(cB[bA], bj), cP)
416+ let cR = valueOrElse(getInteger(cB[bA], bi), cN)
417+ let cS = addressFromStringValue(value(getString(cB[bA], bh)))
418+ let cT = min([fraction(cP, (cM - cR), (3 * aZ)), cQ])
419+ let cU = assetBalance(cS, cL)
420+ let cV = fraction(bp, aX, aU)
421+ let cW = valueOrElse(getInteger(cB[bA], bl), cV)
422+ let cX = valueOrElse(getInteger(cB[bA], bk), cN)
423+ let cY = min([fraction(cV, (cM - cX), (3 * aZ)), cW])
424+ let cZ = assetBalance(cB[by], cL)
425+ let da = valueOrElse(getInteger(cB[bA], bn(cA)), cN)
426+ let db = ((da - cN) / aZ)
427+ let dc = min([cM, (cN + (3 * aZ))])
428+ let dd = min([((cM - cN) / aZ), 2])
429+ let de = bZ(cA, cB[bz])
430+ let df = bo(bp, dd)
431+ let dg = (cN + (aZ * dd))
432+ let dh = (cN + (aZ * (dd - 1)))
433+ let di = fraction(df, (dc - da), aZ)
434+ let dj = if ((db == dd))
435+ then di
436+ else if ((db == (dd - 1)))
435437 then {
436- let dj = fraction(bo(bp, (dc - 1)), (df - cZ), aZ)
437- (dj + dh)
438+ let dk = fraction(bo(bp, (dd - 1)), (dg - da), aZ)
439+ (dk + di)
438440 }
439441 else {
440- let dk = fraction(bo(bp, (dc - 2)), (dg - cZ), aZ)
441- let dj = bo(bp, (dc - 1))
442- ((dk + dj) + dh)
442+ let dl = fraction(bo(bp, (dd - 2)), (dh - da), aZ)
443+ let dk = bo(bp, (dd - 1))
444+ ((dl + dk) + di)
443445 }
444- let dl = valueOrElse(getInteger(cA[bA], bm), 0)
445- let dm = if ((dd[cg] != 0))
446- then fraction(di, dd[ch], dd[cg])
446+ let dm = valueOrElse(getInteger(cB[bA], bm), 0)
447+ let dn = if ((de[ch] != 0))
448+ then fraction(dj, de[ci], de[ch])
447449 else 0
448- let dn = valueOrElse(getInteger(cA[bA], br), bf)
449- let do = fraction(bb, max([(cL - dn), 0]), ba)
450- let dp = fraction(do, bd, aU)
451- let dq = fraction(do, be, aU)
452- let dr = max([(cL - max([bf, cZ])), 0])
453- let ds = if ((dd[cg] != 0))
454- then fraction(fraction(fraction(bb, dr, ba), dd[ch], dd[cg]), bc, aU)
450+ let do = valueOrElse(getInteger(cB[bA], br), bf)
451+ let dp = fraction(bb, max([(cM - do), 0]), ba)
452+ let dq = fraction(dp, bd, aU)
453+ let dr = fraction(dp, be, aU)
454+ let ds = max([(cM - max([bf, da])), 0])
455+ let dt = if ((de[ch] != 0))
456+ then fraction(fraction(fraction(bb, ds, ba), de[ci], de[ch]), bc, aU)
455457 else 0
456- let dt = max([bf, cL])
457- let du = valueOrElse(getInteger(cA[bz], bw), 0)
458-[bp, cN, fraction(cJ, aV, bp), cJ, cD, cG, cE, cF, cM, cQ, cO, cP, cS, cT, cU, cV, cX, cY, dc, dl, de, cZ, cI, dm, db, do, dp, dq, ds, dt, dd[cg], du]
458+ let du = max([bf, cM])
459+ let dv = valueOrElse(getInteger(cB[bz], bw), 0)
460+[bp, cO, fraction(cK, aV, bp), cK, cE, cH, cF, cG, cN, cR, cP, cQ, cT, cU, cV, cW, cY, cZ, dd, dm, df, da, cJ, dn, dc, dp, dq, dr, dt, du, de[ch], dv]
459461 }
460462
461463
462-let dv = "profitAddr"
464+let dw = "profitAddr"
463465
464-let dw = "stakersAmountPaidTotal"
466+let dx = "stakersAmountPaidTotal"
465467
466-func dx (O) = ("stakersAmountPaidUser_" + O)
468+func dy (O) = ("stakersAmountPaidUser_" + O)
467469
468470
469-func dy () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
471+func dz () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
470472
471473
472-func dz (O) = {
473- let dA = valueOrElse(getInteger(aM(O)), 0)
474- let dB = valueOrElse(getInteger(J, aQ(O)), 0)
475- let dC = valueOrElse(getInteger(aN(O)), dB)
476- let dD = (dC + fraction(dB, (lastBlock.timestamp - dA), e))
477- min([dD, dB])
474+func dA (O) = {
475+ let dB = valueOrElse(getInteger(aM(O)), 0)
476+ let dC = valueOrElse(getInteger(J, aQ(O)), 0)
477+ let dD = valueOrElse(getInteger(aN(O)), dC)
478+ let dE = (dD + fraction(dC, (lastBlock.timestamp - dB), e))
479+ min([dE, dC])
478480 }
479481
480482
481-func dE (O) = {
482- let dF = cy(O, [I, J, K, L, M], j, 0)
483- let dG = bn(O)
484- let cZ = valueOrElse(getInteger(dG), 0)
485- let dH = dF[cs]
486- if ((cZ == dH))
483+func dF (O) = {
484+ let dG = cz(O, [I, J, K, L, M], j, 0)
485+ let dH = bn(O)
486+ let da = valueOrElse(getInteger(dH), 0)
487+ let dI = dG[ct]
488+ if ((da == dI))
487489 then $Tuple2(nil, 0)
488490 else {
489- let cL = lastBlock.timestamp
490- let cM = dF[cl]
491- let cP = dF[cm]
492- let dI = (dF[cn] + dF[cv])
493- let dJ = if ((dI > 0))
494- then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dI, Q)]
491+ let cM = lastBlock.timestamp
492+ let cN = dG[cm]
493+ let cQ = dG[cn]
494+ let dJ = (dG[co] + dG[cw])
495+ let dK = if ((dJ > 0))
496+ then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dJ, Q)]
495497 else nil
496- let cV = dF[co]
497- let dK = dF[cp]
498- let dL = if ((dK > 0))
499- then [ScriptTransfer(x, dK, Q)]
498+ let cW = dG[cp]
499+ let dL = dG[cq]
500+ let dM = if ((dL > 0))
501+ then [ScriptTransfer(x, dL, Q)]
500502 else nil
501- let dM = dF[cu]
502- let dN = if ((dM > 0))
503- then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dM, Q)]
503+ let dN = dG[cv]
504+ let dO = if ((dN > 0))
505+ then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dN, Q)]
504506 else nil
505- let dm = dF[cr]
506- let dO = dx(O)
507- let dP = (dm + dF[cw])
508- let dQ = dF[ct]
509- $Tuple2(((([Reissue(Q, dQ, true), IntegerEntry(aP, (dF[ci] + dQ)), IntegerEntry(br, dF[cx]), IntegerEntry(dO, (valueOrElse(getInteger(dO), 0) + dm)), IntegerEntry(dw, (valueOrElse(getInteger(dw), 0) + dm)), IntegerEntry(aL, (dF[cq] - dm)), IntegerEntry(aI, ((cP - dI) + dF[cv])), IntegerEntry(aH, cL), IntegerEntry(aK, (cV - dK)), IntegerEntry(aJ, cL), IntegerEntry(dG, dH)] ++ dJ) ++ dL) ++ dN), dP)
507+ let dn = dG[cs]
508+ let dP = dy(O)
509+ let dQ = (dn + dG[cx])
510+ let dR = dG[cu]
511+ $Tuple2(((([Reissue(Q, dR, true), IntegerEntry(aP, (dG[cj] + dR)), IntegerEntry(br, dG[cy]), IntegerEntry(dP, (valueOrElse(getInteger(dP), 0) + dn)), IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + dn)), IntegerEntry(aL, (dG[cr] - dn)), IntegerEntry(aI, ((cQ - dJ) + dG[cw])), IntegerEntry(aH, cM), IntegerEntry(aK, (cW - dL)), IntegerEntry(aJ, cM), IntegerEntry(dH, dI)] ++ dK) ++ dM) ++ dO), dQ)
510512 }
511513 }
512514
513515
514-func dR (O,dS) = {
515- let cL = lastBlock.timestamp
516- let dT = aT(O)
517- let dU = aR(O)
518- let dA = valueOrElse(getInteger(dT), 0)
519- let dV = valueOrElse(getInteger(dU), 0)
520- let dW = valueOrElse(getInteger(aS), 0)
521- let ay = fraction(fraction(aw, dV, at), (dA - cL), aF)
522- $Tuple3([IntegerEntry(dT, cL), IntegerEntry(dU, (dV + dS)), IntegerEntry(aS, (dW + dS))], ay, dV)
516+func dS (O,dT) = {
517+ let cM = lastBlock.timestamp
518+ let dU = aT(O)
519+ let dV = aR(O)
520+ let dB = valueOrElse(getInteger(dU), 0)
521+ let dW = valueOrElse(getInteger(dV), 0)
522+ let dX = valueOrElse(getInteger(aS), 0)
523+ let ay = fraction(fraction(aw, dW, at), (dB - cM), aF)
524+ $Tuple3([IntegerEntry(dU, cM), IntegerEntry(dV, (dW + dT)), IntegerEntry(aS, (dX + dT))], ay, dW)
523525 }
524526
525527
526-func dX (O) = {
528+func dY (O) = {
527529 let T = (height / i)
528- let dY = (T - 1)
529- let dZ = valueOrElse(getInteger(W(dY)), bE)
530- let ea = valueOrElse(getInteger(X(dY)), 0)
531- let eb = valueOrElse(getInteger(S(O, dY)), 0)
532- if ((0 >= eb))
530+ let dZ = (T - 1)
531+ let ea = valueOrElse(getInteger(W(dZ)), bE)
532+ let eb = valueOrElse(getInteger(X(dZ)), 0)
533+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
534+ if ((0 >= ec))
533535 then $Tuple2(nil, unit)
534536 else {
535- let ec = valueOrElse(getInteger(U(dY)), 0)
536- if ((0 >= ec))
537- then $Tuple2([DeleteEntry(S(O, dY))], unit)
537+ let ed = valueOrElse(getInteger(U(dZ)), 0)
538+ if ((0 >= ed))
539+ then $Tuple2([DeleteEntry(S(O, dZ))], unit)
538540 else {
539541 let an = value(value(blockInfoByHeight((T * i))).vrf)
540542 let am = fromBase58String(split(valueOrElse(getString(N(O)), "42_DEFAULT"), "_")[1])
541- let ed = ak(ec, am, an)
542- if (((eb * dZ) > ed))
543+ let ee = ak(ed, am, an)
544+ if (((ec * ea) > ee))
543545 then {
544- let ee = invoke(J, "issueNFT", [O, bD], nil)
545- let ef = getString(Y(dY))
546- let eg = if (isDefined(ef))
547- then ((value(ef) + "_") + O)
546+ let ef = invoke(J, "issueNFT", [O, bD], nil)
547+ let eg = getString(Y(dZ))
548+ let eh = if (isDefined(eg))
549+ then ((value(eg) + "_") + O)
548550 else O
549- $Tuple2([IntegerEntry(X(dY), (ea + 1)), DeleteEntry(S(O, dY)), StringEntry(Y(dY), eg)], ee)
551+ $Tuple2([IntegerEntry(X(dZ), (eb + 1)), DeleteEntry(S(O, dZ)), StringEntry(Y(dZ), eh)], ef)
550552 }
551553 else {
552- let eh = (ak(9, (base58'29' + am), an) + 1)
553- let ei = fraction(eb, eh, 10)
554- $Tuple2([DeleteEntry(S(O, dY)), IntegerEntry(S(O, T), ei)], ei)
554+ let ei = (ak(9, (base58'29' + am), an) + 1)
555+ let ej = fraction(ec, ei, 10)
556+ $Tuple2([DeleteEntry(S(O, dZ)), IntegerEntry(S(O, T), ej)], ej)
555557 }
556558 }
557559 }
558560 }
559561
560562
561-func ej (O,ek) = {
563+func ek (O,el) = {
562564 let T = (height / i)
563- let el = S(O, T)
564- let em = split(ek, "_")
565- let en = valueOrElse(getInteger(U(T)), 0)
566- let eo = valueOrElse(getInteger(el), 0)
567- let ep = if ((Z(parseIntValue(em[0])) == parseIntValue(em[1])))
565+ let em = S(O, T)
566+ let en = split(el, "_")
567+ let eo = valueOrElse(getInteger(U(T)), 0)
568+ let ep = valueOrElse(getInteger(em), 0)
569+ let eq = if ((Z(parseIntValue(en[0])) == parseIntValue(en[1])))
568570 then 1
569571 else 0
570- let eq = valueOrElse(getInteger(V(T)), 0)
571- let er = if (if ((eo == 0))
572- then (ep == 1)
572+ let er = valueOrElse(getInteger(V(T)), 0)
573+ let es = if (if ((ep == 0))
574+ then (eq == 1)
573575 else false)
574- then [IntegerEntry(V(T), (eq + 1))]
576+ then [IntegerEntry(V(T), (er + 1))]
575577 else nil
576- $Tuple2(if ((ep == 0))
578+ $Tuple2(if ((eq == 0))
577579 then nil
578- else ((er :+ IntegerEntry(el, (eo + ep))) :+ IntegerEntry(U(T), (en + ep))), ep)
580+ else ((es :+ IntegerEntry(em, (ep + eq))) :+ IntegerEntry(U(T), (eo + eq))), eq)
579581 }
580582
581583
582-@Callable(es)
583-func constructorV1 (et,eu,cR,ev) = if ((es.caller != this))
584+@Callable(et)
585+func constructorV1 (eu,ev,cS,ew) = if ((et.caller != this))
584586 then throw("Permission denied")
585587 else if (isDefined(getBinary(P)))
586588 then throw("Already initialized")
587589 else {
588590 let bp = aD
589- let ew = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
590- let ex = calculateAssetId(ew)
591-[ew, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dw, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ex), StringEntry(w(), et), StringEntry(bg, eu), StringEntry(aG, cR), StringEntry(dv, ev)]
591+ let ex = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
592+ let ey = calculateAssetId(ex)
593+[ex, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dx, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ey), StringEntry(w(), eu), StringEntry(bg, ev), StringEntry(aG, cS), StringEntry(dw, ew)]
592594 }
593595
594596
595597
596-@Callable(es)
597-func constructorV2 (ey) = if ((es.caller != this))
598+@Callable(et)
599+func constructorV2 (ez) = if ((et.caller != this))
598600 then throw("Permission denied")
599- else [StringEntry(v(), ey)]
601+ else [StringEntry(v(), ez)]
600602
601603
602604
603-@Callable(es)
604-func buyWlg (ez) = {
605- let eA = dy()
606- if ((eA == eA))
607- then if ((size(es.payments) != 1))
605+@Callable(et)
606+func buyWlg (eA) = {
607+ let eB = dz()
608+ if ((eB == eB))
609+ then if ((size(et.payments) != 1))
608610 then throw("exactly 1 payment must be attached")
609611 else {
610- let eB = es.payments[0]
611- let eC = eB.amount
612- if (if (!(isDefined(eB.assetId)))
612+ let eC = et.payments[0]
613+ let eD = eC.amount
614+ if (if (!(isDefined(eC.assetId)))
613615 then true
614- else (value(eB.assetId) != j))
616+ else (value(eC.assetId) != j))
615617 then throw("USDT payments only!")
616618 else {
617- let eD = es.caller
618- let O = toString(eD)
619- if ((d > eC))
619+ let eE = et.caller
620+ let O = toString(eE)
621+ if ((d > eD))
620622 then throw((("You can trade min " + ae(d, 6)) + " USDT"))
621623 else {
622- let dF = cy("", [I, J, K, L, M], j, eC)
623- let eE = dF[ci]
624- let eF = dF[ck]
625- let eG = fraction(eF, 6, 5, CEILING)
626- let eH = fraction(eC, c, eG)
627- let eI = dz(O)
628- if ((eH > eI))
629- then throw((("You can get max " + ae(eI, 8)) + " WLGOLD at the moment"))
630- else if ((ez > eH))
624+ let dG = cz("", [I, J, K, L, M], j, eD)
625+ let eF = dG[cj]
626+ let eG = dG[cl]
627+ let eH = fraction(eG, 6, 5, CEILING)
628+ let eI = fraction(eD, c, eH)
629+ let eJ = dA(O)
630+ if ((eI > eJ))
631+ then throw((("You can get max " + ae(eJ, 8)) + " WLGOLD at the moment"))
632+ else if ((eA > eI))
631633 then throw("Price changed during operation, please try again")
632634 else {
633- let eJ = (eC / 6)
634- $Tuple2([Reissue(Q, eH, true), IntegerEntry(aP, (eE + eH)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eI - eH)), ScriptTransfer(addressFromStringValue(value(getString(dv))), eJ, j), ScriptTransfer(eD, eH, Q)], eA)
635+ let eK = (eD / 6)
636+ $Tuple2([Reissue(Q, eI, true), IntegerEntry(aP, (eF + eI)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eI)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eI, Q)], eB)
635637 }
636638 }
637639 }
638640 }
639641 else throw("Strict value is not equal to itself.")
640642 }
641643
642644
643645
644-@Callable(es)
645-func buyWlgREADONLY (o,eC) = {
646- let dF = cy("", [I, J, K, L, M], j, eC)
647- let eF = dF[ck]
648- let eG = fraction(eF, 6, 5, CEILING)
649- let eH = fraction(eC, c, eG)
650- let eI = dz(o)
651- let eK = fraction(eI, eG, c)
652- let eJ = (eC / 6)
653- $Tuple2(nil, [eH, d, eK, eJ])
646+@Callable(et)
647+func buyWlgREADONLY (o,eD) = {
648+ let dG = cz("", [I, J, K, L, M], j, eD)
649+ let eG = dG[cl]
650+ let eH = fraction(eG, 6, 5, CEILING)
651+ let eI = fraction(eD, c, eH)
652+ let eJ = dA(o)
653+ let eL = fraction(eJ, eH, c)
654+ let eK = (eD / 6)
655+ $Tuple2(nil, [eI, d, eL, eK])
654656 }
655657
656658
657659
658-@Callable(es)
659-func sellWlg (eL) = {
660- let eA = dy()
661- if ((eA == eA))
662- then if ((size(es.payments) != 1))
660+@Callable(et)
661+func sellWlg (eM) = {
662+ let eB = dz()
663+ if ((eB == eB))
664+ then if ((size(et.payments) != 1))
663665 then throw("exactly 1 payment must be attached")
664666 else {
665- let eB = es.payments[0]
666- let eM = eB.amount
667- let eD = es.caller
668- let O = toString(eD)
669- let eI = dz(O)
670- if ((eM > eI))
671- then throw((("You can spend max " + ae(eI, 8)) + " WLGOLD at the moment"))
672- else if (if (!(isDefined(eB.assetId)))
667+ let eC = et.payments[0]
668+ let eN = eC.amount
669+ let eE = et.caller
670+ let O = toString(eE)
671+ let eJ = dA(O)
672+ if ((eN > eJ))
673+ then throw((("You can spend max " + ae(eJ, 8)) + " WLGOLD at the moment"))
674+ else if (if (!(isDefined(eC.assetId)))
673675 then true
674- else (value(eB.assetId) != Q))
676+ else (value(eC.assetId) != Q))
675677 then throw("WLGOLD payments only!")
676678 else {
677- let dF = cy("", [I, J, K, L, M], j, 0)
678- let eE = dF[ci]
679- let eN = (dF[ck] / 2)
680- let eC = fraction(eM, eN, c)
681- if ((d > eC))
679+ let dG = cz("", [I, J, K, L, M], j, 0)
680+ let eF = dG[cj]
681+ let eO = (dG[cl] / 2)
682+ let eD = fraction(eN, eO, c)
683+ if ((d > eD))
682684 then throw((("You can trade min " + ae(d, 6)) + " USDT"))
683- else if ((eL > eC))
685+ else if ((eM > eD))
684686 then throw("Price changed during operation, please try again")
685687 else {
686- let eJ = (eC / 5)
687- $Tuple2([Burn(Q, eM), IntegerEntry(aP, (eE - eM)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eI - eM)), ScriptTransfer(addressFromStringValue(value(getString(dv))), eJ, j), ScriptTransfer(eD, eC, j)], eA)
688+ let eK = (eD / 5)
689+ $Tuple2([Burn(Q, eN), IntegerEntry(aP, (eF - eN)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eN)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eD, j)], eB)
688690 }
689691 }
690692 }
691693 else throw("Strict value is not equal to itself.")
692694 }
693695
694696
695697
696-@Callable(es)
697-func sellWlgREADONLY (o,eM) = {
698- let eI = dz(o)
699- let dF = cy("", [I, J, K, L, M], j, 0)
700- let eN = (dF[ck] / 2)
701- let eC = fraction(eM, eN, c)
702- let eO = fraction(d, c, eN)
703- let eJ = (eC / 5)
704- $Tuple2(nil, [eC, eO, eI, eJ])
698+@Callable(et)
699+func sellWlgREADONLY (o,eN) = {
700+ let eJ = dA(o)
701+ let dG = cz("", [I, J, K, L, M], j, 0)
702+ let eO = (dG[cl] / 2)
703+ let eD = fraction(eN, eO, c)
704+ let eP = fraction(d, c, eO)
705+ let eK = (eD / 5)
706+ $Tuple2(nil, [eD, eP, eJ, eK])
705707 }
706708
707709
708710
709-@Callable(es)
711+@Callable(et)
710712 func claim () = {
711- let eA = dy()
712- if ((eA == eA))
713- then if ((size(es.payments) != 0))
713+ let eB = dz()
714+ if ((eB == eB))
715+ then if ((size(et.payments) != 0))
714716 then throw("No payments required")
715717 else {
716- let eP = dE(toString(es.caller))
717- let eQ = eP._1
718- let eR = eP._2
719- $Tuple2((eQ :+ ScriptTransfer(es.caller, eR, Q)), eA)
718+ let eQ = dF(toString(et.caller))
719+ let eR = eQ._1
720+ let eS = eQ._2
721+ $Tuple2((eR :+ ScriptTransfer(et.caller, eS, Q)), eB)
720722 }
721723 else throw("Strict value is not equal to itself.")
722724 }
723725
724726
725727
726-@Callable(es)
727-func onStakeUnstakeLand (O) = if (if (if ((es.caller != G))
728- then (es.caller != H)
728+@Callable(et)
729+func onStakeUnstakeLand (O) = if (if (if ((et.caller != G))
730+ then (et.caller != H)
729731 else false)
730- then (es.caller != J)
732+ then (et.caller != J)
731733 else false)
732734 then throw("Permission denied")
733735 else {
734- let eS = dE(O)
735- let eQ = eS._1
736- let eR = eS._2
737- $Tuple2(if ((eR > 0))
738- then (eQ :+ ScriptTransfer(addressFromStringValue(O), eR, Q))
739- else eQ, eR)
736+ let eT = dF(O)
737+ let eR = eT._1
738+ let eS = eT._2
739+ $Tuple2(if ((eS > 0))
740+ then (eR :+ ScriptTransfer(addressFromStringValue(O), eS, Q))
741+ else eR, eS)
740742 }
741743
742744
743745
744-@Callable(es)
745-func burnWlgold (eM) = if ((es.caller != J))
746+@Callable(et)
747+func burnWlgold (eN) = if ((et.caller != J))
746748 then throw("Permission denied")
747749 else {
748- let dF = cy("", [I, J, K, L, M], j, 0)
749- if ((eM > dF[cj]))
750- then throw(((("Only " + ae(dF[cj], 8)) + " WLGOLD left on contract, can't burn ") + ae(eM, 8)))
750+ let dG = cz("", [I, J, K, L, M], j, 0)
751+ if ((eN > dG[ck]))
752+ then throw(((("Only " + ae(dG[ck], 8)) + " WLGOLD left on contract, can't burn ") + ae(eN, 8)))
751753 else {
752- let eT = (dF[ci] - eM)
753- $Tuple2([Burn(Q, eM), IntegerEntry(aP, eT)], eT)
754+ let eU = (dG[cj] - eN)
755+ $Tuple2([Burn(Q, eN), IntegerEntry(aP, eU)], eU)
754756 }
755757 }
756758
757759
758760
759-@Callable(es)
760-func betForTicket (eU) = {
761- let eA = dy()
762- if ((eA == eA))
763- then if ((size(es.payments) != 0))
761+@Callable(et)
762+func betForTicket (eV) = {
763+ let eB = dz()
764+ if ((eB == eB))
765+ then if ((size(et.payments) != 0))
764766 then throw("No payments required")
765767 else {
766- let O = toString(es.caller)
767- let dY = ((height / i) - 1)
768- let eb = valueOrElse(getInteger(S(O, dY)), 0)
769- let ec = valueOrElse(getInteger(U(dY)), 0)
770- if (if ((eb > 0))
771- then (ec > 0)
768+ let O = toString(et.caller)
769+ let dZ = ((height / i) - 1)
770+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
771+ let ed = valueOrElse(getInteger(U(dZ)), 0)
772+ if (if ((ec > 0))
773+ then (ed > 0)
772774 else false)
773775 then throw("Please open the chest first")
774- else if (((eU / 4) != 0))
776+ else if (((eV / 4) != 0))
775777 then throw("Invalid bet: should be 0..3")
776778 else {
777- let eV = (height % g)
778- if ((eV > (g - 3)))
779- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eV))) + " blocks"))
779+ let eW = (height % g)
780+ if ((eW > (g - 3)))
781+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eW))) + " blocks"))
780782 else {
781- let eW = valueOrElse(getInteger(J, bv(O)), 0)
782- let eX = bH(eW)
783- if ((eX == 0))
784- then throw("You need to stake some ACRES to bet")
783+ let eX = valueOrElse(getInteger(J, bv(O)), 0)
784+ if ((bF > eX))
785+ then throw((("You need to stake at least " + ae(bF, 8)) + " ACRES to bet"))
785786 else {
786787 let eY = ((height / g) + 1)
787788 let eZ = R(O)
788789 let fa = getString(eZ)
789- let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eU)))
790+ let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eV)))
790791 if (isDefined(fa))
791792 then {
792793 let fc = value(fa)
793794 if ((split(fc, "_")[0] == toString(eY)))
794795 then throw("You already bet for tomorrow")
795796 else {
796- let fd = ej(O, fc)
797+ let fd = ek(O, fc)
797798 $Tuple2((fd._1 :+ fb), fd._2)
798799 }
799800 }
800801 else $Tuple2([fb], 0)
801802 }
802803 }
803804 }
804805 }
805806 else throw("Strict value is not equal to itself.")
806807 }
807808
808809
809810
810-@Callable(es)
811-func takeWlgXp (O) = if ((es.caller != G))
811+@Callable(et)
812+func takeWlgXp (O) = if ((et.caller != G))
812813 then throw("Permission denied")
813814 else {
814- let fe = dR(O, 0)
815- let eQ = fe._1
815+ let fe = dS(O, 0)
816+ let eR = fe._1
816817 let ay = fe._2
817- $Tuple2(eQ, ay)
818+ $Tuple2(eR, ay)
818819 }
819820
820821
821822
822-@Callable(es)
823+@Callable(et)
823824 func checkWlgXpREADONLY (O) = {
824- let ff = dR(O, 0)
825+ let ff = dS(O, 0)
825826 let fg = ff._1
826827 let fh = ff._2
827828 let aB = (valueOrElse(getInteger(G, au(O)), 0) + fh)
828829 let fi = az(valueOrElse(getInteger(G, av(O)), 0), aB)
829830 $Tuple2(nil, (fi :+ aB))
830831 }
831832
832833
833834
834-@Callable(es)
835-func setNumPrizes (dZ) = if ((es.caller != this))
835+@Callable(et)
836+func setNumPrizes (ea) = if ((et.caller != this))
836837 then throw("Permission denied")
837838 else {
838839 let T = (height / i)
839- $Tuple2([IntegerEntry(W(T), dZ)], dZ)
840+ $Tuple2([IntegerEntry(W(T), ea)], ea)
840841 }
841842
842843
843844
844-@Callable(es)
845+@Callable(et)
845846 func openChest () = if (!(m))
846847 then throw("Temporarily disabled")
847848 else {
848- let eA = dy()
849- if ((eA == eA))
850- then if ((size(es.payments) != 0))
849+ let eB = dz()
850+ if ((eB == eB))
851+ then if ((size(et.payments) != 0))
851852 then throw("No payments required")
852853 else {
853- let dY = ((height / i) - 1)
854- let O = toString(es.caller)
855- let eb = valueOrElse(getInteger(S(O, dY)), 0)
856- if ((0 >= eb))
854+ let dZ = ((height / i) - 1)
855+ let O = toString(et.caller)
856+ let ec = valueOrElse(getInteger(S(O, dZ)), 0)
857+ if ((0 >= ec))
857858 then throw("No gems to open the chest")
858- else dX(O)
859+ else dY(O)
859860 }
860861 else throw("Strict value is not equal to itself.")
861862 }
862863
863864

github/deemru/w8io/026f985 
244.93 ms