tx · 9Tetyjf1ss8hvC6hyUwaAMd82hCZFJMGq3wWTEuGBzNG

3P286TmTHARtrJzxUhPoHXardvutC37a9rM:  -0.01400000 Waves

2022.03.11 11:01 [3024149] smart account 3P286TmTHARtrJzxUhPoHXardvutC37a9rM > SELF 0.00000000 Waves

{ "type": 13, "id": "9Tetyjf1ss8hvC6hyUwaAMd82hCZFJMGq3wWTEuGBzNG", "fee": 1400000, "feeAssetId": null, "timestamp": 1646985752261, "version": 2, "chainId": 87, "sender": "3P286TmTHARtrJzxUhPoHXardvutC37a9rM", "senderPublicKey": "5tWMJfu8C7x8gTe8rkfaejk8fwLFZZRt1zE4bWDnTsGU", "proofs": [ "", "5mPQZwFH3HmDNPQnRoafbDYPbKVsnMRYoD1ZXWHktb9SwcN8Shq1tyHCn8t5GbJYED1maKYiss8sQ5YqcL8Cir5C", "2hD1DcE2DQJ11wzcuS9buod8XeFKT7VEwqah23FihZy1xm9bxQppq1f1ysCC5mrFfL6oThBXnNuTb1TSKbaFBfcw" ], "script": "base64:AAIFAAAAAAAAADAIAhIDCgEEEgcKBQEBCAgEEgMKAQESAwoBARIAEgMKAQESABIAEgASBQoDBAEIEgAAAABYAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAAKa2V5VmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAC2tleUFzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAtrZXlBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAALa2V5QmFsYW5jZUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAALa2V5QmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZUluaXRBAgAAAAxBX2Fzc2V0X2luaXQAAAAAD2tleUJhbGFuY2VJbml0QgIAAAAMQl9hc3NldF9pbml0AAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5Rmlyc3RIYXJ2ZXN0AgAAAA1maXJzdF9oYXJ2ZXN0AAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa0Jhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA1rUGVyaW9kTGVuZ3RoAgAAAA1wZXJpb2RfbGVuZ3RoAAAAAAxrU3RhcnRIZWlnaHQCAAAADHN0YXJ0X2hlaWdodAAAAAATa0ZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAEmtleVVTRE5OU0JUQWRkcmVzcwIAAAAYc3Rha2luZ191c2RubnNidF9hZGRyZXNzAAAAAA5rZXlFVVJOQWRkcmVzcwIAAAAUc3Rha2luZ19ldXJuX2FkZHJlc3MAAAAADmtleUxlYXNpbmdQb29sAgAAAA9sZWFzaW5nX2FkZHJlc3MAAAAAEGtleUxlYXNpbmdBbW91bnQCAAAADmxlYXNpbmdfYW1vdW50AAAAAAxrZXlMZWFzaW5nSWQCAAAACmxlYXNpbmdfaWQAAAAAD2tleUFkbWluUHViS2V5MQIAAAALYWRtaW5fcHViXzEAAAAAD2tleUFkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAAD2tleUFkbWluUHViS2V5MwIAAAALYWRtaW5fcHViXzMAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBV4r/CGiaNbpAzWF08hI33qY38Po4zugeOAEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABlBZG1pbiBwdWJsaWMga2V5IGlzIGVtcHR5AAAAAAxhZG1pblB1YktleTEJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MQAAAAAMYWRtaW5QdWJLZXkyCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTIAAAAADGFkbWluUHViS2V5MwkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkzAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgzlkO3OqzXqOuG/1XXufreRE1KXRGMps8FV88BRsoYXsAAAAAEmFkbWluUHViS2V5U3Rha2luZwEAAAAgsj2fHYY3mleF5iNR9OE3eyOPalgB3T7oDWjAjnR7WCgAAAAADXdhbGxldEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVcv5F8goQ5NCtA0sa8erNky+83EfVMfDPEAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVf4P/usT8lizY2UmVuu7KlLCNzwjKSsIrsAAAAABFVTRE4BAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAAAAAROU0JUAQAAACBV7sO+qgvwUOhxyBuqbnCepLHI/kouucHxzMVrD3iXSwAAAAAEU1dPUAEAAAAgy5Y+heb1k1ZPj3mDERR4TyZ+jN5UknzW4a3AXGioruwAAAAABEVVUk4BAAAAILlnk0YDbifFhRsRc92utktjhLGLpJMHqwnDzITAsy51AAAAAA1zdGFraW5nQXNzZXRzCQAETAAAAAICAAAABVdBVkVTCQAETAAAAAIJAAJYAAAAAQUAAAAEVVNETgkABEwAAAACCQACWAAAAAEFAAAABE5TQlQJAARMAAAAAgkAAlgAAAABBQAAAARFVVJOBQAAAANuaWwAAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlBQAAABJrZXlVU0ROTlNCVEFkZHJlc3MCAAAAF25vIHVzZG4gc3Rha2luZyBhZGRyZXNzAAAAABJzdGFraW5nRVVSTkFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAA5rZXlFVVJOQWRkcmVzcwIAAAAXbm8gZXVybiBzdGFraW5nIGFkZHJlc3MAAAAAFFVTRE5Ub1dhdmVzRXhjaGFuZ2VyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXq6Cdjrv8dok/NU7xvbFLKgOXWEUfx4rzAAAAABNVU0ROVG9OU0JURXhjaGFuZ2VyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXBhbBmSg8z4Mo1SWPRS8jsLL5j08FxC8OAAAAAApiYXNlUGVyaW9kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAALa0Jhc2VQZXJpb2QCAAAAEUVtcHR5IGtCYXNlUGVyaW9kAAAAAAtzdGFydEhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAADGtTdGFydEhlaWdodAIAAAASRW1wdHkga1N0YXJ0SGVpZ2h0AAAAAAxwZXJpb2RMZW5ndGgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rUGVyaW9kTGVuZ3RoAgAAABNFbXB0eSBrUGVyaW9kTGVuZ3RoAAAAABVmaXJzdEhhcnZlc3RFbmRQZXJpb2QJAABkAAAAAgkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAAAAAAAAAAADAAAAAAZhY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAALc3RyQXNzZXRJZEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRBAAAAAAtzdHJBc3NldElkQgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAALa2V5QXNzZXRJZEIAAAAACGFzc2V0SWRBAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEEAAAAACGFzc2V0SWRCAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEIAAAAACmFzc2V0TmFtZUEEAAAAByRtYXRjaDAFAAAACGFzc2V0SWRBAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2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AAABBQAAAAhhc3NldElkQgAAAAAKYXNzZXRJbml0QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPa2V5QmFsYW5jZUluaXRBAAAAAAphc3NldEluaXRCCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9rZXlCYWxhbmNlSW5pdEIAAAAAEWF2YWlsYWJsZUJhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1zdGFrZWRBbW91bnRBAAAAABFhdmFpbGFibGVCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAANc3Rha2VkQW1vdW50QgAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQQUAAAANc3Rha2VkQW1vdW50QQAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQgUAAAANc3Rha2VkQW1vdW50QgAAAAAQaGFzRW5vdWdoQmFsYW5jZQMJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQUAAAAIYmFsYW5jZUEJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgUAAAAIYmFsYW5jZUIHAQAAAAxnZXRBc3NldEluZm8AAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwBAAAAAhzdHJpbmdJZAkAAlgAAAABBQAAAAJpZAQAAAAEaW5mbwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAAAmlkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAhzdHJpbmdJZAIAAAAOIGRvZXNuJ3QgZXhpc3QJAAUVAAAAAwUAAAAIc3RyaW5nSWQIBQAAAARpbmZvAAAABG5hbWUIBQAAAARpbmZvAAAACGRlY2ltYWxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAkABRUAAAADAgAAAAVXQVZFUwIAAAAFV0FWRVMAAAAAAAAAAAgJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcAAAABAAAACGFzc2V0U3RyAwkAAAAAAAACBQAAAAhhc3NldFN0cgIAAAAFV0FWRVMJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAIBAAAAAhzdHJpbmdJZAUAAAAIYXNzZXRTdHIEAAAAAmlkCQACWQAAAAEFAAAACGFzc2V0U3RyBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACHN0cmluZ0lkAgAAAA4gZG9lc24ndCBleGlzdAkABRUAAAADBQAAAAhzdHJpbmdJZAgFAAAABGluZm8AAAAEbmFtZQgFAAAABGluZm8AAAAIZGVjaW1hbHMBAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACAAAABXN0YWtlAAAAB2Fzc2V0SWQDBQAAAAVzdGFrZQMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEVVNETgkABRQAAAACAgAAAAxsb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABE5TQlQJAAUUAAAAAgIAAAAIbG9ja05zYnQFAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAAUUAAAAAgIAAAAMc3RhcnRTdGFraW5nBQAAABJzdGFraW5nRVVSTkFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABFVTRE4JAAUUAAAAAgIAAAAOdW5sb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABE5TQlQJAAUUAAAAAgIAAAAKdW5sb2NrTnNidAUAAAAWc3Rha2luZ1VTRE5OU0JUQWRkcmVzcwkABRQAAAACAgAAAAtzdG9wU3Rha2luZwUAAAASc3Rha2luZ0VVUk5BZGRyZXNzAQAAABFjYWxjU3Rha2luZ1BhcmFtcwAAAAMAAAAFc3Rha2UAAAAGYW1vdW50AAAAB2Fzc2V0SWQDBQAAAAVzdGFrZQQAAAALJHQwNjkyMzY5ODkJAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACBQAAAAVzdGFrZQUAAAAHYXNzZXRJZAQAAAAEY2FsbAgFAAAACyR0MDY5MjM2OTg5AAAAAl8xBAAAAAtzdGFraW5nQWRkcggFAAAACyR0MDY5MjM2OTg5AAAAAl8yCQAFFgAAAAQFAAAABGNhbGwFAAAAC3N0YWtpbmdBZGRyBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAAB2Fzc2V0SWQFAAAABmFtb3VudAUAAAADbmlsBAAAAAskdDA3MDc1NzE0MQkBAAAAGGNhbGNTdGFraW5nRnVuY0FuZEFkZHJlcwAAAAIFAAAABXN0YWtlBQAAAAdhc3NldElkBAAAAARjYWxsCAUAAAALJHQwNzA3NTcxNDEAAAACXzEEAAAAC3N0YWtpbmdBZGRyCAUAAAALJHQwNzA3NTcxNDEAAAACXzIJAAUWAAAABAUAAAAEY2FsbAUAAAALc3Rha2luZ0FkZHIJAARMAAAAAgUAAAAGYW1vdW50CQAETAAAAAIJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwBAAAADWNhbGN1bGF0ZUZlZXMAAAAEAAAACXBtdEFtb3VudAAAABJtaW5BbW91bnRUb1JlY2VpdmUAAAAJdG9rZW5Gcm9tAAAAB3Rva2VuVG8EAAAAEGFtb3VudFdpdGhvdXRGZWUJAABrAAAAAwUAAAAHdG9rZW5UbwUAAAAJcG10QW1vdW50CQAAZAAAAAIFAAAACXBtdEFtb3VudAUAAAAJdG9rZW5Gcm9tBAAAAA1hbW91bnRXaXRoRmVlCQAAawAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQUAAAAUY29tbWlzc2lvbkdvdmVybmFuY2UFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAA1hbW91bnRXaXRoRmVlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHUNhbGN1bGF0ZWQgYW1vdW50IHRvIHJlY2VpdmUgCQABpAAAAAEFAAAADWFtb3VudFdpdGhGZWUCAAAAICBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkIG1pbmltdW0gCQABpAAAAAEFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkABRUAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAQAAAAdzdXNwZW5kAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAjU3VzcGljaW91cyBzdGF0ZS4gQWN0dWFsIGJhbGFuY2VzOiAJAAGkAAAAAQUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQIAAAABIAUAAAAKYXNzZXROYW1lQQIAAAACLCAJAAGkAAAAAQUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgIAAAABIAUAAAAKYXNzZXROYW1lQgIAAAAJLiBTdGF0ZTogCQABpAAAAAEFAAAACGJhbGFuY2VBAgAAAAEgBQAAAAphc3NldE5hbWVBAgAAAAIsIAkAAaQA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CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAARaW5pdFdpdGhJbml0UmF0aW8AAAAFAAAACWFtdEFzc2V0QQAAAAlhbXRBc3NldEIAAAALc3RyQXNzZXRJZEEAAAALc3RyQXNzZXRJZEIAAAAMZmlyc3RIYXJ2ZXN0BAAAAA0kdDAxMTIyMzExMzEwCQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRBBAAAAA5wbXRTdHJBc3NldElkQQgFAAAADSR0MDExMjIzMTEzMTAAAAACXzEEAAAADXBtdEFzc2V0TmFtZUEIBQAAAA0kdDAxMTIyMzExMzEwAAAAAl8yBAAAAAxwbXREZWNpbWFsc0EIBQAAAA0kdDAxMTIyMzExMzEwAAAAAl8zBAAAAA0kdDAxMTMxNTExNDAyCQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDExMzE1MTE0MDIAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMTMxNTExNDAyAAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMTMxNTExNDAyAAAAAl8zAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQUAAAALc3RyQXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAAlzaGFyZU5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAXMJAAEvAAAAAgUAAAANcG10QXNzZXROYW1lQQAAAAAAAAAABwIAAAABXwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVCAAAAAAAAAAAHBAAAABBzaGFyZURlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUAAAANcG10QXNzZXROYW1lQQIAAAAFIGFuZCAFAAAADXBtdEFzc2V0TmFtZUICAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlCYWxhbmNlSW5pdEEFAAAACWFtdEFzc2V0QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5QmFsYW5jZUluaXRCBQAAAAlhbXRBc3NldEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Q29tbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgUAAAAKc2hhcmVJc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAAAAAEAAAAKc2hhcmVMaW1pdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAACGlzQWN0aXZlAAAAAAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAASYWRtaW5QdWJLZXlTdGFraW5nBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tTaGFyZUxpbWl0BQAAAApzaGFyZUxpbWl0BQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UJAAACAAAAAQIAAAAoQWRkaW5nIGxpcXVpZGl0eSB0byB0aGUgcG9vbCBpcyBkaXNhYmxlZAAAAAFpAQAAAAh3aXRoZHJhdwAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAhpc0FjdGl2ZQAAAAAEAAAADSR0MDEzNzgwMTM4NTUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxMzc4MDEzODU1AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTM3ODAxMzg1NQAAAAJfMgQAAAAMYW1vdW50VG9QYXlBCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAIYmFsYW5jZUEFAAAAEHNoYXJlQXNzZXRTdXBwbHkEAAAADGFtb3VudFRvUGF5QgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCBQAAABBzaGFyZUFzc2V0U3VwcGx5AwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAADHNoYXJlQXNzZXRJZAkAAAIAAAABCQABLAAAAAICAAAAJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkAAlgAAAABBQAAAAxzaGFyZUFzc2V0SWQDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACXBtdEFtb3VudAUAAAAKcG10QXNzZXRJZAUAAAADbmlsCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAABAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIHCQAETAAAAAIFAAAADGFtb3VudFRvUGF5QQkABEwAAAACBQAAAAtzdHJBc3NldElkQQUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAAAZzdGFrZTIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEIJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIHCQAETAAAAAIFAAAADGFtb3VudFRvUGF5QgkABEwAAAACBQAAAAtzdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGV4Y2hhbmdlAAAAAQAAABJtaW5BbW91bnRUb1JlY2VpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAhpc0FjdGl2ZQAAAAAEAAAADSR0MDE1MTYxMTUyMzYJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxNTE2MTE1MjM2AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTUxNjExNTIzNgAAAAJfMgMDCQAAAAAAAAIFAAAACGJhbGFuY2VBAAAAAAAAAAAABgkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAkAAAIAAAABAgAAACBDYW4ndCBleGNoYW5nZSB3aXRoIHplcm8gYmFsYW5jZQMJAABnAAAAAgAAAAAAAAAAAAUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAA0TWluaW1hbCBhbW91bnQgdG8gcmVjZWl2ZSBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQgQAAAANJHQwMTU3OTExNTkxMwkBAAAADWNhbGN1bGF0ZUZlZXMAAAAEBQAAAAlwbXRBbW91bnQFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTU3OTExNTkxMwAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE1NzkxMTU5MTMAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxNTc5MTE1OTEzAAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACBQAAAAtzdHJBc3NldElkQQUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAAAZzdGFrZTIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEIJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIHCQAETAAAAAIJAABkAAAAAgUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABEwAAAACBQAAAAtzdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQQQAAAANJHQwMTY4NjgxNjk5MAkBAAAADWNhbGN1bGF0ZUZlZXMAAAAEBQAAAAlwbXRBbW91bnQFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVl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ZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAAUYWRtaW5QdWJLZXlTdGFydFN0b3AFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAhrZXlDYXVzZQUAAAADbmlsAAAAAWkBAAAAGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAIaXNBY3RpdmUAAAAABAAAAA1hbW91bnRFbnJvbGxBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIFAAAACGJhbGFuY2VCAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAA13YWxsZXRBZGRyZXNzCQAAAgAAAAECAAAAJk9ubHkgdGhlIHdhbGxldCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAABmAAAAAgAAAAAAAAAAAAUAAAANYW1vdW50RW5yb2xsQQYJAABmAAAAAgAAAAAAAAAAAAUAAAANYW1vdW50RW5yb2xsQgkBAAAAB3N1c3BlbmQAAAABAgAAABZFbnJvbGwgYW1vdW50IG5lZ2F0aXZlAwMJAAAAAAAAAgUAAAANYW1vdW50RW5yb2xsQQAAAAAAAAAAAAkAAAAAAAACBQAAAA1hbW91bnRFbnJvbGxCAAAAAAAAAAAABwkAAAIAAAABAgAAABBObyBtb25leSB0byB0YWtlBAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAADWFtb3VudEVucm9sbEEJAARMAAAAAgUAAAALc3RyQXNzZXRJZEEFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAAAwkAAAAAAAACBQAAAAZzdGFrZTEFAAAABnN0YWtlMQQAAAAGc3Rha2UyAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAAC3N0ckFzc2V0SWRCCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAA1hbW91bnRFbnJvbGxCCQAETAAAAAIFAAAAC3N0ckFzc2V0SWRCBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAGc3Rha2UyBQAAAAZzdGFrZTIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRFbnJvbGxBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAANYW1vdW50RW5yb2xsQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRBBQAAAA1hbW91bnRFbnJvbGxBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAADGxhc3RfaW5jb21lXwUAAAALc3RyQXNzZXRJZEIFAAAADWFtb3VudEVucm9sbEIFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADHN0YWtlVW5zdGFrZQAAAAMAAAAFc3Rha2UAAAAGYW1vdW50AAAADWFzc2V0SWRTdHJpbmcDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAtT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGludm9rZSB0aGlzIGZ1bmN0aW9uAwkAAAAAAAACBQAAAA1hc3NldElkU3RyaW5nAgAAAAVXQVZFUwQAAAAEcG9vbAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABm9yYWNsZQUAAAAOa2V5TGVhc2luZ1Bvb2wCAAAAGU5vIGxlYXNpbmcgcG9vbCBpbiBvcmFjbGUEAAAACWxlYXNpbmdJZAkABBwAAAACBQAAAAR0aGlzBQAAAAxrZXlMZWFzaW5nSWQEAAAADWxlYXNpbmdBbW91bnQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAQa2V5TGVhc2luZ0Ftb3VudAAAAAAAAAAAAAQAAAAObmV3TGVhc2VBbW91bnQDBQAAAAVzdGFrZQkAAGQAAAACBQAAAA1sZWFzaW5nQW1vdW50BQAAAAZhbW91bnQJAABlAAAAAgUAAAANbGVhc2luZ0Ftb3VudAUAAAAGYW1vdW50BAAAAAhuZXdMZWFzZQkABEQAAAACBQAAAARwb29sBQAAAA5uZXdMZWFzZUFtb3VudAQAAAAKbmV3TGVhc2VJZAkABDkAAAABBQAAAAhuZXdMZWFzZQQAAAAIYmFzZUV0cnkJAARMAAAAAgUAAAAIbmV3TGVhc2UJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgUAAAAMa2V5TGVhc2luZ0lkBQAAAApuZXdMZWFzZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrZXlMZWFzaW5nQW1vdW50BQAAAA5uZXdMZWFzZUFtb3VudAUAAAADbmlsBAAAAAckbWF0Y2gwBQAAAAlsZWFzaW5nSWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAA2xJZAUAAAAHJG1hdGNoMAkABE4AAAACCQAETAAAAAIJAQAAAAtMZWFzZUNhbmNlbAAAAAEFAAAAA2xJZAUAAAADbmlsBQAAAAhiYXNlRXRyeQUAAAAIYmFzZUV0cnkEAAAADSR0MDIwNzI0MjA4MjcJAQAAABFj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", "height": 3024149, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8omKepwpUmDMxtuBj3PdKs25taK6Dx3jsh9E6QfTHsF3 Next: Hk5A3HYYmFMu3ZikfN2pJyY76QixeoTj65AQ5kAqVNK Diff:
OldNewDifferences
417417
418418
419419 @Callable(aC)
420-func replenishWithTwoTokens (bR) = valueOrElse(bk(), {
421- let bo = aC.payments[0].assetId
422- let br = aC.payments[1].assetId
423- let bn = aC.payments[0].amount
424- let bq = aC.payments[1].amount
425- let bS = aM(bo)
426- let bt = bS._1
427- let bu = bS._2
428- let bv = bS._3
429- let bT = aM(br)
430- let bx = bT._1
431- let by = bT._2
432- let bz = bT._3
433- let bU = if (if ((am == 0))
434- then (an == 0)
435- else false)
436- then true
437- else false
438- let bV = if (bU)
439- then fraction(fraction(aF, au, bn), at, fraction(aG, au, bq))
440- else fraction(fraction(am, au, bn), at, fraction(an, au, bq))
441- let bC = ((bv + bz) / 2)
442- let bW = if (bU)
443- then fraction(pow(bn, bv, 5, 1, bv, DOWN), pow(bq, bz, 5, 1, bz, DOWN), pow(10, 0, bC, 0, 0, DOWN))
444- else fraction(min([fraction(bn, au, am), fraction(bq, au, an)]), ap, au)
445- if (if ((0 > bR))
446- then true
447- else (bR > av))
448- then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bR)))
449- else if ((size(aC.payments) != 2))
450- then throw("Two attached assets expected")
451- else if (if ((bo != ag))
452- then true
453- else (br != ah))
454- then throw(((("Incorrect assets attached. Expected: " + ae) + " and ") + af))
455- else if (if ((((at * (av - bR)) / av) > bV))
456- then true
457- else (bV > ((at * (av + bR)) / av)))
458- then throw("Incorrect assets amount: amounts must have the contract ratio")
459- else if ((bW == 0))
460- then throw("Too small amount to replenish")
461- else if (!(aL))
462- then ([ScriptTransfer(aC.caller, bn, bo), ScriptTransfer(aC.caller, bq, br)] ++ bj())
463- else {
464- let bJ = if (containsElement(U, bt))
465- then invoke(this, "stakeUnstake", [true, bn, bt], nil)
466- else 0
467- if ((bJ == bJ))
468- then {
469- let bK = if (containsElement(U, bx))
470- then invoke(this, "stakeUnstake", [true, bq, bx], nil)
471- else 0
472- if ((bK == bK))
473- then [Reissue(ao, bW, true), IntegerEntry(f, (am + bn)), IntegerEntry(g, (an + bq)), IntegerEntry(k, (ap + bW)), ScriptTransfer(aC.caller, bW, ao)]
474- else throw("Strict value is not equal to itself.")
475- }
476- else throw("Strict value is not equal to itself.")
477- }
478- })
420+func replenishWithTwoTokens (bR) = throw("Adding liquidity to the pool is disabled")
479421
480422
481423
482424 @Callable(aC)
483425 func withdraw () = valueOrElse(bk(), {
484- let bX = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
485- let bc = bX._1
486- let bY = bX._2
487- let bZ = fraction(bc, am, ap)
488- let ca = fraction(bc, an, ap)
426+ let bS = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
427+ let bc = bS._1
428+ let bT = bS._2
429+ let bU = fraction(bc, am, ap)
430+ let bV = fraction(bc, an, ap)
489431 if ((size(aC.payments) != 1))
490432 then throw("One attached payment expected")
491- else if ((bY != ao))
433+ else if ((bT != ao))
492434 then throw(("Incorrect asset attached. Expected: " + toBase58String(ao)))
493435 else if (!(aL))
494- then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
436+ then ([ScriptTransfer(aC.caller, bc, bT)] ++ bj())
495437 else {
496438 let bJ = if (containsElement(U, ae))
497- then invoke(this, "stakeUnstake", [false, bZ, ae], nil)
439+ then invoke(this, "stakeUnstake", [false, bU, ae], nil)
498440 else 0
499441 if ((bJ == bJ))
500442 then {
501443 let bK = if (containsElement(U, af))
502- then invoke(this, "stakeUnstake", [false, ca, af], nil)
444+ then invoke(this, "stakeUnstake", [false, bV, af], nil)
503445 else 0
504446 if ((bK == bK))
505- then [IntegerEntry(f, (am - bZ)), IntegerEntry(g, (an - ca)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bZ, ag), ScriptTransfer(aC.caller, ca, ah)]
447+ then [IntegerEntry(f, (am - bU)), IntegerEntry(g, (an - bV)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bU, ag), ScriptTransfer(aC.caller, bV, ah)]
506448 else throw("Strict value is not equal to itself.")
507449 }
508450 else throw("Strict value is not equal to itself.")
513455
514456 @Callable(aC)
515457 func exchange (bd) = valueOrElse(bk(), {
516- let cb = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
517- let bc = cb._1
518- let bY = cb._2
458+ let bW = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
459+ let bc = bW._1
460+ let bT = bW._2
519461 if (if ((am == 0))
520462 then true
521463 else (an == 0))
525467 else if ((size(aC.payments) != 1))
526468 then throw("One attached payment expected")
527469 else if (!(aL))
528- then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
529- else if ((bY == ag))
470+ then ([ScriptTransfer(aC.caller, bc, bT)] ++ bj())
471+ else if ((bT == ag))
530472 then {
531- let cc = ah
532- let cd = bb(bc, bd, am, an)
533- let bg = cd._1
534- let bh = cd._2
535- let bi = cd._3
536- let ce = (am + bc)
537- let cf = ((an - bh) - bi)
473+ let bX = ah
474+ let bY = bb(bc, bd, am, an)
475+ let bg = bY._1
476+ let bh = bY._2
477+ let bi = bY._3
478+ let bZ = (am + bc)
479+ let ca = ((an - bh) - bi)
538480 let bJ = if (containsElement(U, ae))
539481 then invoke(this, "stakeUnstake", [true, bc, ae], nil)
540482 else 0
544486 then invoke(this, "stakeUnstake", [false, (bh + bi), af], nil)
545487 else 0
546488 if ((bK == bK))
547- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
489+ then [IntegerEntry(f, bZ), IntegerEntry(g, ca), ScriptTransfer(aC.caller, bh, bX), ScriptTransfer(O, bi, bX)]
548490 else throw("Strict value is not equal to itself.")
549491 }
550492 else throw("Strict value is not equal to itself.")
551493 }
552- else if ((bY == ah))
494+ else if ((bT == ah))
553495 then {
554- let cc = ag
555- let cg = bb(bc, bd, an, am)
556- let bg = cg._1
557- let bh = cg._2
558- let bi = cg._3
559- let ce = ((am - bh) - bi)
560- let cf = (an + bc)
496+ let bX = ag
497+ let cb = bb(bc, bd, an, am)
498+ let bg = cb._1
499+ let bh = cb._2
500+ let bi = cb._3
501+ let bZ = ((am - bh) - bi)
502+ let ca = (an + bc)
561503 let bJ = if (containsElement(U, ae))
562504 then invoke(this, "stakeUnstake", [false, (bh + bi), ae], nil)
563505 else 0
567509 then invoke(this, "stakeUnstake", [true, bc, af], nil)
568510 else 0
569511 if ((bK == bK))
570- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
512+ then [IntegerEntry(f, bZ), IntegerEntry(g, ca), ScriptTransfer(aC.caller, bh, bX), ScriptTransfer(O, bi, bX)]
571513 else throw("Strict value is not equal to itself.")
572514 }
573515 else throw("Strict value is not equal to itself.")
597539
598540 @Callable(aC)
599541 func takeIntoAccountExtraFunds () = valueOrElse(bk(), {
600- let ch = (aJ - am)
601- let ci = (aK - an)
542+ let cc = (aJ - am)
543+ let cd = (aK - an)
602544 if ((aC.caller != O))
603545 then throw("Only the wallet can call this function")
604- else if (if ((0 > ch))
546+ else if (if ((0 > cc))
605547 then true
606- else (0 > ci))
548+ else (0 > cd))
607549 then aR("Enroll amount negative")
608- else if (if ((ch == 0))
609- then (ci == 0)
550+ else if (if ((cc == 0))
551+ then (cd == 0)
610552 else false)
611553 then throw("No money to take")
612554 else {
613555 let bJ = if (containsElement(U, ae))
614- then invoke(this, "stakeUnstake", [true, ch, ae], nil)
556+ then invoke(this, "stakeUnstake", [true, cc, ae], nil)
615557 else 0
616558 if ((bJ == bJ))
617559 then {
618560 let bK = if (containsElement(U, af))
619- then invoke(this, "stakeUnstake", [true, ci, af], nil)
561+ then invoke(this, "stakeUnstake", [true, cd, af], nil)
620562 else 0
621563 if ((bK == bK))
622- then [IntegerEntry(f, (am + ch)), IntegerEntry(g, (an + ci)), IntegerEntry(("last_income_" + ae), ch), IntegerEntry(("last_income_" + af), ci)]
564+ then [IntegerEntry(f, (am + cc)), IntegerEntry(g, (an + cd)), IntegerEntry(("last_income_" + ae), cc), IntegerEntry(("last_income_" + af), cd)]
623565 else throw("Strict value is not equal to itself.")
624566 }
625567 else throw("Strict value is not equal to itself.")
629571
630572
631573 @Callable(aC)
632-func stakeUnstake (aU,aW,cj) = if ((aC.caller != this))
574+func stakeUnstake (aU,aW,ce) = if ((aC.caller != this))
633575 then throw("Only contract itself can invoke this function")
634- else if ((cj == "WAVES"))
576+ else if ((ce == "WAVES"))
635577 then {
636- let ck = addressFromStringValue(valueOrErrorMessage(getString(D, x), "No leasing pool in oracle"))
637- let cl = getBinary(this, z)
638- let cm = valueOrElse(getInteger(this, y), 0)
639- let cn = if (aU)
640- then (cm + aW)
641- else (cm - aW)
642- let co = Lease(ck, cn)
643- let cp = calculateLeaseId(co)
644- let cq = [co, BinaryEntry(z, cp), IntegerEntry(y, cn)]
645- let G = cl
578+ let cf = addressFromStringValue(valueOrErrorMessage(getString(D, x), "No leasing pool in oracle"))
579+ let cg = getBinary(this, z)
580+ let ch = valueOrElse(getInteger(this, y), 0)
581+ let ci = if (aU)
582+ then (ch + aW)
583+ else (ch - aW)
584+ let cj = Lease(cf, ci)
585+ let ck = calculateLeaseId(cj)
586+ let cl = [cj, BinaryEntry(z, ck), IntegerEntry(y, ci)]
587+ let G = cg
646588 if ($isInstanceOf(G, "ByteVector"))
647589 then {
648- let cr = G
649- ([LeaseCancel(cr)] ++ cq)
590+ let cm = G
591+ ([LeaseCancel(cm)] ++ cl)
650592 }
651- else cq
593+ else cl
652594 }
653595 else {
654- let cs = aV(aU, aW, fromBase58String(cj))
655- let aY = cs._1
656- let ct = cs._2
657- let cu = cs._3
658- let cv = cs._4
659- let cw = invoke(ct, aY, cu, cv)
660- if ((cw == cw))
596+ let cn = aV(aU, aW, fromBase58String(ce))
597+ let aY = cn._1
598+ let co = cn._2
599+ let cp = cn._3
600+ let cq = cn._4
601+ let cr = invoke(co, aY, cp, cq)
602+ if ((cr == cr))
661603 then nil
662604 else throw("Strict value is not equal to itself.")
663605 }
670612 else {
671613 let bJ = if (containsElement(U, ae))
672614 then {
673- let cx = (am - aD)
674- if ((cx > 0))
675- then invoke(this, "stakeUnstake", [true, cx, ae], nil)
615+ let cs = (am - aD)
616+ if ((cs > 0))
617+ then invoke(this, "stakeUnstake", [true, cs, ae], nil)
676618 else 0
677619 }
678620 else 0
680622 then {
681623 let bK = if (containsElement(U, af))
682624 then {
683- let cy = (an - aE)
684- if ((cy > 0))
685- then invoke(this, "stakeUnstake", [true, cy, af], nil)
625+ let ct = (an - aE)
626+ if ((ct > 0))
627+ then invoke(this, "stakeUnstake", [true, ct, af], nil)
686628 else 0
687629 }
688630 else 0
694636 })
695637
696638
697-@Verifier(cz)
698-func cA () = {
699- let cB = {
700- let cC = if (sigVerify(cz.bodyBytes, cz.proofs[0], J))
639+@Verifier(cu)
640+func cv () = {
641+ let cw = {
642+ let cx = if (sigVerify(cu.bodyBytes, cu.proofs[0], J))
701643 then 1
702644 else 0
703- let cD = if (sigVerify(cz.bodyBytes, cz.proofs[1], K))
645+ let cy = if (sigVerify(cu.bodyBytes, cu.proofs[1], K))
704646 then 1
705647 else 0
706- let cE = if (sigVerify(cz.bodyBytes, cz.proofs[2], L))
648+ let cz = if (sigVerify(cu.bodyBytes, cu.proofs[2], L))
707649 then 1
708650 else 0
709- (((cC + cD) + cE) >= 2)
651+ (((cx + cy) + cz) >= 2)
710652 }
711- let G = cz
653+ let G = cu
712654 if ($isInstanceOf(G, "InvokeScriptTransaction"))
713655 then {
714- let cw = G
715- let cF = if ((cw.dApp == this))
716- then (cw.function == "takeIntoAccountExtraFunds")
656+ let cr = G
657+ let cA = if ((cr.dApp == this))
658+ then (cr.function == "takeIntoAccountExtraFunds")
717659 else false
718- let cG = if (if (if ((cw.dApp == X))
719- then (cw.function == "exchange")
660+ let cB = if (if (if ((cr.dApp == X))
661+ then (cr.function == "exchange")
720662 else false)
721- then (ag == Q)
663+ then (size(cr.payments) == 1)
722664 else false)
723- then true
724- else if (if ((ah == Q))
725- then (size(cw.payments) == 1)
726- else false)
727- then (cw.payments[0].assetId == Q)
728- else false
729- let cH = if (if (if ((cw.dApp == Y))
730- then (cw.function == "exchange")
665+ then if ((cr.payments[0].assetId == Q))
666+ then true
667+ else (cr.payments[0].assetId == unit)
668+ else false
669+ let cC = if (if (if ((cr.dApp == Y))
670+ then (cr.function == "exchange")
731671 else false)
732672 then (ag == R)
733673 else false)
734674 then true
735675 else if (if ((ah == R))
736- then (size(cw.payments) == 1)
676+ then (size(cr.payments) == 1)
737677 else false)
738- then (cw.payments[0].assetId == Q)
678+ then (cr.payments[0].assetId == Q)
739679 else false
740- let cI = if (if (if (sigVerify(cz.bodyBytes, cz.proofs[0], J))
680+ let cD = if (if (if (sigVerify(cu.bodyBytes, cu.proofs[0], J))
741681 then true
742- else sigVerify(cz.bodyBytes, cz.proofs[0], K))
682+ else sigVerify(cu.bodyBytes, cu.proofs[0], K))
743683 then true
744- else sigVerify(cz.bodyBytes, cz.proofs[0], L))
684+ else sigVerify(cu.bodyBytes, cu.proofs[0], L))
745685 then true
746- else sigVerify(cz.bodyBytes, cz.proofs[0], N)
747- if (if (if (if (cF)
686+ else sigVerify(cu.bodyBytes, cu.proofs[0], N)
687+ if (if (if (if (cA)
748688 then true
749- else cG)
689+ else cB)
750690 then true
751- else cH)
752- then cI
691+ else cC)
692+ then cD
753693 else false)
754694 then true
755- else cB
695+ else cw
756696 }
757- else cB
697+ else cw
758698 }
759699
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "commission_scale_delimiter"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "first_harvest_height"
4545
4646 let v = "staking_usdnnsbt_address"
4747
4848 let w = "staking_eurn_address"
4949
5050 let x = "leasing_address"
5151
5252 let y = "leasing_amount"
5353
5454 let z = "leasing_id"
5555
5656 let A = "admin_pub_1"
5757
5858 let B = "admin_pub_2"
5959
6060 let C = "admin_pub_3"
6161
6262 let D = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
6363
6464 func E (F) = {
6565 let G = getString(D, F)
6666 if ($isInstanceOf(G, "String"))
6767 then {
6868 let H = G
6969 fromBase58String(H)
7070 }
7171 else {
7272 let I = G
7373 throw("Admin public key is empty")
7474 }
7575 }
7676
7777
7878 let J = E(A)
7979
8080 let K = E(B)
8181
8282 let L = E(C)
8383
8484 let M = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
8585
8686 let N = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
8787
8888 let O = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
8989
9090 let P = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
9191
9292 let Q = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
9393
9494 let R = base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'
9595
9696 let S = base58'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT'
9797
9898 let T = base58'DUk2YTxhRoAqMJLus4G2b3fR8hMHVh6eiyFx5r29VR6t'
9999
100100 let U = ["WAVES", toBase58String(Q), toBase58String(R), toBase58String(T)]
101101
102102 let V = Address(fromBase58String(valueOrErrorMessage(getString(D, v), "no usdn staking address")))
103103
104104 let W = Address(fromBase58String(valueOrErrorMessage(getString(D, w), "no eurn staking address")))
105105
106106 let X = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
107107
108108 let Y = Address(base58'3P2V63Xd6BviDkeMzxhUw2SJyojByRz8a8m')
109109
110110 let Z = valueOrErrorMessage(getInteger(P, r), "Empty kBasePeriod")
111111
112112 let aa = valueOrErrorMessage(getInteger(P, t), "Empty kStartHeight")
113113
114114 let ab = valueOrErrorMessage(getInteger(P, s), "Empty kPeriodLength")
115115
116116 let ac = ((Z + ((height - aa) / ab)) + 3)
117117
118118 let ad = getBooleanValue(this, c)
119119
120120 let ae = getStringValue(this, d)
121121
122122 let af = getStringValue(this, e)
123123
124124 let ag = if ((ae == "WAVES"))
125125 then unit
126126 else fromBase58String(ae)
127127
128128 let ah = if ((af == "WAVES"))
129129 then unit
130130 else fromBase58String(af)
131131
132132 let ai = {
133133 let G = ag
134134 if ($isInstanceOf(G, "ByteVector"))
135135 then {
136136 let aj = G
137137 value(assetInfo(aj)).name
138138 }
139139 else if ($isInstanceOf(G, "Unit"))
140140 then {
141141 let ak = G
142142 "WAVES"
143143 }
144144 else throw("Match error")
145145 }
146146
147147 let al = {
148148 let G = ah
149149 if ($isInstanceOf(G, "ByteVector"))
150150 then {
151151 let aj = G
152152 value(assetInfo(aj)).name
153153 }
154154 else if ($isInstanceOf(G, "Unit"))
155155 then {
156156 let ak = G
157157 "WAVES"
158158 }
159159 else throw("Match error")
160160 }
161161
162162 let am = getIntegerValue(this, f)
163163
164164 let an = getIntegerValue(this, g)
165165
166166 let ao = fromBase58String(getStringValue(this, j))
167167
168168 let ap = getIntegerValue(this, k)
169169
170170 let aq = 3000
171171
172172 let ar = 1200
173173
174174 let as = 1000000
175175
176176 let at = 1000
177177
178178 let au = 100000000
179179
180180 let av = 1000
181181
182182 let aw = 8
183183
184184 func ax (ay) = {
185185 let G = ay
186186 if ($isInstanceOf(G, "ByteVector"))
187187 then {
188188 let aj = G
189189 assetBalance(this, aj)
190190 }
191191 else if ($isInstanceOf(G, "Unit"))
192192 then {
193193 let ak = G
194194 wavesBalance(this).available
195195 }
196196 else throw("Match error")
197197 }
198198
199199
200200 func az (ay) = {
201201 let aA = {
202202 let G = ay
203203 if ($isInstanceOf(G, "ByteVector"))
204204 then {
205205 let aB = G
206206 if (if ((aB == Q))
207207 then true
208208 else (aB == R))
209209 then getInteger(V, ((("rpd_balance_" + toBase58String(aB)) + "_") + toString(this)))
210210 else if ((aB == T))
211211 then getInteger(W, ((("%s%s%s__stakingBalance__" + toBase58String(aB)) + "__") + toString(this)))
212212 else 0
213213 }
214214 else if ($isInstanceOf(G, "Unit"))
215215 then valueOrElse(getInteger(this, y), 0)
216216 else throw("Match error")
217217 }
218218 let G = aA
219219 if ($isInstanceOf(G, "Int"))
220220 then {
221221 let aC = G
222222 aC
223223 }
224224 else 0
225225 }
226226
227227
228228 let aD = az(ag)
229229
230230 let aE = az(ah)
231231
232232 let aF = getIntegerValue(this, h)
233233
234234 let aG = getIntegerValue(this, i)
235235
236236 let aH = (am - aD)
237237
238238 let aI = (an - aE)
239239
240240 let aJ = (ax(ag) + aD)
241241
242242 let aK = (ax(ah) + aE)
243243
244244 let aL = if ((aJ >= am))
245245 then (aK >= an)
246246 else false
247247
248248 func aM (ay) = {
249249 let G = ay
250250 if ($isInstanceOf(G, "ByteVector"))
251251 then {
252252 let aj = G
253253 let aN = toBase58String(aj)
254254 let aO = valueOrErrorMessage(assetInfo(aj), (("Asset " + aN) + " doesn't exist"))
255255 $Tuple3(aN, aO.name, aO.decimals)
256256 }
257257 else if ($isInstanceOf(G, "Unit"))
258258 then {
259259 let ak = G
260260 $Tuple3("WAVES", "WAVES", 8)
261261 }
262262 else throw("Match error")
263263 }
264264
265265
266266 func aP (aQ) = if ((aQ == "WAVES"))
267267 then $Tuple3("WAVES", "WAVES", 8)
268268 else {
269269 let aN = aQ
270270 let aj = fromBase58String(aQ)
271271 let aO = valueOrErrorMessage(assetInfo(aj), (("Asset " + aN) + " doesn't exist"))
272272 $Tuple3(aN, aO.name, aO.decimals)
273273 }
274274
275275
276276 func aR (aS) = [BooleanEntry(c, false), StringEntry(n, aS)]
277277
278278
279279 func aT (aU,ay) = if (aU)
280280 then if ((ay == Q))
281281 then $Tuple2("lockNeutrino", V)
282282 else if ((ay == R))
283283 then $Tuple2("lockNsbt", V)
284284 else $Tuple2("startStaking", W)
285285 else if ((ay == Q))
286286 then $Tuple2("unlockNeutrino", V)
287287 else if ((ay == R))
288288 then $Tuple2("unlockNsbt", V)
289289 else $Tuple2("stopStaking", W)
290290
291291
292292 func aV (aU,aW,ay) = if (aU)
293293 then {
294294 let aX = aT(aU, ay)
295295 let aY = aX._1
296296 let aZ = aX._2
297297 $Tuple4(aY, aZ, nil, [AttachedPayment(ay, aW)])
298298 }
299299 else {
300300 let ba = aT(aU, ay)
301301 let aY = ba._1
302302 let aZ = ba._2
303303 $Tuple4(aY, aZ, [aW, toBase58String(ay)], nil)
304304 }
305305
306306
307307 func bb (bc,bd,be,bf) = {
308308 let bg = fraction(bf, bc, (bc + be))
309309 let bh = fraction(bg, (as - aq), as)
310310 let bi = fraction(bg, ar, as)
311311 if ((bd > bh))
312312 then throw(((("Calculated amount to receive " + toString(bh)) + " is less than specified minimum ") + toString(bd)))
313313 else $Tuple3(bg, bh, bi)
314314 }
315315
316316
317317 func bj () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ai) + ", ") + toString(aK)) + " ") + al) + ". State: ") + toString(am)) + " ") + ai) + ", ") + toString(an)) + " ") + al))
318318
319319
320320 func bk () = if (ad)
321321 then unit
322322 else throw("DApp is inactive at this moment")
323323
324324
325325 @Callable(aC)
326326 func init (bl) = {
327327 let bm = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
328328 let bn = bm._1
329329 let bo = bm._2
330330 let bp = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
331331 let bq = bp._1
332332 let br = bp._2
333333 let bs = aM(bo)
334334 let bt = bs._1
335335 let bu = bs._2
336336 let bv = bs._3
337337 let bw = aM(br)
338338 let bx = bw._1
339339 let by = bw._2
340340 let bz = bw._3
341341 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
342342 then throw("Only admin can call this function")
343343 else if (isDefined(getBoolean(this, c)))
344344 then throw("DApp is already active")
345345 else if ((bo == br))
346346 then throw("Assets must be different")
347347 else {
348348 let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
349349 let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
350350 let bC = ((bv + bz) / 2)
351351 let bD = pow(bn, bv, 5, 1, bv, DOWN)
352352 let bE = pow(bq, bz, 5, 1, bz, DOWN)
353353 let bF = pow(10, 0, bC, 0, 0, DOWN)
354354 let bG = fraction(bD, bE, bF)
355355 let bH = Issue(bA, bB, bG, bC, true)
356356 let bI = calculateAssetId(bH)
357357 let bJ = if (containsElement(U, bt))
358358 then invoke(this, "stakeUnstake", [true, bn, bt], nil)
359359 else 0
360360 if ((bJ == bJ))
361361 then {
362362 let bK = if (containsElement(U, bx))
363363 then invoke(this, "stakeUnstake", [true, bq, bx], nil)
364364 else 0
365365 if ((bK == bK))
366366 then {
367367 let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(f, bn), IntegerEntry(g, bq), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG), ScriptTransfer(aC.caller, bG, bI)]
368368 if (bl)
369369 then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
370370 else bL
371371 }
372372 else throw("Strict value is not equal to itself.")
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376 }
377377
378378
379379
380380 @Callable(aC)
381381 func initWithInitRatio (bM,bN,ae,af,bl) = {
382382 let bO = aP(ae)
383383 let bt = bO._1
384384 let bu = bO._2
385385 let bv = bO._3
386386 let bP = aP(af)
387387 let bx = bP._1
388388 let by = bP._2
389389 let bz = bP._3
390390 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
391391 then throw("Only admin can call this function")
392392 else if (isDefined(getBoolean(this, c)))
393393 then throw("DApp is already active")
394394 else if ((ae == af))
395395 then throw("Assets must be different")
396396 else {
397397 let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
398398 let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
399399 let bC = ((bv + bz) / 2)
400400 let bG = 0
401401 let bH = Issue(bA, bB, bG, bC, true)
402402 let bI = calculateAssetId(bH)
403403 let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(h, bM), IntegerEntry(i, bN), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG)]
404404 if (bl)
405405 then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
406406 else bL
407407 }
408408 }
409409
410410
411411
412412 @Callable(aC)
413413 func keepLimitForFirstHarvest (bQ) = valueOrElse(bk(), if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
414414 then throw("Only admin can call this function")
415415 else [IntegerEntry(q, bQ)])
416416
417417
418418
419419 @Callable(aC)
420-func replenishWithTwoTokens (bR) = valueOrElse(bk(), {
421- let bo = aC.payments[0].assetId
422- let br = aC.payments[1].assetId
423- let bn = aC.payments[0].amount
424- let bq = aC.payments[1].amount
425- let bS = aM(bo)
426- let bt = bS._1
427- let bu = bS._2
428- let bv = bS._3
429- let bT = aM(br)
430- let bx = bT._1
431- let by = bT._2
432- let bz = bT._3
433- let bU = if (if ((am == 0))
434- then (an == 0)
435- else false)
436- then true
437- else false
438- let bV = if (bU)
439- then fraction(fraction(aF, au, bn), at, fraction(aG, au, bq))
440- else fraction(fraction(am, au, bn), at, fraction(an, au, bq))
441- let bC = ((bv + bz) / 2)
442- let bW = if (bU)
443- then fraction(pow(bn, bv, 5, 1, bv, DOWN), pow(bq, bz, 5, 1, bz, DOWN), pow(10, 0, bC, 0, 0, DOWN))
444- else fraction(min([fraction(bn, au, am), fraction(bq, au, an)]), ap, au)
445- if (if ((0 > bR))
446- then true
447- else (bR > av))
448- then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bR)))
449- else if ((size(aC.payments) != 2))
450- then throw("Two attached assets expected")
451- else if (if ((bo != ag))
452- then true
453- else (br != ah))
454- then throw(((("Incorrect assets attached. Expected: " + ae) + " and ") + af))
455- else if (if ((((at * (av - bR)) / av) > bV))
456- then true
457- else (bV > ((at * (av + bR)) / av)))
458- then throw("Incorrect assets amount: amounts must have the contract ratio")
459- else if ((bW == 0))
460- then throw("Too small amount to replenish")
461- else if (!(aL))
462- then ([ScriptTransfer(aC.caller, bn, bo), ScriptTransfer(aC.caller, bq, br)] ++ bj())
463- else {
464- let bJ = if (containsElement(U, bt))
465- then invoke(this, "stakeUnstake", [true, bn, bt], nil)
466- else 0
467- if ((bJ == bJ))
468- then {
469- let bK = if (containsElement(U, bx))
470- then invoke(this, "stakeUnstake", [true, bq, bx], nil)
471- else 0
472- if ((bK == bK))
473- then [Reissue(ao, bW, true), IntegerEntry(f, (am + bn)), IntegerEntry(g, (an + bq)), IntegerEntry(k, (ap + bW)), ScriptTransfer(aC.caller, bW, ao)]
474- else throw("Strict value is not equal to itself.")
475- }
476- else throw("Strict value is not equal to itself.")
477- }
478- })
420+func replenishWithTwoTokens (bR) = throw("Adding liquidity to the pool is disabled")
479421
480422
481423
482424 @Callable(aC)
483425 func withdraw () = valueOrElse(bk(), {
484- let bX = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
485- let bc = bX._1
486- let bY = bX._2
487- let bZ = fraction(bc, am, ap)
488- let ca = fraction(bc, an, ap)
426+ let bS = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
427+ let bc = bS._1
428+ let bT = bS._2
429+ let bU = fraction(bc, am, ap)
430+ let bV = fraction(bc, an, ap)
489431 if ((size(aC.payments) != 1))
490432 then throw("One attached payment expected")
491- else if ((bY != ao))
433+ else if ((bT != ao))
492434 then throw(("Incorrect asset attached. Expected: " + toBase58String(ao)))
493435 else if (!(aL))
494- then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
436+ then ([ScriptTransfer(aC.caller, bc, bT)] ++ bj())
495437 else {
496438 let bJ = if (containsElement(U, ae))
497- then invoke(this, "stakeUnstake", [false, bZ, ae], nil)
439+ then invoke(this, "stakeUnstake", [false, bU, ae], nil)
498440 else 0
499441 if ((bJ == bJ))
500442 then {
501443 let bK = if (containsElement(U, af))
502- then invoke(this, "stakeUnstake", [false, ca, af], nil)
444+ then invoke(this, "stakeUnstake", [false, bV, af], nil)
503445 else 0
504446 if ((bK == bK))
505- then [IntegerEntry(f, (am - bZ)), IntegerEntry(g, (an - ca)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bZ, ag), ScriptTransfer(aC.caller, ca, ah)]
447+ then [IntegerEntry(f, (am - bU)), IntegerEntry(g, (an - bV)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bU, ag), ScriptTransfer(aC.caller, bV, ah)]
506448 else throw("Strict value is not equal to itself.")
507449 }
508450 else throw("Strict value is not equal to itself.")
509451 }
510452 })
511453
512454
513455
514456 @Callable(aC)
515457 func exchange (bd) = valueOrElse(bk(), {
516- let cb = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
517- let bc = cb._1
518- let bY = cb._2
458+ let bW = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
459+ let bc = bW._1
460+ let bT = bW._2
519461 if (if ((am == 0))
520462 then true
521463 else (an == 0))
522464 then throw("Can't exchange with zero balance")
523465 else if ((0 >= bd))
524466 then throw(("Minimal amount to receive must be positive. Actual: " + toString(bd)))
525467 else if ((size(aC.payments) != 1))
526468 then throw("One attached payment expected")
527469 else if (!(aL))
528- then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
529- else if ((bY == ag))
470+ then ([ScriptTransfer(aC.caller, bc, bT)] ++ bj())
471+ else if ((bT == ag))
530472 then {
531- let cc = ah
532- let cd = bb(bc, bd, am, an)
533- let bg = cd._1
534- let bh = cd._2
535- let bi = cd._3
536- let ce = (am + bc)
537- let cf = ((an - bh) - bi)
473+ let bX = ah
474+ let bY = bb(bc, bd, am, an)
475+ let bg = bY._1
476+ let bh = bY._2
477+ let bi = bY._3
478+ let bZ = (am + bc)
479+ let ca = ((an - bh) - bi)
538480 let bJ = if (containsElement(U, ae))
539481 then invoke(this, "stakeUnstake", [true, bc, ae], nil)
540482 else 0
541483 if ((bJ == bJ))
542484 then {
543485 let bK = if (containsElement(U, af))
544486 then invoke(this, "stakeUnstake", [false, (bh + bi), af], nil)
545487 else 0
546488 if ((bK == bK))
547- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
489+ then [IntegerEntry(f, bZ), IntegerEntry(g, ca), ScriptTransfer(aC.caller, bh, bX), ScriptTransfer(O, bi, bX)]
548490 else throw("Strict value is not equal to itself.")
549491 }
550492 else throw("Strict value is not equal to itself.")
551493 }
552- else if ((bY == ah))
494+ else if ((bT == ah))
553495 then {
554- let cc = ag
555- let cg = bb(bc, bd, an, am)
556- let bg = cg._1
557- let bh = cg._2
558- let bi = cg._3
559- let ce = ((am - bh) - bi)
560- let cf = (an + bc)
496+ let bX = ag
497+ let cb = bb(bc, bd, an, am)
498+ let bg = cb._1
499+ let bh = cb._2
500+ let bi = cb._3
501+ let bZ = ((am - bh) - bi)
502+ let ca = (an + bc)
561503 let bJ = if (containsElement(U, ae))
562504 then invoke(this, "stakeUnstake", [false, (bh + bi), ae], nil)
563505 else 0
564506 if ((bJ == bJ))
565507 then {
566508 let bK = if (containsElement(U, af))
567509 then invoke(this, "stakeUnstake", [true, bc, af], nil)
568510 else 0
569511 if ((bK == bK))
570- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
512+ then [IntegerEntry(f, bZ), IntegerEntry(g, ca), ScriptTransfer(aC.caller, bh, bX), ScriptTransfer(O, bi, bX)]
571513 else throw("Strict value is not equal to itself.")
572514 }
573515 else throw("Strict value is not equal to itself.")
574516 }
575517 else throw(((("Incorrect asset attached. Expected: " + ae) + " or ") + af))
576518 })
577519
578520
579521
580522 @Callable(aC)
581523 func shutdown () = if (!(ad))
582524 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
583525 else if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
584526 then throw("Only admin can call this function")
585527 else aR("Paused by admin")
586528
587529
588530
589531 @Callable(aC)
590532 func activate () = if (ad)
591533 then throw("DApp is already active")
592534 else if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
593535 then throw("Only admin can call this function")
594536 else [BooleanEntry(c, true), DeleteEntry(n)]
595537
596538
597539
598540 @Callable(aC)
599541 func takeIntoAccountExtraFunds () = valueOrElse(bk(), {
600- let ch = (aJ - am)
601- let ci = (aK - an)
542+ let cc = (aJ - am)
543+ let cd = (aK - an)
602544 if ((aC.caller != O))
603545 then throw("Only the wallet can call this function")
604- else if (if ((0 > ch))
546+ else if (if ((0 > cc))
605547 then true
606- else (0 > ci))
548+ else (0 > cd))
607549 then aR("Enroll amount negative")
608- else if (if ((ch == 0))
609- then (ci == 0)
550+ else if (if ((cc == 0))
551+ then (cd == 0)
610552 else false)
611553 then throw("No money to take")
612554 else {
613555 let bJ = if (containsElement(U, ae))
614- then invoke(this, "stakeUnstake", [true, ch, ae], nil)
556+ then invoke(this, "stakeUnstake", [true, cc, ae], nil)
615557 else 0
616558 if ((bJ == bJ))
617559 then {
618560 let bK = if (containsElement(U, af))
619- then invoke(this, "stakeUnstake", [true, ci, af], nil)
561+ then invoke(this, "stakeUnstake", [true, cd, af], nil)
620562 else 0
621563 if ((bK == bK))
622- then [IntegerEntry(f, (am + ch)), IntegerEntry(g, (an + ci)), IntegerEntry(("last_income_" + ae), ch), IntegerEntry(("last_income_" + af), ci)]
564+ then [IntegerEntry(f, (am + cc)), IntegerEntry(g, (an + cd)), IntegerEntry(("last_income_" + ae), cc), IntegerEntry(("last_income_" + af), cd)]
623565 else throw("Strict value is not equal to itself.")
624566 }
625567 else throw("Strict value is not equal to itself.")
626568 }
627569 })
628570
629571
630572
631573 @Callable(aC)
632-func stakeUnstake (aU,aW,cj) = if ((aC.caller != this))
574+func stakeUnstake (aU,aW,ce) = if ((aC.caller != this))
633575 then throw("Only contract itself can invoke this function")
634- else if ((cj == "WAVES"))
576+ else if ((ce == "WAVES"))
635577 then {
636- let ck = addressFromStringValue(valueOrErrorMessage(getString(D, x), "No leasing pool in oracle"))
637- let cl = getBinary(this, z)
638- let cm = valueOrElse(getInteger(this, y), 0)
639- let cn = if (aU)
640- then (cm + aW)
641- else (cm - aW)
642- let co = Lease(ck, cn)
643- let cp = calculateLeaseId(co)
644- let cq = [co, BinaryEntry(z, cp), IntegerEntry(y, cn)]
645- let G = cl
578+ let cf = addressFromStringValue(valueOrErrorMessage(getString(D, x), "No leasing pool in oracle"))
579+ let cg = getBinary(this, z)
580+ let ch = valueOrElse(getInteger(this, y), 0)
581+ let ci = if (aU)
582+ then (ch + aW)
583+ else (ch - aW)
584+ let cj = Lease(cf, ci)
585+ let ck = calculateLeaseId(cj)
586+ let cl = [cj, BinaryEntry(z, ck), IntegerEntry(y, ci)]
587+ let G = cg
646588 if ($isInstanceOf(G, "ByteVector"))
647589 then {
648- let cr = G
649- ([LeaseCancel(cr)] ++ cq)
590+ let cm = G
591+ ([LeaseCancel(cm)] ++ cl)
650592 }
651- else cq
593+ else cl
652594 }
653595 else {
654- let cs = aV(aU, aW, fromBase58String(cj))
655- let aY = cs._1
656- let ct = cs._2
657- let cu = cs._3
658- let cv = cs._4
659- let cw = invoke(ct, aY, cu, cv)
660- if ((cw == cw))
596+ let cn = aV(aU, aW, fromBase58String(ce))
597+ let aY = cn._1
598+ let co = cn._2
599+ let cp = cn._3
600+ let cq = cn._4
601+ let cr = invoke(co, aY, cp, cq)
602+ if ((cr == cr))
661603 then nil
662604 else throw("Strict value is not equal to itself.")
663605 }
664606
665607
666608
667609 @Callable(aC)
668610 func stakeAll () = valueOrElse(bk(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
669611 then throw("Only admin can call this function")
670612 else {
671613 let bJ = if (containsElement(U, ae))
672614 then {
673- let cx = (am - aD)
674- if ((cx > 0))
675- then invoke(this, "stakeUnstake", [true, cx, ae], nil)
615+ let cs = (am - aD)
616+ if ((cs > 0))
617+ then invoke(this, "stakeUnstake", [true, cs, ae], nil)
676618 else 0
677619 }
678620 else 0
679621 if ((bJ == bJ))
680622 then {
681623 let bK = if (containsElement(U, af))
682624 then {
683- let cy = (an - aE)
684- if ((cy > 0))
685- then invoke(this, "stakeUnstake", [true, cy, af], nil)
625+ let ct = (an - aE)
626+ if ((ct > 0))
627+ then invoke(this, "stakeUnstake", [true, ct, af], nil)
686628 else 0
687629 }
688630 else 0
689631 if ((bK == bK))
690632 then nil
691633 else throw("Strict value is not equal to itself.")
692634 }
693635 else throw("Strict value is not equal to itself.")
694636 })
695637
696638
697-@Verifier(cz)
698-func cA () = {
699- let cB = {
700- let cC = if (sigVerify(cz.bodyBytes, cz.proofs[0], J))
639+@Verifier(cu)
640+func cv () = {
641+ let cw = {
642+ let cx = if (sigVerify(cu.bodyBytes, cu.proofs[0], J))
701643 then 1
702644 else 0
703- let cD = if (sigVerify(cz.bodyBytes, cz.proofs[1], K))
645+ let cy = if (sigVerify(cu.bodyBytes, cu.proofs[1], K))
704646 then 1
705647 else 0
706- let cE = if (sigVerify(cz.bodyBytes, cz.proofs[2], L))
648+ let cz = if (sigVerify(cu.bodyBytes, cu.proofs[2], L))
707649 then 1
708650 else 0
709- (((cC + cD) + cE) >= 2)
651+ (((cx + cy) + cz) >= 2)
710652 }
711- let G = cz
653+ let G = cu
712654 if ($isInstanceOf(G, "InvokeScriptTransaction"))
713655 then {
714- let cw = G
715- let cF = if ((cw.dApp == this))
716- then (cw.function == "takeIntoAccountExtraFunds")
656+ let cr = G
657+ let cA = if ((cr.dApp == this))
658+ then (cr.function == "takeIntoAccountExtraFunds")
717659 else false
718- let cG = if (if (if ((cw.dApp == X))
719- then (cw.function == "exchange")
660+ let cB = if (if (if ((cr.dApp == X))
661+ then (cr.function == "exchange")
720662 else false)
721- then (ag == Q)
663+ then (size(cr.payments) == 1)
722664 else false)
723- then true
724- else if (if ((ah == Q))
725- then (size(cw.payments) == 1)
726- else false)
727- then (cw.payments[0].assetId == Q)
728- else false
729- let cH = if (if (if ((cw.dApp == Y))
730- then (cw.function == "exchange")
665+ then if ((cr.payments[0].assetId == Q))
666+ then true
667+ else (cr.payments[0].assetId == unit)
668+ else false
669+ let cC = if (if (if ((cr.dApp == Y))
670+ then (cr.function == "exchange")
731671 else false)
732672 then (ag == R)
733673 else false)
734674 then true
735675 else if (if ((ah == R))
736- then (size(cw.payments) == 1)
676+ then (size(cr.payments) == 1)
737677 else false)
738- then (cw.payments[0].assetId == Q)
678+ then (cr.payments[0].assetId == Q)
739679 else false
740- let cI = if (if (if (sigVerify(cz.bodyBytes, cz.proofs[0], J))
680+ let cD = if (if (if (sigVerify(cu.bodyBytes, cu.proofs[0], J))
741681 then true
742- else sigVerify(cz.bodyBytes, cz.proofs[0], K))
682+ else sigVerify(cu.bodyBytes, cu.proofs[0], K))
743683 then true
744- else sigVerify(cz.bodyBytes, cz.proofs[0], L))
684+ else sigVerify(cu.bodyBytes, cu.proofs[0], L))
745685 then true
746- else sigVerify(cz.bodyBytes, cz.proofs[0], N)
747- if (if (if (if (cF)
686+ else sigVerify(cu.bodyBytes, cu.proofs[0], N)
687+ if (if (if (if (cA)
748688 then true
749- else cG)
689+ else cB)
750690 then true
751- else cH)
752- then cI
691+ else cC)
692+ then cD
753693 else false)
754694 then true
755- else cB
695+ else cw
756696 }
757- else cB
697+ else cw
758698 }
759699

github/deemru/w8io/3ef1775 
125.46 ms