tx · AMNt9ra4rKnsKcEZJ3ZRzbmRLs294rmhdeZ5wcWjWV6g

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.06.13 17:55 [1568713] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "AMNt9ra4rKnsKcEZJ3ZRzbmRLs294rmhdeZ5wcWjWV6g", "fee": 1400000, "feeAssetId": null, "timestamp": 1623596123848, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "62U1rEazbXRgWr8w7FhmNfr782pRU33a5tWS3xCmgxp96woJ14235wkJ6RRar8j6H8Dzwzx1wqRhBvUapYjo2QYx" ], "script": "base64:AAIEAAAAAAAAACUIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgSABIAAAAAWwAAAAAMYWRtaW5QdWJLZXkxAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAMYWRtaW5QdWJLZXkyAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAMYWRtaW5QdWJLZXkzAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwAAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0AgAAABVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAAAlrZXlTV09QaWQCAAAAB1NXT1BfaWQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAEGtleUF2YWlsYWJsZVNXT1ACAAAAD19hdmFpbGFibGVfU1dPUAAAAAAVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAAGa2V5QVBZAgAAAANhcHkAAAAAFmtQcmV2aW91c1RvdGFsVm90ZVNXT1ACAAAAGHByZXZpb3VzX3RvdGFsX3ZvdGVfU1dPUAAAAAATa2V5U3dvcFllYXJFbWlzc2lvbgIAAAASc3dvcF95ZWFyX2VtaXNzaW9uAAAAAA9rZXlCYWxhbmNlY3BtbUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZWNwbW1CAgAAAA9CX2Fzc2V0X2JhbGFuY2UAAAAAIWtIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1Y1ZvdGluZwIAAAAeX2hhcnZlc3RfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAACVrSGFydmVzdFVzZXJQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nAgAAACNfaGFydmVzdF91c2VyX3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAAZa2V5TGltaXRTaGFyZUZpcnN0SGFydmVzdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa2V5QXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAAC2tleUFzc2V0SWRCAgAAAApCX2Fzc2V0X2lkAAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAABNrZXlmaXJzdEhhcnZlc3RDcG1tAgAAAA1maXJzdF9oYXJ2ZXN0AAAAAA5rZXlUZW1wUHJldlN1bQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAABFnb3Zlcm5hbmNlQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVKr6ad6B9BNShco/LjqIUbMZ6pgcWfINLQAAAAAGd2FsbGV0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU3z1Ll4lYWd4V4ORRC1bdPXpfvbV/hSGJAAAAAA12b3RpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUGjZ+31einSdpXP6/9ybU5/uhw2g+IMp/AAAAABxhZG1pbkluY3JlYXNlSW50ZXJlc3RBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU3z1Ll4lYWd4V4ORRC1bdPXpfvbV/hSGJAAAAAA5vbmVXZWVrSW5CbG9jawAAAAAAAAAnegAAAAAOdG90YWxWb3RlU2hhcmUAAAAAAlQL5AAAAAAAC3NjYWxlVmFsdWUxAAAAAAAAAAAKAAAAAAtzY2FsZVZhbHVlMwAAAAAAAAAD6AAAAAALc2NhbGVWYWx1ZTUAAAAAAAABhqAAAAAAC3NjYWxlVmFsdWU2AAAAAAAAD0JAAAAAAAtzY2FsZVZhbHVlOAAAAAAABfXhAAAAAAAMc2NhbGVWYWx1ZTExAAAAABdIdugAAQAAAAtzdHJBc3NldElkQQAAAAEAAAAEcG9vbAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEcG9vbAUAAAALa2V5QXNzZXRJZEEBAAAAC3N0ckFzc2V0SWRCAAAAAQAAAARwb29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAARwb29sBQAAAAtrZXlBc3NldElkQgEAAAAIYXNzZXRJZEEAAAABAAAABHBvb2wDCQAAAAAAAAIJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wBAAAACGFzc2V0SWRCAAAAAQAAAARwb29sAwkAAAAAAAACCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAAAAAAtrQmFzZVBlcmlvZAIAAAALYmFzZV9wZXJpb2QAAAAADWtQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAADGtTdGFydEhlaWdodAIAAAAMc3RhcnRfaGVpZ2h0AAAAABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AgAAABRmaXJzdF9oYXJ2ZXN0X2hlaWdodAAAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAYZHVyYXRpb25fZnVsbF92b3RlX3Bvd2VyAAAAAA1rTWluVm90ZVBvd2VyAgAAAA5taW5fdm90ZV9wb3dlcgAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAC2tCYXNlUGVyaW9kAgAAABFFbXB0eSBrQmFzZVBlcmlvZAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAAxrU3RhcnRIZWlnaHQCAAAAEkVtcHR5IGtTdGFydEhlaWdodAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa1BlcmlvZExlbmd0aAIAAAATRW1wdHkga1BlcmlvZExlbmd0aAAAAAAVZHVyYXRpb25GdWxsVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAcRW1wdHkga0R1cmF0aW9uRnVsbFZvdGVQb3dlcgAAAAAMbWluVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa01pblZvdGVQb3dlcgIAAAATRW1wdHkga01pblZvdGVQb3dlcgAAAAAIaXNBY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAAKY3VyclBlcmlvZAkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAQAAAA1nZXRMaW1pdFRva2VuAAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAARwb29sBQAAABlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0AAAAAAAAAAAAAAAAAANBUFkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAABmtleUFQWQAAAAAQU3dvcFllYXJFbWlzc2lvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAATa2V5U3dvcFllYXJFbWlzc2lvbgEAAAAKYXNzZXROYW1lQQAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRBAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAKYXNzZXROYW1lQgAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRCAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAEU1dPUAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAlrZXlTV09QaWQBAAAADmlzRmlyc3RIYXJ2ZXN0AAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHBvb2wFAAAAE2tleWZpcnN0SGFydmVzdENwbW0HAQAAABVnZXRIZWlnaHRGaXJzdEhhcnZlc3QAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAVa2V5Rmlyc3RIYXJ2ZXN0SGVpZ2h0AAAAAAAAAAAAAQAAAAtnZXRCYWxhbmNlQQAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQQkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1BAQAAAAtnZXRCYWxhbmNlQgAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1CAQAAABJnZXRTaGFyZUxpbWl0VG9rZW4AAAABAAAABHBvb2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAARwb29sBQAAAAtrU2hhcmVMaW1pdAkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAALa1NoYXJlTGltaXQBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAEAAAAEcG9vbAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAJAAPwAAAAAgUAAAAEdGhpcwUAAAACaWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCAkAA+8AAAABBQAAAAR0aGlzAAAACWF2YWlsYWJsZQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAQAAAAIc3RyaW5nSWQJAAJYAAAAAQUAAAACaWQEAAAABGluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAJpZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAIc3RyaW5nSWQCAAAADiBkb2Vzbid0IGV4aXN0CQAFFQAAAAMFAAAACHN0cmluZ0lkCAUAAAAEaW5mbwAAAARuYW1lCAUAAAAEaW5mbwAAAAhkZWNpbWFscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAICQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAA5jYWxjU2NhbGVWYWx1ZQAAAAIAAAAIYXNzZXRJZDEAAAAIYXNzZXRJZDIEAAAAEGFzc2V0SWQxRGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACGFzc2V0SWQxAAAACGRlY2ltYWxzBAAAABBhc3NldElkMkRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhc3NldElkMgAAAAhkZWNpbWFscwQAAAALc2NhbGVEaWdpdHMJAABkAAAAAgkAAGUAAAACBQAAABBhc3NldElkMkRlY2ltYWxzBQAAABBhc3NldElkMURlY2ltYWxzAAAAAAAAAAAICQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAC3NjYWxlRGlnaXRzAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhIQUxGRE9XTgEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACAAAABHBvb2wAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAABHVzZXIFAAAAEGtleUF2YWlsYWJsZVNXT1AAAAAAAAAAAAABAAAACnJld2FyZEluZm8AAAABAAAABHBvb2wEAAAAGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uAAAAAAAAAAAABAAAABpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABFyZXdhcmRQb29sQ3VycmVudAkAAGsAAAADBQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUAAAAZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUAAAAOdG90YWxWb3RlU2hhcmUEAAAAEnJld2FyZFBvb2xQcmV2aW91cwkAAGsAAAADBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMFAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAA50b3RhbFZvdGVTaGFyZQMDCQAAZgAAAAIFAAAAEXJld2FyZFBvb2xDdXJyZW50BQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAYJAABmAAAAAgUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAACAAAAAQIAAABicmV3YXJkUG9vbEN1cnJlbnQgPiB0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudCBvciByZXdhcmRQb29sUHJldmlvdXMgPiB0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAUWAAAABAUAAAARcmV3YXJkUG9vbEN1cnJlbnQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQAAAARwb29sBAAAAAxsYXN0SW50ZXJlc3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAFFAAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAMbGFzdEludGVyZXN0AQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAACXVzZXJTaGFyZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAABhrZXlVc2VyU2hhcmVUb2tlbnNMb2NrZWQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0CQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAQAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBAAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BAAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAJdXNlclNoYXJlBQAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUAAAAAAAAAAAAJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQBAAAADGNhbGNJbnRlcmVzdAAAAAoAAAASbGFzdEludGVyZXN0SGVpZ2h0AAAAEnJld2FyZFVwZGF0ZUhlaWdodAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAADGxhc3RJbnRlcmVzdAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sAAAAQc2hhcmVUb2tlbkxvY2tlZAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrAAAADHNoYXJlQXNzZXRJZAAAAApzY2FsZVZhbHVlAAAACXBtdEFtb3VudAMJAAAAAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAAAAAAAAAAAAAAAAAAAAAAAAAMJAQAAAAIhPQAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAADAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAIhPQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQBAAAACWNsYWltQ2FsYwAAAAMAAAAEcG9vbAAAAAZjYWxsZXIAAAAJcG10QW1vdW50BAAAAAxzaGFyZUFzc2V0SWQJAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAABBQAAAARwb29sBAAAAApzY2FsZVZhbHVlCQEAAAAOY2FsY1NjYWxlVmFsdWUAAAACBQAAAARTV09QBQAAAAxzaGFyZUFzc2V0SWQEAAAAEHNoYXJlVG9rZW5Mb2NrZWQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sBAAAAA0kdDAxMzE0NjEzMjExCQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEFAAAABHBvb2wEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAgFAAAADSR0MDEzMTQ2MTMyMTEAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMTQ2MTMyMTEAAAACXzIEAAAADSR0MDEzMjE2MTMzMjgJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCAUAAAANJHQwMTMyMTYxMzMyOAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTMyMTYxMzMyOAAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEzMjE2MTMzMjgAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzIxNjEzMzI4AAAAAl80BAAAAA0kdDAxMzMzMzEzNDEyCQEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIFAAAABHBvb2wFAAAABmNhbGxlcgQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMzMzMTM0MTIAAAACXzEEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAADSR0MDEzMzMzMTM0MTIAAAACXzIEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAADGNhbGNJbnRlcmVzdAAAAAoFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAxsYXN0SW50ZXJlc3QFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawUAAAAQc2hhcmVUb2tlbkxvY2tlZAUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawUAAAAMc2hhcmVBc3NldElkBQAAAApzY2FsZVZhbHVlBQAAAAlwbXRBbW91bnQEAAAAC2NsYWltQW1vdW50CQAAawAAAAMFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAACnNjYWxlVmFsdWUEAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAFFgAAAAQFAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0BQAAAAtjbGFpbUFtb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50AQAAABdjYWxjdWxhdGVQcm90b2NvbFJld2FyZAAAAAEAAAAEcG9vbAQAAAANJHQwMTM5MzAxMzk5NQkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAxMzkzMDEzOTk1AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAxMzkzMDEzOTk1AAAAAl8yBAAAAA0kdDAxNDAwMDE0MTExCQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE0MDAwMTQxMTEAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE0MDAwMTQxMTEAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNDAwMDE0MTExAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTQwMDAxNDExMQAAAAJfNAQAAAAQc2hhcmVUb2tlbkxvY2tlZAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQAAAAAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAAHAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAAGcmV3YXJkBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQEAAAACIT0AAAACBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAABwMDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAAAZyZXdhcmQFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQAAAAAAAAAAAAEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIAAAAEcG9vbAAAAApwbXRBc3NldElkBAAAABBwb29sU2hhcmVBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAEHBvb2xTaGFyZUFzc2V0SWQGBwEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAABAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAAAACAAAAAFpAQAAAARpbml0AAAAAQAAAAdlYXJseUxQAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJa2V5U1dPUGlkCQAAAgAAAAECAAAAGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQAAAAKaW5pdEFtb3VudAAAAFrzEHpAAAQAAAAJU1dPUGlzc3VlCQAEQgAAAAUCAAAABFNXT1ACAAAAE1NXT1AgcHJvdG9jb2wgdG9rZW4FAAAACmluaXRBbW91bnQAAAAAAAAAAAgGBAAAAAZTV09QaWQJAAQ4AAAAAQUAAAAJU1dPUGlzc3VlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAARCAAAABQIAAAAEU1dPUAIAAAATU1dPUCBwcm90b2NvbCB0b2tlbgUAAAAKaW5pdEFtb3VudAAAAAAAAAAACAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa2V5U1dPUGlkCQACWAAAAAEFAAAABlNXT1BpZAUAAAADbmlsAAAAAWkBAAAAFGluaXRQb29sU2hhcmVGYXJtaW5nAAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAK09ubHkgdGhlIERBcHAgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EAAAADSR0MDE3MDk3MTcyMDAJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAADSR0MDE3MDk3MTcyMDAAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE3MDk3MTcyMDAAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNzA5NzE3MjAwAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTcwOTcxNzIwMAAAAAJfNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAABJ1cGRhdGVQb29sSW50ZXJlc3QAAAABAAAABHBvb2wDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABndhbGxldAkAAAIAAAABAgAAACxPbmx5IHRoZSBBZG1pbiBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAANJHQwMTc2MDkxNzcyOQkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wFAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MAAAAAAAAAAAAEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE3NjA5MTc3MjkAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE3NjA5MTc3MjkAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTc2MDkxNzcyOQAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTc2MDkxNzcyOQAAAAJfNAQAAAANJHQwMTc3MzQxNzgzNwkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAAA1jdXJyZW50UmV3YXJkCAUAAAANJHQwMTc3MzQxNzgzNwAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTc3MzQxNzgzNwAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE3NzM0MTc4MzcAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxNzczNDE3ODM3AAAAAl80CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAPbG9ja1NoYXJlVG9rZW5zAAAAAQAAAARwb29sBAAAAA0kdDAxODAyOTE4MTA0CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTgwMjkxODEwNAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4MDI5MTgxMDQAAAACXzIEAAAADSR0MDE4MTA5MTgxODIJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAANJHQwMTgxMDkxODE4MgAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAANJHQwMTgxMDkxODE4MgAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAA0kdDAxODEwOTE4MTgyAAAAAl8zBAAAAA0kdDAxODE4NzE4Mjk1CQEAAAAJY2xhaW1DYWxjAAAAAwUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE4MTg3MTgyOTUAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE4MTg3MTgyOTUAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTgxODcxODI5NQAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTgxODcxODI5NQAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZAAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAJcG10QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAACWJhc2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZj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CQABpAAAAAEFAAAACnNoYXJlVG9rZW4JAAACAAAAAQIAAAAVWW91IGNhbid0IHNoYXJlIHRva2VuCQAAAgAAAAECAAAAIFlvdXIgYW1vdW50IG9mIHRva2VuIGxlc3MgdGhhbiAwBQAAAAliYXNlRW50cnkAAAABaQEAAAATd2l0aGRyYXdTaGFyZVRva2VucwAAAAIAAAAEcG9vbAAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAAA1zaGFyZVRva2Vuc0lkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQEAAAADSR0MDIyNzQ0MjI4NDQJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDIyNzQ0MjI4NDQAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDIyNzQ0MjI4NDQAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMjI3NDQyMjg0NAAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMjI3NDQyMjg0NAAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZQAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARYXZhaWxhYmxlRnVuZHNOZXcJAABkAAAAAgkBAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAABmAAAAAgUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAAgAAAAECAAAALFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkAAGYAAAACBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAAACAAAAAQIAAAAsV2l0aGRyYXcgYW1vdW50IG1vcmUgdGhlbiB1c2VyIGxvY2tlZCBhbW91bnQDCQAAZgAAAAIJAABrAAAAAwAAAAAAAAAAYwkAAGUAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAA1zaGFyZVRva2Vuc0lkBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AAAAAAAAAABkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAAAgAAAAECAAAAMkJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgZ3JlYXRlciB0aGFuIHRvdGFsQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQFAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QBQAAABFhdmFpbGFibGVGdW5kc05ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAADXNoYXJlVG9rZW5zSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAQAAAANc2hhcmVUb2tlbnNJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAANJHQwMjQ4NTQyNDkxOQkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAyNDg1NDI0OTE5AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAyNDg1NDI0OTE5AAAAAl8yBAAAAA0kdDAyNDkyNDI1MDM2CQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDI0OTI0MjUwMzYAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDI0OTI0MjUwMzYAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAyNDkyNDI1MDM2AAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMjQ5MjQyNTAzNgAAAAJfNAQAAAANJHQwMjUwNDEyNTE0MQkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMjUwNDEyNTE0MQAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMjUwNDEyNTE0MQAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAyNTA0MTI1MTQxAAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAyNTA0MTI1MTQxAAAAAl80BAAAAA1hdmFpbGFibGVGdW5kCQAAZAAAAAIJAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAALY2xhaW1BbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0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", "height": 1568713, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J4JLXWvz1JFTHvKBTWzkQPK76jPhJmr2KPj6XcUgx3Bg Next: AH3kSBbfAF5cRt8kgjJXteHf9Y8Qjjuv1pd2iYFRyAoK Diff:
OldNewDifferences
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "_current_pool_fraction_reward"
14+let f = "active"
1515
16-let g = "_previous_pool_fraction_reward"
16+let g = "shutdown_cause"
1717
18-let h = "_pool_reward_update_height"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "total_reward_per_block_current"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "total_reward_per_block_previous"
22+let j = "_pool_reward_update_height"
2323
24-let k = "reward_update_height"
24+let k = "total_reward_per_block_current"
2525
26-let l = "_last_interest"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "_last_interest_height"
28+let m = "reward_update_height"
2929
30-let n = "_share_tokens_locked"
30+let n = "_last_interest"
3131
32-let o = "_last_interest"
32+let o = "_last_interest_height"
3333
34-let p = "SWOP_id"
34+let p = "_share_tokens_locked"
3535
36-let q = "_SWOP_claimed_amount"
36+let q = "_last_interest"
3737
38-let r = "_SWOP_last_claimed_amount"
38+let r = "SWOP_id"
3939
40-let s = "_available_SWOP"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "farming_start_height"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "apy"
44+let u = "_available_SWOP"
4545
46-let v = "previous_total_vote_SWOP"
46+let v = "farming_start_height"
4747
48-let w = "swop_year_emission"
48+let w = "apy"
4949
50-let x = "A_asset_balance"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "B_asset_balance"
52+let y = "swop_year_emission"
5353
54-let z = "_harvest_pool_activeVote_struc"
54+let z = "A_asset_balance"
5555
56-let A = "_harvest_user_pool_activeVote_struc"
56+let A = "B_asset_balance"
5757
58-let B = "share_limit_on_first_harvest"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "A_asset_id"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "B_asset_id"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "first_harvest_height"
64+let E = "A_asset_id"
6565
66-let F = "first_harvest"
66+let F = "B_asset_id"
6767
68-let G = "sum_reward_previous"
68+let G = "first_harvest_height"
6969
70-let H = "sum_reward_current"
70+let H = "first_harvest"
7171
72-let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
72+let I = "sum_reward_previous"
7373
74-let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
74+let J = "sum_reward_current"
7575
76-let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
76+let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7777
7878 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = 10106
80+let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
82-let N = 10000000000
82+let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
84-let O = 10
84+let O = 10106
8585
86-let P = 1000
86+let P = 10000000000
8787
88-let Q = 100000
88+let Q = 10
8989
90-let R = 1000000
90+let R = 1000
9191
92-let S = 100000000
92+let S = 100000
9393
94-let T = 100000000000
94+let T = 1000000
9595
96-func U (V) = getStringValue(V, C)
96+let U = 100000000
97+
98+let V = 100000000000
99+
100+func W (X) = getStringValue(X, E)
97101
98102
99-func W (V) = getStringValue(V, D)
103+func Y (X) = getStringValue(X, F)
100104
101105
102-func X (V) = if ((U(V) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
103107 then unit
104- else fromBase58String(U(V))
108+ else fromBase58String(W(X))
105109
106110
107-func Y (V) = if ((W(V) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
108112 then unit
109- else fromBase58String(W(V))
113+ else fromBase58String(Y(X))
110114
111115
112-let Z = "base_period"
116+let ab = "base_period"
113117
114-let aa = "period_length"
118+let ac = "period_length"
115119
116-let ab = "start_height"
120+let ad = "start_height"
117121
118-let ac = "first_harvest_height"
122+let ae = "first_harvest_height"
119123
120-let ad = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
121125
122-let ae = "min_vote_power"
126+let ag = "min_vote_power"
123127
124-let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
125129
126-let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
127131
128-let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
129133
130-let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
131135
132-let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
133137
134-let ak = (af + ((height - ag) / ah))
138+let am = getBooleanValue(this, f)
135139
136-func al (V) = valueOrElse(getIntegerValue(V, B), 0)
140+let an = (ah + ((height - ai) / aj))
141+
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
137143
138144
139-let am = getIntegerValue(this, u)
145+let ap = getIntegerValue(this, w)
140146
141-let an = getIntegerValue(this, w)
147+let aq = getIntegerValue(this, y)
142148
143-func ao (V) = {
144- let ap = X(V)
145- if ($isInstanceOf(ap, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
146152 then {
147- let aq = ap
148- value(assetInfo(aq)).name
153+ let at = as
154+ value(assetInfo(at)).name
149155 }
150- else if ($isInstanceOf(ap, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
151157 then {
152- let ar = ap
158+ let au = as
153159 "WAVES"
154160 }
155161 else throw("Match error")
156162 }
157163
158164
159-func as (V) = {
160- let ap = Y(V)
161- if ($isInstanceOf(ap, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
162168 then {
163- let aq = ap
164- value(assetInfo(aq)).name
169+ let at = as
170+ value(assetInfo(at)).name
165171 }
166- else if ($isInstanceOf(ap, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
167173 then {
168- let ar = ap
174+ let au = as
169175 "WAVES"
170176 }
171177 else throw("Match error")
172178 }
173179
174180
175-let at = fromBase58String(getStringValue(this, p))
181+let aw = fromBase58String(getStringValue(this, r))
176182
177-func au (V) = valueOrElse(getBoolean(V, F), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
178184
179185
180-func av (V) = valueOrElse(getInteger(V, E), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
181187
182188
183-func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
184190
185191
186-func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
187193
188194
189-func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
190196
191197
192-func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
193199
194200
195-func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
196202
197203
198-func aB (aC) = {
199- let ap = aC
200- if ($isInstanceOf(ap, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
201207 then {
202- let aq = ap
203- assetBalance(this, aq)
208+ let at = as
209+ assetBalance(this, at)
204210 }
205- else if ($isInstanceOf(ap, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
206212 then {
207- let ar = ap
213+ let au = as
208214 wavesBalance(this).available
209215 }
210216 else throw("Match error")
211217 }
212218
213219
214-func aD (aC) = {
215- let ap = aC
216- if ($isInstanceOf(ap, "ByteVector"))
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
217223 then {
218- let aq = ap
219- let aE = toBase58String(aq)
220- let aF = valueOrErrorMessage(assetInfo(aq), (("Asset " + aE) + " doesn't exist"))
221- $Tuple3(aE, aF.name, aF.decimals)
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
222228 }
223- else if ($isInstanceOf(ap, "Unit"))
229+ else if ($isInstanceOf(as, "Unit"))
224230 then {
225- let ar = ap
231+ let au = as
226232 $Tuple3("WAVES", "WAVES", 8)
227233 }
228234 else throw("Match error")
229235 }
230236
231237
232-func aG (aH,aI) = {
233- let aJ = value(assetInfo(aH)).decimals
234- let aK = value(assetInfo(aI)).decimals
235- let aL = ((aK - aJ) + 8)
236- pow(10, 0, aL, 0, 0, HALFDOWN)
238+func aJ (aK,aL) = {
239+ let aM = value(assetInfo(aK)).decimals
240+ let aN = value(assetInfo(aL)).decimals
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
237243 }
238244
239245
240-func aM (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + s)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
241247
242248
243-func aO (V) = {
244- let aP = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
245- let aQ = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
246- let aR = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
247- let aS = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
248- let aT = valueOrElse(getInteger(I, (V + h)), 0)
249- let aU = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
250- let aV = fraction(aP, aR, N)
251- let aW = fraction(aQ, aU, N)
252- if (if ((aV > aP))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
253259 then true
254- else (aW > aQ))
260+ else (aZ > aT))
255261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
256- else $Tuple4(aV, aS, aW, aT)
262+ else $Tuple4(aY, aV, aZ, aW)
257263 }
258264
259265
260-func aX (V) = {
261- let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
262- let aZ = valueOrElse(getInteger(this, (V + m)), height)
263- $Tuple2(aZ, aY)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
264270 }
265271
266272
267-func ba (V,bb) = {
268- let bc = getInteger(this, (((V + "_") + toString(bb)) + o))
269- let bd = getInteger(this, (((V + "_") + toString(bb)) + n))
270- let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
271- let be = {
272- let ap = bc
273- if ($isInstanceOf(ap, "Int"))
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277+ let bh = {
278+ let as = bf
279+ if ($isInstanceOf(as, "Int"))
274280 then {
275- let bc = ap
276- bc
281+ let bf = as
282+ bf
277283 }
278- else aY
284+ else bb
279285 }
280- let bf = {
281- let ap = bd
282- if ($isInstanceOf(ap, "Int"))
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
283289 then {
284- let bd = ap
285- bd
290+ let bg = as
291+ bg
286292 }
287293 else 0
288294 }
289- $Tuple2(be, bf)
295+ $Tuple2(bh, bi)
290296 }
291297
292298
293-func bg (aZ,aS,aT,aY,bh,bi,bj,bk,bl,bm) = if ((bi == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
294300 then 0
295- else if ((aT != 0))
296- then if (if ((aS > height))
297- then (aS == aT)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
298304 else false)
299305 then {
300- let bn = (bj * (height - aZ))
301- (aY + fraction(bn, bl, bi))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
302308 }
303- else if (if ((height > aS))
304- then (aS != aT)
309+ else if (if ((height > aV))
310+ then (aV != aW)
305311 else false)
306312 then {
307- let bn = (bj * (height - aZ))
308- (aY + fraction(bn, bl, bi))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
309315 }
310- else if (if (if ((height > aS))
311- then (aS == aT)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
312318 else false)
313- then (aZ > aS)
319+ then (bc > aV)
314320 else false)
315321 then {
316- let bn = (bh * (height - aZ))
317- (aY + fraction(bn, bl, bi))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
318324 }
319325 else {
320- let bo = (bj * (aS - aZ))
321- let bp = (aY + fraction(bo, bl, bi))
322- let bn = (bh * (height - aS))
323- (bp + fraction(bn, bl, bi))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
324330 }
325- else if ((aS > height))
331+ else if ((aV > height))
326332 then {
327- let bn = (bj * (height - aZ))
328- (aY + fraction(bn, bl, bi))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
329335 }
330- else if ((aZ > aS))
336+ else if ((bc > aV))
331337 then {
332- let bn = (bh * (height - aZ))
333- (aY + fraction(bn, bl, bi))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
334340 }
335341 else {
336- let bo = (bj * (aS - aZ))
337- let bp = (aY + fraction(bo, bl, bi))
338- let bn = (bh * (height - aS))
339- (bp + fraction(bn, bl, bi))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
340346 }
341347
342348
343-func bq (V,br,bm) = {
344- let bk = aA(V)
345- let bl = aG(at, bk)
346- let bi = az(V)
347- let bs = aX(V)
348- let aZ = bs._1
349- let aY = bs._2
350- let bt = aO(V)
351- let bh = bt._1
352- let aS = bt._2
353- let bj = bt._3
354- let aT = bt._4
355- let bu = ba(V, br)
356- let bc = bu._1
357- let bf = bu._2
358- let bv = bg(aZ, aS, aT, aY, bh, bi, bj, bk, bl, bm)
359- let bw = fraction(bf, (bv - bc), bl)
360- let bx = bv
361- $Tuple4(bx, bv, bw, bf)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
366+ let bA = by
367+ $Tuple4(bA, by, bz, bi)
362368 }
363369
364370
365-func by (V) = {
366- let bz = aX(V)
367- let aZ = bz._1
368- let aY = bz._2
369- let bA = aO(V)
370- let bh = bA._1
371- let aS = bA._2
372- let bj = bA._3
373- let aT = bA._4
374- let bi = az(V)
375- if (if ((bi == 0))
376- then (aT == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
377383 else false)
378- then if ((aS > height))
384+ then if ((aV > height))
379385 then {
380- let bn = (bj * (height - aZ))
381- bn
386+ let bq = (bm * (height - bc))
387+ bq
382388 }
383- else if ((aZ > aS))
389+ else if ((bc > aV))
384390 then {
385- let bn = (bh * (height - aZ))
386- bn
391+ let bq = (bk * (height - bc))
392+ bq
387393 }
388394 else {
389- let bo = (bj * (aS - aZ))
390- let bn = (bh * (height - aS))
391- (bn + bo)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
392398 }
393- else if (if ((bi == 0))
394- then (aT != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
395401 else false)
396- then if (if ((aS > height))
397- then (aS == aT)
402+ then if (if ((aV > height))
403+ then (aV == aW)
398404 else false)
399405 then {
400- let bn = (bj * (height - aZ))
401- bn
406+ let bq = (bm * (height - bc))
407+ bq
402408 }
403- else if (if ((height > aS))
404- then (aS != aT)
409+ else if (if ((height > aV))
410+ then (aV != aW)
405411 else false)
406412 then {
407- let bn = (bj * (height - aZ))
408- bn
413+ let bq = (bm * (height - bc))
414+ bq
409415 }
410- else if (if (if ((height > aS))
411- then (aS == aT)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
412418 else false)
413- then (aZ > aS)
419+ then (bc > aV)
414420 else false)
415421 then {
416- let bn = (bh * (height - aZ))
417- bn
422+ let bq = (bk * (height - bc))
423+ bq
418424 }
419425 else {
420- let bo = (bj * (aS - aZ))
421- let bn = (bh * (height - aS))
422- (bn + bo)
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
423429 }
424430 else 0
425431 }
426432
427433
428-func bB (V,bC) = {
429- let bD = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
430- if ((bC == bD))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
431437 then true
432438 else false
433439 }
434440
435441
436-func bE (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + q)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
437443
438444
439-@Callable(bF)
440-func init (bG) = if (isDefined(getString(this, p)))
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446+
447+
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
441450 then throw("SWOP already initialized")
442451 else {
443- let bH = 100000000000000
444- let bI = Issue("SWOP", "SWOP protocol token", bH, 8, true)
445- let bJ = calculateAssetId(bI)
446-[Issue("SWOP", "SWOP protocol token", bH, 8, true), StringEntry(p, toBase58String(bJ))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
447456 }
448457
449458
450459
451-@Callable(bF)
452-func initPoolShareFarming (V) = if ((bF.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
453462 then throw("Only the DApp itself can call this function")
454463 else {
455- let bK = aO(V)
456- let bL = bK._1
457- let aS = bK._2
458- let bj = bK._3
459- let aT = bK._4
460-[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
469+[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
461470 }
462471
463472
464473
465-@Callable(bF)
466-func updatePoolInterest (V) = if ((bF.caller != J))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
467476 then throw("Only the Admin itself can call this function")
468- else {
469- let bM = bq(V, L, 0)
470- let bx = bM._1
471- let bv = bM._2
472- let bw = bM._3
473- let bf = bM._4
474- let bN = aO(V)
475- let bL = bN._1
476- let aS = bN._2
477- let bj = bN._3
478- let aT = bN._4
479-[IntegerEntry((V + l), bx), IntegerEntry((V + m), height)]
480- }
477+ else if (!(am))
478+ then throw("DApp is inactive at this moment")
479+ else {
480+ let bR = bt(X, N, 0)
481+ let bA = bR._1
482+ let by = bR._2
483+ let bz = bR._3
484+ let bi = bR._4
485+ let bS = aR(X)
486+ let bQ = bS._1
487+ let aV = bS._2
488+ let bm = bS._3
489+ let aW = bS._4
490+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
491+ }
481492
482493
483494
484-@Callable(bF)
485-func lockShareTokens (V) = {
486- let bO = $Tuple2(bF.payments[0].amount, bF.payments[0].assetId)
487- let bm = bO._1
488- let bC = bO._2
489- let bP = aD(bC)
490- let bQ = bP._1
491- let bR = bP._2
492- let bS = bP._3
493- let bT = bq(V, bF.caller, bm)
494- let bx = bT._1
495- let bv = bT._2
496- let bw = bT._3
497- let bf = bT._4
498- let bU = (bf + bm)
499- let bV = (aM(V, bF.caller) + bw)
500- let bW = az(V)
501- let bX = (bW + bm)
502- let bY = bE(V, bF.caller)
503- let bZ = (bY + bw)
504- let ca = [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + d), bX), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV)]
505- if ((0 >= bm))
495+@Callable(bK)
496+func lockShareTokens (X) = {
497+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498+ let bp = bT._1
499+ let bF = bT._2
500+ let bU = aG(bF)
501+ let bV = bU._1
502+ let bW = bU._2
503+ let bX = bU._3
504+ let bY = bt(X, bK.caller, bp)
505+ let bA = bY._1
506+ let by = bY._2
507+ let bz = bY._3
508+ let bi = bY._4
509+ let bZ = (bi + bp)
510+ let ca = (aP(X, bK.caller) + bz)
511+ let cb = aC(X)
512+ let cc = (cb + bp)
513+ let cd = bH(X, bK.caller)
514+ let ce = (cd + bz)
515+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516+ if ((0 >= bp))
506517 then throw("You can't lock token")
507- else if (!(bB(V, bC)))
508- then throw("Incorrect pmtAssetId")
509- else if (if (au(Address(fromBase58String(V))))
510- then (av(Address(fromBase58String(V))) > height)
511- else false)
512- then {
513- let cb = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
514- let cc = split(getStringValue(K, (((toString(bF.caller) + "_") + V) + "_user_pool_struc")), "_")
515- let cd = split(getStringValue(K, (V + "_pool_struc")), "_")
516- let ce = split(valueOrElse(getString(K, (((toString(bF.caller) + "_") + V) + A)), ""), "_")
517- let cf = split(valueOrElse(getString(K, (V + z)), ""), "_")
518- let cg = bf
519- let ch = if ((toString(ak) == cc[2]))
520- then valueOrElse(parseInt(ce[0]), 0)
521- else valueOrElse(parseInt(cc[1]), 0)
522- let ci = if ((toString(ak) == cd[2]))
523- then valueOrElse(parseInt(cf[0]), 0)
524- else valueOrElse(parseInt(cd[1]), 0)
525- let cj = by(V)
526- if ((ch != 0))
527- then {
528- let ck = ay(addressFromStringValue(V))
529- let cl = (fraction(ck, ch, ci) - cg)
530- if (if ((size(ce) > 1))
531- then (valueOrElse(parseInt(ce[1]), 0) >= cb)
532- else false)
533- then throw("You can't share token")
534- else if ((bm > ck))
535- then throw(("You can't share token more than " + toString(ck)))
536- else if ((cl > 0))
537- then if ((fraction(99, (aB(bC) + bm), 100) > bX))
538- then throw("Balance of share-token is greater than totalAmount")
539- else if ((bW == 0))
540- then (ca ++ [Reissue(at, cj, true), ScriptTransfer(J, cj, at)])
541- else if ((cl >= bm))
542- then ca
543- else throw(("Your maximum share token is " + toString(cl)))
544- else throw("You can't share token")
545- }
546- else throw("Your amount of token less than 0")
547- }
548- else ca
518+ else if (!(am))
519+ then throw("DApp is inactive at this moment")
520+ else if (!(bE(X, bF)))
521+ then throw("Incorrect pmtAssetId")
522+ else if (if (ax(Address(fromBase58String(X))))
523+ then (ay(Address(fromBase58String(X))) > height)
524+ else false)
525+ then {
526+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531+ let cl = bi
532+ let cm = if ((toString(an) == ch[2]))
533+ then valueOrElse(parseInt(cj[0]), 0)
534+ else valueOrElse(parseInt(ch[1]), 0)
535+ let cn = if ((toString(an) == ci[2]))
536+ then valueOrElse(parseInt(ck[0]), 0)
537+ else valueOrElse(parseInt(ci[1]), 0)
538+ let co = bB(X)
539+ if ((cm != 0))
540+ then {
541+ let cp = aB(addressFromStringValue(X))
542+ let cq = (fraction(cp, cm, cn) - cl)
543+ if (if ((size(cj) > 1))
544+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545+ else false)
546+ then throw("You can't share token")
547+ else if ((bp > cp))
548+ then throw(("You can't share token more than " + toString(cp)))
549+ else if ((cq > 0))
550+ then if ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [ScriptTransfer(L, co, aw)])
554+ else if ((cq >= bp))
555+ then cf
556+ else throw(("Your maximum share token is " + toString(cq)))
557+ else throw("You can't share token")
558+ }
559+ else throw("Your amount of token less than 0")
560+ }
561+ else cf
549562 }
550563
551564
552565
553-@Callable(bF)
554-func withdrawShareTokens (V,cm) = {
555- let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
556- let co = bq(V, bF.caller, 1)
557- let bx = co._1
558- let bv = co._2
559- let bw = co._3
560- let bf = co._4
561- let bU = (bf - cm)
562- let bV = (aM(V, bF.caller) + bw)
563- let bW = az(V)
564- let bX = (bW - cm)
565- let bY = bE(V, bF.caller)
566- let bZ = (bY + bw)
567- if ((cm > bf))
566+@Callable(bK)
567+func withdrawShareTokens (X,cr) = {
568+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569+ let ct = bt(X, bK.caller, 1)
570+ let bA = ct._1
571+ let by = ct._2
572+ let bz = ct._3
573+ let bi = ct._4
574+ let bZ = (bi - cr)
575+ let ca = (aP(X, bK.caller) + bz)
576+ let cb = aC(X)
577+ let cc = (cb - cr)
578+ let cd = bH(X, bK.caller)
579+ let ce = (cd + bz)
580+ if ((cr > bi))
568581 then throw("Withdraw amount more then user locked amount")
569- else if ((fraction(99, (aB(cn) - cm), 100) > bX))
570- then throw("Balance of share-token is greater than totalAmount")
571- else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((V + d), bX), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cm, cn)]
582+ else if (!(am))
583+ then throw("DApp is inactive at this moment")
584+ else if ((cr > bi))
585+ then throw("Withdraw amount more then user locked amount")
586+ else if ((fraction(99, (aE(cs) - cr), 100) > cc))
587+ then throw("Balance of share-token is greater than totalAmount")
588+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
572589 }
573590
574591
575592
576-@Callable(bF)
577-func claim (V) = {
578- let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
579- let bi = az(V)
580- let cp = aX(V)
581- let aZ = cp._1
582- let aY = cp._2
583- let cq = aO(V)
584- let bh = cq._1
585- let aS = cq._2
586- let bj = cq._3
587- let aT = cq._4
588- let cr = bq(V, bF.caller, 1)
589- let bx = cr._1
590- let bv = cr._2
591- let bw = cr._3
592- let bf = cr._4
593- let cs = (aM(V, bF.caller) + bw)
594- let bY = bE(V, bF.caller)
595- let bZ = (bY + bw)
596- if ((cs == 0))
593+@Callable(bK)
594+func claim (X) = {
595+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596+ let bl = aC(X)
597+ let cu = ba(X)
598+ let bc = cu._1
599+ let bb = cu._2
600+ let cv = aR(X)
601+ let bk = cv._1
602+ let aV = cv._2
603+ let bm = cv._3
604+ let aW = cv._4
605+ let cw = bt(X, bK.caller, 1)
606+ let bA = cw._1
607+ let by = cw._2
608+ let bz = cw._3
609+ let bi = cw._4
610+ let cx = (aP(X, bK.caller) + bz)
611+ let cd = bH(X, bK.caller)
612+ let ce = (cd + bz)
613+ if ((cx == 0))
597614 then throw("You have 0 available SWOP")
598- else if ((fraction(99, aB(cn), 100) > bi))
599- then throw("Balance of share-token is greater than totalAmount")
600- else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + s), 0), Reissue(at, cs, true), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cs, at)]
615+ else if (!(am))
616+ then throw("DApp is inactive at this moment")
617+ else if ((cx == 0))
618+ then throw("You have 0 available SWOP")
619+ else if ((fraction(99, aE(cs), 100) > bl))
620+ then throw("Balance of share-token is greater than totalAmount")
621+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
601622 }
602623
603624
604-@Verifier(ct)
605-func cu () = {
606- let ap = ct
607- sigVerify(ct.bodyBytes, ct.proofs[0], ct.senderPublicKey)
625+
626+@Callable(bK)
627+func shutdown () = if (!(am))
628+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
630+ then throw("Only admin can call this function")
631+ else bI("Paused by admin")
632+
633+
634+
635+@Callable(bK)
636+func activate () = if (am)
637+ then throw("DApp is already active")
638+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
639+ then throw("Only admin can call this function")
640+ else [BooleanEntry(f, true), DeleteEntry(g)]
641+
642+
643+@Verifier(cy)
644+func cz () = {
645+ let as = cy
646+ sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
608647 }
609648
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
55
66 let b = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
77
88 let c = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
99
1010 let d = "_total_share_tokens_locked"
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "_current_pool_fraction_reward"
14+let f = "active"
1515
16-let g = "_previous_pool_fraction_reward"
16+let g = "shutdown_cause"
1717
18-let h = "_pool_reward_update_height"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "total_reward_per_block_current"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "total_reward_per_block_previous"
22+let j = "_pool_reward_update_height"
2323
24-let k = "reward_update_height"
24+let k = "total_reward_per_block_current"
2525
26-let l = "_last_interest"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "_last_interest_height"
28+let m = "reward_update_height"
2929
30-let n = "_share_tokens_locked"
30+let n = "_last_interest"
3131
32-let o = "_last_interest"
32+let o = "_last_interest_height"
3333
34-let p = "SWOP_id"
34+let p = "_share_tokens_locked"
3535
36-let q = "_SWOP_claimed_amount"
36+let q = "_last_interest"
3737
38-let r = "_SWOP_last_claimed_amount"
38+let r = "SWOP_id"
3939
40-let s = "_available_SWOP"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "farming_start_height"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "apy"
44+let u = "_available_SWOP"
4545
46-let v = "previous_total_vote_SWOP"
46+let v = "farming_start_height"
4747
48-let w = "swop_year_emission"
48+let w = "apy"
4949
50-let x = "A_asset_balance"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "B_asset_balance"
52+let y = "swop_year_emission"
5353
54-let z = "_harvest_pool_activeVote_struc"
54+let z = "A_asset_balance"
5555
56-let A = "_harvest_user_pool_activeVote_struc"
56+let A = "B_asset_balance"
5757
58-let B = "share_limit_on_first_harvest"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "A_asset_id"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "B_asset_id"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "first_harvest_height"
64+let E = "A_asset_id"
6565
66-let F = "first_harvest"
66+let F = "B_asset_id"
6767
68-let G = "sum_reward_previous"
68+let G = "first_harvest_height"
6969
70-let H = "sum_reward_current"
70+let H = "first_harvest"
7171
72-let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
72+let I = "sum_reward_previous"
7373
74-let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
74+let J = "sum_reward_current"
7575
76-let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
76+let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7777
7878 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = 10106
80+let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
82-let N = 10000000000
82+let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
84-let O = 10
84+let O = 10106
8585
86-let P = 1000
86+let P = 10000000000
8787
88-let Q = 100000
88+let Q = 10
8989
90-let R = 1000000
90+let R = 1000
9191
92-let S = 100000000
92+let S = 100000
9393
94-let T = 100000000000
94+let T = 1000000
9595
96-func U (V) = getStringValue(V, C)
96+let U = 100000000
97+
98+let V = 100000000000
99+
100+func W (X) = getStringValue(X, E)
97101
98102
99-func W (V) = getStringValue(V, D)
103+func Y (X) = getStringValue(X, F)
100104
101105
102-func X (V) = if ((U(V) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
103107 then unit
104- else fromBase58String(U(V))
108+ else fromBase58String(W(X))
105109
106110
107-func Y (V) = if ((W(V) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
108112 then unit
109- else fromBase58String(W(V))
113+ else fromBase58String(Y(X))
110114
111115
112-let Z = "base_period"
116+let ab = "base_period"
113117
114-let aa = "period_length"
118+let ac = "period_length"
115119
116-let ab = "start_height"
120+let ad = "start_height"
117121
118-let ac = "first_harvest_height"
122+let ae = "first_harvest_height"
119123
120-let ad = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
121125
122-let ae = "min_vote_power"
126+let ag = "min_vote_power"
123127
124-let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
125129
126-let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
127131
128-let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
129133
130-let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
131135
132-let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
133137
134-let ak = (af + ((height - ag) / ah))
138+let am = getBooleanValue(this, f)
135139
136-func al (V) = valueOrElse(getIntegerValue(V, B), 0)
140+let an = (ah + ((height - ai) / aj))
141+
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
137143
138144
139-let am = getIntegerValue(this, u)
145+let ap = getIntegerValue(this, w)
140146
141-let an = getIntegerValue(this, w)
147+let aq = getIntegerValue(this, y)
142148
143-func ao (V) = {
144- let ap = X(V)
145- if ($isInstanceOf(ap, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
146152 then {
147- let aq = ap
148- value(assetInfo(aq)).name
153+ let at = as
154+ value(assetInfo(at)).name
149155 }
150- else if ($isInstanceOf(ap, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
151157 then {
152- let ar = ap
158+ let au = as
153159 "WAVES"
154160 }
155161 else throw("Match error")
156162 }
157163
158164
159-func as (V) = {
160- let ap = Y(V)
161- if ($isInstanceOf(ap, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
162168 then {
163- let aq = ap
164- value(assetInfo(aq)).name
169+ let at = as
170+ value(assetInfo(at)).name
165171 }
166- else if ($isInstanceOf(ap, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
167173 then {
168- let ar = ap
174+ let au = as
169175 "WAVES"
170176 }
171177 else throw("Match error")
172178 }
173179
174180
175-let at = fromBase58String(getStringValue(this, p))
181+let aw = fromBase58String(getStringValue(this, r))
176182
177-func au (V) = valueOrElse(getBoolean(V, F), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
178184
179185
180-func av (V) = valueOrElse(getInteger(V, E), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
181187
182188
183-func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
184190
185191
186-func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
187193
188194
189-func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
190196
191197
192-func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
193199
194200
195-func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
196202
197203
198-func aB (aC) = {
199- let ap = aC
200- if ($isInstanceOf(ap, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
201207 then {
202- let aq = ap
203- assetBalance(this, aq)
208+ let at = as
209+ assetBalance(this, at)
204210 }
205- else if ($isInstanceOf(ap, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
206212 then {
207- let ar = ap
213+ let au = as
208214 wavesBalance(this).available
209215 }
210216 else throw("Match error")
211217 }
212218
213219
214-func aD (aC) = {
215- let ap = aC
216- if ($isInstanceOf(ap, "ByteVector"))
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
217223 then {
218- let aq = ap
219- let aE = toBase58String(aq)
220- let aF = valueOrErrorMessage(assetInfo(aq), (("Asset " + aE) + " doesn't exist"))
221- $Tuple3(aE, aF.name, aF.decimals)
224+ let at = as
225+ let aH = toBase58String(at)
226+ let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227+ $Tuple3(aH, aI.name, aI.decimals)
222228 }
223- else if ($isInstanceOf(ap, "Unit"))
229+ else if ($isInstanceOf(as, "Unit"))
224230 then {
225- let ar = ap
231+ let au = as
226232 $Tuple3("WAVES", "WAVES", 8)
227233 }
228234 else throw("Match error")
229235 }
230236
231237
232-func aG (aH,aI) = {
233- let aJ = value(assetInfo(aH)).decimals
234- let aK = value(assetInfo(aI)).decimals
235- let aL = ((aK - aJ) + 8)
236- pow(10, 0, aL, 0, 0, HALFDOWN)
238+func aJ (aK,aL) = {
239+ let aM = value(assetInfo(aK)).decimals
240+ let aN = value(assetInfo(aL)).decimals
241+ let aO = ((aN - aM) + 8)
242+ pow(10, 0, aO, 0, 0, HALFDOWN)
237243 }
238244
239245
240-func aM (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + s)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
241247
242248
243-func aO (V) = {
244- let aP = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
245- let aQ = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
246- let aR = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
247- let aS = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
248- let aT = valueOrElse(getInteger(I, (V + h)), 0)
249- let aU = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
250- let aV = fraction(aP, aR, N)
251- let aW = fraction(aQ, aU, N)
252- if (if ((aV > aP))
249+func aR (X) = {
250+ let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251+ let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252+ let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253+ let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254+ let aW = valueOrElse(getInteger(K, (X + j)), 0)
255+ let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256+ let aY = fraction(aS, aU, P)
257+ let aZ = fraction(aT, aX, P)
258+ if (if ((aY > aS))
253259 then true
254- else (aW > aQ))
260+ else (aZ > aT))
255261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
256- else $Tuple4(aV, aS, aW, aT)
262+ else $Tuple4(aY, aV, aZ, aW)
257263 }
258264
259265
260-func aX (V) = {
261- let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
262- let aZ = valueOrElse(getInteger(this, (V + m)), height)
263- $Tuple2(aZ, aY)
266+func ba (X) = {
267+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268+ let bc = valueOrElse(getInteger(this, (X + o)), height)
269+ $Tuple2(bc, bb)
264270 }
265271
266272
267-func ba (V,bb) = {
268- let bc = getInteger(this, (((V + "_") + toString(bb)) + o))
269- let bd = getInteger(this, (((V + "_") + toString(bb)) + n))
270- let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
271- let be = {
272- let ap = bc
273- if ($isInstanceOf(ap, "Int"))
273+func bd (X,be) = {
274+ let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275+ let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276+ let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277+ let bh = {
278+ let as = bf
279+ if ($isInstanceOf(as, "Int"))
274280 then {
275- let bc = ap
276- bc
281+ let bf = as
282+ bf
277283 }
278- else aY
284+ else bb
279285 }
280- let bf = {
281- let ap = bd
282- if ($isInstanceOf(ap, "Int"))
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
283289 then {
284- let bd = ap
285- bd
290+ let bg = as
291+ bg
286292 }
287293 else 0
288294 }
289- $Tuple2(be, bf)
295+ $Tuple2(bh, bi)
290296 }
291297
292298
293-func bg (aZ,aS,aT,aY,bh,bi,bj,bk,bl,bm) = if ((bi == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
294300 then 0
295- else if ((aT != 0))
296- then if (if ((aS > height))
297- then (aS == aT)
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
298304 else false)
299305 then {
300- let bn = (bj * (height - aZ))
301- (aY + fraction(bn, bl, bi))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
302308 }
303- else if (if ((height > aS))
304- then (aS != aT)
309+ else if (if ((height > aV))
310+ then (aV != aW)
305311 else false)
306312 then {
307- let bn = (bj * (height - aZ))
308- (aY + fraction(bn, bl, bi))
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
309315 }
310- else if (if (if ((height > aS))
311- then (aS == aT)
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
312318 else false)
313- then (aZ > aS)
319+ then (bc > aV)
314320 else false)
315321 then {
316- let bn = (bh * (height - aZ))
317- (aY + fraction(bn, bl, bi))
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
318324 }
319325 else {
320- let bo = (bj * (aS - aZ))
321- let bp = (aY + fraction(bo, bl, bi))
322- let bn = (bh * (height - aS))
323- (bp + fraction(bn, bl, bi))
326+ let br = (bm * (aV - bc))
327+ let bs = (bb + fraction(br, bo, bl))
328+ let bq = (bk * (height - aV))
329+ (bs + fraction(bq, bo, bl))
324330 }
325- else if ((aS > height))
331+ else if ((aV > height))
326332 then {
327- let bn = (bj * (height - aZ))
328- (aY + fraction(bn, bl, bi))
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
329335 }
330- else if ((aZ > aS))
336+ else if ((bc > aV))
331337 then {
332- let bn = (bh * (height - aZ))
333- (aY + fraction(bn, bl, bi))
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
334340 }
335341 else {
336- let bo = (bj * (aS - aZ))
337- let bp = (aY + fraction(bo, bl, bi))
338- let bn = (bh * (height - aS))
339- (bp + fraction(bn, bl, bi))
342+ let br = (bm * (aV - bc))
343+ let bs = (bb + fraction(br, bo, bl))
344+ let bq = (bk * (height - aV))
345+ (bs + fraction(bq, bo, bl))
340346 }
341347
342348
343-func bq (V,br,bm) = {
344- let bk = aA(V)
345- let bl = aG(at, bk)
346- let bi = az(V)
347- let bs = aX(V)
348- let aZ = bs._1
349- let aY = bs._2
350- let bt = aO(V)
351- let bh = bt._1
352- let aS = bt._2
353- let bj = bt._3
354- let aT = bt._4
355- let bu = ba(V, br)
356- let bc = bu._1
357- let bf = bu._2
358- let bv = bg(aZ, aS, aT, aY, bh, bi, bj, bk, bl, bm)
359- let bw = fraction(bf, (bv - bc), bl)
360- let bx = bv
361- $Tuple4(bx, bv, bw, bf)
349+func bt (X,bu,bp) = {
350+ let bn = aD(X)
351+ let bo = aJ(aw, bn)
352+ let bl = aC(X)
353+ let bv = ba(X)
354+ let bc = bv._1
355+ let bb = bv._2
356+ let bw = aR(X)
357+ let bk = bw._1
358+ let aV = bw._2
359+ let bm = bw._3
360+ let aW = bw._4
361+ let bx = bd(X, bu)
362+ let bf = bx._1
363+ let bi = bx._2
364+ let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365+ let bz = fraction(bi, (by - bf), bo)
366+ let bA = by
367+ $Tuple4(bA, by, bz, bi)
362368 }
363369
364370
365-func by (V) = {
366- let bz = aX(V)
367- let aZ = bz._1
368- let aY = bz._2
369- let bA = aO(V)
370- let bh = bA._1
371- let aS = bA._2
372- let bj = bA._3
373- let aT = bA._4
374- let bi = az(V)
375- if (if ((bi == 0))
376- then (aT == 0)
371+func bB (X) = {
372+ let bC = ba(X)
373+ let bc = bC._1
374+ let bb = bC._2
375+ let bD = aR(X)
376+ let bk = bD._1
377+ let aV = bD._2
378+ let bm = bD._3
379+ let aW = bD._4
380+ let bl = aC(X)
381+ if (if ((bl == 0))
382+ then (aW == 0)
377383 else false)
378- then if ((aS > height))
384+ then if ((aV > height))
379385 then {
380- let bn = (bj * (height - aZ))
381- bn
386+ let bq = (bm * (height - bc))
387+ bq
382388 }
383- else if ((aZ > aS))
389+ else if ((bc > aV))
384390 then {
385- let bn = (bh * (height - aZ))
386- bn
391+ let bq = (bk * (height - bc))
392+ bq
387393 }
388394 else {
389- let bo = (bj * (aS - aZ))
390- let bn = (bh * (height - aS))
391- (bn + bo)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
392398 }
393- else if (if ((bi == 0))
394- then (aT != 0)
399+ else if (if ((bl == 0))
400+ then (aW != 0)
395401 else false)
396- then if (if ((aS > height))
397- then (aS == aT)
402+ then if (if ((aV > height))
403+ then (aV == aW)
398404 else false)
399405 then {
400- let bn = (bj * (height - aZ))
401- bn
406+ let bq = (bm * (height - bc))
407+ bq
402408 }
403- else if (if ((height > aS))
404- then (aS != aT)
409+ else if (if ((height > aV))
410+ then (aV != aW)
405411 else false)
406412 then {
407- let bn = (bj * (height - aZ))
408- bn
413+ let bq = (bm * (height - bc))
414+ bq
409415 }
410- else if (if (if ((height > aS))
411- then (aS == aT)
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
412418 else false)
413- then (aZ > aS)
419+ then (bc > aV)
414420 else false)
415421 then {
416- let bn = (bh * (height - aZ))
417- bn
422+ let bq = (bk * (height - bc))
423+ bq
418424 }
419425 else {
420- let bo = (bj * (aS - aZ))
421- let bn = (bh * (height - aS))
422- (bn + bo)
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
423429 }
424430 else 0
425431 }
426432
427433
428-func bB (V,bC) = {
429- let bD = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
430- if ((bC == bD))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
431437 then true
432438 else false
433439 }
434440
435441
436-func bE (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + q)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
437443
438444
439-@Callable(bF)
440-func init (bG) = if (isDefined(getString(this, p)))
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446+
447+
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
441450 then throw("SWOP already initialized")
442451 else {
443- let bH = 100000000000000
444- let bI = Issue("SWOP", "SWOP protocol token", bH, 8, true)
445- let bJ = calculateAssetId(bI)
446-[Issue("SWOP", "SWOP protocol token", bH, 8, true), StringEntry(p, toBase58String(bJ))]
452+ let bM = 100000000000000
453+ let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454+ let bO = calculateAssetId(bN)
455+[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
447456 }
448457
449458
450459
451-@Callable(bF)
452-func initPoolShareFarming (V) = if ((bF.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
453462 then throw("Only the DApp itself can call this function")
454463 else {
455- let bK = aO(V)
456- let bL = bK._1
457- let aS = bK._2
458- let bj = bK._3
459- let aT = bK._4
460-[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
464+ let bP = aR(X)
465+ let bQ = bP._1
466+ let aV = bP._2
467+ let bm = bP._3
468+ let aW = bP._4
469+[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
461470 }
462471
463472
464473
465-@Callable(bF)
466-func updatePoolInterest (V) = if ((bF.caller != J))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
467476 then throw("Only the Admin itself can call this function")
468- else {
469- let bM = bq(V, L, 0)
470- let bx = bM._1
471- let bv = bM._2
472- let bw = bM._3
473- let bf = bM._4
474- let bN = aO(V)
475- let bL = bN._1
476- let aS = bN._2
477- let bj = bN._3
478- let aT = bN._4
479-[IntegerEntry((V + l), bx), IntegerEntry((V + m), height)]
480- }
477+ else if (!(am))
478+ then throw("DApp is inactive at this moment")
479+ else {
480+ let bR = bt(X, N, 0)
481+ let bA = bR._1
482+ let by = bR._2
483+ let bz = bR._3
484+ let bi = bR._4
485+ let bS = aR(X)
486+ let bQ = bS._1
487+ let aV = bS._2
488+ let bm = bS._3
489+ let aW = bS._4
490+[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
491+ }
481492
482493
483494
484-@Callable(bF)
485-func lockShareTokens (V) = {
486- let bO = $Tuple2(bF.payments[0].amount, bF.payments[0].assetId)
487- let bm = bO._1
488- let bC = bO._2
489- let bP = aD(bC)
490- let bQ = bP._1
491- let bR = bP._2
492- let bS = bP._3
493- let bT = bq(V, bF.caller, bm)
494- let bx = bT._1
495- let bv = bT._2
496- let bw = bT._3
497- let bf = bT._4
498- let bU = (bf + bm)
499- let bV = (aM(V, bF.caller) + bw)
500- let bW = az(V)
501- let bX = (bW + bm)
502- let bY = bE(V, bF.caller)
503- let bZ = (bY + bw)
504- let ca = [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + d), bX), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV)]
505- if ((0 >= bm))
495+@Callable(bK)
496+func lockShareTokens (X) = {
497+ let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498+ let bp = bT._1
499+ let bF = bT._2
500+ let bU = aG(bF)
501+ let bV = bU._1
502+ let bW = bU._2
503+ let bX = bU._3
504+ let bY = bt(X, bK.caller, bp)
505+ let bA = bY._1
506+ let by = bY._2
507+ let bz = bY._3
508+ let bi = bY._4
509+ let bZ = (bi + bp)
510+ let ca = (aP(X, bK.caller) + bz)
511+ let cb = aC(X)
512+ let cc = (cb + bp)
513+ let cd = bH(X, bK.caller)
514+ let ce = (cd + bz)
515+ let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516+ if ((0 >= bp))
506517 then throw("You can't lock token")
507- else if (!(bB(V, bC)))
508- then throw("Incorrect pmtAssetId")
509- else if (if (au(Address(fromBase58String(V))))
510- then (av(Address(fromBase58String(V))) > height)
511- else false)
512- then {
513- let cb = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
514- let cc = split(getStringValue(K, (((toString(bF.caller) + "_") + V) + "_user_pool_struc")), "_")
515- let cd = split(getStringValue(K, (V + "_pool_struc")), "_")
516- let ce = split(valueOrElse(getString(K, (((toString(bF.caller) + "_") + V) + A)), ""), "_")
517- let cf = split(valueOrElse(getString(K, (V + z)), ""), "_")
518- let cg = bf
519- let ch = if ((toString(ak) == cc[2]))
520- then valueOrElse(parseInt(ce[0]), 0)
521- else valueOrElse(parseInt(cc[1]), 0)
522- let ci = if ((toString(ak) == cd[2]))
523- then valueOrElse(parseInt(cf[0]), 0)
524- else valueOrElse(parseInt(cd[1]), 0)
525- let cj = by(V)
526- if ((ch != 0))
527- then {
528- let ck = ay(addressFromStringValue(V))
529- let cl = (fraction(ck, ch, ci) - cg)
530- if (if ((size(ce) > 1))
531- then (valueOrElse(parseInt(ce[1]), 0) >= cb)
532- else false)
533- then throw("You can't share token")
534- else if ((bm > ck))
535- then throw(("You can't share token more than " + toString(ck)))
536- else if ((cl > 0))
537- then if ((fraction(99, (aB(bC) + bm), 100) > bX))
538- then throw("Balance of share-token is greater than totalAmount")
539- else if ((bW == 0))
540- then (ca ++ [Reissue(at, cj, true), ScriptTransfer(J, cj, at)])
541- else if ((cl >= bm))
542- then ca
543- else throw(("Your maximum share token is " + toString(cl)))
544- else throw("You can't share token")
545- }
546- else throw("Your amount of token less than 0")
547- }
548- else ca
518+ else if (!(am))
519+ then throw("DApp is inactive at this moment")
520+ else if (!(bE(X, bF)))
521+ then throw("Incorrect pmtAssetId")
522+ else if (if (ax(Address(fromBase58String(X))))
523+ then (ay(Address(fromBase58String(X))) > height)
524+ else false)
525+ then {
526+ let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527+ let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528+ let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529+ let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530+ let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531+ let cl = bi
532+ let cm = if ((toString(an) == ch[2]))
533+ then valueOrElse(parseInt(cj[0]), 0)
534+ else valueOrElse(parseInt(ch[1]), 0)
535+ let cn = if ((toString(an) == ci[2]))
536+ then valueOrElse(parseInt(ck[0]), 0)
537+ else valueOrElse(parseInt(ci[1]), 0)
538+ let co = bB(X)
539+ if ((cm != 0))
540+ then {
541+ let cp = aB(addressFromStringValue(X))
542+ let cq = (fraction(cp, cm, cn) - cl)
543+ if (if ((size(cj) > 1))
544+ then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545+ else false)
546+ then throw("You can't share token")
547+ else if ((bp > cp))
548+ then throw(("You can't share token more than " + toString(cp)))
549+ else if ((cq > 0))
550+ then if ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [ScriptTransfer(L, co, aw)])
554+ else if ((cq >= bp))
555+ then cf
556+ else throw(("Your maximum share token is " + toString(cq)))
557+ else throw("You can't share token")
558+ }
559+ else throw("Your amount of token less than 0")
560+ }
561+ else cf
549562 }
550563
551564
552565
553-@Callable(bF)
554-func withdrawShareTokens (V,cm) = {
555- let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
556- let co = bq(V, bF.caller, 1)
557- let bx = co._1
558- let bv = co._2
559- let bw = co._3
560- let bf = co._4
561- let bU = (bf - cm)
562- let bV = (aM(V, bF.caller) + bw)
563- let bW = az(V)
564- let bX = (bW - cm)
565- let bY = bE(V, bF.caller)
566- let bZ = (bY + bw)
567- if ((cm > bf))
566+@Callable(bK)
567+func withdrawShareTokens (X,cr) = {
568+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569+ let ct = bt(X, bK.caller, 1)
570+ let bA = ct._1
571+ let by = ct._2
572+ let bz = ct._3
573+ let bi = ct._4
574+ let bZ = (bi - cr)
575+ let ca = (aP(X, bK.caller) + bz)
576+ let cb = aC(X)
577+ let cc = (cb - cr)
578+ let cd = bH(X, bK.caller)
579+ let ce = (cd + bz)
580+ if ((cr > bi))
568581 then throw("Withdraw amount more then user locked amount")
569- else if ((fraction(99, (aB(cn) - cm), 100) > bX))
570- then throw("Balance of share-token is greater than totalAmount")
571- else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((V + d), bX), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cm, cn)]
582+ else if (!(am))
583+ then throw("DApp is inactive at this moment")
584+ else if ((cr > bi))
585+ then throw("Withdraw amount more then user locked amount")
586+ else if ((fraction(99, (aE(cs) - cr), 100) > cc))
587+ then throw("Balance of share-token is greater than totalAmount")
588+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
572589 }
573590
574591
575592
576-@Callable(bF)
577-func claim (V) = {
578- let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
579- let bi = az(V)
580- let cp = aX(V)
581- let aZ = cp._1
582- let aY = cp._2
583- let cq = aO(V)
584- let bh = cq._1
585- let aS = cq._2
586- let bj = cq._3
587- let aT = cq._4
588- let cr = bq(V, bF.caller, 1)
589- let bx = cr._1
590- let bv = cr._2
591- let bw = cr._3
592- let bf = cr._4
593- let cs = (aM(V, bF.caller) + bw)
594- let bY = bE(V, bF.caller)
595- let bZ = (bY + bw)
596- if ((cs == 0))
593+@Callable(bK)
594+func claim (X) = {
595+ let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596+ let bl = aC(X)
597+ let cu = ba(X)
598+ let bc = cu._1
599+ let bb = cu._2
600+ let cv = aR(X)
601+ let bk = cv._1
602+ let aV = cv._2
603+ let bm = cv._3
604+ let aW = cv._4
605+ let cw = bt(X, bK.caller, 1)
606+ let bA = cw._1
607+ let by = cw._2
608+ let bz = cw._3
609+ let bi = cw._4
610+ let cx = (aP(X, bK.caller) + bz)
611+ let cd = bH(X, bK.caller)
612+ let ce = (cd + bz)
613+ if ((cx == 0))
597614 then throw("You have 0 available SWOP")
598- else if ((fraction(99, aB(cn), 100) > bi))
599- then throw("Balance of share-token is greater than totalAmount")
600- else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + s), 0), Reissue(at, cs, true), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cs, at)]
615+ else if (!(am))
616+ then throw("DApp is inactive at this moment")
617+ else if ((cx == 0))
618+ then throw("You have 0 available SWOP")
619+ else if ((fraction(99, aE(cs), 100) > bl))
620+ then throw("Balance of share-token is greater than totalAmount")
621+ else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
601622 }
602623
603624
604-@Verifier(ct)
605-func cu () = {
606- let ap = ct
607- sigVerify(ct.bodyBytes, ct.proofs[0], ct.senderPublicKey)
625+
626+@Callable(bK)
627+func shutdown () = if (!(am))
628+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
630+ then throw("Only admin can call this function")
631+ else bI("Paused by admin")
632+
633+
634+
635+@Callable(bK)
636+func activate () = if (am)
637+ then throw("DApp is already active")
638+ else if (!(containsElement([a, b, c], bK.callerPublicKey)))
639+ then throw("Only admin can call this function")
640+ else [BooleanEntry(f, true), DeleteEntry(g)]
641+
642+
643+@Verifier(cy)
644+func cz () = {
645+ let as = cy
646+ sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
608647 }
609648

github/deemru/w8io/169f3d6 
216.53 ms