tx · 9ESTBjApyWnbH7cnoGV9ocRsJ1MTM8XjyEj7Jt73d7D8

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03400000 Waves

2023.01.26 14:16 [2421866] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "9ESTBjApyWnbH7cnoGV9ocRsJ1MTM8XjyEj7Jt73d7D8", "fee": 3400000, "feeAssetId": null, "timestamp": 1674731776254, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "4zRD2VqyU6XCZmYnUZETBvgKbqDgAntKVaPPVT9ZL3xoLXANSSjVPzoUbNEdbQ7um3VfCnDhHm93rZzA8REXaEsv" ], "script": "base64:BgLpIwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIDCgEIEgASBAoCAQQSBAoCAQQSAwoBARIAEgQKAggBEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgxzd2FwQ29udHJhY3QiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIDZmNhIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDY5NTI3MTM4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiA2ZlZSIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc2MDUxNzk1MCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iC3hwMF94cDFfbl9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMjUwMjIyNTIyIgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMjk0MzIyOTkwIgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIzNDkwMjM1MTAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjM4MTcyMzg2NCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyNDY0NzI1MTA5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjUxMTUyNTI5MSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNTI5NTI1NTQ5IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNzU1MTI3NjYyIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI3ODUyMjgxNTkiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzMDI5MTMwMzExIg0kdDAzMDY0MjMwNjg5Ig1jbGVhbkFtb3VudEluIg0kdDAzMDkxMDMxNTA2Ighhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyIGY2hlY2tzIgdhc3NldEluIg0kdDAzMjU2NDMyOTU4IghjaGVja01pbiIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIg0kdDAzNzc3NzM3OTM1Igdlc3RpbUxQIgdtYXhTbHBnIgZlc3RQdXQiCW91dEFtdEFtdCINaXNHZXREaXNhYmxlZCINJHQwNDA1NTc0MDcxMiINbHBBc3NldEFtb3VudCIKbHBFbWlzc2lvbiIFaW5kZXgiBG5ld1kiDSR0MDQxNTAyNDE1NTciDSR0MDQxOTAyNDIwMTciDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ1ODU1NDYwNDMiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0NjMwMjQ2NDA1Ig0kdDA0NjY4NDQ2Nzg4IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hvAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWkCBVdBVkVTAAFqAgMxMDAAAWsCATEAAWwCAl9fAAFtAgAAAW4AAQABbwACAAFwAAMAAXEABAABcgABAAFzAAIAAXQAAwABdQAEAAF2AAUAAXcABgABeAAHAAF5AAgAAXoACQABQQABAAFCAAYAAUMABwABRAAKAAFFCQBrAwAKBQFhAJBOAQFGAgFHAUgJALwCAwkAtgIBBQFHBQFjCQC2AgEFAUgBAUkCAUoBSwkAoAMBCQC8AgMFAUoJALYCAQUBSwUBYwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVEBAUoDCQC/AgIFAWQFAUoJAL4CAQUBSgUBSgEBUgACEyVzX19mYWN0b3J5Q29udHJhY3QBAVMAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVQACESVzJXNfX3ByaWNlX19sYXN0AQFWAgFXAVgJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFXCQDMCAIJAKQDAQUBWAUDbmlsBQFsAQFZAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWgICX18FAmFhAQJhYgIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVoCAl9fBQJhYQECYWMAAg8lc19fYW1vdW50QXNzZXQBAmFkAAIOJXNfX3ByaWNlQXNzZXQBAmFlAAIHJXNfX2FtcAECYWYAAg0lc19fYWRkb25BZGRyAQJhZwACECVzX19zd2FwQ29udHJhY3QBAmFoAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFpAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhcQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcgMCYXMCYXQCYXUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXMCCyBzbmRyVmFsaWQ9CQClAwEFAmF0AgwgbXRjaHJWYWxpZD0JAKUDAQUCYXUBAmF2AQFKBAJhdwUBSgMJAAECBQJhdwIGU3RyaW5nBAJheAUCYXcFAmF4CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXkCAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUICAmF6AmFBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXoFAmFBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF6CQDMCAICAS4JAMwIAgUCYUEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUMBAmFECQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhRAUDbmlsAgEgAAJhRQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF5AgUEdGhpcwkBAVIAAAJhRgoAAmFHCQD8BwQFAmFFAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUcCA0ludAUCYUcJAAIBCQCsAgIJAAMBBQJhRwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhSAoAAmFHCQD8BwQFAmFFAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFHAgNJbnQFAmFHCQACAQkArAICCQADAQUCYUcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUkJAQJheQIFBHRoaXMJAQJhZQABAmFKAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhRQkBAmFvAAcBAmFLAAkA2QQBCQECYXkCBQJhRQkBAmFpAAACYUwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFAmFFCQECYXEAAQJhTQAEAmFOCQECYXkCBQR0aGlzCQECYWMABAJhTwkBAmF5AgUEdGhpcwkBAmFkAAQCYVAJAQJhQgIFAmFFCQECYW0BBQJhTwQCYWsJAQJhQgIFAmFFCQECYW0BBQJhTgkAtQkCCQECYXkCBQJhRQkBAmFqAgkApAMBBQJhawkApAMBBQJhUAUBbAECYVEBAmFSAwkAAAIFAmFSBQFpBQR1bml0CQDZBAEFAmFSAQJhUwECYVIDCQAAAgUCYVIFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVIBAmFUAQJhVQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFVBQFyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXMJANkEAQkAkQMCBQJhVQUBdAkBAmFRAQkAkQMCBQJhVQUBdQkBAmFRAQkAkQMCBQJhVQUBdgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXgAAmFWCQECYVQBCQECYU0AAAJhVwUCYVYAAmFYCAUCYVcCXzEAAmFZCAUCYVcCXzIAAmFaCAUCYVcCXzMAAmJhCAUCYVcCXzQAAmJiCAUCYVcCXzUAAmJjCAUCYVcCXzYAAmJkCAUCYVcCXzcBAmJlAAkAtQkCCQECYXkCBQJhRQkBAmFoAAUBbAACYmYJAQJiZQAAAmJnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZgUBQQIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZgUBQwIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZgUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYmoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJmBQFCAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJiawoCYmwCYm0CYm4CYm8CYnACYnECYnICYnMCYnQCYnUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1BQNuaWwFAWwBAmJ2BgJidwJieAJieQJibwJicgJicwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnIJAMwIAgkApAMBBQJicwUDbmlsBQFsAQJiegECYkEDCQAAAgUCYkECBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJBAQJiQgICYkMCYkQJALwCAwUCYkMFAWMFAmJEAQJiRQMCYkYCYkcCYkgEAmJJCQC8AgMJALgCAgUCYkYFAmJHBQFiBQJiRwQCYkoJAL8CAgkAuAICBQJiSAkBAVABBQJiSQUBZAMJAQEhAQUCYkoJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYkkJAJQKAgUCYkoJAJkDAQkAzAgCBQJiRgkAzAgCBQJiRwUDbmlsAQJiSwMCYkwCYk0CYk4EAmJJCQC8AgMFAmJNBQFiBQJiTAQCYk8JAL8CAgUCYk4FAmJJAwMFAmJPBgkAvwICBQJiTQUCYkwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJNAgEgCQCmAwEFAmJMAgEgCQCmAwEFAmJJAgEgCQCmAwEFAmJOBQJiTwECYlAEAmJRAmJSAmJTAmJUBAJiVQkBAUYCBQJiUwUCYlEEAmJWCQEBRgIFAmJUBQJiUgkBAmJCAgUCYlYFAmJVAQJiVwMCYlMCYlQCYlgEAmJZCQECYU0ABAJiWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF3BAJjYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF4BAJjYgkBAmJQBAUCYloFAmNhBQJiUwUCYlQEAmJECQEBRgIFAmJTBQJiWgQCYkMJAQFGAgUCYlQFAmNhBAJjYwkBAUYCBQJiWAUBYQQCY2QJAQJiQgIFAmJEBQJjYwQCY2UJAQJiQgIFAmJDBQJjYwkAzAgCBQJjYgkAzAgCBQJjZAkAzAgCBQJjZQUDbmlsAQJjZgMCYlMCYlQCYlgEAmNnCQECYlcDBQJiUwUCYlQFAmJYCQDMCAIJAQFJAgkAkQMCBQJjZwAABQFhCQDMCAIJAQFJAgkAkQMCBQJjZwABBQFhCQDMCAIJAQFJAgkAkQMCBQJjZwACBQFhBQNuaWwBAmNoAgJjaQJjagQCY2sDCQAAAgUCY2oAAAAACQBrAwUCY2kFAmNqBQFhCQCUCgIJAGUCBQJjaQUCY2sFAmNrAQJjbAQCY20CY24CY28CY3AEAmJZCQECYU0ABAJjcQkAkQMCBQJiWQUBdAQCY3IJAJEDAgUCYlkFAXUEAmNzCQCRAwIFAmJZBQF2BAJjdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF3BAJjdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF4BAJjdgkAkQMCBQJiWQUBcwQCY3cICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjcQILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjcQUCY24JAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmN4CQECYnoBBQJjcgQCY3kJAQFGAgUCY3gFAmN0BAJjegkBAmJ6AQUCY3MEAmNBCQEBRgIFAmN6BQJjdQQCY0IJAQJiQgIFAmNBBQJjeQQCY0MJAQFJAgUCY0IFAWEEAmNECQEBRgIFAmNvBQFhBAJjRQkBAUYCBQJjdwUBYQQCY0YJALwCAwUCY3kFAmNEBQJjRQQCY0cJALwCAwUCY0EFAmNEBQJjRQQCY0gJAQFJAgUCY0YFAmN0BAJjSQkBAUkCBQJjRwUCY3UEAmNKAwkAAAIFAmNtAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcAUCY0gDCQAAAgUCY3ICBVdBVkVTBQR1bml0CQDZBAEFAmNyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNwBQJjSQMJAAACBQJjcwIFV0FWRVMFBHVuaXQJANkEAQUCY3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjcAUCY20JAQJidgYFAmNIBQJjSQUCY28FAmNDBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNDBQNuaWwJAJwKCgUCY0gFAmNJBQJjcgUCY3MFAmN4BQJjegUCY3cFAmNCBQJjdgUCY0oBAmNLDQJjbQJiSAJjTAJjTQJjTgJjTwJjcAJjUAJjUQJjUgJjUwJjVAJjVQQCYlkJAQJhTQAEAmNxCQDZBAEJAJEDAgUCYlkFAXQEAmNWCQCRAwIFAmJZBQF1BAJjVwkAkQMCBQJiWQUBdgQCY1gJAJEDAgUCYlkFAXkEAmNZCQCRAwIFAmJZBQF6BAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF3BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJZBQF4BAJjdgkAkQMCBQJiWQUBcwQCZGIICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3ECCFdyIGxwIGFzCHF1YW50aXR5BAJjeAMFAmNQCQECYnoBBQJjVgMDBQJjUgkAAAIFAmNVBQJjVgcJAGUCCQECYnoBBQJjVgUCY1QDBQJjUgkBAmJ6AQUCY1YJAGUCCQECYnoBBQJjVgUCY0wEAmN6AwUCY1AJAQJiegEFAmNXAwMFAmNSCQAAAgUCY1UFAmNXBwkAZQIJAQJiegEFAmNXBQJjVAMFAmNSCQECYnoBBQJjVwkAZQIJAQJiegEFAmNXBQJjTgQCZGMJAQFGAgUCY0wFAmNaBAJkZAkBAUYCBQJjTgUCZGEEAmRlCQECYkICBQJkZAUCZGMEAmN5CQEBRgIFAmN4BQJjWgQCY0EJAQFGAgUCY3oFAmRhBAJkZgMJAAACBQJkYgAABAJjQgUBZAQCZGcFAWQEAmNjCQB2BgkAuQICBQJkYwUCZGQAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFJAgUCY2MFAWEJAQFJAgUCZGMFAmNaCQEBSQIFAmRkBQJkYQkBAmJCAgkAtwICBQJjQQUCZGQJALcCAgUCY3kFAmRjBQJkZwQCY0IJAQJiQgIFAmNBBQJjeQQCZGgJALwCAwkBAVABCQC4AgIFAmNCBQJkZQUBYwUCY0IEAmRnCQEBRgIFAmJIBQFhAwMDBQJjUwkBAiE9AgUCY0IFAWQHCQC/AgIFAmRoBQJkZwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZGgCAyA+IAkApgMBBQJkZwQCZGkJAQFGAgUCZGIFAWEEAmRqCQC8AgMFAmRjBQJjQgUBYwQCZGsJALwCAwUCZGQFAWMFAmNCBAJkbAMJAL8CAgUCZGoFAmRkCQCUCgIFAmRrBQJkZAkAlAoCBQJkYwUCZGoEAmRtCAUCZGwCXzEEAmRuCAUCZGwCXzIEAmNjCQC8AgMFAmRpBQJkbgUCY0EJAJcKBQkBAUkCBQJjYwUBYQkBAUkCBQJkbQUCY1oJAQFJAgUCZG4FAmRhBQJjQgUCZGcEAmRvCAUCZGYCXzEEAmRwCAUCZGYCXzIEAmRxCAUCZGYCXzMEAmNDCQEBSQIIBQJkZgJfNAUBYQQCZHIJAQFJAggFAmRmAl81BQFhAwkAZwIAAAUCZG8JAAIBAgdMUCA8PSAwBAJkcwMJAQEhAQUCY1EAAAUCZG8EAmR0CQBlAgUCY0wFAmRwBAJkdQkAZQIFAmNOBQJkcQQCZHYDAwUCY1IJAAACBQJjVQUCY1YHCQCUCgIFAmNUAAADAwUCY1IJAAACBQJjVQUCY1cHCQCUCgIAAAUCY1QJAJQKAgUCZHAFAmRxBAJkdwgFAmR2Al8xBAJkeAgFAmR2Al8yBAJkeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQwkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIFAmNwBQJjbQkBAmJrCgUCZHcFAmR4BQJkcwUCY0MFAmJIBQJkcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHQFAmR1BQNuaWwJAJ8KDQUCZG8FAmRzBQJjQwUCY3gFAmN6BQJkYgUCY3EFAmN2BQJkeQUCZHQFAmR1BQJjTQUCY08BAmR6AQJkQQQCYlkJAQJhTQAEAmRCCQCRAwIFAmJZBQF1BAJkQwkAkQMCBQJiWQUBdgQCY3YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBcwQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCZEQJAQJiegEFAmRCBAJkRQkBAmJ6AQUCZEMEAmNCAwkAAAIIBQJkQQlvcmRlclR5cGUFA0J1eQkBAmJQBAUCYloFAmNhCQBkAgUCZEQIBQJkQQZhbW91bnQFAmRFCQECYlAEBQJiWgUCY2EJAGUCBQJkRAgFAmRBBmFtb3VudAUCZEUEAmNDCQEBSQIFAmNCBQFhAwMDCQECYUoABgkAAAIFAmN2BQFwBgkAAAIFAmN2BQFxCQACAQINQWRtaW4gYmxvY2tlZAQCZEYICAUCZEEJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkRwMJAAACBQJkRgUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZEYEAmRICAgFAmRBCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkSQMJAAACBQJkSAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZEgDAwkBAiE9AgUCZEcFAmRCBgkBAiE9AgUCZEkFAmRDCQACAQIJV3IgYXNzZXRzBAJkSggFAmRBBXByaWNlBAJkYQkAawMFAWEFAmNhBQJiWgQCZEsJAQFMAwUCZEoFAWEFAmRhBAJkTAMJAAACCAUCZEEJb3JkZXJUeXBlBQNCdXkJAGcCBQJjQwUCZEsJAGcCBQJkSwUCY0MGAQJkTQECZE4DCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmNuCQEFdmFsdWUBCAUCZE8HYXNzZXRJZAQCY1QIBQJkTwZhbW91bnQEAmRmCQECY2wECQDYBAEIBQJkTg10cmFuc2FjdGlvbklkCQDYBAEFAmNuBQJjVAgFAmROBmNhbGxlcgQCY0gIBQJkZgJfMQQCY0kIBQJkZgJfMgQCY3YJAQ1wYXJzZUludFZhbHVlAQgFAmRmAl85BAJjSggFAmRmA18xMAMDCQECYUoABgkAAAIFAmN2BQFxCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCY3YJAJcKBQUCY0gFAmNJBQJjVAUCY24FAmNKAQJkUAoCZFECYWECZFICZFMCYkgCY1ECY1ICY1MCY1QCY1UEAmRmCQECY0sNBQJhYQUCYkgICQEFdmFsdWUBBQJkUgZhbW91bnQICQEFdmFsdWUBBQJkUgdhc3NldElkCAkBBXZhbHVlAQUCZFMGYW1vdW50CAkBBXZhbHVlAQUCZFMHYXNzZXRJZAUCZFEJAAACBQJhYQIABQJjUQUCY1IFAmNTBQJjVAUCY1UEAmN2CQENcGFyc2VJbnRWYWx1ZQEIBQJkZgJfOAMDAwkBAmFKAAYJAAACBQJjdgUBbwYJAAACBQJjdgUBcQkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCY3YFAmRmAQJkVAECZFUEAmRWBQFnBAJkVwkAkQMCBQJkVQAABAJkWAkAkQMCBQJkVQABBAJkWQkApwMBBQFqBAJkWgkAuQICCQCnAwEFAmFJBQJkWQQCZWEJALcCAgUCZFcFAmRYAwkAAAIFAmVhBQFlBQFlBAJlYgkAuQICBQJkWgUCZFYEAmVjCQC5AgIJALkCAgkAuQICBQJkVwUCZFgFAmRWBQJkVgQCZWQJALoCAgkAuQICBQJlYgUCZWEFAmRZBAJlZQkAuAICBQJlYgUCZFkEAmVmCQC3AgIFAmRWBQFmCgECZWcCAmVoAmVpBAJlagUCZWgEAmVrCAUCZWoCXzEEAmVsCAUCZWoCXzIDCQECIT0CBQJlbAUEdW5pdAUCZWgEAmVtCQC6AgIJALkCAgkAuQICBQJlawUCZWsFAmVrBQJlYwQCZW4JALoCAgkAuQICCQC3AgIFAmVkCQC5AgIFAmVtBQJkVgUCZWsJALcCAgkAugICCQC5AgIFAmVlBQJlawUCZFkJALkCAgUCZWYFAmVtBAJlbwkBAVEBCQC4AgIFAmVuCQEFdmFsdWUBBQJlawMJAMACAgUBZgUCZW8JAJQKAgUCZW4FAmVpCQCUCgIFAmVuBQR1bml0BAJlcAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlcQoAAmVyBQJlcAoAAmVzCQCQAwEFAmVyCgACZXQJAJQKAgUCZWEFBHVuaXQKAQJldQICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkBAmVnAgUCZXYJAJEDAgUCZXIFAmV3CgECZXgCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV4AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgUCZXQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZWsIBQJlcQJfMQQCZWwIBQJlcQJfMgMJAQIhPQIFAmVsBQR1bml0BQJlawkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJlawECZXkDAmRVAmROAmV6BAJkVgUBZwQCZUEJAJEDAgUCZFUDCQAAAgUCZE4AAAABAAAEAmRZCQCnAwEFAWoEAmRaCQC5AgIJAKcDAQUCYUkFAmRZBAJlYQUCZUEEAmViCQC5AgIFAmRaBQJkVgQCZUIJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlegUCZXoJALkCAgUCZUEFAmRWBQJlegUCZFkJALkCAgUCZWIFAmRWBAJlQwkAuAICCQC3AgIFAmVhCQC6AgIJALkCAgUCZXoFAmRZBQJlYgUCZXoKAQJlZwICZWgCZWkEAmVEBQJlaAQCZUUIBQJlRAJfMQQCZWwIBQJlRAJfMgMJAQIhPQIFAmVsBQR1bml0BQJlaAQCZUYJALoCAgkAtwICCQC5AgIFAmVFBQJlRQUCZUIJALcCAgkAuQICBQFnBQJlRQUCZUMEAmVHCQEBUQEJALgCAgUCZUYJAQV2YWx1ZQEFAmVFAwkAwAICBQFmBQJlRwkAlAoCBQJlRgUCZWkJAJQKAgUCZUYFBHVuaXQEAmVwCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVICgACZXIFAmVwCgACZXMJAJADAQUCZXIKAAJldAkAlAoCBQJlegUEdW5pdAoBAmV1AgJldgJldwMJAGcCBQJldwUCZXMFAmV2CQECZWcCBQJldgkAkQMCBQJlcgUCZXcKAQJleAICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZXgCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCBQJldAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlRQgFAmVIAl8xBAJlbAgFAmVIAl8yAwkBAiE9AgUCZWwFBHVuaXQFAmVFCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVFAQJlSQUCZUoCY24CY3ACYWECZUsEAmFVCQECYU0ABAJjcgkAkQMCBQJhVQUBdQQCY3MJAJEDAgUCYVUFAXYEAmNxCQCRAwIFAmFVBQF0BAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF3BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF4BAJlTAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmVNAwkAvwICBQJlTAUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmVNBQJlTQQCY3gJAQJiegEFAmNyBAJjegkBAmJ6AQUCY3MEAmVOAwkAAAIFAmFhAgAJAJQKAgUCY3gFAmN6AwkAAAIFAmNuBQJjcgMJAGYCBQJlSgUCY3gJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjeAUCZUoFAmN6AwkAAAIFAmNuBQJjcwMJAGYCBQJlSgUCY3oJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmN4CQBlAgUCY3oFAmVKCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZU8IBQJlTgJfMQQCZVAIBQJlTgJfMgQCZVEDCQAAAgUCY24FAmNyCQCUCgIFAmVKAAADCQAAAgUCY24FAmNzCQCUCgIAAAUCZUoJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmVSCAUCZVECXzEEAmVTCAUCZVECXzIEAmVUAwUCZUsJAJUKAwgJAQJjaAIFAmVSBQJhRgJfMQgJAQJjaAIFAmVTBQJhRgJfMQgJAQJjaAIFAmVKBQJhRgJfMgkAlQoDBQJlUgUCZVMAAAQCZVUIBQJlVAJfMQQCZVYIBQJlVAJfMgQCY2sIBQJlVAJfMwQCZVcJAGQCBQJlTwUCZVUEAmVYCQBkAgUCZVAFAmVWBAJiTQkBAmRUAQkAzAgCCQC2AgEFAmVPCQDMCAIJALYCAQUCZVAFA25pbAQCYkwJAQJkVAEJAMwIAgkAtgIBBQJlVwkAzAgCCQC2AgEFAmVYBQNuaWwEAmVZAwkAvwICBQJiTAUCYk0GCQEFdGhyb3cAAwkAAAIFAmVZBQJlWQQCZVoJALwCAwUCZUwJALgCAgUCYkwFAmJNBQJiTQQCY0MJAQFJAgkBAmJCAgkBAUYCBQJlWAUCZGEJAQFGAgUCZVcFAmNaBQFhBAJkeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQwkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIFAmNwBQJhYQkBAmJrCgUCZVIFAmVTCQCgAwEFAmVaBQJjQwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZhCQBrAwUCZVAFAWEFAmVPBAJmYgkAawMFAmVKBQFhCQBkAgUCZmEFAWEEAmZjCQBlAgUCZUoFAmZiBAJmZAkAvAIDBQJlTAkAtgIBBQJmYwkAtgIBBQJlUAQCZmUJAKADAQkAvAIDCQC4AgIFAmVaBQJmZAUBYgUCZmQJAJYKBAkAoAMBBQJlWgUCZHkFAmNrBQJmZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmYGAmZnAmZoAmZpAmRRAmZqAmZrBAJhVQkBAmFNAAQCY3EJAJEDAgUCYVUFAXQEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCZmwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZm0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCZm4JAJEDAgUCYVUFAXMEAmNwAwkAAAIFAmRRBQJiagUCZmoFAmRRBAJkTwkBBXZhbHVlAQkAkQMCBQJmaQAABAJjbgkBBXZhbHVlAQgFAmRPB2Fzc2V0SWQEAmNUCAUCZE8GYW1vdW50BAJjbQkA2AQBBQJmawMJAQIhPQIFAmNxCQDYBAEFAmNuCQACAQIIV3JvbmcgTFAEAmN4CQECYnoBBQJjcgQCY3oJAQJiegEFAmNzBAJmbwoAAmFHCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmcJAMwIAgUCY1QFA25pbAUDbmlsAwkAAQIFAmFHAgooSW50LCBJbnQpBQJhRwkAAgEJAKwCAgkAAwEFAmFHAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZvBQJmbwQCY2sIBQJmbwJfMgQCZnAIBQJmbwJfMQQCZnEDAwkAZgIFAmZoAAAJAGYCBQJmaAUCZnAHCQECYUMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZoBQNuaWwCAAUCZnAEAmZyAwkAAAIFAmZnBQJjcgkAlgoEBQJmcQAACQBlAgkAZQIFAmN4BQJmcQUCY2sFAmN6AwkAAAIFAmZnBQJjcwkAlgoEAAAFAmZxBQJjeAkAZQIJAGUCBQJjegUCZnEFAmNrCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZzCAUCZnICXzEEAmZ0CAUCZnICXzIEAmVXCAUCZnICXzMEAmVYCAUCZnICXzQEAmZ1CQECYkICCQEBRgIFAmVYBQJmbQkBAUYCBQJlVwUCZmwEAmZ2CQEBSQIFAmZ1BQFhBAJmdwMJAAACBQJmZwIFV0FWRVMFBHVuaXQJANkEAQUCZmcEAmZ4AwkAZgIFAmNrAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUwFAmNrBQJmdwUDbmlsBQNuaWwEAmNKCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3AFAmZxBQJmdwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAmNwBQJjbQkBAmJ2BgUCZnMFAmZ0BQJjVAUCZnYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZnYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZnYFA25pbAUCZngDCQAAAgUCY0oFAmNKBAJmeQkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJmeQUCZnkJAJQKAgUCY0oFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmegAEAmF3CQCiCAEJAQFTAAMJAAECBQJhdwIGU3RyaW5nBAJlYQUCYXcJANkEAQUCZWEDCQABAgUCYXcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZkEABAJhdwkAoggBCQEBVAADCQABAgUCYXcCBlN0cmluZwQCZWEFAmF3CQDZBAEFAmVhAwkAAQIFAmF3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmZCCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmZDAQJkTgQCYXcJAQJmegADCQABAgUCYXcCCkJ5dGVWZWN0b3IEAmZEBQJhdwkAAAIIBQJkTg9jYWxsZXJQdWJsaWNLZXkFAmZEAwkAAQIFAmF3AgRVbml0CQAAAggFAmROBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmRQECZE4EAmF3CQECZnoAAwkAAQIFAmF3AgpCeXRlVmVjdG9yBAJmRAUCYXcDCQAAAggFAmROD2NhbGxlclB1YmxpY0tleQUCZkQGBQJmQgMJAAECBQJhdwIEVW5pdAMJAAACCAUCZE4GY2FsbGVyBQR0aGlzBgUCZkIJAAIBAgtNYXRjaCBlcnJvcgECZkYDAmZHAmV6AmZIBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJkVgUBZwQCZFkJAKcDAQUBagQCZFoJALkCAgkApwMBBQJhSQUCZFkEAmRVAwkAAAIFAmZHBwkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3IFAmZICQDMCAIJALYCAQkBAmJ6AQUCY3MFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3MFAmZICQDMCAIJALYCAQkBAmJ6AQUCY3IFA25pbAQCZUEJAJEDAgUCZFUAAAQCZWEFAmVBBAJlYgkAuQICBQJkWgUCZFYEAmVCCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVBBQJkVgUCZXoFAmRZCQC5AgIFAmViBQJkVgQCZUMJALgCAgkAtwICBQJlYQkAugICCQC5AgIFAmV6BQJkWQUCZWIFAmV6CgECZWcCAmVoAmVpBAJmSQUCZWgEAmVFCAUCZkkCXzEEAmVsCAUCZkkCXzIDCQECIT0CBQJlbAUEdW5pdAUCZWgEAmVGCQC6AgIJALcCAgkAuQICBQJlRQUCZUUFAmVCCQC3AgIJALkCAgUBZwUCZUUFAmVDBAJlRwkBAVEBCQC4AgIFAmVGCQEFdmFsdWUBBQJlRQMJAMACAgUBZgUCZUcJAJQKAgUCZUYFAmVpCQCUCgIFAmVGBQR1bml0BAJlcAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJmSgoAAmVyBQJlcAoAAmVzCQCQAwEFAmVyCgACZXQJAJQKAgUCZXoFBHVuaXQKAQJldQICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkBAmVnAgUCZXYJAJEDAgUCZXIFAmV3CgECZXgCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV4AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgUCZXQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUUIBQJmSgJfMQQCZWwIBQJmSgJfMgMJAQIhPQIFAmVsBQR1bml0BQJlRQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRR0CZE4BIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQICZksCZkcEAmZMAwkAAAIFAmZHBwQCZk0JAQJheQIFBHRoaXMJAQJhZAAEAmZICQC3AgIJALYCAQkBAmJ6AQkBAmF5AgUEdGhpcwkBAmFjAAkAtgIBBQJmSwkAlAoCBQJmTQUCZkgEAmZNCQECYXkCBQR0aGlzCQECYWMABAJmSAkAtwICCQC2AgEJAQJiegEJAQJheQIFBHRoaXMJAQJhZAAJALYCAQUCZksJAJQKAgUCZk0FAmZIBAJmTQgFAmZMAl8xBAJmSAgFAmZMAl8yBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJkVQkAzAgCCQC2AgEJAQJiegEFAmNyCQDMCAIJALYCAQkBAmJ6AQUCY3MFA25pbAQCZXoJAQJkVAEFAmRVBAJlRQkBAmZGAwUCZkcFAmV6BQJmSAQCZk4JALgCAgkAuAICCQC2AgEJAQJiegEFAmZNBQJlRQkAtgIBAAEEAmZPCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZk4FA25pbAkAlAoCBQNuaWwFAmZPAmROASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwQCZksCZkcCZlACZlEEAmZSCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50BQJmSwYJAQJhQwECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJkTgZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQJhZwAGCQECYUMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZSBQJmUgQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmZTAwkAAAIIBQJkTwdhc3NldElkBQR1bml0CQDYBAEJAJsDAQIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmRPB2Fzc2V0SWQEAmZUAwkAAAIFAmZHBwQCZk0JAQJheQIFBHRoaXMJAQJhZAAEAmZICQBlAgkBAmJ6AQUCZlMICQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABmFtb3VudAkAlAoCBQJmTQUCZkgEAmZNCQECYXkCBQR0aGlzCQECYWMABAJmSAkAZQIJAQJiegEFAmZTCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZk0FAmZIBAJmTQgFAmZUAl8xBAJmSAgFAmZUAl8yBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJkVQkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3IJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJ6AQUCY3MFA25pbAQCZXoJAQJkVAEFAmRVBAJlRQkBAmZGAwUCZkcFAmV6CQC2AgEFAmZIBAJmTgkAuAICCQC4AgIJALYCAQkBAmJ6AQUCZk0FAmVFCQC2AgEAAQQCZk8JAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJmTgUDbmlsBAJmVQMJAGcCBQJmTwUCZlAGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZlUFAmZVCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZRBQJmTwMJAAACBQJmUwIFV0FWRVMFBHVuaXQJANkEAQUCZk0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELY29uc3RydWN0b3IBAVIEAmVCCQECZkUBBQJkTgMJAAACBQJlQgUCZUIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQFSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BCnNldE1hbmFnZXIBAmZWBAJlQgkBAmZFAQUCZE4DCQAAAgUCZUIFAmVCBAJmVwkA2QQBBQJmVgMJAAACBQJmVwUCZlcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmVgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQ5jb25maXJtTWFuYWdlcgAEAmNnCQECZkEABAJmWAMJAQlpc0RlZmluZWQBBQJjZwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZlgFAmZYBAJmWQMJAAACCAUCZE4PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjZwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZlkFAmZZCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJjZwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEDcHV0AgJmWgJnYQQCZ2IJAQJiZQAEAmdjCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnYgUBQQIKV3Igc3QgYWRkcgQCZ2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdiBQFDAgpXciBzbCBhZGRyAwkAZgIAAAUCZloJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmROCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdlCQECZFAKCQClCAEIBQJkTgZjYWxsZXIJANgEAQgFAmRODXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmROCHBheW1lbnRzAAEFAmZaBgcGAAACAAQCZHMIBQJnZQJfMgQCZ2YIBQJnZQJfNwQCY0oIBQJnZQJfOQQCZHQIBQJnZQNfMTAEAmR1CAUCZ2UDXzExBAJjcggFAmdlA18xMgQCY3MIBQJnZQNfMTMEAmRmCQD8BwQFAmFFAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAMJAAACBQJkZgUCZGYEAmdnBAJhdwUCZGYDCQABAgUCYXcCB0FkZHJlc3MEAmdoBQJhdwkA/AcEBQJnaAIEZW1pdAkAzAgCBQJkcwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ2cFAmdnBAJnaQMJAGYCBQJkdAAACQD8BwQFAmdkAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3IFAmR0BQNuaWwFA25pbAMJAAACBQJnaQUCZ2kEAmdqAwkAZgIFAmR1AAAJAPwHBAUCZ2QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCZHUFA25pbAUDbmlsAwkAAAIFAmdqBQJnagQCZ2sDBQJnYQQCZ2wJAPwHBAUCZ2MCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdmBQJkcwUDbmlsAwkAAAIFAmdsBQJnbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTgZjYWxsZXIFAmRzBQJnZgUDbmlsCQDOCAIFAmNKBQJnawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELcHV0T25lVGtuVjICAmZoAmdhBAJnbQoAAmFHCQD8BwQFAmFFAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUcCB0Jvb2xlYW4FAmFHCQACAQkArAICCQADAQUCYUcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmduAwMDCQECYUoABgkAAAIFAmFZBQFvBgkAAAIFAmFZBQFxBgUCZ20EAmZSCQDMCAIDAwkBASEBBQJnbgYJAQJmQwEFAmROBgkBAmFDAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE4IcGF5bWVudHMAAQYJAQJhQwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZSBQJmUgQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJANkEAQkAkQMCBQJhVQUBdAQCZmwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZm0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCY3ADCQAAAggFAmROBmNhbGxlcgUEdGhpcwgFAmRODG9yaWdpbkNhbGxlcggFAmROBmNhbGxlcgQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmNuCQDYBAEJAQV2YWx1ZQEIBQJkTwdhc3NldElkBAJjVAgFAmRPBmFtb3VudAQCZ28JAQJlSQUFAmNUBQJjbgkApQgBBQJjcAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ28FAmdvBAJjawgFAmdvAl8zBAJjSggFAmdvAl8yBAJncAgFAmdvAl8xBAJkcwMDCQBmAgUCZmgAAAkAZgIFAmZoBQJncAcJAQJhQwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmgFA25pbAIABQJncAQCZ2UJAPwHBAUCYUUCBGVtaXQJAMwIAgUCZHMFA25pbAUDbmlsAwkAAAIFAmdlBQJnZQQCZ2cEAmF3BQJnZQMJAAECBQJhdwIHQWRkcmVzcwQCZ2gFAmF3CQD8BwQFAmdoAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJnZwUCZ2cEAmdrAwUCZ2EEAmdsCQD8BwQFAmJnAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcQUCZHMFA25pbAMJAAACBQJnbAUCZ2wFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZE4GY2FsbGVyBQJkcwUCY3EFA25pbAQCZngDCQBmAgUCY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTAUCY2sJANkEAQUCY24FA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjSgUCZ2sFAmZ4BQJkcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEKcHV0Rm9yRnJlZQECZ3EDCQBmAgAABQJncQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJncgkBAmRQCgkApQgBCAUCZE4GY2FsbGVyCQDYBAEIBQJkTg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkTghwYXltZW50cwABBQJncQcHBgAAAgAIBQJncgJfOQJkTgEDZ2V0AAQCZGYJAQJkTQEFAmROBAJncwgFAmRmAl8xBAJjSQgFAmRmAl8yBAJjVAgFAmRmAl8zBAJjbggFAmRmAl80BAJjSggFAmRmAl81BAJlQwkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJlQwUCZUMFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQtnZXRPbmVUa25WMgICZmcCZmgEAmdtCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3QDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdtBAJmUgkAzAgCAwMJAQEhAQUCZ3QGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAEGCQECYUMBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmUgUCZlIEAmd1CQECZmYGBQJmZwUCZmgIBQJkTghwYXltZW50cwgFAmROBmNhbGxlcggFAmRODG9yaWdpbkNhbGxlcggFAmRODXRyYW5zYWN0aW9uSWQEAmNKCAUCZ3UCXzEEAmZxCAUCZ3UCXzIJAJQKAgUCY0oFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROARNnZXRPbmVUa25WMlJFQURPTkxZAgJmZwJndgQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJAJEDAgUCYVUFAXQEAmRVCQDMCAIJALYCAQkBAmJ6AQUCY3IJAMwIAgkAtgIBCQECYnoBBQJjcwUDbmlsBAJndwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJNCQECZFQBBQJkVQQCYkwJALgCAgUCYk0JALwCAwkAtgIBBQJndgUCYk0FAmd3BAJneAMJAAACBQJmZwUCY3IAAAMJAAACBQJmZwUCY3MAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJneQkBAmV5AwUCZFUFAmd4BQJiTAQCZk4JALgCAgkAkQMCBQJkVQUCZ3gFAmd5BAJmTwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCZk4FAWYFA25pbAQCZ3oJAQJjaAIFAmZPBQJhSAQCZnAIBQJnegJfMQQCY2sIBQJnegJfMgkAlAoCBQNuaWwJAJQKAgUCZnAFAmNrAmROARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmZwJndgQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJAJEDAgUCYVUFAXQEAmN4CQECYnoBBQJjcgQCY3oJAQJiegEFAmNzBAJnQQoAAmFHCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmcJAMwIAgUCZ3YFA25pbAUDbmlsAwkAAQIFAmFHAgooSW50LCBJbnQpBQJhRwkAAgEJAKwCAgkAAwEFAmFHAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmcAgFAmdBAl8xBAJjawgFAmdBAl8yBAJkZgkBAmNsBAIABQJjcQUCZ3YFBHRoaXMEAmNICAUCZGYCXzEEAmNJCAUCZGYCXzIEAmdCCQBkAgUCY0gFAmNJBAJmZQMJAAACBQJnQgAAAwkAAAIFAmZwAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZwBQJnQgUBYQUCZ0IJAJQKAgUDbmlsCQCVCgMFAmZwBQJjawUCZmUCZE4BCWdldE5vTGVzcwICZ0MCZ0QEAmRmCQECZE0BBQJkTgQCY0gIBQJkZgJfMQQCY0kIBQJkZgJfMgQCY1QIBQJkZgJfMwQCY24IBQJkZgJfNAQCY0oIBQJkZgJfNQMJAGYCBQJnQwUCY0gJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY0gCAyA8IAkApAMBBQJnQwMJAGYCBQJnRAUCY0kJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjSQIDIDwgCQCkAwEFAmdEBAJnRQkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJnRQUCZ0UFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQ11bnN0YWtlQW5kR2V0AQJjaQQCZ0YDCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ0YFAmdGBAJiWQkBAmFNAAQCZ0cJAQJiZQAEAmdmCQDZBAEJAJEDAgUCYlkFAXQEAmdICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnRwUBQQIKV3Igc3QgYWRkcgQCZ0kJAPwHBAUCZ0gCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnZgkAzAgCBQJjaQUDbmlsBQNuaWwDCQAAAgUCZ0kFAmdJBAJkZgkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJnZgUCY2kIBQJkTgZjYWxsZXIEAmN2CQENcGFyc2VJbnRWYWx1ZQEIBQJkZgJfOQQCY0oIBQJkZgNfMTAEAmdKAwMJAQJhSgAGCQAAAgUCY3YFAXEJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjdgYDCQAAAgUCZ0oFAmdKBAJnSwkA/AcEBQJhRQIEYnVybgkAzAgCBQJjaQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnZgUCY2kFA25pbAMJAAACBQJnSwUCZ0sFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJnTAJnTQJnRAQCZ3QDCQECYUoABgkAAAIFAmFZBQFxBAJmUgkAzAgCAwkBASEBBQJndAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZSBQJmUgQCZ0kJAPwHBAUCYmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWgkAzAgCBQJnTAUDbmlsBQNuaWwDCQAAAgUCZ0kFAmdJBAJnTgkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJhWgUCZ0wIBQJkTgZjYWxsZXIEAmNICAUCZ04CXzEEAmNJCAUCZ04CXzIEAmNKCAUCZ04DXzEwBAJnTwkAzAgCAwkAZwIFAmNIBQJnTQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnTQUDbmlsAgAJAMwIAgMJAGcCBQJjSQUCZ0QGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnRAUDbmlsAgAFA25pbAMJAAACBQJnTwUCZ08EAmdFCQD8BwQFAmFFAgRidXJuCQDMCAIFAmdMBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJnTAUDbmlsAwkAAAIFAmdFBQJnRQUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCZ0wCZmcCZmgEAmdtCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3QDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdtBAJmUgkAzAgCAwMJAQEhAQUCZ3QGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAAGCQECYUMBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmUgUCZlIEAmJZCQECYU0ABAJnRwkBAmJlAAQCZ2YJANkEAQkAkQMCBQJiWQUBdAQCZ0gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdHBQFBAgpXciBzdCBhZGRyBAJnSQkA/AcEBQJnSAIHdW5zdGFrZQkAzAgCCQDYBAEFAmdmCQDMCAIFAmdMBQNuaWwFA25pbAMJAAACBQJnSQUCZ0kEAmdQCQECZmYGBQJmZwUCZmgJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdmBQJnTAUDbmlsCAUCZE4GY2FsbGVyCAUCZE4Mb3JpZ2luQ2FsbGVyCAUCZE4NdHJhbnNhY3Rpb25JZAQCY0oIBQJnUAJfMQQCZnEIBQJnUAJfMgkAlAoCBQJjSgUCZnEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmdRAmdSBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1MJAQJlSQUFAmdRBQJnUgIAAgAGBAJlWggFAmdTAl8xBAJjSggFAmdTAl8yBAJjawgFAmdTAl8zBAJmZQgFAmdTAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmdRAmdSBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1QJAQJlSQUFAmdRBQJnUgIAAgAHBAJlWggFAmdUAl8xBAJjSggFAmdUAl8yBAJjawgFAmdUAl8zBAJmZQgFAmdUAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROAQhhY3RpdmF0ZQICZ1UCZ1YDCQECIT0CCQClCAEIBQJkTgZjYWxsZXIJAKUIAQUCYUUJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnVQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnVgUDbmlsAgdzdWNjZXNzAmROAQRzZXRTAgJnVwJnSgMJAQIhPQIJAKUIAQgFAmROBmNhbGxlcgkBAmF5AgUEdGhpcwkBAmFmAAUCZkIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ1cFAmdKBQNuaWwCZE4BBHNldEkCAmdXAmdKAwkBAiE9AgkApQgBCAUCZE4GY2FsbGVyCQECYXkCBQR0aGlzCQECYWYABQJmQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ1cFAmdKBQNuaWwCZE4BHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFNAAJkTgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkEJAJQKAgUDbmlsCQECYnoBBQJiQQJkTgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYlMCYlQCYlgEAmdYCQECYlcDBQJiUwUCYlQFAmJYCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ1gAAAkAzAgCCQCmAwEJAJEDAgUCZ1gAAQkAzAgCCQCmAwEJAJEDAgUCZ1gAAgUDbmlsAmROARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFKAmdZCQCUCgIFA25pbAkBAUkCCQCnAwEFAUoFAmdZAmROARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRwFICQCUCgIFA25pbAkApgMBCQEBRgIFAUcFAUgCZE4BHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkMCYkQJAJQKAgUDbmlsCQCmAwEJAQJiQgIJAKcDAQUCYkMJAKcDAQUCYkQCZE4BI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjbQJiSAJjTAJjTQJjTgJjTwJnWgJjUAJjUQkAlAoCBQNuaWwJAQJjSw0FAmNtBQJiSAUCY0wFAmNNBQJjTgUCY08FAmdaBQJjUAUCY1EGBwAAAgACZE4BI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjbQJoYQJjbwJnWgQCZGYJAQJjbAQFAmNtBQJoYQUCY28JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdaCQCUCgIFA25pbAkAnAoKCAUCZGYCXzEIBQJkZgJfMggFAmRmAl8zCAUCZGYCXzQIBQJkZgJfNQgFAmRmAl82CAUCZGYCXzcJAKYDAQgFAmRmAl84CAUCZGYCXzkIBQJkZgNfMTABAmhiAQJoYwAEAmhkBAJhdwkBAmZ6AAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkQFAmF3BQJmRAMJAAECBQJhdwIEVW5pdAgFAmhiD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdwUCaGIDCQABAgUCYXcCBU9yZGVyBAJkQQUCYXcEAmhlCQECYUsABAJoZgkBAmR6AQUCZEEEAmhnCQD0AwMIBQJkQQlib2R5Qnl0ZXMJAJEDAggFAmRBBnByb29mcwAACAUCZEEPc2VuZGVyUHVibGljS2V5BAJoaAkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAQUCaGUDAwMFAmhmBQJoZwcFAmhoBwYJAQJhcgMFAmhmBQJoZwUCaGgDCQABAgUCYXcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlYQUCYXcEAmhpCQD2AwEJAQV2YWx1ZQEIBQJlYQZzY3JpcHQEAmhqCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUUJAQJhcAAEAmhrCQDxBwEFBHRoaXMDAwkAAAIFAmhqBQJoaQkBAiE9AgUCaGsFAmhpBwYJAPQDAwgFAmhiCWJvZHlCeXRlcwkAkQMCCAUCaGIGcHJvb2ZzAAAFAmhkCQD0AwMIBQJoYglib2R5Qnl0ZXMJAJEDAggFAmhiBnByb29mcwAABQJoZEv/uPg=", "chainId": 84, "height": 2421866, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Jyb5RHgpHt2r3jq3JQvGHA1tHipjNvLEa4VwbyRo8Nb Next: 4EXEcdA3sbfTYxBUaPLMP6JMD8RukjSDVXvDf6WNzzZG Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (I,J) = fraction(I, c, J)
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func L (M,N) = toInt(fraction(M, toBigInt(N), c))
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8078
8179
82-func Q (I,J) = fraction(I, c, toBigInt(J))
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8383
8484
85-func R (M,N) = fraction(M, toBigInt(N), c)
85+func R () = "%s__factoryContract"
8686
8787
88-func S (T,U,V) = fraction(T, U, V)
88+func S () = "%s__managerPublicKey"
8989
9090
91-func W (M) = if ((d > M))
92- then -(M)
93- else M
91+func T () = "%s__pendingManagerPublicKey"
9492
9593
96-func X (M) = if ((d > M))
97- then -(M)
98- else M
94+func U () = "%s%s__price__last"
9995
10096
101-func Y () = "%s__factoryContract"
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func Z () = "%s__managerPublicKey"
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func aa () = "%s__pendingManagerPublicKey"
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func ab () = "%s%s__price__last"
106+func ac () = "%s__amountAsset"
111107
112108
113-func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
109+func ad () = "%s__priceAsset"
114110
115111
116-func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
112+func ae () = "%s__amp"
117113
118114
119-func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
115+func af () = "%s__addonAddr"
120116
121117
122-func aj () = "%s__amountAsset"
118+func ag () = "%s__swapContract"
123119
124120
125-func ak () = "%s__priceAsset"
121+func ah () = "%s__factoryConfig"
126122
127123
128-func al () = "%s__amp"
124+func ai () = "%s%s__matcher__publicKey"
129125
130126
131-func am () = "%s__addonAddr"
127+func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
132128
133129
134-let an = "%s__fee"
135-
136-let ao = valueOrElse(getInteger(this, an), G)
137-
138-let ap = makeString(["%s", "dLp"], n)
139-
140-let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141-
142-let ar = makeString(["%s", "refreshDLpDelay"], n)
143-
144-let as = 30
145-
146-let at = valueOrElse(getInteger(this, ar), as)
147-
148-func au () = "%s__factoryConfig"
130+func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
149131
150132
151-func av () = "%s%s__matcher__publicKey"
133+func ao () = "%s__shutdown"
152134
153135
154-func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
136+func ap () = "%s__allowedLpStableScriptHash"
155137
156138
157-func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
139+func aq () = "%s__feeCollectorAddress"
158140
159141
160-func aB () = "%s__shutdown"
142+func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
161143
162144
163-func aC () = "%s__allowedLpStableScriptHash"
164-
165-
166-func aD () = "%s__feeCollectorAddress"
167-
168-
169-func aE (aF,aG,aH,aI) = throw((((((((("order validation failed: orderValid=" + toString(aF)) + " (") + aG) + ")") + " senderValid=") + toString(aH)) + " matcherValid=") + toString(aI)))
170-
171-
172-func aJ (aK,aL) = valueOrErrorMessage(getString(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
173-
174-
175-func aM (aK,aL) = valueOrErrorMessage(getInteger(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
176-
177-
178-func aN (aO) = throw(makeString(["lp_stable.ride:", aO], " "))
179-
180-
181-func aP (aO) = makeString(["lp_stable.ride:", aO], " ")
182-
183-
184-let aQ = addressFromStringValue(aJ(this, Y()))
185-
186-let aR = {
187- let aS = invoke(aQ, "getInFeeREADONLY", [toString(this)], nil)
188- if ($isInstanceOf(aS, "Int"))
189- then aS
190- else throw(($getType(aS) + " couldn't be cast to Int"))
191- }
192-
193-let aT = {
194- let aS = invoke(aQ, "getOutFeeREADONLY", [toString(this)], nil)
195- if ($isInstanceOf(aS, "Int"))
196- then aS
197- else throw(($getType(aS) + " couldn't be cast to Int"))
198- }
199-
200-let aU = aJ(this, al())
201-
202-func aV () = valueOrElse(getBoolean(aQ, aB()), false)
203-
204-
205-func aW () = fromBase58String(aJ(aQ, av()))
206-
207-
208-let aX = addressFromStringValue(aJ(aQ, aD()))
209-
210-func aY () = {
211- let aZ = aJ(this, aj())
212- let ba = aJ(this, ak())
213- let bb = aM(aQ, az(ba))
214- let ax = aM(aQ, az(aZ))
215- split(aJ(aQ, aw(toString(ax), toString(bb))), n)
145+func av (J) = {
146+ let aw = J
147+ if ($isInstanceOf(aw, "String"))
148+ then {
149+ let ax = aw
150+ ax
151+ }
152+ else throw("fail cast to String")
216153 }
217154
218155
219-func bc (bd) = if ((bd == k))
220- then unit
221- else fromBase58String(bd)
156+func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
222157
223158
224-func be (bd) = if ((bd == unit))
225- then k
226- else toBase58String(value(bd))
159+func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
227160
228161
229-func bf (bg) = $Tuple9(addressFromStringValue(bg[t]), parseIntValue(bg[u]), fromBase58String(bg[v]), bc(bg[w]), bc(bg[x]), parseIntValue(bg[y]), parseIntValue(bg[z]), fromBase58String(bg[A]), fromBase58String(bg[B]))
162+func aC (aD) = throw(makeString(["lp_stable.ride:", aD], " "))
230163
231164
232-let bh = bf(aY())
165+let aE = addressFromStringValue(ay(this, R()))
233166
234-let bi = bh
167+let aF = {
168+ let aG = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
169+ if ($isInstanceOf(aG, "Int"))
170+ then aG
171+ else throw(($getType(aG) + " couldn't be cast to Int"))
172+ }
235173
236-let bj = bi._1
174+let aH = {
175+ let aG = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
176+ if ($isInstanceOf(aG, "Int"))
177+ then aG
178+ else throw(($getType(aG) + " couldn't be cast to Int"))
179+ }
237180
238-let bk = bi._2
181+let aI = ay(this, ae())
239182
240-let bl = bi._3
241-
242-let bm = bi._4
243-
244-let bn = bi._5
245-
246-let bo = bi._6
247-
248-let bp = bi._7
249-
250-let bq = bi._8
251-
252-let br = bi._9
253-
254-func bs () = split(aJ(aQ, au()), n)
183+func aJ () = valueOrElse(getBoolean(aE, ao()), false)
255184
256185
257-let bt = bs()
258-
259-let bu = valueOrErrorMessage(addressFromString(bt[C]), "Invalid staking contract address")
260-
261-let bv = valueOrErrorMessage(addressFromString(bt[E]), "Invalid slipage contract address")
262-
263-let bw = valueOrErrorMessage(addressFromString(bt[F]), "Invalid gwx contract address")
264-
265-let bx = valueOrErrorMessage(addressFromString(bt[D]), "Invalid gwx contract address")
266-
267-func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], n)
186+func aK () = fromBase58String(ay(aE, ai()))
268187
269188
270-func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], n)
189+let aL = addressFromStringValue(ay(aE, aq()))
271190
272-
273-func bN (bO) = if ((bO == "WAVES"))
274- then wavesBalance(this).available
275- else assetBalance(this, fromBase58String(bO))
276-
277-
278-func bP (bQ,bR) = fraction(bQ, c, bR)
279-
280-
281-func bS (bQ,bR,P) = fraction(bQ, c, bR, P)
282-
283-
284-func bT (bU,bV,bW) = {
285- let bX = fraction((bU - bV), b, bV)
286- let bY = ((bW - W(bX)) > d)
287- if (!(bY))
288- then throw(("Big slpg: " + toString(bX)))
289- else $Tuple2(bY, min([bU, bV]))
191+func aM () = {
192+ let aN = ay(this, ac())
193+ let aO = ay(this, ad())
194+ let aP = aB(aE, am(aO))
195+ let ak = aB(aE, am(aN))
196+ split(ay(aE, aj(toString(ak), toString(aP))), l)
290197 }
291198
292199
293-func bZ (ca,cb,cc) = {
294- let bX = fraction(cb, b, ca)
295- let cd = (cc > bX)
296- if (if (cd)
297- then true
298- else (cb > ca))
299- then throw(((((((toString(cb) + " ") + toString(ca)) + " ") + toString(bX)) + " ") + toString(cc)))
300- else cd
200+func aQ (aR) = if ((aR == i))
201+ then unit
202+ else fromBase58String(aR)
203+
204+
205+func aS (aR) = if ((aR == unit))
206+ then i
207+ else toBase58String(value(aR))
208+
209+
210+func aT (aU) = $Tuple7(addressFromStringValue(aU[r]), parseIntValue(aU[s]), fromBase58String(aU[t]), aQ(aU[u]), aQ(aU[v]), parseIntValue(aU[w]), parseIntValue(aU[x]))
211+
212+
213+let aV = aT(aM())
214+
215+let aW = aV
216+
217+let aX = aW._1
218+
219+let aY = aW._2
220+
221+let aZ = aW._3
222+
223+let ba = aW._4
224+
225+let bb = aW._5
226+
227+let bc = aW._6
228+
229+let bd = aW._7
230+
231+func be () = split(ay(aE, ah()), l)
232+
233+
234+let bf = be()
235+
236+let bg = valueOrErrorMessage(addressFromString(bf[A]), "Invalid staking contract address")
237+
238+let bh = valueOrErrorMessage(addressFromString(bf[C]), "Invalid slipage contract address")
239+
240+let bi = valueOrErrorMessage(addressFromString(bf[D]), "Invalid gwx contract address")
241+
242+let bj = valueOrErrorMessage(addressFromString(bf[B]), "Invalid gwx contract address")
243+
244+func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu)], l)
245+
246+
247+func bv (bw,bx,by,bo,br,bs) = makeString(["%d%d%d%d%d%d", toString(bw), toString(bx), toString(by), toString(bo), toString(br), toString(bs)], l)
248+
249+
250+func bz (bA) = if ((bA == "WAVES"))
251+ then wavesBalance(this).available
252+ else assetBalance(this, fromBase58String(bA))
253+
254+
255+func bB (bC,bD) = fraction(bC, c, bD)
256+
257+
258+func bE (bF,bG,bH) = {
259+ let bI = fraction((bF - bG), b, bG)
260+ let bJ = ((bH - P(bI)) > d)
261+ if (!(bJ))
262+ then throw(("Big slpg: " + toString(bI)))
263+ else $Tuple2(bJ, min([bF, bG]))
301264 }
302265
303266
304-func ce (cf,cg,ch,ci) = {
305- let cj = H(ch, cf)
306- let ck = H(ci, cg)
307- bP(ck, cj)
267+func bK (bL,bM,bN) = {
268+ let bI = fraction(bM, b, bL)
269+ let bO = (bN > bI)
270+ if (if (bO)
271+ then true
272+ else (bM > bL))
273+ then throw(((((((toString(bM) + " ") + toString(bL)) + " ") + toString(bI)) + " ") + toString(bN)))
274+ else bO
308275 }
309276
310277
311-func cl (ch,ci,cm) = {
312- let cn = bo
313- let co = bp
314- let cp = ce(cn, co, ch, ci)
315- let bR = H(ch, cn)
316- let bQ = H(ci, co)
317- let cq = H(cm, a)
318- let cr = bP(bR, cq)
319- let cs = bP(bQ, cq)
320-[cp, cr, cs]
278+func bP (bQ,bR,bS,bT) = {
279+ let bU = F(bS, bQ)
280+ let bV = F(bT, bR)
281+ bB(bV, bU)
321282 }
322283
323284
324-func ct (ch,ci,cm) = {
325- let cu = cl(ch, ci, cm)
326-[L(cu[0], a), L(cu[1], a), L(cu[2], a)]
285+func bW (bS,bT,bX) = {
286+ let bY = aM()
287+ let bZ = parseIntValue(bY[w])
288+ let ca = parseIntValue(bY[x])
289+ let cb = bP(bZ, ca, bS, bT)
290+ let bD = F(bS, bZ)
291+ let bC = F(bT, ca)
292+ let cc = F(bX, a)
293+ let cd = bB(bD, cc)
294+ let ce = bB(bC, cc)
295+[cb, cd, ce]
327296 }
328297
329298
330-func cv (cw,ao) = {
331- let cx = if ((ao == 0))
332- then 0
333- else fraction(cw, ao, a)
334- $Tuple2((cw - cx), cx)
299+func cf (bS,bT,bX) = {
300+ let cg = bW(bS, bT, bX)
301+[I(cg[0], a), I(cg[1], a), I(cg[2], a)]
335302 }
336303
337304
338-func cy (cz) = {
339- let cA = cz[0]
340- let cB = cz[1]
341- let cC = (cA + cB)
342- if ((cC == e))
343- then e
305+func ch (ci,cj) = {
306+ let ck = if ((cj == 0))
307+ then 0
308+ else fraction(ci, cj, a)
309+ $Tuple2((ci - ck), ck)
310+ }
311+
312+
313+func cl (cm,cn,co,cp) = {
314+ let bY = aM()
315+ let cq = bY[t]
316+ let cr = bY[u]
317+ let cs = bY[v]
318+ let ct = parseIntValue(bY[w])
319+ let cu = parseIntValue(bY[x])
320+ let cv = bY[s]
321+ let cw = valueOrErrorMessage(assetInfo(fromBase58String(cq)), "Wrong LP id").quantity
322+ if ((cq != cn))
323+ then throw("Wrong pmt asset")
344324 else {
345- let cD = parseIntValue(aU)
346- let cE = (cD * 2)
347- let cu = fraction(cA, cB, f)
348- let cF = fraction(cu, i, f)
349- let cG = fraction(toBigInt(cE), cC, f)
350- let cH = toBigInt((cE - 1))
351- func cI (cJ) = {
352- let cK = fraction(cJ, cJ, f)
353- let cL = fraction(cK, cJ, f)
354- let cM = fraction(cL, f, cF)
355- fraction((cG + fraction(cM, g, f)), cJ, (fraction(cH, cJ, f) + fraction(h, cM, f)))
356- }
357-
358- func cN (cO,cP) = if (cO._2)
359- then cO
360- else {
361- let cJ = cO._1
362- let cQ = cI(cJ)
363- let cR = (cQ - value(cJ))
364- let cS = if ((e > cR))
365- then -(cR)
366- else cR
367- if ((f >= cS))
368- then $Tuple2(cQ, true)
369- else $Tuple2(cQ, false)
370- }
371-
372- let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373- let cU = {
374- let cV = cT
375- let cW = size(cV)
376- let cX = $Tuple2(cC, false)
377- func cY (cZ,da) = if ((da >= cW))
378- then cZ
379- else cN(cZ, cV[da])
380-
381- func db (cZ,da) = if ((da >= cW))
382- then cZ
383- else throw("List size exceeds 15")
384-
385- db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
386- }
387- let cJ = cU._1
388- let dc = cU._2
389- if (dc)
390- then cJ
391- else throw(("D calculation error, D = " + toString(cJ)))
325+ let cx = bz(cr)
326+ let cy = F(cx, ct)
327+ let cz = bz(cs)
328+ let cA = F(cz, cu)
329+ let cB = bB(cA, cy)
330+ let cC = I(cB, a)
331+ let cD = F(co, a)
332+ let cE = F(cw, a)
333+ let cF = fraction(cy, cD, cE)
334+ let cG = fraction(cA, cD, cE)
335+ let cH = I(cF, ct)
336+ let cI = I(cG, cu)
337+ let cJ = if ((cm == ""))
338+ then nil
339+ else [ScriptTransfer(cp, cH, if ((cr == "WAVES"))
340+ then unit
341+ else fromBase58String(cr)), ScriptTransfer(cp, cI, if ((cs == "WAVES"))
342+ then unit
343+ else fromBase58String(cs)), StringEntry(ab(toString(cp), cm), bv(cH, cI, co, cC, height, lastBlock.timestamp)), IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC)]
344+ $Tuple10(cH, cI, cr, cs, cx, cz, cw, cB, cv, cJ)
392345 }
393346 }
394347
395348
396-func dd (de,df,dg,dh) = {
397- let di = bl
398- let dj = toBase58String(value(bm))
399- let dk = toBase58String(value(bn))
400- let dl = bo
401- let dm = bp
402- let dn = toString(bk)
403- let do = valueOrErrorMessage(assetInfo(di), "Wrong LP id").quantity
404- if ((toBase58String(di) != df))
405- then throw("Wrong pmt asset")
349+func cK (cm,bH,cL,cM,cN,cO,cp,cP,cQ,cR,cS,cT,cU) = {
350+ let bY = aM()
351+ let cq = fromBase58String(bY[t])
352+ let cV = bY[u]
353+ let cW = bY[v]
354+ let cX = bY[y]
355+ let cY = bY[z]
356+ let cZ = parseIntValue(bY[w])
357+ let da = parseIntValue(bY[x])
358+ let cv = bY[s]
359+ let db = valueOrErrorMessage(assetInfo(cq), "Wr lp as").quantity
360+ let cx = if (cP)
361+ then bz(cV)
362+ else if (if (cR)
363+ then (cU == cV)
364+ else false)
365+ then (bz(cV) - cT)
366+ else if (cR)
367+ then bz(cV)
368+ else (bz(cV) - cL)
369+ let cz = if (cP)
370+ then bz(cW)
371+ else if (if (cR)
372+ then (cU == cW)
373+ else false)
374+ then (bz(cW) - cT)
375+ else if (cR)
376+ then bz(cW)
377+ else (bz(cW) - cN)
378+ let dc = F(cL, cZ)
379+ let dd = F(cN, da)
380+ let de = bB(dd, dc)
381+ let cy = F(cx, cZ)
382+ let cA = F(cz, da)
383+ let df = if ((db == 0))
384+ then {
385+ let cB = d
386+ let dg = d
387+ let cc = pow((dc * dd), 0, toBigInt(5), 1, 0, DOWN)
388+ $Tuple5(I(cc, a), I(dc, cZ), I(dd, da), bB((cA + dd), (cy + dc)), dg)
389+ }
406390 else {
407- let dp = bN(dj)
408- let dq = H(dp, dl)
409- let dr = bN(dk)
410- let ds = H(dr, dm)
411- let dt = bP(ds, dq)
412- let du = L(dt, a)
413- let dv = H(dg, a)
414- let dw = H(do, a)
415- let dx = fraction(dq, dv, dw)
416- let dy = fraction(ds, dv, dw)
417- let dz = O(dx, dl, FLOOR)
418- let dA = O(dy, dm, FLOOR)
419- let dB = if ((de == ""))
420- then nil
421- else [ScriptTransfer(dh, dz, if ((dj == "WAVES"))
422- then unit
423- else fromBase58String(dj)), ScriptTransfer(dh, dA, if ((dk == "WAVES"))
424- then unit
425- else fromBase58String(dk)), StringEntry(ai(toString(dh), de), bJ(dz, dA, dg, du, height, lastBlock.timestamp)), IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du)]
426- $Tuple10(dz, dA, dj, dk, dp, dr, do, dt, dn, dB)
391+ let cB = bB(cA, cy)
392+ let dh = fraction(P((cB - de)), c, cB)
393+ let dg = F(bH, a)
394+ if (if (if (cS)
395+ then (cB != d)
396+ else false)
397+ then (dh > dg)
398+ else false)
399+ then throw(((("Price slippage " + toString(dh)) + " > ") + toString(dg)))
400+ else {
401+ let di = F(db, a)
402+ let dj = fraction(dc, cB, c)
403+ let dk = fraction(dd, c, cB)
404+ let dl = if ((dj > dd))
405+ then $Tuple2(dk, dd)
406+ else $Tuple2(dc, dj)
407+ let dm = dl._1
408+ let dn = dl._2
409+ let cc = fraction(di, dn, cA)
410+ $Tuple5(I(cc, a), I(dm, cZ), I(dn, da), cB, dg)
411+ }
412+ }
413+ let do = df._1
414+ let dp = df._2
415+ let dq = df._3
416+ let cC = I(df._4, a)
417+ let dr = I(df._5, a)
418+ if ((0 >= do))
419+ then throw("LP <= 0")
420+ else {
421+ let ds = if (!(cQ))
422+ then 0
423+ else do
424+ let dt = (cL - dp)
425+ let du = (cN - dq)
426+ let dv = if (if (cR)
427+ then (cU == cV)
428+ else false)
429+ then $Tuple2(cT, 0)
430+ else if (if (cR)
431+ then (cU == cW)
432+ else false)
433+ then $Tuple2(0, cT)
434+ else $Tuple2(dp, dq)
435+ let dw = dv._1
436+ let dx = dv._2
437+ let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, cm), bk(dw, dx, ds, cC, bH, dr, height, lastBlock.timestamp, dt, du))]
438+ $Tuple13(do, ds, cC, cx, cz, db, cq, cv, dy, dt, du, cM, cO)
427439 }
428440 }
429441
430442
431-func dC (de,bW,dD,dE,dF,dG,dh,dH,dI,dJ,dK,dL,dM) = {
432- let di = bl
433- let dN = toBase58String(value(bm))
434- let dO = toBase58String(value(bn))
435- let dP = bq
436- let dQ = br
437- let dR = bo
438- let dS = bp
439- let dn = toString(bk)
440- let dT = valueOrErrorMessage(assetInfo(di), "Wr lp as").quantity
441- let dp = if (dH)
442- then bN(dN)
443- else if (if (dJ)
444- then (dM == dN)
445- else false)
446- then (bN(dN) - dL)
447- else if (dJ)
448- then bN(dN)
449- else (bN(dN) - dD)
450- let dr = if (dH)
451- then bN(dO)
452- else if (if (dJ)
453- then (dM == dO)
454- else false)
455- then (bN(dO) - dL)
456- else if (dJ)
457- then bN(dO)
458- else (bN(dO) - dF)
459- let dU = H(dD, dR)
460- let dV = H(dF, dS)
461- let dW = bP(dV, dU)
462- let dq = H(dp, dR)
463- let ds = H(dr, dS)
464- let cb = cy([dq, ds])
465- let dX = if ((dT == 0))
466- then {
467- let ca = cy([(dq + dU), (ds + dV)])
468- let dY = if ((ca > cb))
443+func dz (dA) = {
444+ let bY = aM()
445+ let dB = bY[u]
446+ let dC = bY[v]
447+ let cv = parseIntValue(bY[s])
448+ let bZ = parseIntValue(bY[w])
449+ let ca = parseIntValue(bY[x])
450+ let dD = bz(dB)
451+ let dE = bz(dC)
452+ let cB = if ((dA.orderType == Buy))
453+ then bP(bZ, ca, (dD + dA.amount), dE)
454+ else bP(bZ, ca, (dD - dA.amount), dE)
455+ let cC = I(cB, a)
456+ if (if (if (aJ())
457+ then true
458+ else (cv == p))
459+ then true
460+ else (cv == q))
461+ then throw("Admin blocked")
462+ else {
463+ let dF = dA.assetPair.amountAsset
464+ let dG = if ((dF == unit))
465+ then "WAVES"
466+ else toBase58String(value(dF))
467+ let dH = dA.assetPair.priceAsset
468+ let dI = if ((dH == unit))
469+ then "WAVES"
470+ else toBase58String(value(dH))
471+ if (if ((dG != dB))
469472 then true
470- else throw("D1 should be greater than D0")
471- if ((dY == dY))
472- then {
473- let dt = d
474- let dZ = d
475- let cq = ca
476- $Tuple5(L(cq, a), L(dU, dR), L(dV, dS), bP((ds + dV), (dq + dU)), dZ)
473+ else (dI != dC))
474+ then throw("Wr assets")
475+ else {
476+ let dJ = dA.price
477+ let da = fraction(a, ca, bZ)
478+ let dK = L(dJ, a, da)
479+ let dL = if ((dA.orderType == Buy))
480+ then (cC >= dK)
481+ else (dK >= cC)
482+ true
477483 }
478- else throw("Strict value is not equal to itself.")
479- }
480- else {
481- let dt = bP(ds, dq)
482- let ea = fraction(W((dt - dW)), c, dt)
483- let dZ = H(bW, a)
484- if (if (if (dK)
485- then (dt != d)
486- else false)
487- then (ea > dZ)
488- else false)
489- then throw(((("Price slippage " + toString(ea)) + " > ") + toString(dZ)))
490- else {
491- let eb = H(dT, a)
492- let ec = fraction(dU, bS(ds, dq, CEILING), c, CEILING)
493- let ed = fraction(dV, c, bS(ds, dq, FLOOR), CEILING)
494- let ee = if ((ec > dV))
495- then $Tuple2(ed, dV)
496- else $Tuple2(dU, ec)
497- let ef = ee._1
498- let eg = ee._2
499- let ca = cy([(dq + ef), (ds + eg)])
500- let dY = if ((ca > cb))
501- then true
502- else throw("D1 should be greater than D0")
503- if ((dY == dY))
504- then {
505- let cq = fraction(eb, (ca - cb), cb)
506- $Tuple5(O(cq, a, FLOOR), O(ef, dR, CEILING), O(eg, dS, CEILING), dt, dZ)
507- }
508- else throw("Strict value is not equal to itself.")
509- }
510- }
511- let eh = dX._1
512- let ei = dX._2
513- let ej = dX._3
514- let du = L(dX._4, a)
515- let ek = L(dX._5, a)
516- if ((0 >= eh))
517- then throw("LP <= 0")
518- else {
519- let el = if (!(dI))
520- then 0
521- else eh
522- let em = (dD - ei)
523- let en = (dF - ej)
524- let eo = if (if (dJ)
525- then (dM == dN)
526- else false)
527- then $Tuple2(dL, 0)
528- else if (if (dJ)
529- then (dM == dO)
530- else false)
531- then $Tuple2(0, dL)
532- else $Tuple2(ei, ej)
533- let ep = eo._1
534- let eq = eo._2
535- let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, de), by(ep, eq, el, du, bW, ek, height, lastBlock.timestamp, em, en))]
536- $Tuple13(eh, el, du, dp, dr, dT, di, dn, er, em, en, dE, dG)
537484 }
538485 }
539486
540487
541-func es (cz,cP,et) = {
542- let eu = g
543- let ev = cz[if ((cP == 0))
488+func dM (dN) = if ((size(dN.payments) != 1))
489+ then throw("1 pmnt exp")
490+ else {
491+ let dO = value(dN.payments[0])
492+ let cn = value(dO.assetId)
493+ let cT = dO.amount
494+ let df = cl(toBase58String(dN.transactionId), toBase58String(cn), cT, dN.caller)
495+ let cH = df._1
496+ let cI = df._2
497+ let cv = parseIntValue(df._9)
498+ let cJ = df._10
499+ if (if (aJ())
500+ then true
501+ else (cv == q))
502+ then throw(("Admin blocked: " + toString(cv)))
503+ else $Tuple5(cH, cI, cT, cn, cJ)
504+ }
505+
506+
507+func dP (dQ,aa,dR,dS,bH,cQ,cR,cS,cT,cU) = {
508+ let df = cK(aa, bH, value(dR).amount, value(dR).assetId, value(dS).amount, value(dS).assetId, dQ, (aa == ""), cQ, cR, cS, cT, cU)
509+ let cv = parseIntValue(df._8)
510+ if (if (if (aJ())
511+ then true
512+ else (cv == o))
513+ then true
514+ else (cv == q))
515+ then throw(("Blocked:" + toString(cv)))
516+ else df
517+ }
518+
519+
520+func dT (dU) = {
521+ let dV = g
522+ let dW = dU[0]
523+ let dX = dU[1]
524+ let dY = parseBigIntValue(j)
525+ let dZ = (parseBigIntValue(aI) * dY)
526+ let ea = (dW + dX)
527+ if ((ea == e))
528+ then e
529+ else {
530+ let eb = (dZ * dV)
531+ let ec = (((dW * dX) * dV) * dV)
532+ let ed = ((eb * ea) / dY)
533+ let ee = (eb - dY)
534+ let ef = (dV + f)
535+ func eg (eh,ei) = {
536+ let ej = eh
537+ let ek = ej._1
538+ let el = ej._2
539+ if ((el != unit))
540+ then eh
541+ else {
542+ let em = (((ek * ek) * ek) / ec)
543+ let en = (((ed + (em * dV)) * ek) / (((ee * ek) / dY) + (ef * em)))
544+ let eo = Q((en - value(ek)))
545+ if ((f >= eo))
546+ then $Tuple2(en, ei)
547+ else $Tuple2(en, unit)
548+ }
549+ }
550+
551+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
552+ let eq = {
553+ let er = ep
554+ let es = size(er)
555+ let et = $Tuple2(ea, unit)
556+ func eu (ev,ew) = if ((ew >= es))
557+ then ev
558+ else eg(ev, er[ew])
559+
560+ func ex (ev,ew) = if ((ew >= es))
561+ then ev
562+ else throw("List size exceeds 15")
563+
564+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
565+ }
566+ let ek = eq._1
567+ let el = eq._2
568+ if ((el != unit))
569+ then ek
570+ else throw(("D calculation error, D = " + toString(ek)))
571+ }
572+ }
573+
574+
575+func ey (dU,dN,ez) = {
576+ let dV = g
577+ let eA = dU[if ((dN == 0))
544578 then 1
545579 else 0]
546- let ew = parseBigIntValue(l)
547- let cD = (parseBigIntValue(aU) * ew)
548- let cC = ev
549- let cE = (cD * eu)
550- let ex = (((((et * et) / (ev * eu)) * et) * ew) / (cE * eu))
551- let ey = ((cC + ((et * ew) / cE)) - et)
552- func cN (cO,ez) = {
553- let eA = cO
554- let eB = eA._1
555- let dc = eA._2
556- if ((dc != unit))
557- then cO
580+ let dY = parseBigIntValue(j)
581+ let dZ = (parseBigIntValue(aI) * dY)
582+ let ea = eA
583+ let eb = (dZ * dV)
584+ let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
585+ let eC = ((ea + ((ez * dY) / eb)) - ez)
586+ func eg (eh,ei) = {
587+ let eD = eh
588+ let eE = eD._1
589+ let el = eD._2
590+ if ((el != unit))
591+ then eh
558592 else {
559- let eC = (((eB * eB) + ex) / ((g * eB) + ey))
560- let eD = X((eC - value(eB)))
561- if ((f >= eD))
562- then $Tuple2(eC, ez)
563- else $Tuple2(eC, unit)
593+ let eF = (((eE * eE) + eB) / ((g * eE) + eC))
594+ let eG = Q((eF - value(eE)))
595+ if ((f >= eG))
596+ then $Tuple2(eF, ei)
597+ else $Tuple2(eF, unit)
564598 }
565599 }
566600
567- let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568- let eE = {
569- let cV = cT
570- let cW = size(cV)
571- let cX = $Tuple2(et, unit)
572- func cY (cZ,da) = if ((da >= cW))
573- then cZ
574- else cN(cZ, cV[da])
601+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
602+ let eH = {
603+ let er = ep
604+ let es = size(er)
605+ let et = $Tuple2(ez, unit)
606+ func eu (ev,ew) = if ((ew >= es))
607+ then ev
608+ else eg(ev, er[ew])
575609
576- func db (cZ,da) = if ((da >= cW))
577- then cZ
610+ func ex (ev,ew) = if ((ew >= es))
611+ then ev
578612 else throw("List size exceeds 15")
579613
580- db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
581615 }
582- let eB = eE._1
583- let dc = eE._2
584- if ((dc != unit))
585- then eB
586- else throw(("Y calculation error, Y = " + toString(eB)))
616+ let eE = eH._1
617+ let el = eH._2
618+ if ((el != unit))
619+ then eE
620+ else throw(("Y calculation error, Y = " + toString(eE)))
587621 }
588622
589623
590-func eF (eG,eH,eI) = {
591- let eJ = fraction(cy([K(eG, toBigInt(bo)), K(eH, toBigInt(bp))]), c, eI)
592- if ((eI == e))
593- then e
594- else eJ
595- }
596-
597-
598-func eK (eL,eM,eN) = {
599- let eO = (toBigInt(bN(be(bm))) - eL)
600- let eP = (toBigInt(bN(be(bn))) - eM)
601- let eQ = (toBigInt(value(assetInfo(bl)).quantity) - eN)
602- let eR = eF(eO, eP, eQ)
603- eR
604- }
605-
606-
607-func eS (eT,eU,eN) = {
608- let eO = (bN(be(bm)) + eT)
609- let eP = (bN(be(bn)) + eU)
610- let eQ = (value(assetInfo(bl)).quantity + eN)
611- let eJ = eF(toBigInt(eO), toBigInt(eP), toBigInt(eQ))
612- let eV = [IntegerEntry(aq, height), StringEntry(ap, toString(eJ))]
613- $Tuple2(eV, eJ)
614- }
615-
616-
617-func eW (eX,eJ) = if ((eJ >= eX))
618- then true
619- else aN("updated DLp lower than current DLp")
620-
621-
622-func eY (eZ) = {
623- let eO = bN(be(bm))
624- let eP = bN(be(bn))
625- let fa = eZ.amount
626- let fb = fraction(eZ.amount, eZ.price, a, FLOOR)
627- let fc = if ((eZ.orderType == Buy))
628- then $Tuple2(fa, -(fb))
629- else $Tuple2(-(fa), fb)
630- let eT = fc._1
631- let eU = fc._2
632- if (if (if (aV())
633- then true
634- else (bk == r))
635- then true
636- else (bk == s))
637- then throw("Admin blocked")
638- else if (if ((eZ.assetPair.amountAsset != bm))
639- then true
640- else (eZ.assetPair.priceAsset != bn))
641- then throw("Wr assets")
642- else {
643- let fd = parseBigIntValue(valueOrElse(getString(this, ap), "0"))
644- let fe = eS(eT, eU, 0)
645- let ff = fe._1
646- let fg = fe._2
647- let fh = (fg >= fd)
648- let fi = makeString(["dLp=", toString(fd), " dLpNew=", toString(fg), " amountAssetBalance=", toString(eO), " priceAssetBalance=", toString(eP), " amountAssetBalanceDelta=", toString(eT), " priceAssetBalanceDelta=", toString(eU)], "")
649- $Tuple2(fh, fi)
650- }
651- }
652-
653-
654-func fj (cP) = if ((size(cP.payments) != 1))
655- then throw("1 pmnt exp")
656- else {
657- let fk = value(cP.payments[0])
658- let df = value(fk.assetId)
659- let dL = fk.amount
660- let dX = dd(toBase58String(cP.transactionId), toBase58String(df), dL, cP.caller)
661- let dz = dX._1
662- let dA = dX._2
663- let dn = parseIntValue(dX._9)
664- let dB = dX._10
665- if (if (aV())
666- then true
667- else (dn == s))
668- then throw(("Admin blocked: " + toString(dn)))
669- else $Tuple5(dz, dA, dL, df, dB)
670- }
671-
672-
673-func fl (fm,ah,fn,fo,bW,dI,dJ,dK,dL,dM) = {
674- let dX = dC(ah, bW, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ah == ""), dI, dJ, dK, dL, dM)
675- let dn = parseIntValue(dX._8)
676- if (if (if (aV())
677- then true
678- else (dn == q))
679- then true
680- else (dn == s))
681- then throw(("Blocked:" + toString(dn)))
682- else dX
683- }
684-
685-
686-func fp (fq,df,dh,ah,fr) = {
687- let dj = toBase58String(value(bm))
688- let dk = toBase58String(value(bn))
689- let di = bl
690- let dR = bo
691- let dS = bp
692- let eQ = toBigInt(valueOrErrorMessage(assetInfo(di), "invalid lp asset").quantity)
693- let fs = if ((eQ > e))
624+func eI (eJ,cn,cp,aa,eK) = {
625+ let aU = aM()
626+ let cr = aU[u]
627+ let cs = aU[v]
628+ let cq = aU[t]
629+ let cZ = parseIntValue(aU[w])
630+ let da = parseIntValue(aU[x])
631+ let eL = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
632+ let eM = if ((eL > e))
694633 then true
695634 else throw("initial deposit requires all coins")
696- if ((fs == fs))
635+ if ((eM == eM))
697636 then {
698- let dp = bN(dj)
699- let dr = bN(dk)
700- let ft = if ((ah == ""))
701- then $Tuple2(dp, dr)
702- else if ((df == dj))
703- then if ((fq > dp))
637+ let cx = bz(cr)
638+ let cz = bz(cs)
639+ let eN = if ((aa == ""))
640+ then $Tuple2(cx, cz)
641+ else if ((cn == cr))
642+ then if ((eJ > cx))
704643 then throw("invalid payment amount")
705- else $Tuple2((dp - fq), dr)
706- else if ((df == dk))
707- then if ((fq > dr))
644+ else $Tuple2((cx - eJ), cz)
645+ else if ((cn == cs))
646+ then if ((eJ > cz))
708647 then throw("invalid payment amount")
709- else $Tuple2(dp, (dr - fq))
648+ else $Tuple2(cx, (cz - eJ))
710649 else throw("wrong pmtAssetId")
711- let fu = ft._1
712- let fv = ft._2
713- let fw = if ((df == dj))
714- then $Tuple2(fq, 0)
715- else if ((df == dk))
716- then $Tuple2(0, fq)
650+ let eO = eN._1
651+ let eP = eN._2
652+ let eQ = if ((cn == cr))
653+ then $Tuple2(eJ, 0)
654+ else if ((cn == cs))
655+ then $Tuple2(0, eJ)
717656 else throw("invalid payment")
718- let fx = fw._1
719- let fy = fw._2
720- let fz = if (fr)
721- then $Tuple3(cv(fx, aR)._1, cv(fy, aR)._1, cv(fq, aR)._2)
722- else $Tuple3(fx, fy, 0)
723- let fA = fz._1
724- let fB = fz._2
725- let cx = fz._3
726- let fC = (fu + fA)
727- let fD = (fv + fB)
728- let cb = cy([H(fu, bo), H(fv, bp)])
729- let ca = cy([H(fC, bo), H(fD, bp)])
730- let dY = if ((ca > cb))
657+ let eR = eQ._1
658+ let eS = eQ._2
659+ let eT = if (eK)
660+ then $Tuple3(ch(eR, aF)._1, ch(eS, aF)._1, ch(eJ, aF)._2)
661+ else $Tuple3(eR, eS, 0)
662+ let eU = eT._1
663+ let eV = eT._2
664+ let ck = eT._3
665+ let eW = (eO + eU)
666+ let eX = (eP + eV)
667+ let bM = dT([toBigInt(eO), toBigInt(eP)])
668+ let bL = dT([toBigInt(eW), toBigInt(eX)])
669+ let eY = if ((bL > bM))
731670 then true
732671 else throw()
733- if ((dY == dY))
672+ if ((eY == eY))
734673 then {
735- let fE = fraction(eQ, (ca - cb), cb, FLOOR)
736- let du = L(bP(H(fD, dS), H(fC, dR)), a)
737- let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, ah), by(fx, fy, toInt(fE), du, 0, 0, height, lastBlock.timestamp, 0, 0))]
738- let fF = fraction(fv, a, fu)
739- let fG = fraction(fq, a, (fF + a))
740- let fH = (fq - fG)
741- let fI = fraction(eQ, toBigInt(fH), toBigInt(fv))
742- let fJ = toInt(fraction((fE - fI), b, fI))
743- $Tuple4(toInt(fE), er, cx, fJ)
674+ let eZ = fraction(eL, (bL - bM), bM)
675+ let cC = I(bB(F(eX, da), F(eW, cZ)), a)
676+ let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, aa), bk(eR, eS, toInt(eZ), cC, 0, 0, height, lastBlock.timestamp, 0, 0))]
677+ let fa = fraction(eP, a, eO)
678+ let fb = fraction(eJ, a, (fa + a))
679+ let fc = (eJ - fb)
680+ let fd = fraction(eL, toBigInt(fc), toBigInt(eP))
681+ let fe = toInt(fraction((eZ - fd), b, fd))
682+ $Tuple4(toInt(eZ), dy, ck, fe)
744683 }
745684 else throw("Strict value is not equal to itself.")
746685 }
748687 }
749688
750689
751-func fK (fL,fM,fN,fm,fO,fP) = {
752- let di = toBase58String(value(bl))
753- let dj = toBase58String(value(bm))
754- let dk = toBase58String(value(bn))
755- let fQ = bo
756- let fR = bp
757- let fS = bk
758- let dh = if ((fm == bx))
759- then fO
760- else fm
761- let fk = value(fN[0])
762- let df = value(fk.assetId)
763- let dL = fk.amount
764- let eR = eK(e, e, e)
765- if ((eR == eR))
766- then {
767- let de = toBase58String(fP)
768- if ((di != toBase58String(df)))
769- then throw("Wrong LP")
770- else {
771- let dp = bN(dj)
772- let dr = bN(dk)
773- let fT = {
774- let aS = invoke(this, "getOneTknV2READONLY", [fL, dL], nil)
775- if ($isInstanceOf(aS, "(Int, Int)"))
776- then aS
777- else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
778- }
779- if ((fT == fT))
690+func ff (fg,fh,fi,dQ,fj,fk) = {
691+ let aU = aM()
692+ let cq = aU[t]
693+ let cr = aU[u]
694+ let cs = aU[v]
695+ let fl = parseIntValue(aU[w])
696+ let fm = parseIntValue(aU[x])
697+ let fn = aU[s]
698+ let cp = if ((dQ == bj))
699+ then fj
700+ else dQ
701+ let dO = value(fi[0])
702+ let cn = value(dO.assetId)
703+ let cT = dO.amount
704+ let cm = toBase58String(fk)
705+ if ((cq != toBase58String(cn)))
706+ then throw("Wrong LP")
707+ else {
708+ let cx = bz(cr)
709+ let cz = bz(cs)
710+ let fo = {
711+ let aG = invoke(this, "getOneTknV2READONLY", [fg, cT], nil)
712+ if ($isInstanceOf(aG, "(Int, Int)"))
713+ then aG
714+ else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
715+ }
716+ if ((fo == fo))
717+ then {
718+ let ck = fo._2
719+ let fp = fo._1
720+ let fq = if (if ((fh > 0))
721+ then (fh > fp)
722+ else false)
723+ then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
724+ else fp
725+ let fr = if ((fg == cr))
726+ then $Tuple4(fq, 0, ((cx - fq) - ck), cz)
727+ else if ((fg == cs))
728+ then $Tuple4(0, fq, cx, ((cz - fq) - ck))
729+ else throw("invalid out asset id")
730+ let fs = fr._1
731+ let ft = fr._2
732+ let eW = fr._3
733+ let eX = fr._4
734+ let fu = bB(F(eX, fm), F(eW, fl))
735+ let fv = I(fu, a)
736+ let fw = if ((fg == "WAVES"))
737+ then unit
738+ else fromBase58String(fg)
739+ let fx = if ((ck > 0))
740+ then [ScriptTransfer(aL, ck, fw)]
741+ else nil
742+ let cJ = ([ScriptTransfer(cp, fq, fw), StringEntry(ab(toString(cp), cm), bv(fs, ft, cT, fv, height, lastBlock.timestamp)), IntegerEntry(U(), fv), IntegerEntry(V(height, lastBlock.timestamp), fv)] ++ fx)
743+ if ((cJ == cJ))
780744 then {
781- let cx = fT._2
782- let fU = fT._1
783- let fV = if (if ((fM > 0))
784- then (fM > fU)
785- else false)
786- then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
787- else fU
788- let fW = if ((fL == dj))
789- then $Tuple4(fV, 0, ((dp - fV) - cx), dr)
790- else if ((fL == dk))
791- then $Tuple4(0, fV, dp, ((dr - fV) - cx))
792- else throw("invalid out asset id")
793- let fX = fW._1
794- let fY = fW._2
795- let fC = fW._3
796- let fD = fW._4
797- let fZ = bP(H(fD, fR), H(fC, fQ))
798- let ga = L(fZ, a)
799- let gb = if ((fL == "WAVES"))
800- then unit
801- else fromBase58String(fL)
802- let gc = if ((cx > 0))
803- then [ScriptTransfer(aX, cx, gb)]
804- else nil
805- let dB = ([ScriptTransfer(dh, fV, gb), StringEntry(ai(toString(dh), de), bJ(fX, fY, dL, ga, height, lastBlock.timestamp)), IntegerEntry(ab(), ga), IntegerEntry(ac(height, lastBlock.timestamp), ga)] ++ gc)
806- if ((dB == dB))
807- then {
808- let gd = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
809- if ((gd == gd))
810- then {
811- let ge = {
812- let gf = if ((this == aX))
813- then 0
814- else cx
815- let gg = if ((bc(fL) == bm))
816- then true
817- else false
818- if (gg)
819- then $Tuple2(-((fU + gf)), 0)
820- else $Tuple2(0, -((fU + gf)))
821- }
822- let eT = ge._1
823- let eU = ge._2
824- let gh = eS(eT, eU, 0)
825- let gi = gh._1
826- let eJ = gh._2
827- let gj = eW(eR, eJ)
828- if ((gj == gj))
829- then $Tuple2((dB ++ gi), fV)
830- else throw("Strict value is not equal to itself.")
831- }
832- else throw("Strict value is not equal to itself.")
833- }
745+ let fy = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
746+ if ((fy == fy))
747+ then $Tuple2(cJ, fq)
834748 else throw("Strict value is not equal to itself.")
835749 }
836750 else throw("Strict value is not equal to itself.")
837751 }
752+ else throw("Strict value is not equal to itself.")
838753 }
839- else throw("Strict value is not equal to itself.")
840754 }
841755
842756
843-func gk () = {
844- let gl = getString(Z())
845- if ($isInstanceOf(gl, "String"))
757+func fz () = {
758+ let aw = getString(S())
759+ if ($isInstanceOf(aw, "String"))
846760 then {
847- let cC = gl
848- fromBase58String(cC)
761+ let ea = aw
762+ fromBase58String(ea)
849763 }
850- else if ($isInstanceOf(gl, "Unit"))
764+ else if ($isInstanceOf(aw, "Unit"))
851765 then unit
852766 else throw("Match error")
853767 }
854768
855769
856-func gm () = {
857- let gl = getString(aa())
858- if ($isInstanceOf(gl, "String"))
770+func fA () = {
771+ let aw = getString(T())
772+ if ($isInstanceOf(aw, "String"))
859773 then {
860- let cC = gl
861- fromBase58String(cC)
774+ let ea = aw
775+ fromBase58String(ea)
862776 }
863- else if ($isInstanceOf(gl, "Unit"))
777+ else if ($isInstanceOf(aw, "Unit"))
864778 then unit
865779 else throw("Match error")
866780 }
867781
868782
869-let gn = throw("Permission denied")
783+let fB = throw("Permission denied")
870784
871-func go (cP) = {
872- let gl = gk()
873- if ($isInstanceOf(gl, "ByteVector"))
785+func fC (dN) = {
786+ let aw = fz()
787+ if ($isInstanceOf(aw, "ByteVector"))
874788 then {
875- let gp = gl
876- (cP.callerPublicKey == gp)
789+ let fD = aw
790+ (dN.callerPublicKey == fD)
877791 }
878- else if ($isInstanceOf(gl, "Unit"))
879- then (cP.caller == this)
792+ else if ($isInstanceOf(aw, "Unit"))
793+ then (dN.caller == this)
880794 else throw("Match error")
881795 }
882796
883797
884-func gq (cP) = {
885- let gl = gk()
886- if ($isInstanceOf(gl, "ByteVector"))
798+func fE (dN) = {
799+ let aw = fz()
800+ if ($isInstanceOf(aw, "ByteVector"))
887801 then {
888- let gp = gl
889- if ((cP.callerPublicKey == gp))
802+ let fD = aw
803+ if ((dN.callerPublicKey == fD))
890804 then true
891- else gn
805+ else fB
892806 }
893- else if ($isInstanceOf(gl, "Unit"))
894- then if ((cP.caller == this))
807+ else if ($isInstanceOf(aw, "Unit"))
808+ then if ((dN.caller == this))
895809 then true
896- else gn
810+ else fB
897811 else throw("Match error")
898812 }
899813
900814
901-@Callable(cP)
902-func constructor (Y) = {
903- let ex = gq(cP)
904- if ((ex == ex))
905- then [StringEntry(Y(), Y)]
906- else throw("Strict value is not equal to itself.")
815+func fF (fG,ez,fH) = {
816+ let aU = aM()
817+ let cr = aU[u]
818+ let cs = aU[v]
819+ let dV = g
820+ let dY = parseBigIntValue(j)
821+ let dZ = (parseBigIntValue(aI) * dY)
822+ let dU = if ((fG == false))
823+ then [(toBigInt(bz(cr)) - fH), toBigInt(bz(cs))]
824+ else [(toBigInt(bz(cs)) - fH), toBigInt(bz(cr))]
825+ let eA = dU[0]
826+ let ea = eA
827+ let eb = (dZ * dV)
828+ let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
829+ let eC = ((ea + ((ez * dY) / eb)) - ez)
830+ func eg (eh,ei) = {
831+ let fI = eh
832+ let eE = fI._1
833+ let el = fI._2
834+ if ((el != unit))
835+ then eh
836+ else {
837+ let eF = (((eE * eE) + eB) / ((g * eE) + eC))
838+ let eG = Q((eF - value(eE)))
839+ if ((f >= eG))
840+ then $Tuple2(eF, ei)
841+ else $Tuple2(eF, unit)
842+ }
843+ }
844+
845+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
846+ let fJ = {
847+ let er = ep
848+ let es = size(er)
849+ let et = $Tuple2(ez, unit)
850+ func eu (ev,ew) = if ((ew >= es))
851+ then ev
852+ else eg(ev, er[ew])
853+
854+ func ex (ev,ew) = if ((ew >= es))
855+ then ev
856+ else throw("List size exceeds 15")
857+
858+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
859+ }
860+ let eE = fJ._1
861+ let el = fJ._2
862+ if ((el != unit))
863+ then eE
864+ else throw(("Y calculation error, Y = " + toString(eE)))
865+ }
866+
867+
868+@Callable(dN)
869+func calculateAmountOutForSwapREADONLY (fK,fG) = {
870+ let fL = if ((fG == false))
871+ then {
872+ let fM = ay(this, ad())
873+ let fH = (toBigInt(bz(ay(this, ac()))) + toBigInt(fK))
874+ $Tuple2(fM, fH)
875+ }
876+ else {
877+ let fM = ay(this, ac())
878+ let fH = (toBigInt(bz(ay(this, ad()))) + toBigInt(fK))
879+ $Tuple2(fM, fH)
880+ }
881+ let fM = fL._1
882+ let fH = fL._2
883+ let aU = aM()
884+ let cr = aU[u]
885+ let cs = aU[v]
886+ let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
887+ let ez = dT(dU)
888+ let eE = fF(fG, ez, fH)
889+ let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
890+ let fO = max([0, toInt(fN)])
891+ $Tuple2(nil, fO)
907892 }
908893
909894
910895
911-@Callable(cP)
912-func setManager (gr) = {
913- let ex = gq(cP)
914- if ((ex == ex))
896+@Callable(dN)
897+func calculateAmountOutForSwapAndSendTokens (fK,fG,fP,fQ) = {
898+ let fR = [if ((value(dN.payments[0]).amount >= fK))
899+ then true
900+ else aC("Wrong amount"), if ((dN.caller == addressFromStringValue(ay(this, ag()))))
901+ then true
902+ else aC("Permission denied")]
903+ if ((fR == fR))
915904 then {
916- let gs = fromBase58String(gr)
917- if ((gs == gs))
918- then [StringEntry(aa(), gr)]
905+ let dO = value(dN.payments[0])
906+ let fS = if ((dO.assetId == unit))
907+ then toBase58String(toBytes("WAVES"))
908+ else toBase58String(value(dO.assetId))
909+ let fT = if ((fG == false))
910+ then {
911+ let fM = ay(this, ad())
912+ let fH = (bz(fS) - value(dN.payments[0]).amount)
913+ $Tuple2(fM, fH)
914+ }
915+ else {
916+ let fM = ay(this, ac())
917+ let fH = (bz(fS) - value(dN.payments[0]).amount)
918+ $Tuple2(fM, fH)
919+ }
920+ let fM = fT._1
921+ let fH = fT._2
922+ let aU = aM()
923+ let cr = aU[u]
924+ let cs = aU[v]
925+ let dU = [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
926+ let ez = dT(dU)
927+ let eE = fF(fG, ez, toBigInt(fH))
928+ let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
929+ let fO = max([0, toInt(fN)])
930+ let fU = if ((fO >= fP))
931+ then true
932+ else throw("Exchange result is fewer coins than expected")
933+ if ((fU == fU))
934+ then [ScriptTransfer(addressFromStringValue(fQ), fO, if ((fS == "WAVES"))
935+ then unit
936+ else fromBase58String(fM))]
919937 else throw("Strict value is not equal to itself.")
920938 }
921939 else throw("Strict value is not equal to itself.")
923941
924942
925943
926-@Callable(cP)
927-func confirmManager () = {
928- let cu = gm()
929- let gt = if (isDefined(cu))
930- then true
931- else throw("No pending manager")
932- if ((gt == gt))
944+@Callable(dN)
945+func constructor (R) = {
946+ let eB = fE(dN)
947+ if ((eB == eB))
948+ then [StringEntry(R(), R)]
949+ else throw("Strict value is not equal to itself.")
950+ }
951+
952+
953+
954+@Callable(dN)
955+func setManager (fV) = {
956+ let eB = fE(dN)
957+ if ((eB == eB))
933958 then {
934- let gu = if ((cP.callerPublicKey == value(cu)))
935- then true
936- else throw("You are not pending manager")
937- if ((gu == gu))
938- then [StringEntry(Z(), toBase58String(value(cu))), DeleteEntry(aa())]
959+ let fW = fromBase58String(fV)
960+ if ((fW == fW))
961+ then [StringEntry(T(), fV)]
939962 else throw("Strict value is not equal to itself.")
940963 }
941964 else throw("Strict value is not equal to itself.")
943966
944967
945968
946-@Callable(cP)
947-func put (gv,gw) = {
948- let gx = bs()
949- let gy = valueOrErrorMessage(addressFromString(gx[C]), "Wr st addr")
950- let gz = valueOrErrorMessage(addressFromString(gx[E]), "Wr sl addr")
951- if ((0 > gv))
969+@Callable(dN)
970+func confirmManager () = {
971+ let cg = fA()
972+ let fX = if (isDefined(cg))
973+ then true
974+ else throw("No pending manager")
975+ if ((fX == fX))
976+ then {
977+ let fY = if ((dN.callerPublicKey == value(cg)))
978+ then true
979+ else throw("You are not pending manager")
980+ if ((fY == fY))
981+ then [StringEntry(S(), toBase58String(value(cg))), DeleteEntry(T())]
982+ else throw("Strict value is not equal to itself.")
983+ }
984+ else throw("Strict value is not equal to itself.")
985+ }
986+
987+
988+
989+@Callable(dN)
990+func put (fZ,ga) = {
991+ let gb = be()
992+ let gc = valueOrErrorMessage(addressFromString(gb[A]), "Wr st addr")
993+ let gd = valueOrErrorMessage(addressFromString(gb[C]), "Wr sl addr")
994+ if ((0 > fZ))
952995 then throw("Wrong slippage")
953- else if ((size(cP.payments) != 2))
996+ else if ((size(dN.payments) != 2))
954997 then throw("2 pmnts expd")
955998 else {
956- let gA = toBigInt(value(cP.payments[0]).amount)
957- let gB = toBigInt(value(cP.payments[1]).amount)
958- let eO = (toBigInt(bN(be(bm))) - gA)
959- if ((eO == eO))
999+ let ge = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], fZ, true, false, true, 0, "")
1000+ let ds = ge._2
1001+ let gf = ge._7
1002+ let cJ = ge._9
1003+ let dt = ge._10
1004+ let du = ge._11
1005+ let cr = ge._12
1006+ let cs = ge._13
1007+ let df = invoke(aE, "emit", [ds], nil)
1008+ if ((df == df))
9601009 then {
961- let eP = (toBigInt(bN(be(bn))) - gB)
962- if ((eP == eP))
1010+ let gg = {
1011+ let aw = df
1012+ if ($isInstanceOf(aw, "Address"))
1013+ then {
1014+ let gh = aw
1015+ invoke(gh, "emit", [ds], nil)
1016+ }
1017+ else unit
1018+ }
1019+ if ((gg == gg))
9631020 then {
964- let eQ = toBigInt(value(assetInfo(bl)).quantity)
965- if ((eQ == eQ))
1021+ let gi = if ((dt > 0))
1022+ then invoke(gd, "put", nil, [AttachedPayment(cr, dt)])
1023+ else nil
1024+ if ((gi == gi))
9661025 then {
967- let eR = eK(gA, gB, toBigInt(0))
968- if ((eR == eR))
1026+ let gj = if ((du > 0))
1027+ then invoke(gd, "put", nil, [AttachedPayment(cs, du)])
1028+ else nil
1029+ if ((gj == gj))
9691030 then {
970- let gC = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gv, true, false, true, 0, "")
971- let el = gC._2
972- let gD = gC._7
973- let dB = gC._9
974- let em = gC._10
975- let en = gC._11
976- let dj = gC._12
977- let dk = gC._13
978- let dX = invoke(aQ, "emit", [el], nil)
979- if ((dX == dX))
1031+ let gk = if (ga)
9801032 then {
981- let gE = {
982- let gl = dX
983- if ($isInstanceOf(gl, "Address"))
984- then {
985- let gF = gl
986- invoke(gF, "emit", [el], nil)
987- }
988- else unit
989- }
990- if ((gE == gE))
991- then {
992- let gG = if ((em > 0))
993- then invoke(gz, "put", nil, [AttachedPayment(dj, em)])
994- else nil
995- if ((gG == gG))
996- then {
997- let gH = if ((en > 0))
998- then invoke(gz, "put", nil, [AttachedPayment(dk, en)])
999- else nil
1000- if ((gH == gH))
1001- then {
1002- let gI = if (gw)
1003- then {
1004- let gJ = invoke(gy, "stake", nil, [AttachedPayment(gD, el)])
1005- if ((gJ == gJ))
1006- then nil
1007- else throw("Strict value is not equal to itself.")
1008- }
1009- else [ScriptTransfer(cP.caller, el, gD)]
1010- let gK = eS(0, 0, 0)
1011- let gi = gK._1
1012- let eJ = gK._2
1013- let gL = if ((eJ >= eR))
1014- then true
1015- else aN(makeString(["updated DLp lower than current DLp", toString(eO), toString(eP), toString(eQ), toString(eR), toString(eJ), toString(em), toString(en)], " "))
1016- if ((gL == gL))
1017- then {
1018- let gM = value(assetInfo(bl)).quantity
1019- if ((gM == gM))
1020- then ((dB ++ gI) ++ gi)
1021- else throw("Strict value is not equal to itself.")
1022- }
1023- else throw("Strict value is not equal to itself.")
1024- }
1025- else throw("Strict value is not equal to itself.")
1026- }
1027- else throw("Strict value is not equal to itself.")
1028- }
1033+ let gl = invoke(gc, "stake", nil, [AttachedPayment(gf, ds)])
1034+ if ((gl == gl))
1035+ then nil
10291036 else throw("Strict value is not equal to itself.")
10301037 }
1031- else throw("Strict value is not equal to itself.")
1038+ else [ScriptTransfer(dN.caller, ds, gf)]
1039+ (cJ ++ gk)
10321040 }
10331041 else throw("Strict value is not equal to itself.")
10341042 }
10421050
10431051
10441052
1045-@Callable(cP)
1046-func putOneTknV2 (fM,gw) = {
1047- let gN = {
1048- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1049- if ($isInstanceOf(aS, "Boolean"))
1050- then aS
1051- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1053+@Callable(dN)
1054+func putOneTknV2 (fh,ga) = {
1055+ let gm = {
1056+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1057+ if ($isInstanceOf(aG, "Boolean"))
1058+ then aG
1059+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
10521060 }
1053- let gO = if (if (if (aV())
1061+ let gn = if (if (if (aJ())
10541062 then true
1055- else (bk == q))
1063+ else (aY == o))
10561064 then true
1057- else (bk == s))
1065+ else (aY == q))
10581066 then true
1059- else gN
1060- let gP = [if (if (!(gO))
1067+ else gm
1068+ let fR = [if (if (!(gn))
10611069 then true
1062- else go(cP))
1070+ else fC(dN))
10631071 then true
1064- else aN("put operation is blocked by admin"), if ((size(cP.payments) == 1))
1072+ else aC("put operation is blocked by admin"), if ((size(dN.payments) == 1))
10651073 then true
1066- else aN("exactly 1 payment are expected")]
1067- if ((gP == gP))
1074+ else aC("exactly 1 payment are expected")]
1075+ if ((fR == fR))
10681076 then {
1069- let dj = toBase58String(value(bm))
1070- let dk = toBase58String(value(bn))
1071- let di = bl
1072- let fQ = bo
1073- let fR = bp
1074- let dh = if ((cP.caller == this))
1075- then cP.originCaller
1076- else cP.caller
1077- let fk = value(cP.payments[0])
1078- let df = toBase58String(value(fk.assetId))
1079- let dL = fk.amount
1080- let eR = if ((fk.assetId == bm))
1081- then eK(toBigInt(dL), toBigInt(0), toBigInt(0))
1082- else eK(toBigInt(0), toBigInt(dL), toBigInt(0))
1083- if ((eR == eR))
1077+ let aU = aM()
1078+ let cr = aU[u]
1079+ let cs = aU[v]
1080+ let cq = fromBase58String(aU[t])
1081+ let fl = parseIntValue(aU[w])
1082+ let fm = parseIntValue(aU[x])
1083+ let cp = if ((dN.caller == this))
1084+ then dN.originCaller
1085+ else dN.caller
1086+ let dO = value(dN.payments[0])
1087+ let cn = toBase58String(value(dO.assetId))
1088+ let cT = dO.amount
1089+ let go = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1090+ if ((go == go))
10841091 then {
1085- let gQ = fp(dL, df, toString(dh), toBase58String(cP.transactionId), true)
1086- if ((gQ == gQ))
1092+ let ck = go._3
1093+ let cJ = go._2
1094+ let gp = go._1
1095+ let ds = if (if ((fh > 0))
1096+ then (fh > gp)
1097+ else false)
1098+ then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
1099+ else gp
1100+ let ge = invoke(aE, "emit", [ds], nil)
1101+ if ((ge == ge))
10871102 then {
1088- let cx = gQ._3
1089- let dB = gQ._2
1090- let gR = gQ._1
1091- let el = if (if ((fM > 0))
1092- then (fM > gR)
1093- else false)
1094- then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
1095- else gR
1096- let gC = invoke(aQ, "emit", [el], nil)
1097- if ((gC == gC))
1103+ let gg = {
1104+ let aw = ge
1105+ if ($isInstanceOf(aw, "Address"))
1106+ then {
1107+ let gh = aw
1108+ invoke(gh, "emit", [ds], nil)
1109+ }
1110+ else unit
1111+ }
1112+ if ((gg == gg))
10981113 then {
1099- let gE = {
1100- let gl = gC
1101- if ($isInstanceOf(gl, "Address"))
1102- then {
1103- let gF = gl
1104- invoke(gF, "emit", [el], nil)
1105- }
1106- else unit
1107- }
1108- if ((gE == gE))
1114+ let gk = if (ga)
11091115 then {
1110- let gI = if (gw)
1111- then {
1112- let gJ = invoke(bu, "stake", nil, [AttachedPayment(di, el)])
1113- if ((gJ == gJ))
1114- then nil
1115- else throw("Strict value is not equal to itself.")
1116- }
1117- else [ScriptTransfer(cP.caller, el, di)]
1118- let gc = if ((cx > 0))
1119- then [ScriptTransfer(aX, cx, fromBase58String(df))]
1120- else nil
1121- let gS = if ((this == aX))
1122- then $Tuple2(0, 0)
1123- else {
1124- let gT = if ((fk.assetId == bm))
1125- then true
1126- else false
1127- if (gT)
1128- then $Tuple2(-(cx), 0)
1129- else $Tuple2(0, -(cx))
1130- }
1131- let eT = gS._1
1132- let eU = gS._2
1133- let gU = eS(eT, eU, 0)
1134- let gi = gU._1
1135- let eJ = gU._2
1136- let gj = eW(eR, eJ)
1137- if ((gj == gj))
1138- then $Tuple2((((dB ++ gI) ++ gc) ++ gi), el)
1116+ let gl = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1117+ if ((gl == gl))
1118+ then nil
11391119 else throw("Strict value is not equal to itself.")
11401120 }
1141- else throw("Strict value is not equal to itself.")
1121+ else [ScriptTransfer(dN.caller, ds, cq)]
1122+ let fx = if ((ck > 0))
1123+ then [ScriptTransfer(aL, ck, fromBase58String(cn))]
1124+ else nil
1125+ $Tuple2(((cJ ++ gk) ++ fx), ds)
11421126 }
11431127 else throw("Strict value is not equal to itself.")
11441128 }
11511135
11521136
11531137
1154-@Callable(cP)
1155-func putForFree (gV) = if ((0 > gV))
1138+@Callable(dN)
1139+func putForFree (gq) = if ((0 > gq))
11561140 then throw("Wrong slpg")
1157- else if ((size(cP.payments) != 2))
1141+ else if ((size(dN.payments) != 2))
11581142 then throw("2 pmnts expd")
11591143 else {
1160- let gW = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gV, false, false, true, 0, "")
1161- let dB = gW._9
1162- let gA = toBigInt(value(cP.payments[0]).amount)
1163- let gB = toBigInt(value(cP.payments[1]).amount)
1164- let eR = eK(gA, gB, toBigInt(0))
1165- if ((eR == eR))
1166- then {
1167- let gX = eS(0, 0, 0)
1168- let gi = gX._1
1169- let eJ = gX._2
1170- let gj = eW(eR, eJ)
1171- if ((gj == gj))
1172- then (dB ++ gi)
1173- else throw("Strict value is not equal to itself.")
1174- }
1175- else throw("Strict value is not equal to itself.")
1144+ let gr = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gq, false, false, true, 0, "")
1145+ gr._9
11761146 }
11771147
11781148
11791149
1180-@Callable(cP)
1150+@Callable(dN)
11811151 func get () = {
1182- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1183- if ((eR == eR))
1152+ let df = dM(dN)
1153+ let gs = df._1
1154+ let cI = df._2
1155+ let cT = df._3
1156+ let cn = df._4
1157+ let cJ = df._5
1158+ let eC = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1159+ if ((eC == eC))
1160+ then cJ
1161+ else throw("Strict value is not equal to itself.")
1162+ }
1163+
1164+
1165+
1166+@Callable(dN)
1167+func getOneTknV2 (fg,fh) = {
1168+ let gm = {
1169+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1170+ if ($isInstanceOf(aG, "Boolean"))
1171+ then aG
1172+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
1173+ }
1174+ let gt = if (if (aJ())
1175+ then true
1176+ else (aY == q))
1177+ then true
1178+ else gm
1179+ let fR = [if (if (!(gt))
1180+ then true
1181+ else fC(dN))
1182+ then true
1183+ else aC("get operation is blocked by admin"), if ((size(dN.payments) == 1))
1184+ then true
1185+ else aC("exactly 1 payment are expected")]
1186+ if ((fR == fR))
11841187 then {
1185- let dX = fj(cP)
1186- let gY = dX._1
1187- let dA = dX._2
1188- let dL = dX._3
1189- let df = dX._4
1190- let dB = dX._5
1191- let ey = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1192- if ((ey == ey))
1193- then {
1194- let gZ = eS(-(gY), -(dA), 0)
1195- let gi = gZ._1
1196- let eJ = gZ._2
1197- let gj = eW(eR, eJ)
1198- if ((gj == gj))
1199- then (dB ++ gi)
1200- else throw("Strict value is not equal to itself.")
1201- }
1202- else throw("Strict value is not equal to itself.")
1188+ let gu = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1189+ let cJ = gu._1
1190+ let fq = gu._2
1191+ $Tuple2(cJ, fq)
12031192 }
12041193 else throw("Strict value is not equal to itself.")
12051194 }
12061195
12071196
12081197
1209-@Callable(cP)
1210-func getOneTknV2 (fL,fM) = {
1211- let gN = {
1212- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1213- if ($isInstanceOf(aS, "Boolean"))
1214- then aS
1215- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1216- }
1217- let ha = if (if (aV())
1218- then true
1219- else (bk == s))
1220- then true
1221- else gN
1222- let gP = [if (if (!(ha))
1223- then true
1224- else go(cP))
1225- then true
1226- else aN("get operation is blocked by admin"), if ((size(cP.payments) == 1))
1227- then true
1228- else aN("exactly 1 payment are expected")]
1229- if ((gP == gP))
1230- then {
1231- let hb = fK(fL, fM, cP.payments, cP.caller, cP.originCaller, cP.transactionId)
1232- let dB = hb._1
1233- let fV = hb._2
1234- $Tuple2(dB, fV)
1235- }
1236- else throw("Strict value is not equal to itself.")
1198+@Callable(dN)
1199+func getOneTknV2READONLY (fg,gv) = {
1200+ let aU = aM()
1201+ let cr = aU[u]
1202+ let cs = aU[v]
1203+ let cq = aU[t]
1204+ let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
1205+ let gw = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
1206+ let bM = dT(dU)
1207+ let bL = (bM - fraction(toBigInt(gv), bM, gw))
1208+ let gx = if ((fg == cr))
1209+ then 0
1210+ else if ((fg == cs))
1211+ then 1
1212+ else throw("invalid out asset id")
1213+ let gy = ey(dU, gx, bL)
1214+ let fN = (dU[gx] - gy)
1215+ let fO = max([0, toInt((fN - f))])
1216+ let gz = ch(fO, aH)
1217+ let fp = gz._1
1218+ let ck = gz._2
1219+ $Tuple2(nil, $Tuple2(fp, ck))
12371220 }
12381221
12391222
12401223
1241-@Callable(cP)
1242-func refreshDLp () = {
1243- let hc = valueOrElse(getInteger(aq), 0)
1244- let hd = if (((height - hc) >= at))
1245- then unit
1246- else aN(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1247- if ((hd == hd))
1248- then {
1249- let fd = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aP("invalid dLp"))
1250- let he = eS(0, 0, 0)
1251- let hf = he._1
1252- let eJ = he._2
1253- let eV = if ((fd != eJ))
1254- then hf
1255- else aN("nothing to refresh")
1256- $Tuple2(eV, toString(eJ))
1257- }
1258- else throw("Strict value is not equal to itself.")
1224+@Callable(dN)
1225+func getOneTknV2WithBonusREADONLY (fg,gv) = {
1226+ let aU = aM()
1227+ let cr = aU[u]
1228+ let cs = aU[v]
1229+ let cq = aU[t]
1230+ let cx = bz(cr)
1231+ let cz = bz(cs)
1232+ let gA = {
1233+ let aG = invoke(this, "getOneTknV2READONLY", [fg, gv], nil)
1234+ if ($isInstanceOf(aG, "(Int, Int)"))
1235+ then aG
1236+ else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
1237+ }
1238+ let fp = gA._1
1239+ let ck = gA._2
1240+ let df = cl("", cq, gv, this)
1241+ let cH = df._1
1242+ let cI = df._2
1243+ let gB = (cH + cI)
1244+ let fe = if ((gB == 0))
1245+ then if ((fp == 0))
1246+ then 0
1247+ else throw("bonus calculation error")
1248+ else fraction((fp - gB), a, gB)
1249+ $Tuple2(nil, $Tuple3(fp, ck, fe))
12591250 }
12601251
12611252
12621253
1263-@Callable(cP)
1264-func getOneTknV2READONLY (fL,hg) = {
1265- let dj = toBase58String(value(bm))
1266- let dk = toBase58String(value(bn))
1267- let di = toBase58String(value(bl))
1268- let cz = [toBigInt(bN(dj)), toBigInt(bN(dk))]
1269- let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(di)), "invalid lp asset").quantity)
1270- let cb = cy(cz)
1271- let ca = (cb - fraction(toBigInt(hg), cb, eI))
1272- let hh = if ((fL == dj))
1273- then 0
1274- else if ((fL == dk))
1275- then 1
1276- else throw("invalid out asset id")
1277- let hi = es(cz, hh, ca)
1278- let hj = (cz[hh] - hi)
1279- let hk = max([0, toInt((hj - f))])
1280- let hl = cv(hk, aT)
1281- let fU = hl._1
1282- let cx = hl._2
1283- $Tuple2(nil, $Tuple2(fU, cx))
1284- }
1285-
1286-
1287-
1288-@Callable(cP)
1289-func getOneTknV2WithBonusREADONLY (fL,hg) = {
1290- let dj = toBase58String(value(bm))
1291- let dk = toBase58String(value(bn))
1292- let di = toBase58String(value(bl))
1293- let dp = bN(dj)
1294- let dr = bN(dk)
1295- let hm = {
1296- let aS = invoke(this, "getOneTknV2READONLY", [fL, hg], nil)
1297- if ($isInstanceOf(aS, "(Int, Int)"))
1298- then aS
1299- else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
1300- }
1301- let fU = hm._1
1302- let cx = hm._2
1303- let dX = dd("", di, hg, this)
1304- let dz = dX._1
1305- let dA = dX._2
1306- let hn = (dz + dA)
1307- let fJ = if ((hn == 0))
1308- then if ((fU == 0))
1309- then 0
1310- else throw("bonus calculation error")
1311- else fraction((fU - hn), a, hn)
1312- $Tuple2(nil, $Tuple3(fU, cx, fJ))
1313- }
1314-
1315-
1316-
1317-@Callable(cP)
1318-func getNoLess (ho,hp) = {
1319- let dX = fj(cP)
1320- let dz = dX._1
1321- let dA = dX._2
1322- let dL = dX._3
1323- let df = dX._4
1324- let dB = dX._5
1325- if ((ho > dz))
1326- then throw(((("Failed: " + toString(dz)) + " < ") + toString(ho)))
1327- else if ((hp > dA))
1328- then throw(((("Failed: " + toString(dA)) + " < ") + toString(hp)))
1254+@Callable(dN)
1255+func getNoLess (gC,gD) = {
1256+ let df = dM(dN)
1257+ let cH = df._1
1258+ let cI = df._2
1259+ let cT = df._3
1260+ let cn = df._4
1261+ let cJ = df._5
1262+ if ((gC > cH))
1263+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gC)))
1264+ else if ((gD > cI))
1265+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gD)))
13291266 else {
1330- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1331- if ((eR == eR))
1332- then {
1333- let hq = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1334- if ((hq == hq))
1335- then {
1336- let hr = eS(-(dz), -(dA), 0)
1337- let gi = hr._1
1338- let eJ = hr._2
1339- let gj = eW(eR, eJ)
1340- if ((gj == gj))
1341- then (dB ++ gi)
1342- else throw("Strict value is not equal to itself.")
1343- }
1344- else throw("Strict value is not equal to itself.")
1345- }
1267+ let gE = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1268+ if ((gE == gE))
1269+ then cJ
13461270 else throw("Strict value is not equal to itself.")
13471271 }
13481272 }
13491273
13501274
13511275
1352-@Callable(cP)
1353-func unstakeAndGet (cw) = {
1354- let hs = if ((size(cP.payments) != 0))
1276+@Callable(dN)
1277+func unstakeAndGet (ci) = {
1278+ let gF = if ((size(dN.payments) != 0))
13551279 then throw("No pmnts expd")
13561280 else true
1357- if ((hs == hs))
1281+ if ((gF == gF))
13581282 then {
1359- let ht = bs()
1360- let gD = bl
1361- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1362- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1363- if ((eR == eR))
1283+ let bY = aM()
1284+ let gG = be()
1285+ let gf = fromBase58String(bY[t])
1286+ let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1287+ let gI = invoke(gH, "unstake", [toBase58String(gf), ci], nil)
1288+ if ((gI == gI))
13641289 then {
1365- let hv = invoke(hu, "unstake", [toBase58String(gD), cw], nil)
1366- if ((hv == hv))
1290+ let df = cl(toBase58String(dN.transactionId), toBase58String(gf), ci, dN.caller)
1291+ let cv = parseIntValue(df._9)
1292+ let cJ = df._10
1293+ let gJ = if (if (aJ())
1294+ then true
1295+ else (cv == q))
1296+ then throw(("Blocked: " + toString(cv)))
1297+ else true
1298+ if ((gJ == gJ))
13671299 then {
1368- let dX = dd(toBase58String(cP.transactionId), toBase58String(gD), cw, cP.caller)
1369- let dz = dX._1
1370- let dA = dX._2
1371- let dn = parseIntValue(dX._9)
1372- let dB = dX._10
1373- let hw = if (if (aV())
1374- then true
1375- else (dn == s))
1376- then throw(("Blocked: " + toString(dn)))
1377- else true
1378- if ((hw == hw))
1379- then {
1380- let hx = invoke(aQ, "burn", [cw], [AttachedPayment(gD, cw)])
1381- if ((hx == hx))
1382- then {
1383- let hy = eS(-(dz), -(dA), 0)
1384- let gi = hy._1
1385- let eJ = hy._2
1386- let gj = eW(eR, eJ)
1387- if ((gj == gj))
1388- then (dB ++ gi)
1389- else throw("Strict value is not equal to itself.")
1390- }
1391- else throw("Strict value is not equal to itself.")
1392- }
1300+ let gK = invoke(aE, "burn", [ci], [AttachedPayment(gf, ci)])
1301+ if ((gK == gK))
1302+ then cJ
13931303 else throw("Strict value is not equal to itself.")
13941304 }
13951305 else throw("Strict value is not equal to itself.")
14011311
14021312
14031313
1404-@Callable(cP)
1405-func unstakeAndGetNoLess (hz,hA,hp) = {
1406- let ha = if (aV())
1314+@Callable(dN)
1315+func unstakeAndGetNoLess (gL,gM,gD) = {
1316+ let gt = if (aJ())
14071317 then true
1408- else (bk == s)
1409- let gP = [if (!(ha))
1318+ else (aY == q)
1319+ let fR = [if (!(gt))
14101320 then true
1411- else throw("get operation is blocked by admin"), if ((size(cP.payments) == 0))
1321+ else throw("get operation is blocked by admin"), if ((size(dN.payments) == 0))
14121322 then true
14131323 else throw("no payments are expected")]
1414- if ((gP == gP))
1324+ if ((fR == fR))
14151325 then {
1416- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1417- if ((eR == eR))
1326+ let gI = invoke(bg, "unstake", [toBase58String(aZ), gL], nil)
1327+ if ((gI == gI))
14181328 then {
1419- let hv = invoke(bu, "unstake", [toBase58String(bl), hz], nil)
1420- if ((hv == hv))
1329+ let gN = cl(toBase58String(dN.transactionId), toBase58String(aZ), gL, dN.caller)
1330+ let cH = gN._1
1331+ let cI = gN._2
1332+ let cJ = gN._10
1333+ let gO = [if ((cH >= gM))
1334+ then true
1335+ else throw(makeString(["amount asset amount to receive is less than ", toString(gM)], "")), if ((cI >= gD))
1336+ then true
1337+ else throw(makeString(["price asset amount to receive is less than ", toString(gD)], ""))]
1338+ if ((gO == gO))
14211339 then {
1422- let hB = dd(toBase58String(cP.transactionId), toBase58String(bl), hz, cP.caller)
1423- let dz = hB._1
1424- let dA = hB._2
1425- let dB = hB._10
1426- let hC = [if ((dz >= hA))
1427- then true
1428- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((dA >= hp))
1429- then true
1430- else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1431- if ((hC == hC))
1432- then {
1433- let hq = invoke(aQ, "burn", [hz], [AttachedPayment(bl, hz)])
1434- if ((hq == hq))
1435- then {
1436- let hD = eS(-(dz), -(dA), 0)
1437- let gi = hD._1
1438- let eJ = hD._2
1439- let gj = eW(eR, eJ)
1440- if ((gj == gj))
1441- then (dB ++ gi)
1442- else throw("Strict value is not equal to itself.")
1443- }
1444- else throw("Strict value is not equal to itself.")
1445- }
1340+ let gE = invoke(aE, "burn", [gL], [AttachedPayment(aZ, gL)])
1341+ if ((gE == gE))
1342+ then cJ
14461343 else throw("Strict value is not equal to itself.")
14471344 }
14481345 else throw("Strict value is not equal to itself.")
14541351
14551352
14561353
1457-@Callable(cP)
1458-func unstakeAndGetOneTknV2 (hz,fL,fM) = {
1459- let gN = {
1460- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1461- if ($isInstanceOf(aS, "Boolean"))
1462- then aS
1463- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1354+@Callable(dN)
1355+func unstakeAndGetOneTknV2 (gL,fg,fh) = {
1356+ let gm = {
1357+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1358+ if ($isInstanceOf(aG, "Boolean"))
1359+ then aG
1360+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
14641361 }
1465- let ha = if (if (aV())
1362+ let gt = if (if (aJ())
14661363 then true
1467- else (bk == s))
1364+ else (aY == q))
14681365 then true
1469- else gN
1470- let gP = [if (if (!(ha))
1366+ else gm
1367+ let fR = [if (if (!(gt))
14711368 then true
1472- else go(cP))
1369+ else fC(dN))
14731370 then true
1474- else aN("get operation is blocked by admin"), if ((size(cP.payments) == 0))
1371+ else aC("get operation is blocked by admin"), if ((size(dN.payments) == 0))
14751372 then true
1476- else aN("no payments are expected")]
1477- if ((gP == gP))
1373+ else aC("no payments are expected")]
1374+ if ((fR == fR))
14781375 then {
1479- let ht = bs()
1480- let gD = bl
1481- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1482- let hv = invoke(hu, "unstake", [toBase58String(gD), hz], nil)
1483- if ((hv == hv))
1376+ let bY = aM()
1377+ let gG = be()
1378+ let gf = fromBase58String(bY[t])
1379+ let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1380+ let gI = invoke(gH, "unstake", [toBase58String(gf), gL], nil)
1381+ if ((gI == gI))
14841382 then {
1485- let hE = fK(fL, fM, [AttachedPayment(gD, hz)], cP.caller, cP.originCaller, cP.transactionId)
1486- let dB = hE._1
1487- let fV = hE._2
1488- $Tuple2(dB, fV)
1383+ let gP = ff(fg, fh, [AttachedPayment(gf, gL)], dN.caller, dN.originCaller, dN.transactionId)
1384+ let cJ = gP._1
1385+ let fq = gP._2
1386+ $Tuple2(cJ, fq)
14891387 }
14901388 else throw("Strict value is not equal to itself.")
14911389 }
14941392
14951393
14961394
1497-@Callable(cP)
1498-func putOneTknV2WithBonusREADONLY (hF,hG) = {
1499- let hH = fp(hF, hG, "", "", true)
1500- let fE = hH._1
1501- let dB = hH._2
1502- let cx = hH._3
1503- let fJ = hH._4
1504- $Tuple2(nil, $Tuple3(fE, cx, fJ))
1395+@Callable(dN)
1396+func putOneTknV2WithBonusREADONLY (gQ,gR) = {
1397+ let aU = aM()
1398+ let cr = aU[u]
1399+ let cs = aU[v]
1400+ let cq = aU[t]
1401+ let gS = eI(gQ, gR, "", "", true)
1402+ let eZ = gS._1
1403+ let cJ = gS._2
1404+ let ck = gS._3
1405+ let fe = gS._4
1406+ $Tuple2(nil, $Tuple3(eZ, ck, fe))
15051407 }
15061408
15071409
15081410
1509-@Callable(cP)
1510-func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1511- let hI = fp(hF, hG, "", "", false)
1512- let fE = hI._1
1513- let dB = hI._2
1514- let cx = hI._3
1515- let fJ = hI._4
1516- $Tuple2(nil, $Tuple3(fE, cx, fJ))
1411+@Callable(dN)
1412+func putOneTknV2WithoutTakeFeeREADONLY (gQ,gR) = {
1413+ let aU = aM()
1414+ let cr = aU[u]
1415+ let cs = aU[v]
1416+ let cq = aU[t]
1417+ let gT = eI(gQ, gR, "", "", false)
1418+ let eZ = gT._1
1419+ let cJ = gT._2
1420+ let ck = gT._3
1421+ let fe = gT._4
1422+ $Tuple2(nil, $Tuple3(eZ, ck, fe))
15171423 }
15181424
15191425
15201426
1521-@Callable(cP)
1522-func activate (hJ,hK) = if ((toString(cP.caller) != toString(aQ)))
1427+@Callable(dN)
1428+func activate (gU,gV) = if ((toString(dN.caller) != toString(aE)))
15231429 then throw("denied")
1524- else $Tuple2([StringEntry(aj(), hJ), StringEntry(ak(), hK)], "success")
1430+ else $Tuple2([StringEntry(ac(), gU), StringEntry(ad(), gV)], "success")
15251431
15261432
15271433
1528-@Callable(cP)
1529-func setS (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1530- then gn
1531- else [StringEntry(hL, hw)]
1434+@Callable(dN)
1435+func setS (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1436+ then fB
1437+ else [StringEntry(gW, gJ)]
15321438
15331439
15341440
1535-@Callable(cP)
1536-func setI (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1537- then gn
1538- else [IntegerEntry(hL, hw)]
1441+@Callable(dN)
1442+func setI (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1443+ then fB
1444+ else [IntegerEntry(gW, gJ)]
15391445
15401446
15411447
1542-@Callable(cP)
1543-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aY())
1448+@Callable(dN)
1449+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aM())
15441450
15451451
15461452
1547-@Callable(cP)
1548-func getAccBalanceWrapperREADONLY (bO) = $Tuple2(nil, bN(bO))
1453+@Callable(dN)
1454+func getAccBalanceWrapperREADONLY (bA) = $Tuple2(nil, bz(bA))
15491455
15501456
15511457
1552-@Callable(cP)
1553-func calcPricesWrapperREADONLY (ch,ci,cm) = {
1554- let hM = cl(ch, ci, cm)
1555- $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
1458+@Callable(dN)
1459+func calcPricesWrapperREADONLY (bS,bT,bX) = {
1460+ let gX = bW(bS, bT, bX)
1461+ $Tuple2(nil, [toString(gX[0]), toString(gX[1]), toString(gX[2])])
15561462 }
15571463
15581464
15591465
1560-@Callable(cP)
1561-func fromX18WrapperREADONLY (M,hN) = $Tuple2(nil, L(parseBigIntValue(M), hN))
1466+@Callable(dN)
1467+func fromX18WrapperREADONLY (J,gY) = $Tuple2(nil, I(parseBigIntValue(J), gY))
15621468
15631469
15641470
1565-@Callable(cP)
1566-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1471+@Callable(dN)
1472+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15671473
15681474
15691475
1570-@Callable(cP)
1571-func calcPriceBigIntWrapperREADONLY (bQ,bR) = $Tuple2(nil, toString(bP(parseBigIntValue(bQ), parseBigIntValue(bR))))
1476+@Callable(dN)
1477+func calcPriceBigIntWrapperREADONLY (bC,bD) = $Tuple2(nil, toString(bB(parseBigIntValue(bC), parseBigIntValue(bD))))
15721478
15731479
15741480
1575-@Callable(cP)
1576-func estimatePutOperationWrapperREADONLY (de,bW,dD,dE,dF,dG,hO,dH,dI) = $Tuple2(nil, dC(de, bW, dD, dE, dF, dG, hO, dH, dI, true, false, 0, ""))
1481+@Callable(dN)
1482+func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,gZ,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, gZ, cP, cQ, true, false, 0, ""))
15771483
15781484
15791485
1580-@Callable(cP)
1581-func estimateGetOperationWrapperREADONLY (de,hP,dg,hO) = {
1582- let dX = dd(de, hP, dg, addressFromStringValue(hO))
1583- $Tuple2(nil, $Tuple10(dX._1, dX._2, dX._3, dX._4, dX._5, dX._6, dX._7, toString(dX._8), dX._9, dX._10))
1486+@Callable(dN)
1487+func estimateGetOperationWrapperREADONLY (cm,ha,co,gZ) = {
1488+ let df = cl(cm, ha, co, addressFromStringValue(gZ))
1489+ $Tuple2(nil, $Tuple10(df._1, df._2, df._3, df._4, df._5, df._6, df._7, toString(df._8), df._9, df._10))
15841490 }
15851491
15861492
1587-@Verifier(hQ)
1588-func hR () = {
1589- let hS = {
1590- let gl = gk()
1591- if ($isInstanceOf(gl, "ByteVector"))
1493+@Verifier(hb)
1494+func hc () = {
1495+ let hd = {
1496+ let aw = fz()
1497+ if ($isInstanceOf(aw, "ByteVector"))
15921498 then {
1593- let gp = gl
1594- gp
1499+ let fD = aw
1500+ fD
15951501 }
1596- else if ($isInstanceOf(gl, "Unit"))
1597- then hQ.senderPublicKey
1502+ else if ($isInstanceOf(aw, "Unit"))
1503+ then hb.senderPublicKey
15981504 else throw("Match error")
15991505 }
1600- let gl = hQ
1601- if ($isInstanceOf(gl, "Order"))
1506+ let aw = hb
1507+ if ($isInstanceOf(aw, "Order"))
16021508 then {
1603- let eZ = gl
1604- let hT = aW()
1605- let hU = eY(eZ)
1606- let aF = hU._1
1607- let aG = hU._2
1608- let aH = sigVerify(eZ.bodyBytes, eZ.proofs[0], eZ.senderPublicKey)
1609- let aI = sigVerify(eZ.bodyBytes, eZ.proofs[1], hT)
1610- if (if (if (aF)
1611- then aH
1509+ let dA = aw
1510+ let he = aK()
1511+ let hf = dz(dA)
1512+ let hg = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1513+ let hh = sigVerify(dA.bodyBytes, dA.proofs[1], he)
1514+ if (if (if (hf)
1515+ then hg
16121516 else false)
1613- then aI
1517+ then hh
16141518 else false)
16151519 then true
1616- else aE(aF, aG, aH, aI)
1520+ else ar(hf, hg, hh)
16171521 }
1618- else if ($isInstanceOf(gl, "SetScriptTransaction"))
1522+ else if ($isInstanceOf(aw, "SetScriptTransaction"))
16191523 then {
1620- let cC = gl
1621- if (sigVerify(hQ.bodyBytes, hQ.proofs[0], hS))
1524+ let ea = aw
1525+ let hi = blake2b256(value(ea.script))
1526+ let hj = fromBase64String(value(getString(aE, ap())))
1527+ let hk = scriptHash(this)
1528+ if (if ((hj == hi))
1529+ then (hk != hi)
1530+ else false)
16221531 then true
1623- else {
1624- let hV = blake2b256(value(cC.script))
1625- let hW = fromBase64String(value(getString(aQ, aC())))
1626- let hX = scriptHash(this)
1627- if ((hW == hV))
1628- then (hX != hV)
1629- else false
1630- }
1532+ else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
16311533 }
1632- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1534+ else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
16331535 }
16341536
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (I,J) = fraction(I, c, J)
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func L (M,N) = toInt(fraction(M, toBigInt(N), c))
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8078
8179
82-func Q (I,J) = fraction(I, c, toBigInt(J))
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8383
8484
85-func R (M,N) = fraction(M, toBigInt(N), c)
85+func R () = "%s__factoryContract"
8686
8787
88-func S (T,U,V) = fraction(T, U, V)
88+func S () = "%s__managerPublicKey"
8989
9090
91-func W (M) = if ((d > M))
92- then -(M)
93- else M
91+func T () = "%s__pendingManagerPublicKey"
9492
9593
96-func X (M) = if ((d > M))
97- then -(M)
98- else M
94+func U () = "%s%s__price__last"
9995
10096
101-func Y () = "%s__factoryContract"
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func Z () = "%s__managerPublicKey"
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func aa () = "%s__pendingManagerPublicKey"
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func ab () = "%s%s__price__last"
106+func ac () = "%s__amountAsset"
111107
112108
113-func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
109+func ad () = "%s__priceAsset"
114110
115111
116-func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
112+func ae () = "%s__amp"
117113
118114
119-func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
115+func af () = "%s__addonAddr"
120116
121117
122-func aj () = "%s__amountAsset"
118+func ag () = "%s__swapContract"
123119
124120
125-func ak () = "%s__priceAsset"
121+func ah () = "%s__factoryConfig"
126122
127123
128-func al () = "%s__amp"
124+func ai () = "%s%s__matcher__publicKey"
129125
130126
131-func am () = "%s__addonAddr"
127+func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
132128
133129
134-let an = "%s__fee"
135-
136-let ao = valueOrElse(getInteger(this, an), G)
137-
138-let ap = makeString(["%s", "dLp"], n)
139-
140-let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141-
142-let ar = makeString(["%s", "refreshDLpDelay"], n)
143-
144-let as = 30
145-
146-let at = valueOrElse(getInteger(this, ar), as)
147-
148-func au () = "%s__factoryConfig"
130+func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
149131
150132
151-func av () = "%s%s__matcher__publicKey"
133+func ao () = "%s__shutdown"
152134
153135
154-func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
136+func ap () = "%s__allowedLpStableScriptHash"
155137
156138
157-func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
139+func aq () = "%s__feeCollectorAddress"
158140
159141
160-func aB () = "%s__shutdown"
142+func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
161143
162144
163-func aC () = "%s__allowedLpStableScriptHash"
164-
165-
166-func aD () = "%s__feeCollectorAddress"
167-
168-
169-func aE (aF,aG,aH,aI) = throw((((((((("order validation failed: orderValid=" + toString(aF)) + " (") + aG) + ")") + " senderValid=") + toString(aH)) + " matcherValid=") + toString(aI)))
170-
171-
172-func aJ (aK,aL) = valueOrErrorMessage(getString(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
173-
174-
175-func aM (aK,aL) = valueOrErrorMessage(getInteger(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
176-
177-
178-func aN (aO) = throw(makeString(["lp_stable.ride:", aO], " "))
179-
180-
181-func aP (aO) = makeString(["lp_stable.ride:", aO], " ")
182-
183-
184-let aQ = addressFromStringValue(aJ(this, Y()))
185-
186-let aR = {
187- let aS = invoke(aQ, "getInFeeREADONLY", [toString(this)], nil)
188- if ($isInstanceOf(aS, "Int"))
189- then aS
190- else throw(($getType(aS) + " couldn't be cast to Int"))
191- }
192-
193-let aT = {
194- let aS = invoke(aQ, "getOutFeeREADONLY", [toString(this)], nil)
195- if ($isInstanceOf(aS, "Int"))
196- then aS
197- else throw(($getType(aS) + " couldn't be cast to Int"))
198- }
199-
200-let aU = aJ(this, al())
201-
202-func aV () = valueOrElse(getBoolean(aQ, aB()), false)
203-
204-
205-func aW () = fromBase58String(aJ(aQ, av()))
206-
207-
208-let aX = addressFromStringValue(aJ(aQ, aD()))
209-
210-func aY () = {
211- let aZ = aJ(this, aj())
212- let ba = aJ(this, ak())
213- let bb = aM(aQ, az(ba))
214- let ax = aM(aQ, az(aZ))
215- split(aJ(aQ, aw(toString(ax), toString(bb))), n)
145+func av (J) = {
146+ let aw = J
147+ if ($isInstanceOf(aw, "String"))
148+ then {
149+ let ax = aw
150+ ax
151+ }
152+ else throw("fail cast to String")
216153 }
217154
218155
219-func bc (bd) = if ((bd == k))
220- then unit
221- else fromBase58String(bd)
156+func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
222157
223158
224-func be (bd) = if ((bd == unit))
225- then k
226- else toBase58String(value(bd))
159+func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
227160
228161
229-func bf (bg) = $Tuple9(addressFromStringValue(bg[t]), parseIntValue(bg[u]), fromBase58String(bg[v]), bc(bg[w]), bc(bg[x]), parseIntValue(bg[y]), parseIntValue(bg[z]), fromBase58String(bg[A]), fromBase58String(bg[B]))
162+func aC (aD) = throw(makeString(["lp_stable.ride:", aD], " "))
230163
231164
232-let bh = bf(aY())
165+let aE = addressFromStringValue(ay(this, R()))
233166
234-let bi = bh
167+let aF = {
168+ let aG = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
169+ if ($isInstanceOf(aG, "Int"))
170+ then aG
171+ else throw(($getType(aG) + " couldn't be cast to Int"))
172+ }
235173
236-let bj = bi._1
174+let aH = {
175+ let aG = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
176+ if ($isInstanceOf(aG, "Int"))
177+ then aG
178+ else throw(($getType(aG) + " couldn't be cast to Int"))
179+ }
237180
238-let bk = bi._2
181+let aI = ay(this, ae())
239182
240-let bl = bi._3
241-
242-let bm = bi._4
243-
244-let bn = bi._5
245-
246-let bo = bi._6
247-
248-let bp = bi._7
249-
250-let bq = bi._8
251-
252-let br = bi._9
253-
254-func bs () = split(aJ(aQ, au()), n)
183+func aJ () = valueOrElse(getBoolean(aE, ao()), false)
255184
256185
257-let bt = bs()
258-
259-let bu = valueOrErrorMessage(addressFromString(bt[C]), "Invalid staking contract address")
260-
261-let bv = valueOrErrorMessage(addressFromString(bt[E]), "Invalid slipage contract address")
262-
263-let bw = valueOrErrorMessage(addressFromString(bt[F]), "Invalid gwx contract address")
264-
265-let bx = valueOrErrorMessage(addressFromString(bt[D]), "Invalid gwx contract address")
266-
267-func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], n)
186+func aK () = fromBase58String(ay(aE, ai()))
268187
269188
270-func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], n)
189+let aL = addressFromStringValue(ay(aE, aq()))
271190
272-
273-func bN (bO) = if ((bO == "WAVES"))
274- then wavesBalance(this).available
275- else assetBalance(this, fromBase58String(bO))
276-
277-
278-func bP (bQ,bR) = fraction(bQ, c, bR)
279-
280-
281-func bS (bQ,bR,P) = fraction(bQ, c, bR, P)
282-
283-
284-func bT (bU,bV,bW) = {
285- let bX = fraction((bU - bV), b, bV)
286- let bY = ((bW - W(bX)) > d)
287- if (!(bY))
288- then throw(("Big slpg: " + toString(bX)))
289- else $Tuple2(bY, min([bU, bV]))
191+func aM () = {
192+ let aN = ay(this, ac())
193+ let aO = ay(this, ad())
194+ let aP = aB(aE, am(aO))
195+ let ak = aB(aE, am(aN))
196+ split(ay(aE, aj(toString(ak), toString(aP))), l)
290197 }
291198
292199
293-func bZ (ca,cb,cc) = {
294- let bX = fraction(cb, b, ca)
295- let cd = (cc > bX)
296- if (if (cd)
297- then true
298- else (cb > ca))
299- then throw(((((((toString(cb) + " ") + toString(ca)) + " ") + toString(bX)) + " ") + toString(cc)))
300- else cd
200+func aQ (aR) = if ((aR == i))
201+ then unit
202+ else fromBase58String(aR)
203+
204+
205+func aS (aR) = if ((aR == unit))
206+ then i
207+ else toBase58String(value(aR))
208+
209+
210+func aT (aU) = $Tuple7(addressFromStringValue(aU[r]), parseIntValue(aU[s]), fromBase58String(aU[t]), aQ(aU[u]), aQ(aU[v]), parseIntValue(aU[w]), parseIntValue(aU[x]))
211+
212+
213+let aV = aT(aM())
214+
215+let aW = aV
216+
217+let aX = aW._1
218+
219+let aY = aW._2
220+
221+let aZ = aW._3
222+
223+let ba = aW._4
224+
225+let bb = aW._5
226+
227+let bc = aW._6
228+
229+let bd = aW._7
230+
231+func be () = split(ay(aE, ah()), l)
232+
233+
234+let bf = be()
235+
236+let bg = valueOrErrorMessage(addressFromString(bf[A]), "Invalid staking contract address")
237+
238+let bh = valueOrErrorMessage(addressFromString(bf[C]), "Invalid slipage contract address")
239+
240+let bi = valueOrErrorMessage(addressFromString(bf[D]), "Invalid gwx contract address")
241+
242+let bj = valueOrErrorMessage(addressFromString(bf[B]), "Invalid gwx contract address")
243+
244+func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu)], l)
245+
246+
247+func bv (bw,bx,by,bo,br,bs) = makeString(["%d%d%d%d%d%d", toString(bw), toString(bx), toString(by), toString(bo), toString(br), toString(bs)], l)
248+
249+
250+func bz (bA) = if ((bA == "WAVES"))
251+ then wavesBalance(this).available
252+ else assetBalance(this, fromBase58String(bA))
253+
254+
255+func bB (bC,bD) = fraction(bC, c, bD)
256+
257+
258+func bE (bF,bG,bH) = {
259+ let bI = fraction((bF - bG), b, bG)
260+ let bJ = ((bH - P(bI)) > d)
261+ if (!(bJ))
262+ then throw(("Big slpg: " + toString(bI)))
263+ else $Tuple2(bJ, min([bF, bG]))
301264 }
302265
303266
304-func ce (cf,cg,ch,ci) = {
305- let cj = H(ch, cf)
306- let ck = H(ci, cg)
307- bP(ck, cj)
267+func bK (bL,bM,bN) = {
268+ let bI = fraction(bM, b, bL)
269+ let bO = (bN > bI)
270+ if (if (bO)
271+ then true
272+ else (bM > bL))
273+ then throw(((((((toString(bM) + " ") + toString(bL)) + " ") + toString(bI)) + " ") + toString(bN)))
274+ else bO
308275 }
309276
310277
311-func cl (ch,ci,cm) = {
312- let cn = bo
313- let co = bp
314- let cp = ce(cn, co, ch, ci)
315- let bR = H(ch, cn)
316- let bQ = H(ci, co)
317- let cq = H(cm, a)
318- let cr = bP(bR, cq)
319- let cs = bP(bQ, cq)
320-[cp, cr, cs]
278+func bP (bQ,bR,bS,bT) = {
279+ let bU = F(bS, bQ)
280+ let bV = F(bT, bR)
281+ bB(bV, bU)
321282 }
322283
323284
324-func ct (ch,ci,cm) = {
325- let cu = cl(ch, ci, cm)
326-[L(cu[0], a), L(cu[1], a), L(cu[2], a)]
285+func bW (bS,bT,bX) = {
286+ let bY = aM()
287+ let bZ = parseIntValue(bY[w])
288+ let ca = parseIntValue(bY[x])
289+ let cb = bP(bZ, ca, bS, bT)
290+ let bD = F(bS, bZ)
291+ let bC = F(bT, ca)
292+ let cc = F(bX, a)
293+ let cd = bB(bD, cc)
294+ let ce = bB(bC, cc)
295+[cb, cd, ce]
327296 }
328297
329298
330-func cv (cw,ao) = {
331- let cx = if ((ao == 0))
332- then 0
333- else fraction(cw, ao, a)
334- $Tuple2((cw - cx), cx)
299+func cf (bS,bT,bX) = {
300+ let cg = bW(bS, bT, bX)
301+[I(cg[0], a), I(cg[1], a), I(cg[2], a)]
335302 }
336303
337304
338-func cy (cz) = {
339- let cA = cz[0]
340- let cB = cz[1]
341- let cC = (cA + cB)
342- if ((cC == e))
343- then e
305+func ch (ci,cj) = {
306+ let ck = if ((cj == 0))
307+ then 0
308+ else fraction(ci, cj, a)
309+ $Tuple2((ci - ck), ck)
310+ }
311+
312+
313+func cl (cm,cn,co,cp) = {
314+ let bY = aM()
315+ let cq = bY[t]
316+ let cr = bY[u]
317+ let cs = bY[v]
318+ let ct = parseIntValue(bY[w])
319+ let cu = parseIntValue(bY[x])
320+ let cv = bY[s]
321+ let cw = valueOrErrorMessage(assetInfo(fromBase58String(cq)), "Wrong LP id").quantity
322+ if ((cq != cn))
323+ then throw("Wrong pmt asset")
344324 else {
345- let cD = parseIntValue(aU)
346- let cE = (cD * 2)
347- let cu = fraction(cA, cB, f)
348- let cF = fraction(cu, i, f)
349- let cG = fraction(toBigInt(cE), cC, f)
350- let cH = toBigInt((cE - 1))
351- func cI (cJ) = {
352- let cK = fraction(cJ, cJ, f)
353- let cL = fraction(cK, cJ, f)
354- let cM = fraction(cL, f, cF)
355- fraction((cG + fraction(cM, g, f)), cJ, (fraction(cH, cJ, f) + fraction(h, cM, f)))
356- }
357-
358- func cN (cO,cP) = if (cO._2)
359- then cO
360- else {
361- let cJ = cO._1
362- let cQ = cI(cJ)
363- let cR = (cQ - value(cJ))
364- let cS = if ((e > cR))
365- then -(cR)
366- else cR
367- if ((f >= cS))
368- then $Tuple2(cQ, true)
369- else $Tuple2(cQ, false)
370- }
371-
372- let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373- let cU = {
374- let cV = cT
375- let cW = size(cV)
376- let cX = $Tuple2(cC, false)
377- func cY (cZ,da) = if ((da >= cW))
378- then cZ
379- else cN(cZ, cV[da])
380-
381- func db (cZ,da) = if ((da >= cW))
382- then cZ
383- else throw("List size exceeds 15")
384-
385- db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
386- }
387- let cJ = cU._1
388- let dc = cU._2
389- if (dc)
390- then cJ
391- else throw(("D calculation error, D = " + toString(cJ)))
325+ let cx = bz(cr)
326+ let cy = F(cx, ct)
327+ let cz = bz(cs)
328+ let cA = F(cz, cu)
329+ let cB = bB(cA, cy)
330+ let cC = I(cB, a)
331+ let cD = F(co, a)
332+ let cE = F(cw, a)
333+ let cF = fraction(cy, cD, cE)
334+ let cG = fraction(cA, cD, cE)
335+ let cH = I(cF, ct)
336+ let cI = I(cG, cu)
337+ let cJ = if ((cm == ""))
338+ then nil
339+ else [ScriptTransfer(cp, cH, if ((cr == "WAVES"))
340+ then unit
341+ else fromBase58String(cr)), ScriptTransfer(cp, cI, if ((cs == "WAVES"))
342+ then unit
343+ else fromBase58String(cs)), StringEntry(ab(toString(cp), cm), bv(cH, cI, co, cC, height, lastBlock.timestamp)), IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC)]
344+ $Tuple10(cH, cI, cr, cs, cx, cz, cw, cB, cv, cJ)
392345 }
393346 }
394347
395348
396-func dd (de,df,dg,dh) = {
397- let di = bl
398- let dj = toBase58String(value(bm))
399- let dk = toBase58String(value(bn))
400- let dl = bo
401- let dm = bp
402- let dn = toString(bk)
403- let do = valueOrErrorMessage(assetInfo(di), "Wrong LP id").quantity
404- if ((toBase58String(di) != df))
405- then throw("Wrong pmt asset")
349+func cK (cm,bH,cL,cM,cN,cO,cp,cP,cQ,cR,cS,cT,cU) = {
350+ let bY = aM()
351+ let cq = fromBase58String(bY[t])
352+ let cV = bY[u]
353+ let cW = bY[v]
354+ let cX = bY[y]
355+ let cY = bY[z]
356+ let cZ = parseIntValue(bY[w])
357+ let da = parseIntValue(bY[x])
358+ let cv = bY[s]
359+ let db = valueOrErrorMessage(assetInfo(cq), "Wr lp as").quantity
360+ let cx = if (cP)
361+ then bz(cV)
362+ else if (if (cR)
363+ then (cU == cV)
364+ else false)
365+ then (bz(cV) - cT)
366+ else if (cR)
367+ then bz(cV)
368+ else (bz(cV) - cL)
369+ let cz = if (cP)
370+ then bz(cW)
371+ else if (if (cR)
372+ then (cU == cW)
373+ else false)
374+ then (bz(cW) - cT)
375+ else if (cR)
376+ then bz(cW)
377+ else (bz(cW) - cN)
378+ let dc = F(cL, cZ)
379+ let dd = F(cN, da)
380+ let de = bB(dd, dc)
381+ let cy = F(cx, cZ)
382+ let cA = F(cz, da)
383+ let df = if ((db == 0))
384+ then {
385+ let cB = d
386+ let dg = d
387+ let cc = pow((dc * dd), 0, toBigInt(5), 1, 0, DOWN)
388+ $Tuple5(I(cc, a), I(dc, cZ), I(dd, da), bB((cA + dd), (cy + dc)), dg)
389+ }
406390 else {
407- let dp = bN(dj)
408- let dq = H(dp, dl)
409- let dr = bN(dk)
410- let ds = H(dr, dm)
411- let dt = bP(ds, dq)
412- let du = L(dt, a)
413- let dv = H(dg, a)
414- let dw = H(do, a)
415- let dx = fraction(dq, dv, dw)
416- let dy = fraction(ds, dv, dw)
417- let dz = O(dx, dl, FLOOR)
418- let dA = O(dy, dm, FLOOR)
419- let dB = if ((de == ""))
420- then nil
421- else [ScriptTransfer(dh, dz, if ((dj == "WAVES"))
422- then unit
423- else fromBase58String(dj)), ScriptTransfer(dh, dA, if ((dk == "WAVES"))
424- then unit
425- else fromBase58String(dk)), StringEntry(ai(toString(dh), de), bJ(dz, dA, dg, du, height, lastBlock.timestamp)), IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du)]
426- $Tuple10(dz, dA, dj, dk, dp, dr, do, dt, dn, dB)
391+ let cB = bB(cA, cy)
392+ let dh = fraction(P((cB - de)), c, cB)
393+ let dg = F(bH, a)
394+ if (if (if (cS)
395+ then (cB != d)
396+ else false)
397+ then (dh > dg)
398+ else false)
399+ then throw(((("Price slippage " + toString(dh)) + " > ") + toString(dg)))
400+ else {
401+ let di = F(db, a)
402+ let dj = fraction(dc, cB, c)
403+ let dk = fraction(dd, c, cB)
404+ let dl = if ((dj > dd))
405+ then $Tuple2(dk, dd)
406+ else $Tuple2(dc, dj)
407+ let dm = dl._1
408+ let dn = dl._2
409+ let cc = fraction(di, dn, cA)
410+ $Tuple5(I(cc, a), I(dm, cZ), I(dn, da), cB, dg)
411+ }
412+ }
413+ let do = df._1
414+ let dp = df._2
415+ let dq = df._3
416+ let cC = I(df._4, a)
417+ let dr = I(df._5, a)
418+ if ((0 >= do))
419+ then throw("LP <= 0")
420+ else {
421+ let ds = if (!(cQ))
422+ then 0
423+ else do
424+ let dt = (cL - dp)
425+ let du = (cN - dq)
426+ let dv = if (if (cR)
427+ then (cU == cV)
428+ else false)
429+ then $Tuple2(cT, 0)
430+ else if (if (cR)
431+ then (cU == cW)
432+ else false)
433+ then $Tuple2(0, cT)
434+ else $Tuple2(dp, dq)
435+ let dw = dv._1
436+ let dx = dv._2
437+ let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, cm), bk(dw, dx, ds, cC, bH, dr, height, lastBlock.timestamp, dt, du))]
438+ $Tuple13(do, ds, cC, cx, cz, db, cq, cv, dy, dt, du, cM, cO)
427439 }
428440 }
429441
430442
431-func dC (de,bW,dD,dE,dF,dG,dh,dH,dI,dJ,dK,dL,dM) = {
432- let di = bl
433- let dN = toBase58String(value(bm))
434- let dO = toBase58String(value(bn))
435- let dP = bq
436- let dQ = br
437- let dR = bo
438- let dS = bp
439- let dn = toString(bk)
440- let dT = valueOrErrorMessage(assetInfo(di), "Wr lp as").quantity
441- let dp = if (dH)
442- then bN(dN)
443- else if (if (dJ)
444- then (dM == dN)
445- else false)
446- then (bN(dN) - dL)
447- else if (dJ)
448- then bN(dN)
449- else (bN(dN) - dD)
450- let dr = if (dH)
451- then bN(dO)
452- else if (if (dJ)
453- then (dM == dO)
454- else false)
455- then (bN(dO) - dL)
456- else if (dJ)
457- then bN(dO)
458- else (bN(dO) - dF)
459- let dU = H(dD, dR)
460- let dV = H(dF, dS)
461- let dW = bP(dV, dU)
462- let dq = H(dp, dR)
463- let ds = H(dr, dS)
464- let cb = cy([dq, ds])
465- let dX = if ((dT == 0))
466- then {
467- let ca = cy([(dq + dU), (ds + dV)])
468- let dY = if ((ca > cb))
443+func dz (dA) = {
444+ let bY = aM()
445+ let dB = bY[u]
446+ let dC = bY[v]
447+ let cv = parseIntValue(bY[s])
448+ let bZ = parseIntValue(bY[w])
449+ let ca = parseIntValue(bY[x])
450+ let dD = bz(dB)
451+ let dE = bz(dC)
452+ let cB = if ((dA.orderType == Buy))
453+ then bP(bZ, ca, (dD + dA.amount), dE)
454+ else bP(bZ, ca, (dD - dA.amount), dE)
455+ let cC = I(cB, a)
456+ if (if (if (aJ())
457+ then true
458+ else (cv == p))
459+ then true
460+ else (cv == q))
461+ then throw("Admin blocked")
462+ else {
463+ let dF = dA.assetPair.amountAsset
464+ let dG = if ((dF == unit))
465+ then "WAVES"
466+ else toBase58String(value(dF))
467+ let dH = dA.assetPair.priceAsset
468+ let dI = if ((dH == unit))
469+ then "WAVES"
470+ else toBase58String(value(dH))
471+ if (if ((dG != dB))
469472 then true
470- else throw("D1 should be greater than D0")
471- if ((dY == dY))
472- then {
473- let dt = d
474- let dZ = d
475- let cq = ca
476- $Tuple5(L(cq, a), L(dU, dR), L(dV, dS), bP((ds + dV), (dq + dU)), dZ)
473+ else (dI != dC))
474+ then throw("Wr assets")
475+ else {
476+ let dJ = dA.price
477+ let da = fraction(a, ca, bZ)
478+ let dK = L(dJ, a, da)
479+ let dL = if ((dA.orderType == Buy))
480+ then (cC >= dK)
481+ else (dK >= cC)
482+ true
477483 }
478- else throw("Strict value is not equal to itself.")
479- }
480- else {
481- let dt = bP(ds, dq)
482- let ea = fraction(W((dt - dW)), c, dt)
483- let dZ = H(bW, a)
484- if (if (if (dK)
485- then (dt != d)
486- else false)
487- then (ea > dZ)
488- else false)
489- then throw(((("Price slippage " + toString(ea)) + " > ") + toString(dZ)))
490- else {
491- let eb = H(dT, a)
492- let ec = fraction(dU, bS(ds, dq, CEILING), c, CEILING)
493- let ed = fraction(dV, c, bS(ds, dq, FLOOR), CEILING)
494- let ee = if ((ec > dV))
495- then $Tuple2(ed, dV)
496- else $Tuple2(dU, ec)
497- let ef = ee._1
498- let eg = ee._2
499- let ca = cy([(dq + ef), (ds + eg)])
500- let dY = if ((ca > cb))
501- then true
502- else throw("D1 should be greater than D0")
503- if ((dY == dY))
504- then {
505- let cq = fraction(eb, (ca - cb), cb)
506- $Tuple5(O(cq, a, FLOOR), O(ef, dR, CEILING), O(eg, dS, CEILING), dt, dZ)
507- }
508- else throw("Strict value is not equal to itself.")
509- }
510- }
511- let eh = dX._1
512- let ei = dX._2
513- let ej = dX._3
514- let du = L(dX._4, a)
515- let ek = L(dX._5, a)
516- if ((0 >= eh))
517- then throw("LP <= 0")
518- else {
519- let el = if (!(dI))
520- then 0
521- else eh
522- let em = (dD - ei)
523- let en = (dF - ej)
524- let eo = if (if (dJ)
525- then (dM == dN)
526- else false)
527- then $Tuple2(dL, 0)
528- else if (if (dJ)
529- then (dM == dO)
530- else false)
531- then $Tuple2(0, dL)
532- else $Tuple2(ei, ej)
533- let ep = eo._1
534- let eq = eo._2
535- let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, de), by(ep, eq, el, du, bW, ek, height, lastBlock.timestamp, em, en))]
536- $Tuple13(eh, el, du, dp, dr, dT, di, dn, er, em, en, dE, dG)
537484 }
538485 }
539486
540487
541-func es (cz,cP,et) = {
542- let eu = g
543- let ev = cz[if ((cP == 0))
488+func dM (dN) = if ((size(dN.payments) != 1))
489+ then throw("1 pmnt exp")
490+ else {
491+ let dO = value(dN.payments[0])
492+ let cn = value(dO.assetId)
493+ let cT = dO.amount
494+ let df = cl(toBase58String(dN.transactionId), toBase58String(cn), cT, dN.caller)
495+ let cH = df._1
496+ let cI = df._2
497+ let cv = parseIntValue(df._9)
498+ let cJ = df._10
499+ if (if (aJ())
500+ then true
501+ else (cv == q))
502+ then throw(("Admin blocked: " + toString(cv)))
503+ else $Tuple5(cH, cI, cT, cn, cJ)
504+ }
505+
506+
507+func dP (dQ,aa,dR,dS,bH,cQ,cR,cS,cT,cU) = {
508+ let df = cK(aa, bH, value(dR).amount, value(dR).assetId, value(dS).amount, value(dS).assetId, dQ, (aa == ""), cQ, cR, cS, cT, cU)
509+ let cv = parseIntValue(df._8)
510+ if (if (if (aJ())
511+ then true
512+ else (cv == o))
513+ then true
514+ else (cv == q))
515+ then throw(("Blocked:" + toString(cv)))
516+ else df
517+ }
518+
519+
520+func dT (dU) = {
521+ let dV = g
522+ let dW = dU[0]
523+ let dX = dU[1]
524+ let dY = parseBigIntValue(j)
525+ let dZ = (parseBigIntValue(aI) * dY)
526+ let ea = (dW + dX)
527+ if ((ea == e))
528+ then e
529+ else {
530+ let eb = (dZ * dV)
531+ let ec = (((dW * dX) * dV) * dV)
532+ let ed = ((eb * ea) / dY)
533+ let ee = (eb - dY)
534+ let ef = (dV + f)
535+ func eg (eh,ei) = {
536+ let ej = eh
537+ let ek = ej._1
538+ let el = ej._2
539+ if ((el != unit))
540+ then eh
541+ else {
542+ let em = (((ek * ek) * ek) / ec)
543+ let en = (((ed + (em * dV)) * ek) / (((ee * ek) / dY) + (ef * em)))
544+ let eo = Q((en - value(ek)))
545+ if ((f >= eo))
546+ then $Tuple2(en, ei)
547+ else $Tuple2(en, unit)
548+ }
549+ }
550+
551+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
552+ let eq = {
553+ let er = ep
554+ let es = size(er)
555+ let et = $Tuple2(ea, unit)
556+ func eu (ev,ew) = if ((ew >= es))
557+ then ev
558+ else eg(ev, er[ew])
559+
560+ func ex (ev,ew) = if ((ew >= es))
561+ then ev
562+ else throw("List size exceeds 15")
563+
564+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
565+ }
566+ let ek = eq._1
567+ let el = eq._2
568+ if ((el != unit))
569+ then ek
570+ else throw(("D calculation error, D = " + toString(ek)))
571+ }
572+ }
573+
574+
575+func ey (dU,dN,ez) = {
576+ let dV = g
577+ let eA = dU[if ((dN == 0))
544578 then 1
545579 else 0]
546- let ew = parseBigIntValue(l)
547- let cD = (parseBigIntValue(aU) * ew)
548- let cC = ev
549- let cE = (cD * eu)
550- let ex = (((((et * et) / (ev * eu)) * et) * ew) / (cE * eu))
551- let ey = ((cC + ((et * ew) / cE)) - et)
552- func cN (cO,ez) = {
553- let eA = cO
554- let eB = eA._1
555- let dc = eA._2
556- if ((dc != unit))
557- then cO
580+ let dY = parseBigIntValue(j)
581+ let dZ = (parseBigIntValue(aI) * dY)
582+ let ea = eA
583+ let eb = (dZ * dV)
584+ let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
585+ let eC = ((ea + ((ez * dY) / eb)) - ez)
586+ func eg (eh,ei) = {
587+ let eD = eh
588+ let eE = eD._1
589+ let el = eD._2
590+ if ((el != unit))
591+ then eh
558592 else {
559- let eC = (((eB * eB) + ex) / ((g * eB) + ey))
560- let eD = X((eC - value(eB)))
561- if ((f >= eD))
562- then $Tuple2(eC, ez)
563- else $Tuple2(eC, unit)
593+ let eF = (((eE * eE) + eB) / ((g * eE) + eC))
594+ let eG = Q((eF - value(eE)))
595+ if ((f >= eG))
596+ then $Tuple2(eF, ei)
597+ else $Tuple2(eF, unit)
564598 }
565599 }
566600
567- let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568- let eE = {
569- let cV = cT
570- let cW = size(cV)
571- let cX = $Tuple2(et, unit)
572- func cY (cZ,da) = if ((da >= cW))
573- then cZ
574- else cN(cZ, cV[da])
601+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
602+ let eH = {
603+ let er = ep
604+ let es = size(er)
605+ let et = $Tuple2(ez, unit)
606+ func eu (ev,ew) = if ((ew >= es))
607+ then ev
608+ else eg(ev, er[ew])
575609
576- func db (cZ,da) = if ((da >= cW))
577- then cZ
610+ func ex (ev,ew) = if ((ew >= es))
611+ then ev
578612 else throw("List size exceeds 15")
579613
580- db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
581615 }
582- let eB = eE._1
583- let dc = eE._2
584- if ((dc != unit))
585- then eB
586- else throw(("Y calculation error, Y = " + toString(eB)))
616+ let eE = eH._1
617+ let el = eH._2
618+ if ((el != unit))
619+ then eE
620+ else throw(("Y calculation error, Y = " + toString(eE)))
587621 }
588622
589623
590-func eF (eG,eH,eI) = {
591- let eJ = fraction(cy([K(eG, toBigInt(bo)), K(eH, toBigInt(bp))]), c, eI)
592- if ((eI == e))
593- then e
594- else eJ
595- }
596-
597-
598-func eK (eL,eM,eN) = {
599- let eO = (toBigInt(bN(be(bm))) - eL)
600- let eP = (toBigInt(bN(be(bn))) - eM)
601- let eQ = (toBigInt(value(assetInfo(bl)).quantity) - eN)
602- let eR = eF(eO, eP, eQ)
603- eR
604- }
605-
606-
607-func eS (eT,eU,eN) = {
608- let eO = (bN(be(bm)) + eT)
609- let eP = (bN(be(bn)) + eU)
610- let eQ = (value(assetInfo(bl)).quantity + eN)
611- let eJ = eF(toBigInt(eO), toBigInt(eP), toBigInt(eQ))
612- let eV = [IntegerEntry(aq, height), StringEntry(ap, toString(eJ))]
613- $Tuple2(eV, eJ)
614- }
615-
616-
617-func eW (eX,eJ) = if ((eJ >= eX))
618- then true
619- else aN("updated DLp lower than current DLp")
620-
621-
622-func eY (eZ) = {
623- let eO = bN(be(bm))
624- let eP = bN(be(bn))
625- let fa = eZ.amount
626- let fb = fraction(eZ.amount, eZ.price, a, FLOOR)
627- let fc = if ((eZ.orderType == Buy))
628- then $Tuple2(fa, -(fb))
629- else $Tuple2(-(fa), fb)
630- let eT = fc._1
631- let eU = fc._2
632- if (if (if (aV())
633- then true
634- else (bk == r))
635- then true
636- else (bk == s))
637- then throw("Admin blocked")
638- else if (if ((eZ.assetPair.amountAsset != bm))
639- then true
640- else (eZ.assetPair.priceAsset != bn))
641- then throw("Wr assets")
642- else {
643- let fd = parseBigIntValue(valueOrElse(getString(this, ap), "0"))
644- let fe = eS(eT, eU, 0)
645- let ff = fe._1
646- let fg = fe._2
647- let fh = (fg >= fd)
648- let fi = makeString(["dLp=", toString(fd), " dLpNew=", toString(fg), " amountAssetBalance=", toString(eO), " priceAssetBalance=", toString(eP), " amountAssetBalanceDelta=", toString(eT), " priceAssetBalanceDelta=", toString(eU)], "")
649- $Tuple2(fh, fi)
650- }
651- }
652-
653-
654-func fj (cP) = if ((size(cP.payments) != 1))
655- then throw("1 pmnt exp")
656- else {
657- let fk = value(cP.payments[0])
658- let df = value(fk.assetId)
659- let dL = fk.amount
660- let dX = dd(toBase58String(cP.transactionId), toBase58String(df), dL, cP.caller)
661- let dz = dX._1
662- let dA = dX._2
663- let dn = parseIntValue(dX._9)
664- let dB = dX._10
665- if (if (aV())
666- then true
667- else (dn == s))
668- then throw(("Admin blocked: " + toString(dn)))
669- else $Tuple5(dz, dA, dL, df, dB)
670- }
671-
672-
673-func fl (fm,ah,fn,fo,bW,dI,dJ,dK,dL,dM) = {
674- let dX = dC(ah, bW, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ah == ""), dI, dJ, dK, dL, dM)
675- let dn = parseIntValue(dX._8)
676- if (if (if (aV())
677- then true
678- else (dn == q))
679- then true
680- else (dn == s))
681- then throw(("Blocked:" + toString(dn)))
682- else dX
683- }
684-
685-
686-func fp (fq,df,dh,ah,fr) = {
687- let dj = toBase58String(value(bm))
688- let dk = toBase58String(value(bn))
689- let di = bl
690- let dR = bo
691- let dS = bp
692- let eQ = toBigInt(valueOrErrorMessage(assetInfo(di), "invalid lp asset").quantity)
693- let fs = if ((eQ > e))
624+func eI (eJ,cn,cp,aa,eK) = {
625+ let aU = aM()
626+ let cr = aU[u]
627+ let cs = aU[v]
628+ let cq = aU[t]
629+ let cZ = parseIntValue(aU[w])
630+ let da = parseIntValue(aU[x])
631+ let eL = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
632+ let eM = if ((eL > e))
694633 then true
695634 else throw("initial deposit requires all coins")
696- if ((fs == fs))
635+ if ((eM == eM))
697636 then {
698- let dp = bN(dj)
699- let dr = bN(dk)
700- let ft = if ((ah == ""))
701- then $Tuple2(dp, dr)
702- else if ((df == dj))
703- then if ((fq > dp))
637+ let cx = bz(cr)
638+ let cz = bz(cs)
639+ let eN = if ((aa == ""))
640+ then $Tuple2(cx, cz)
641+ else if ((cn == cr))
642+ then if ((eJ > cx))
704643 then throw("invalid payment amount")
705- else $Tuple2((dp - fq), dr)
706- else if ((df == dk))
707- then if ((fq > dr))
644+ else $Tuple2((cx - eJ), cz)
645+ else if ((cn == cs))
646+ then if ((eJ > cz))
708647 then throw("invalid payment amount")
709- else $Tuple2(dp, (dr - fq))
648+ else $Tuple2(cx, (cz - eJ))
710649 else throw("wrong pmtAssetId")
711- let fu = ft._1
712- let fv = ft._2
713- let fw = if ((df == dj))
714- then $Tuple2(fq, 0)
715- else if ((df == dk))
716- then $Tuple2(0, fq)
650+ let eO = eN._1
651+ let eP = eN._2
652+ let eQ = if ((cn == cr))
653+ then $Tuple2(eJ, 0)
654+ else if ((cn == cs))
655+ then $Tuple2(0, eJ)
717656 else throw("invalid payment")
718- let fx = fw._1
719- let fy = fw._2
720- let fz = if (fr)
721- then $Tuple3(cv(fx, aR)._1, cv(fy, aR)._1, cv(fq, aR)._2)
722- else $Tuple3(fx, fy, 0)
723- let fA = fz._1
724- let fB = fz._2
725- let cx = fz._3
726- let fC = (fu + fA)
727- let fD = (fv + fB)
728- let cb = cy([H(fu, bo), H(fv, bp)])
729- let ca = cy([H(fC, bo), H(fD, bp)])
730- let dY = if ((ca > cb))
657+ let eR = eQ._1
658+ let eS = eQ._2
659+ let eT = if (eK)
660+ then $Tuple3(ch(eR, aF)._1, ch(eS, aF)._1, ch(eJ, aF)._2)
661+ else $Tuple3(eR, eS, 0)
662+ let eU = eT._1
663+ let eV = eT._2
664+ let ck = eT._3
665+ let eW = (eO + eU)
666+ let eX = (eP + eV)
667+ let bM = dT([toBigInt(eO), toBigInt(eP)])
668+ let bL = dT([toBigInt(eW), toBigInt(eX)])
669+ let eY = if ((bL > bM))
731670 then true
732671 else throw()
733- if ((dY == dY))
672+ if ((eY == eY))
734673 then {
735- let fE = fraction(eQ, (ca - cb), cb, FLOOR)
736- let du = L(bP(H(fD, dS), H(fC, dR)), a)
737- let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, ah), by(fx, fy, toInt(fE), du, 0, 0, height, lastBlock.timestamp, 0, 0))]
738- let fF = fraction(fv, a, fu)
739- let fG = fraction(fq, a, (fF + a))
740- let fH = (fq - fG)
741- let fI = fraction(eQ, toBigInt(fH), toBigInt(fv))
742- let fJ = toInt(fraction((fE - fI), b, fI))
743- $Tuple4(toInt(fE), er, cx, fJ)
674+ let eZ = fraction(eL, (bL - bM), bM)
675+ let cC = I(bB(F(eX, da), F(eW, cZ)), a)
676+ let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, aa), bk(eR, eS, toInt(eZ), cC, 0, 0, height, lastBlock.timestamp, 0, 0))]
677+ let fa = fraction(eP, a, eO)
678+ let fb = fraction(eJ, a, (fa + a))
679+ let fc = (eJ - fb)
680+ let fd = fraction(eL, toBigInt(fc), toBigInt(eP))
681+ let fe = toInt(fraction((eZ - fd), b, fd))
682+ $Tuple4(toInt(eZ), dy, ck, fe)
744683 }
745684 else throw("Strict value is not equal to itself.")
746685 }
747686 else throw("Strict value is not equal to itself.")
748687 }
749688
750689
751-func fK (fL,fM,fN,fm,fO,fP) = {
752- let di = toBase58String(value(bl))
753- let dj = toBase58String(value(bm))
754- let dk = toBase58String(value(bn))
755- let fQ = bo
756- let fR = bp
757- let fS = bk
758- let dh = if ((fm == bx))
759- then fO
760- else fm
761- let fk = value(fN[0])
762- let df = value(fk.assetId)
763- let dL = fk.amount
764- let eR = eK(e, e, e)
765- if ((eR == eR))
766- then {
767- let de = toBase58String(fP)
768- if ((di != toBase58String(df)))
769- then throw("Wrong LP")
770- else {
771- let dp = bN(dj)
772- let dr = bN(dk)
773- let fT = {
774- let aS = invoke(this, "getOneTknV2READONLY", [fL, dL], nil)
775- if ($isInstanceOf(aS, "(Int, Int)"))
776- then aS
777- else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
778- }
779- if ((fT == fT))
690+func ff (fg,fh,fi,dQ,fj,fk) = {
691+ let aU = aM()
692+ let cq = aU[t]
693+ let cr = aU[u]
694+ let cs = aU[v]
695+ let fl = parseIntValue(aU[w])
696+ let fm = parseIntValue(aU[x])
697+ let fn = aU[s]
698+ let cp = if ((dQ == bj))
699+ then fj
700+ else dQ
701+ let dO = value(fi[0])
702+ let cn = value(dO.assetId)
703+ let cT = dO.amount
704+ let cm = toBase58String(fk)
705+ if ((cq != toBase58String(cn)))
706+ then throw("Wrong LP")
707+ else {
708+ let cx = bz(cr)
709+ let cz = bz(cs)
710+ let fo = {
711+ let aG = invoke(this, "getOneTknV2READONLY", [fg, cT], nil)
712+ if ($isInstanceOf(aG, "(Int, Int)"))
713+ then aG
714+ else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
715+ }
716+ if ((fo == fo))
717+ then {
718+ let ck = fo._2
719+ let fp = fo._1
720+ let fq = if (if ((fh > 0))
721+ then (fh > fp)
722+ else false)
723+ then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
724+ else fp
725+ let fr = if ((fg == cr))
726+ then $Tuple4(fq, 0, ((cx - fq) - ck), cz)
727+ else if ((fg == cs))
728+ then $Tuple4(0, fq, cx, ((cz - fq) - ck))
729+ else throw("invalid out asset id")
730+ let fs = fr._1
731+ let ft = fr._2
732+ let eW = fr._3
733+ let eX = fr._4
734+ let fu = bB(F(eX, fm), F(eW, fl))
735+ let fv = I(fu, a)
736+ let fw = if ((fg == "WAVES"))
737+ then unit
738+ else fromBase58String(fg)
739+ let fx = if ((ck > 0))
740+ then [ScriptTransfer(aL, ck, fw)]
741+ else nil
742+ let cJ = ([ScriptTransfer(cp, fq, fw), StringEntry(ab(toString(cp), cm), bv(fs, ft, cT, fv, height, lastBlock.timestamp)), IntegerEntry(U(), fv), IntegerEntry(V(height, lastBlock.timestamp), fv)] ++ fx)
743+ if ((cJ == cJ))
780744 then {
781- let cx = fT._2
782- let fU = fT._1
783- let fV = if (if ((fM > 0))
784- then (fM > fU)
785- else false)
786- then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
787- else fU
788- let fW = if ((fL == dj))
789- then $Tuple4(fV, 0, ((dp - fV) - cx), dr)
790- else if ((fL == dk))
791- then $Tuple4(0, fV, dp, ((dr - fV) - cx))
792- else throw("invalid out asset id")
793- let fX = fW._1
794- let fY = fW._2
795- let fC = fW._3
796- let fD = fW._4
797- let fZ = bP(H(fD, fR), H(fC, fQ))
798- let ga = L(fZ, a)
799- let gb = if ((fL == "WAVES"))
800- then unit
801- else fromBase58String(fL)
802- let gc = if ((cx > 0))
803- then [ScriptTransfer(aX, cx, gb)]
804- else nil
805- let dB = ([ScriptTransfer(dh, fV, gb), StringEntry(ai(toString(dh), de), bJ(fX, fY, dL, ga, height, lastBlock.timestamp)), IntegerEntry(ab(), ga), IntegerEntry(ac(height, lastBlock.timestamp), ga)] ++ gc)
806- if ((dB == dB))
807- then {
808- let gd = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
809- if ((gd == gd))
810- then {
811- let ge = {
812- let gf = if ((this == aX))
813- then 0
814- else cx
815- let gg = if ((bc(fL) == bm))
816- then true
817- else false
818- if (gg)
819- then $Tuple2(-((fU + gf)), 0)
820- else $Tuple2(0, -((fU + gf)))
821- }
822- let eT = ge._1
823- let eU = ge._2
824- let gh = eS(eT, eU, 0)
825- let gi = gh._1
826- let eJ = gh._2
827- let gj = eW(eR, eJ)
828- if ((gj == gj))
829- then $Tuple2((dB ++ gi), fV)
830- else throw("Strict value is not equal to itself.")
831- }
832- else throw("Strict value is not equal to itself.")
833- }
745+ let fy = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
746+ if ((fy == fy))
747+ then $Tuple2(cJ, fq)
834748 else throw("Strict value is not equal to itself.")
835749 }
836750 else throw("Strict value is not equal to itself.")
837751 }
752+ else throw("Strict value is not equal to itself.")
838753 }
839- else throw("Strict value is not equal to itself.")
840754 }
841755
842756
843-func gk () = {
844- let gl = getString(Z())
845- if ($isInstanceOf(gl, "String"))
757+func fz () = {
758+ let aw = getString(S())
759+ if ($isInstanceOf(aw, "String"))
846760 then {
847- let cC = gl
848- fromBase58String(cC)
761+ let ea = aw
762+ fromBase58String(ea)
849763 }
850- else if ($isInstanceOf(gl, "Unit"))
764+ else if ($isInstanceOf(aw, "Unit"))
851765 then unit
852766 else throw("Match error")
853767 }
854768
855769
856-func gm () = {
857- let gl = getString(aa())
858- if ($isInstanceOf(gl, "String"))
770+func fA () = {
771+ let aw = getString(T())
772+ if ($isInstanceOf(aw, "String"))
859773 then {
860- let cC = gl
861- fromBase58String(cC)
774+ let ea = aw
775+ fromBase58String(ea)
862776 }
863- else if ($isInstanceOf(gl, "Unit"))
777+ else if ($isInstanceOf(aw, "Unit"))
864778 then unit
865779 else throw("Match error")
866780 }
867781
868782
869-let gn = throw("Permission denied")
783+let fB = throw("Permission denied")
870784
871-func go (cP) = {
872- let gl = gk()
873- if ($isInstanceOf(gl, "ByteVector"))
785+func fC (dN) = {
786+ let aw = fz()
787+ if ($isInstanceOf(aw, "ByteVector"))
874788 then {
875- let gp = gl
876- (cP.callerPublicKey == gp)
789+ let fD = aw
790+ (dN.callerPublicKey == fD)
877791 }
878- else if ($isInstanceOf(gl, "Unit"))
879- then (cP.caller == this)
792+ else if ($isInstanceOf(aw, "Unit"))
793+ then (dN.caller == this)
880794 else throw("Match error")
881795 }
882796
883797
884-func gq (cP) = {
885- let gl = gk()
886- if ($isInstanceOf(gl, "ByteVector"))
798+func fE (dN) = {
799+ let aw = fz()
800+ if ($isInstanceOf(aw, "ByteVector"))
887801 then {
888- let gp = gl
889- if ((cP.callerPublicKey == gp))
802+ let fD = aw
803+ if ((dN.callerPublicKey == fD))
890804 then true
891- else gn
805+ else fB
892806 }
893- else if ($isInstanceOf(gl, "Unit"))
894- then if ((cP.caller == this))
807+ else if ($isInstanceOf(aw, "Unit"))
808+ then if ((dN.caller == this))
895809 then true
896- else gn
810+ else fB
897811 else throw("Match error")
898812 }
899813
900814
901-@Callable(cP)
902-func constructor (Y) = {
903- let ex = gq(cP)
904- if ((ex == ex))
905- then [StringEntry(Y(), Y)]
906- else throw("Strict value is not equal to itself.")
815+func fF (fG,ez,fH) = {
816+ let aU = aM()
817+ let cr = aU[u]
818+ let cs = aU[v]
819+ let dV = g
820+ let dY = parseBigIntValue(j)
821+ let dZ = (parseBigIntValue(aI) * dY)
822+ let dU = if ((fG == false))
823+ then [(toBigInt(bz(cr)) - fH), toBigInt(bz(cs))]
824+ else [(toBigInt(bz(cs)) - fH), toBigInt(bz(cr))]
825+ let eA = dU[0]
826+ let ea = eA
827+ let eb = (dZ * dV)
828+ let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
829+ let eC = ((ea + ((ez * dY) / eb)) - ez)
830+ func eg (eh,ei) = {
831+ let fI = eh
832+ let eE = fI._1
833+ let el = fI._2
834+ if ((el != unit))
835+ then eh
836+ else {
837+ let eF = (((eE * eE) + eB) / ((g * eE) + eC))
838+ let eG = Q((eF - value(eE)))
839+ if ((f >= eG))
840+ then $Tuple2(eF, ei)
841+ else $Tuple2(eF, unit)
842+ }
843+ }
844+
845+ let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
846+ let fJ = {
847+ let er = ep
848+ let es = size(er)
849+ let et = $Tuple2(ez, unit)
850+ func eu (ev,ew) = if ((ew >= es))
851+ then ev
852+ else eg(ev, er[ew])
853+
854+ func ex (ev,ew) = if ((ew >= es))
855+ then ev
856+ else throw("List size exceeds 15")
857+
858+ ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
859+ }
860+ let eE = fJ._1
861+ let el = fJ._2
862+ if ((el != unit))
863+ then eE
864+ else throw(("Y calculation error, Y = " + toString(eE)))
865+ }
866+
867+
868+@Callable(dN)
869+func calculateAmountOutForSwapREADONLY (fK,fG) = {
870+ let fL = if ((fG == false))
871+ then {
872+ let fM = ay(this, ad())
873+ let fH = (toBigInt(bz(ay(this, ac()))) + toBigInt(fK))
874+ $Tuple2(fM, fH)
875+ }
876+ else {
877+ let fM = ay(this, ac())
878+ let fH = (toBigInt(bz(ay(this, ad()))) + toBigInt(fK))
879+ $Tuple2(fM, fH)
880+ }
881+ let fM = fL._1
882+ let fH = fL._2
883+ let aU = aM()
884+ let cr = aU[u]
885+ let cs = aU[v]
886+ let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
887+ let ez = dT(dU)
888+ let eE = fF(fG, ez, fH)
889+ let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
890+ let fO = max([0, toInt(fN)])
891+ $Tuple2(nil, fO)
907892 }
908893
909894
910895
911-@Callable(cP)
912-func setManager (gr) = {
913- let ex = gq(cP)
914- if ((ex == ex))
896+@Callable(dN)
897+func calculateAmountOutForSwapAndSendTokens (fK,fG,fP,fQ) = {
898+ let fR = [if ((value(dN.payments[0]).amount >= fK))
899+ then true
900+ else aC("Wrong amount"), if ((dN.caller == addressFromStringValue(ay(this, ag()))))
901+ then true
902+ else aC("Permission denied")]
903+ if ((fR == fR))
915904 then {
916- let gs = fromBase58String(gr)
917- if ((gs == gs))
918- then [StringEntry(aa(), gr)]
905+ let dO = value(dN.payments[0])
906+ let fS = if ((dO.assetId == unit))
907+ then toBase58String(toBytes("WAVES"))
908+ else toBase58String(value(dO.assetId))
909+ let fT = if ((fG == false))
910+ then {
911+ let fM = ay(this, ad())
912+ let fH = (bz(fS) - value(dN.payments[0]).amount)
913+ $Tuple2(fM, fH)
914+ }
915+ else {
916+ let fM = ay(this, ac())
917+ let fH = (bz(fS) - value(dN.payments[0]).amount)
918+ $Tuple2(fM, fH)
919+ }
920+ let fM = fT._1
921+ let fH = fT._2
922+ let aU = aM()
923+ let cr = aU[u]
924+ let cs = aU[v]
925+ let dU = [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
926+ let ez = dT(dU)
927+ let eE = fF(fG, ez, toBigInt(fH))
928+ let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
929+ let fO = max([0, toInt(fN)])
930+ let fU = if ((fO >= fP))
931+ then true
932+ else throw("Exchange result is fewer coins than expected")
933+ if ((fU == fU))
934+ then [ScriptTransfer(addressFromStringValue(fQ), fO, if ((fS == "WAVES"))
935+ then unit
936+ else fromBase58String(fM))]
919937 else throw("Strict value is not equal to itself.")
920938 }
921939 else throw("Strict value is not equal to itself.")
922940 }
923941
924942
925943
926-@Callable(cP)
927-func confirmManager () = {
928- let cu = gm()
929- let gt = if (isDefined(cu))
930- then true
931- else throw("No pending manager")
932- if ((gt == gt))
944+@Callable(dN)
945+func constructor (R) = {
946+ let eB = fE(dN)
947+ if ((eB == eB))
948+ then [StringEntry(R(), R)]
949+ else throw("Strict value is not equal to itself.")
950+ }
951+
952+
953+
954+@Callable(dN)
955+func setManager (fV) = {
956+ let eB = fE(dN)
957+ if ((eB == eB))
933958 then {
934- let gu = if ((cP.callerPublicKey == value(cu)))
935- then true
936- else throw("You are not pending manager")
937- if ((gu == gu))
938- then [StringEntry(Z(), toBase58String(value(cu))), DeleteEntry(aa())]
959+ let fW = fromBase58String(fV)
960+ if ((fW == fW))
961+ then [StringEntry(T(), fV)]
939962 else throw("Strict value is not equal to itself.")
940963 }
941964 else throw("Strict value is not equal to itself.")
942965 }
943966
944967
945968
946-@Callable(cP)
947-func put (gv,gw) = {
948- let gx = bs()
949- let gy = valueOrErrorMessage(addressFromString(gx[C]), "Wr st addr")
950- let gz = valueOrErrorMessage(addressFromString(gx[E]), "Wr sl addr")
951- if ((0 > gv))
969+@Callable(dN)
970+func confirmManager () = {
971+ let cg = fA()
972+ let fX = if (isDefined(cg))
973+ then true
974+ else throw("No pending manager")
975+ if ((fX == fX))
976+ then {
977+ let fY = if ((dN.callerPublicKey == value(cg)))
978+ then true
979+ else throw("You are not pending manager")
980+ if ((fY == fY))
981+ then [StringEntry(S(), toBase58String(value(cg))), DeleteEntry(T())]
982+ else throw("Strict value is not equal to itself.")
983+ }
984+ else throw("Strict value is not equal to itself.")
985+ }
986+
987+
988+
989+@Callable(dN)
990+func put (fZ,ga) = {
991+ let gb = be()
992+ let gc = valueOrErrorMessage(addressFromString(gb[A]), "Wr st addr")
993+ let gd = valueOrErrorMessage(addressFromString(gb[C]), "Wr sl addr")
994+ if ((0 > fZ))
952995 then throw("Wrong slippage")
953- else if ((size(cP.payments) != 2))
996+ else if ((size(dN.payments) != 2))
954997 then throw("2 pmnts expd")
955998 else {
956- let gA = toBigInt(value(cP.payments[0]).amount)
957- let gB = toBigInt(value(cP.payments[1]).amount)
958- let eO = (toBigInt(bN(be(bm))) - gA)
959- if ((eO == eO))
999+ let ge = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], fZ, true, false, true, 0, "")
1000+ let ds = ge._2
1001+ let gf = ge._7
1002+ let cJ = ge._9
1003+ let dt = ge._10
1004+ let du = ge._11
1005+ let cr = ge._12
1006+ let cs = ge._13
1007+ let df = invoke(aE, "emit", [ds], nil)
1008+ if ((df == df))
9601009 then {
961- let eP = (toBigInt(bN(be(bn))) - gB)
962- if ((eP == eP))
1010+ let gg = {
1011+ let aw = df
1012+ if ($isInstanceOf(aw, "Address"))
1013+ then {
1014+ let gh = aw
1015+ invoke(gh, "emit", [ds], nil)
1016+ }
1017+ else unit
1018+ }
1019+ if ((gg == gg))
9631020 then {
964- let eQ = toBigInt(value(assetInfo(bl)).quantity)
965- if ((eQ == eQ))
1021+ let gi = if ((dt > 0))
1022+ then invoke(gd, "put", nil, [AttachedPayment(cr, dt)])
1023+ else nil
1024+ if ((gi == gi))
9661025 then {
967- let eR = eK(gA, gB, toBigInt(0))
968- if ((eR == eR))
1026+ let gj = if ((du > 0))
1027+ then invoke(gd, "put", nil, [AttachedPayment(cs, du)])
1028+ else nil
1029+ if ((gj == gj))
9691030 then {
970- let gC = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gv, true, false, true, 0, "")
971- let el = gC._2
972- let gD = gC._7
973- let dB = gC._9
974- let em = gC._10
975- let en = gC._11
976- let dj = gC._12
977- let dk = gC._13
978- let dX = invoke(aQ, "emit", [el], nil)
979- if ((dX == dX))
1031+ let gk = if (ga)
9801032 then {
981- let gE = {
982- let gl = dX
983- if ($isInstanceOf(gl, "Address"))
984- then {
985- let gF = gl
986- invoke(gF, "emit", [el], nil)
987- }
988- else unit
989- }
990- if ((gE == gE))
991- then {
992- let gG = if ((em > 0))
993- then invoke(gz, "put", nil, [AttachedPayment(dj, em)])
994- else nil
995- if ((gG == gG))
996- then {
997- let gH = if ((en > 0))
998- then invoke(gz, "put", nil, [AttachedPayment(dk, en)])
999- else nil
1000- if ((gH == gH))
1001- then {
1002- let gI = if (gw)
1003- then {
1004- let gJ = invoke(gy, "stake", nil, [AttachedPayment(gD, el)])
1005- if ((gJ == gJ))
1006- then nil
1007- else throw("Strict value is not equal to itself.")
1008- }
1009- else [ScriptTransfer(cP.caller, el, gD)]
1010- let gK = eS(0, 0, 0)
1011- let gi = gK._1
1012- let eJ = gK._2
1013- let gL = if ((eJ >= eR))
1014- then true
1015- else aN(makeString(["updated DLp lower than current DLp", toString(eO), toString(eP), toString(eQ), toString(eR), toString(eJ), toString(em), toString(en)], " "))
1016- if ((gL == gL))
1017- then {
1018- let gM = value(assetInfo(bl)).quantity
1019- if ((gM == gM))
1020- then ((dB ++ gI) ++ gi)
1021- else throw("Strict value is not equal to itself.")
1022- }
1023- else throw("Strict value is not equal to itself.")
1024- }
1025- else throw("Strict value is not equal to itself.")
1026- }
1027- else throw("Strict value is not equal to itself.")
1028- }
1033+ let gl = invoke(gc, "stake", nil, [AttachedPayment(gf, ds)])
1034+ if ((gl == gl))
1035+ then nil
10291036 else throw("Strict value is not equal to itself.")
10301037 }
1031- else throw("Strict value is not equal to itself.")
1038+ else [ScriptTransfer(dN.caller, ds, gf)]
1039+ (cJ ++ gk)
10321040 }
10331041 else throw("Strict value is not equal to itself.")
10341042 }
10351043 else throw("Strict value is not equal to itself.")
10361044 }
10371045 else throw("Strict value is not equal to itself.")
10381046 }
10391047 else throw("Strict value is not equal to itself.")
10401048 }
10411049 }
10421050
10431051
10441052
1045-@Callable(cP)
1046-func putOneTknV2 (fM,gw) = {
1047- let gN = {
1048- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1049- if ($isInstanceOf(aS, "Boolean"))
1050- then aS
1051- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1053+@Callable(dN)
1054+func putOneTknV2 (fh,ga) = {
1055+ let gm = {
1056+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1057+ if ($isInstanceOf(aG, "Boolean"))
1058+ then aG
1059+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
10521060 }
1053- let gO = if (if (if (aV())
1061+ let gn = if (if (if (aJ())
10541062 then true
1055- else (bk == q))
1063+ else (aY == o))
10561064 then true
1057- else (bk == s))
1065+ else (aY == q))
10581066 then true
1059- else gN
1060- let gP = [if (if (!(gO))
1067+ else gm
1068+ let fR = [if (if (!(gn))
10611069 then true
1062- else go(cP))
1070+ else fC(dN))
10631071 then true
1064- else aN("put operation is blocked by admin"), if ((size(cP.payments) == 1))
1072+ else aC("put operation is blocked by admin"), if ((size(dN.payments) == 1))
10651073 then true
1066- else aN("exactly 1 payment are expected")]
1067- if ((gP == gP))
1074+ else aC("exactly 1 payment are expected")]
1075+ if ((fR == fR))
10681076 then {
1069- let dj = toBase58String(value(bm))
1070- let dk = toBase58String(value(bn))
1071- let di = bl
1072- let fQ = bo
1073- let fR = bp
1074- let dh = if ((cP.caller == this))
1075- then cP.originCaller
1076- else cP.caller
1077- let fk = value(cP.payments[0])
1078- let df = toBase58String(value(fk.assetId))
1079- let dL = fk.amount
1080- let eR = if ((fk.assetId == bm))
1081- then eK(toBigInt(dL), toBigInt(0), toBigInt(0))
1082- else eK(toBigInt(0), toBigInt(dL), toBigInt(0))
1083- if ((eR == eR))
1077+ let aU = aM()
1078+ let cr = aU[u]
1079+ let cs = aU[v]
1080+ let cq = fromBase58String(aU[t])
1081+ let fl = parseIntValue(aU[w])
1082+ let fm = parseIntValue(aU[x])
1083+ let cp = if ((dN.caller == this))
1084+ then dN.originCaller
1085+ else dN.caller
1086+ let dO = value(dN.payments[0])
1087+ let cn = toBase58String(value(dO.assetId))
1088+ let cT = dO.amount
1089+ let go = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1090+ if ((go == go))
10841091 then {
1085- let gQ = fp(dL, df, toString(dh), toBase58String(cP.transactionId), true)
1086- if ((gQ == gQ))
1092+ let ck = go._3
1093+ let cJ = go._2
1094+ let gp = go._1
1095+ let ds = if (if ((fh > 0))
1096+ then (fh > gp)
1097+ else false)
1098+ then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
1099+ else gp
1100+ let ge = invoke(aE, "emit", [ds], nil)
1101+ if ((ge == ge))
10871102 then {
1088- let cx = gQ._3
1089- let dB = gQ._2
1090- let gR = gQ._1
1091- let el = if (if ((fM > 0))
1092- then (fM > gR)
1093- else false)
1094- then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
1095- else gR
1096- let gC = invoke(aQ, "emit", [el], nil)
1097- if ((gC == gC))
1103+ let gg = {
1104+ let aw = ge
1105+ if ($isInstanceOf(aw, "Address"))
1106+ then {
1107+ let gh = aw
1108+ invoke(gh, "emit", [ds], nil)
1109+ }
1110+ else unit
1111+ }
1112+ if ((gg == gg))
10981113 then {
1099- let gE = {
1100- let gl = gC
1101- if ($isInstanceOf(gl, "Address"))
1102- then {
1103- let gF = gl
1104- invoke(gF, "emit", [el], nil)
1105- }
1106- else unit
1107- }
1108- if ((gE == gE))
1114+ let gk = if (ga)
11091115 then {
1110- let gI = if (gw)
1111- then {
1112- let gJ = invoke(bu, "stake", nil, [AttachedPayment(di, el)])
1113- if ((gJ == gJ))
1114- then nil
1115- else throw("Strict value is not equal to itself.")
1116- }
1117- else [ScriptTransfer(cP.caller, el, di)]
1118- let gc = if ((cx > 0))
1119- then [ScriptTransfer(aX, cx, fromBase58String(df))]
1120- else nil
1121- let gS = if ((this == aX))
1122- then $Tuple2(0, 0)
1123- else {
1124- let gT = if ((fk.assetId == bm))
1125- then true
1126- else false
1127- if (gT)
1128- then $Tuple2(-(cx), 0)
1129- else $Tuple2(0, -(cx))
1130- }
1131- let eT = gS._1
1132- let eU = gS._2
1133- let gU = eS(eT, eU, 0)
1134- let gi = gU._1
1135- let eJ = gU._2
1136- let gj = eW(eR, eJ)
1137- if ((gj == gj))
1138- then $Tuple2((((dB ++ gI) ++ gc) ++ gi), el)
1116+ let gl = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1117+ if ((gl == gl))
1118+ then nil
11391119 else throw("Strict value is not equal to itself.")
11401120 }
1141- else throw("Strict value is not equal to itself.")
1121+ else [ScriptTransfer(dN.caller, ds, cq)]
1122+ let fx = if ((ck > 0))
1123+ then [ScriptTransfer(aL, ck, fromBase58String(cn))]
1124+ else nil
1125+ $Tuple2(((cJ ++ gk) ++ fx), ds)
11421126 }
11431127 else throw("Strict value is not equal to itself.")
11441128 }
11451129 else throw("Strict value is not equal to itself.")
11461130 }
11471131 else throw("Strict value is not equal to itself.")
11481132 }
11491133 else throw("Strict value is not equal to itself.")
11501134 }
11511135
11521136
11531137
1154-@Callable(cP)
1155-func putForFree (gV) = if ((0 > gV))
1138+@Callable(dN)
1139+func putForFree (gq) = if ((0 > gq))
11561140 then throw("Wrong slpg")
1157- else if ((size(cP.payments) != 2))
1141+ else if ((size(dN.payments) != 2))
11581142 then throw("2 pmnts expd")
11591143 else {
1160- let gW = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gV, false, false, true, 0, "")
1161- let dB = gW._9
1162- let gA = toBigInt(value(cP.payments[0]).amount)
1163- let gB = toBigInt(value(cP.payments[1]).amount)
1164- let eR = eK(gA, gB, toBigInt(0))
1165- if ((eR == eR))
1166- then {
1167- let gX = eS(0, 0, 0)
1168- let gi = gX._1
1169- let eJ = gX._2
1170- let gj = eW(eR, eJ)
1171- if ((gj == gj))
1172- then (dB ++ gi)
1173- else throw("Strict value is not equal to itself.")
1174- }
1175- else throw("Strict value is not equal to itself.")
1144+ let gr = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gq, false, false, true, 0, "")
1145+ gr._9
11761146 }
11771147
11781148
11791149
1180-@Callable(cP)
1150+@Callable(dN)
11811151 func get () = {
1182- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1183- if ((eR == eR))
1152+ let df = dM(dN)
1153+ let gs = df._1
1154+ let cI = df._2
1155+ let cT = df._3
1156+ let cn = df._4
1157+ let cJ = df._5
1158+ let eC = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1159+ if ((eC == eC))
1160+ then cJ
1161+ else throw("Strict value is not equal to itself.")
1162+ }
1163+
1164+
1165+
1166+@Callable(dN)
1167+func getOneTknV2 (fg,fh) = {
1168+ let gm = {
1169+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1170+ if ($isInstanceOf(aG, "Boolean"))
1171+ then aG
1172+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
1173+ }
1174+ let gt = if (if (aJ())
1175+ then true
1176+ else (aY == q))
1177+ then true
1178+ else gm
1179+ let fR = [if (if (!(gt))
1180+ then true
1181+ else fC(dN))
1182+ then true
1183+ else aC("get operation is blocked by admin"), if ((size(dN.payments) == 1))
1184+ then true
1185+ else aC("exactly 1 payment are expected")]
1186+ if ((fR == fR))
11841187 then {
1185- let dX = fj(cP)
1186- let gY = dX._1
1187- let dA = dX._2
1188- let dL = dX._3
1189- let df = dX._4
1190- let dB = dX._5
1191- let ey = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1192- if ((ey == ey))
1193- then {
1194- let gZ = eS(-(gY), -(dA), 0)
1195- let gi = gZ._1
1196- let eJ = gZ._2
1197- let gj = eW(eR, eJ)
1198- if ((gj == gj))
1199- then (dB ++ gi)
1200- else throw("Strict value is not equal to itself.")
1201- }
1202- else throw("Strict value is not equal to itself.")
1188+ let gu = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1189+ let cJ = gu._1
1190+ let fq = gu._2
1191+ $Tuple2(cJ, fq)
12031192 }
12041193 else throw("Strict value is not equal to itself.")
12051194 }
12061195
12071196
12081197
1209-@Callable(cP)
1210-func getOneTknV2 (fL,fM) = {
1211- let gN = {
1212- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1213- if ($isInstanceOf(aS, "Boolean"))
1214- then aS
1215- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1216- }
1217- let ha = if (if (aV())
1218- then true
1219- else (bk == s))
1220- then true
1221- else gN
1222- let gP = [if (if (!(ha))
1223- then true
1224- else go(cP))
1225- then true
1226- else aN("get operation is blocked by admin"), if ((size(cP.payments) == 1))
1227- then true
1228- else aN("exactly 1 payment are expected")]
1229- if ((gP == gP))
1230- then {
1231- let hb = fK(fL, fM, cP.payments, cP.caller, cP.originCaller, cP.transactionId)
1232- let dB = hb._1
1233- let fV = hb._2
1234- $Tuple2(dB, fV)
1235- }
1236- else throw("Strict value is not equal to itself.")
1198+@Callable(dN)
1199+func getOneTknV2READONLY (fg,gv) = {
1200+ let aU = aM()
1201+ let cr = aU[u]
1202+ let cs = aU[v]
1203+ let cq = aU[t]
1204+ let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
1205+ let gw = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
1206+ let bM = dT(dU)
1207+ let bL = (bM - fraction(toBigInt(gv), bM, gw))
1208+ let gx = if ((fg == cr))
1209+ then 0
1210+ else if ((fg == cs))
1211+ then 1
1212+ else throw("invalid out asset id")
1213+ let gy = ey(dU, gx, bL)
1214+ let fN = (dU[gx] - gy)
1215+ let fO = max([0, toInt((fN - f))])
1216+ let gz = ch(fO, aH)
1217+ let fp = gz._1
1218+ let ck = gz._2
1219+ $Tuple2(nil, $Tuple2(fp, ck))
12371220 }
12381221
12391222
12401223
1241-@Callable(cP)
1242-func refreshDLp () = {
1243- let hc = valueOrElse(getInteger(aq), 0)
1244- let hd = if (((height - hc) >= at))
1245- then unit
1246- else aN(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1247- if ((hd == hd))
1248- then {
1249- let fd = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aP("invalid dLp"))
1250- let he = eS(0, 0, 0)
1251- let hf = he._1
1252- let eJ = he._2
1253- let eV = if ((fd != eJ))
1254- then hf
1255- else aN("nothing to refresh")
1256- $Tuple2(eV, toString(eJ))
1257- }
1258- else throw("Strict value is not equal to itself.")
1224+@Callable(dN)
1225+func getOneTknV2WithBonusREADONLY (fg,gv) = {
1226+ let aU = aM()
1227+ let cr = aU[u]
1228+ let cs = aU[v]
1229+ let cq = aU[t]
1230+ let cx = bz(cr)
1231+ let cz = bz(cs)
1232+ let gA = {
1233+ let aG = invoke(this, "getOneTknV2READONLY", [fg, gv], nil)
1234+ if ($isInstanceOf(aG, "(Int, Int)"))
1235+ then aG
1236+ else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
1237+ }
1238+ let fp = gA._1
1239+ let ck = gA._2
1240+ let df = cl("", cq, gv, this)
1241+ let cH = df._1
1242+ let cI = df._2
1243+ let gB = (cH + cI)
1244+ let fe = if ((gB == 0))
1245+ then if ((fp == 0))
1246+ then 0
1247+ else throw("bonus calculation error")
1248+ else fraction((fp - gB), a, gB)
1249+ $Tuple2(nil, $Tuple3(fp, ck, fe))
12591250 }
12601251
12611252
12621253
1263-@Callable(cP)
1264-func getOneTknV2READONLY (fL,hg) = {
1265- let dj = toBase58String(value(bm))
1266- let dk = toBase58String(value(bn))
1267- let di = toBase58String(value(bl))
1268- let cz = [toBigInt(bN(dj)), toBigInt(bN(dk))]
1269- let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(di)), "invalid lp asset").quantity)
1270- let cb = cy(cz)
1271- let ca = (cb - fraction(toBigInt(hg), cb, eI))
1272- let hh = if ((fL == dj))
1273- then 0
1274- else if ((fL == dk))
1275- then 1
1276- else throw("invalid out asset id")
1277- let hi = es(cz, hh, ca)
1278- let hj = (cz[hh] - hi)
1279- let hk = max([0, toInt((hj - f))])
1280- let hl = cv(hk, aT)
1281- let fU = hl._1
1282- let cx = hl._2
1283- $Tuple2(nil, $Tuple2(fU, cx))
1284- }
1285-
1286-
1287-
1288-@Callable(cP)
1289-func getOneTknV2WithBonusREADONLY (fL,hg) = {
1290- let dj = toBase58String(value(bm))
1291- let dk = toBase58String(value(bn))
1292- let di = toBase58String(value(bl))
1293- let dp = bN(dj)
1294- let dr = bN(dk)
1295- let hm = {
1296- let aS = invoke(this, "getOneTknV2READONLY", [fL, hg], nil)
1297- if ($isInstanceOf(aS, "(Int, Int)"))
1298- then aS
1299- else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
1300- }
1301- let fU = hm._1
1302- let cx = hm._2
1303- let dX = dd("", di, hg, this)
1304- let dz = dX._1
1305- let dA = dX._2
1306- let hn = (dz + dA)
1307- let fJ = if ((hn == 0))
1308- then if ((fU == 0))
1309- then 0
1310- else throw("bonus calculation error")
1311- else fraction((fU - hn), a, hn)
1312- $Tuple2(nil, $Tuple3(fU, cx, fJ))
1313- }
1314-
1315-
1316-
1317-@Callable(cP)
1318-func getNoLess (ho,hp) = {
1319- let dX = fj(cP)
1320- let dz = dX._1
1321- let dA = dX._2
1322- let dL = dX._3
1323- let df = dX._4
1324- let dB = dX._5
1325- if ((ho > dz))
1326- then throw(((("Failed: " + toString(dz)) + " < ") + toString(ho)))
1327- else if ((hp > dA))
1328- then throw(((("Failed: " + toString(dA)) + " < ") + toString(hp)))
1254+@Callable(dN)
1255+func getNoLess (gC,gD) = {
1256+ let df = dM(dN)
1257+ let cH = df._1
1258+ let cI = df._2
1259+ let cT = df._3
1260+ let cn = df._4
1261+ let cJ = df._5
1262+ if ((gC > cH))
1263+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gC)))
1264+ else if ((gD > cI))
1265+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gD)))
13291266 else {
1330- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1331- if ((eR == eR))
1332- then {
1333- let hq = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1334- if ((hq == hq))
1335- then {
1336- let hr = eS(-(dz), -(dA), 0)
1337- let gi = hr._1
1338- let eJ = hr._2
1339- let gj = eW(eR, eJ)
1340- if ((gj == gj))
1341- then (dB ++ gi)
1342- else throw("Strict value is not equal to itself.")
1343- }
1344- else throw("Strict value is not equal to itself.")
1345- }
1267+ let gE = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1268+ if ((gE == gE))
1269+ then cJ
13461270 else throw("Strict value is not equal to itself.")
13471271 }
13481272 }
13491273
13501274
13511275
1352-@Callable(cP)
1353-func unstakeAndGet (cw) = {
1354- let hs = if ((size(cP.payments) != 0))
1276+@Callable(dN)
1277+func unstakeAndGet (ci) = {
1278+ let gF = if ((size(dN.payments) != 0))
13551279 then throw("No pmnts expd")
13561280 else true
1357- if ((hs == hs))
1281+ if ((gF == gF))
13581282 then {
1359- let ht = bs()
1360- let gD = bl
1361- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1362- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1363- if ((eR == eR))
1283+ let bY = aM()
1284+ let gG = be()
1285+ let gf = fromBase58String(bY[t])
1286+ let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1287+ let gI = invoke(gH, "unstake", [toBase58String(gf), ci], nil)
1288+ if ((gI == gI))
13641289 then {
1365- let hv = invoke(hu, "unstake", [toBase58String(gD), cw], nil)
1366- if ((hv == hv))
1290+ let df = cl(toBase58String(dN.transactionId), toBase58String(gf), ci, dN.caller)
1291+ let cv = parseIntValue(df._9)
1292+ let cJ = df._10
1293+ let gJ = if (if (aJ())
1294+ then true
1295+ else (cv == q))
1296+ then throw(("Blocked: " + toString(cv)))
1297+ else true
1298+ if ((gJ == gJ))
13671299 then {
1368- let dX = dd(toBase58String(cP.transactionId), toBase58String(gD), cw, cP.caller)
1369- let dz = dX._1
1370- let dA = dX._2
1371- let dn = parseIntValue(dX._9)
1372- let dB = dX._10
1373- let hw = if (if (aV())
1374- then true
1375- else (dn == s))
1376- then throw(("Blocked: " + toString(dn)))
1377- else true
1378- if ((hw == hw))
1379- then {
1380- let hx = invoke(aQ, "burn", [cw], [AttachedPayment(gD, cw)])
1381- if ((hx == hx))
1382- then {
1383- let hy = eS(-(dz), -(dA), 0)
1384- let gi = hy._1
1385- let eJ = hy._2
1386- let gj = eW(eR, eJ)
1387- if ((gj == gj))
1388- then (dB ++ gi)
1389- else throw("Strict value is not equal to itself.")
1390- }
1391- else throw("Strict value is not equal to itself.")
1392- }
1300+ let gK = invoke(aE, "burn", [ci], [AttachedPayment(gf, ci)])
1301+ if ((gK == gK))
1302+ then cJ
13931303 else throw("Strict value is not equal to itself.")
13941304 }
13951305 else throw("Strict value is not equal to itself.")
13961306 }
13971307 else throw("Strict value is not equal to itself.")
13981308 }
13991309 else throw("Strict value is not equal to itself.")
14001310 }
14011311
14021312
14031313
1404-@Callable(cP)
1405-func unstakeAndGetNoLess (hz,hA,hp) = {
1406- let ha = if (aV())
1314+@Callable(dN)
1315+func unstakeAndGetNoLess (gL,gM,gD) = {
1316+ let gt = if (aJ())
14071317 then true
1408- else (bk == s)
1409- let gP = [if (!(ha))
1318+ else (aY == q)
1319+ let fR = [if (!(gt))
14101320 then true
1411- else throw("get operation is blocked by admin"), if ((size(cP.payments) == 0))
1321+ else throw("get operation is blocked by admin"), if ((size(dN.payments) == 0))
14121322 then true
14131323 else throw("no payments are expected")]
1414- if ((gP == gP))
1324+ if ((fR == fR))
14151325 then {
1416- let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1417- if ((eR == eR))
1326+ let gI = invoke(bg, "unstake", [toBase58String(aZ), gL], nil)
1327+ if ((gI == gI))
14181328 then {
1419- let hv = invoke(bu, "unstake", [toBase58String(bl), hz], nil)
1420- if ((hv == hv))
1329+ let gN = cl(toBase58String(dN.transactionId), toBase58String(aZ), gL, dN.caller)
1330+ let cH = gN._1
1331+ let cI = gN._2
1332+ let cJ = gN._10
1333+ let gO = [if ((cH >= gM))
1334+ then true
1335+ else throw(makeString(["amount asset amount to receive is less than ", toString(gM)], "")), if ((cI >= gD))
1336+ then true
1337+ else throw(makeString(["price asset amount to receive is less than ", toString(gD)], ""))]
1338+ if ((gO == gO))
14211339 then {
1422- let hB = dd(toBase58String(cP.transactionId), toBase58String(bl), hz, cP.caller)
1423- let dz = hB._1
1424- let dA = hB._2
1425- let dB = hB._10
1426- let hC = [if ((dz >= hA))
1427- then true
1428- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((dA >= hp))
1429- then true
1430- else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1431- if ((hC == hC))
1432- then {
1433- let hq = invoke(aQ, "burn", [hz], [AttachedPayment(bl, hz)])
1434- if ((hq == hq))
1435- then {
1436- let hD = eS(-(dz), -(dA), 0)
1437- let gi = hD._1
1438- let eJ = hD._2
1439- let gj = eW(eR, eJ)
1440- if ((gj == gj))
1441- then (dB ++ gi)
1442- else throw("Strict value is not equal to itself.")
1443- }
1444- else throw("Strict value is not equal to itself.")
1445- }
1340+ let gE = invoke(aE, "burn", [gL], [AttachedPayment(aZ, gL)])
1341+ if ((gE == gE))
1342+ then cJ
14461343 else throw("Strict value is not equal to itself.")
14471344 }
14481345 else throw("Strict value is not equal to itself.")
14491346 }
14501347 else throw("Strict value is not equal to itself.")
14511348 }
14521349 else throw("Strict value is not equal to itself.")
14531350 }
14541351
14551352
14561353
1457-@Callable(cP)
1458-func unstakeAndGetOneTknV2 (hz,fL,fM) = {
1459- let gN = {
1460- let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1461- if ($isInstanceOf(aS, "Boolean"))
1462- then aS
1463- else throw(($getType(aS) + " couldn't be cast to Boolean"))
1354+@Callable(dN)
1355+func unstakeAndGetOneTknV2 (gL,fg,fh) = {
1356+ let gm = {
1357+ let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1358+ if ($isInstanceOf(aG, "Boolean"))
1359+ then aG
1360+ else throw(($getType(aG) + " couldn't be cast to Boolean"))
14641361 }
1465- let ha = if (if (aV())
1362+ let gt = if (if (aJ())
14661363 then true
1467- else (bk == s))
1364+ else (aY == q))
14681365 then true
1469- else gN
1470- let gP = [if (if (!(ha))
1366+ else gm
1367+ let fR = [if (if (!(gt))
14711368 then true
1472- else go(cP))
1369+ else fC(dN))
14731370 then true
1474- else aN("get operation is blocked by admin"), if ((size(cP.payments) == 0))
1371+ else aC("get operation is blocked by admin"), if ((size(dN.payments) == 0))
14751372 then true
1476- else aN("no payments are expected")]
1477- if ((gP == gP))
1373+ else aC("no payments are expected")]
1374+ if ((fR == fR))
14781375 then {
1479- let ht = bs()
1480- let gD = bl
1481- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1482- let hv = invoke(hu, "unstake", [toBase58String(gD), hz], nil)
1483- if ((hv == hv))
1376+ let bY = aM()
1377+ let gG = be()
1378+ let gf = fromBase58String(bY[t])
1379+ let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1380+ let gI = invoke(gH, "unstake", [toBase58String(gf), gL], nil)
1381+ if ((gI == gI))
14841382 then {
1485- let hE = fK(fL, fM, [AttachedPayment(gD, hz)], cP.caller, cP.originCaller, cP.transactionId)
1486- let dB = hE._1
1487- let fV = hE._2
1488- $Tuple2(dB, fV)
1383+ let gP = ff(fg, fh, [AttachedPayment(gf, gL)], dN.caller, dN.originCaller, dN.transactionId)
1384+ let cJ = gP._1
1385+ let fq = gP._2
1386+ $Tuple2(cJ, fq)
14891387 }
14901388 else throw("Strict value is not equal to itself.")
14911389 }
14921390 else throw("Strict value is not equal to itself.")
14931391 }
14941392
14951393
14961394
1497-@Callable(cP)
1498-func putOneTknV2WithBonusREADONLY (hF,hG) = {
1499- let hH = fp(hF, hG, "", "", true)
1500- let fE = hH._1
1501- let dB = hH._2
1502- let cx = hH._3
1503- let fJ = hH._4
1504- $Tuple2(nil, $Tuple3(fE, cx, fJ))
1395+@Callable(dN)
1396+func putOneTknV2WithBonusREADONLY (gQ,gR) = {
1397+ let aU = aM()
1398+ let cr = aU[u]
1399+ let cs = aU[v]
1400+ let cq = aU[t]
1401+ let gS = eI(gQ, gR, "", "", true)
1402+ let eZ = gS._1
1403+ let cJ = gS._2
1404+ let ck = gS._3
1405+ let fe = gS._4
1406+ $Tuple2(nil, $Tuple3(eZ, ck, fe))
15051407 }
15061408
15071409
15081410
1509-@Callable(cP)
1510-func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1511- let hI = fp(hF, hG, "", "", false)
1512- let fE = hI._1
1513- let dB = hI._2
1514- let cx = hI._3
1515- let fJ = hI._4
1516- $Tuple2(nil, $Tuple3(fE, cx, fJ))
1411+@Callable(dN)
1412+func putOneTknV2WithoutTakeFeeREADONLY (gQ,gR) = {
1413+ let aU = aM()
1414+ let cr = aU[u]
1415+ let cs = aU[v]
1416+ let cq = aU[t]
1417+ let gT = eI(gQ, gR, "", "", false)
1418+ let eZ = gT._1
1419+ let cJ = gT._2
1420+ let ck = gT._3
1421+ let fe = gT._4
1422+ $Tuple2(nil, $Tuple3(eZ, ck, fe))
15171423 }
15181424
15191425
15201426
1521-@Callable(cP)
1522-func activate (hJ,hK) = if ((toString(cP.caller) != toString(aQ)))
1427+@Callable(dN)
1428+func activate (gU,gV) = if ((toString(dN.caller) != toString(aE)))
15231429 then throw("denied")
1524- else $Tuple2([StringEntry(aj(), hJ), StringEntry(ak(), hK)], "success")
1430+ else $Tuple2([StringEntry(ac(), gU), StringEntry(ad(), gV)], "success")
15251431
15261432
15271433
1528-@Callable(cP)
1529-func setS (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1530- then gn
1531- else [StringEntry(hL, hw)]
1434+@Callable(dN)
1435+func setS (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1436+ then fB
1437+ else [StringEntry(gW, gJ)]
15321438
15331439
15341440
1535-@Callable(cP)
1536-func setI (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1537- then gn
1538- else [IntegerEntry(hL, hw)]
1441+@Callable(dN)
1442+func setI (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1443+ then fB
1444+ else [IntegerEntry(gW, gJ)]
15391445
15401446
15411447
1542-@Callable(cP)
1543-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aY())
1448+@Callable(dN)
1449+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aM())
15441450
15451451
15461452
1547-@Callable(cP)
1548-func getAccBalanceWrapperREADONLY (bO) = $Tuple2(nil, bN(bO))
1453+@Callable(dN)
1454+func getAccBalanceWrapperREADONLY (bA) = $Tuple2(nil, bz(bA))
15491455
15501456
15511457
1552-@Callable(cP)
1553-func calcPricesWrapperREADONLY (ch,ci,cm) = {
1554- let hM = cl(ch, ci, cm)
1555- $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
1458+@Callable(dN)
1459+func calcPricesWrapperREADONLY (bS,bT,bX) = {
1460+ let gX = bW(bS, bT, bX)
1461+ $Tuple2(nil, [toString(gX[0]), toString(gX[1]), toString(gX[2])])
15561462 }
15571463
15581464
15591465
1560-@Callable(cP)
1561-func fromX18WrapperREADONLY (M,hN) = $Tuple2(nil, L(parseBigIntValue(M), hN))
1466+@Callable(dN)
1467+func fromX18WrapperREADONLY (J,gY) = $Tuple2(nil, I(parseBigIntValue(J), gY))
15621468
15631469
15641470
1565-@Callable(cP)
1566-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1471+@Callable(dN)
1472+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15671473
15681474
15691475
1570-@Callable(cP)
1571-func calcPriceBigIntWrapperREADONLY (bQ,bR) = $Tuple2(nil, toString(bP(parseBigIntValue(bQ), parseBigIntValue(bR))))
1476+@Callable(dN)
1477+func calcPriceBigIntWrapperREADONLY (bC,bD) = $Tuple2(nil, toString(bB(parseBigIntValue(bC), parseBigIntValue(bD))))
15721478
15731479
15741480
1575-@Callable(cP)
1576-func estimatePutOperationWrapperREADONLY (de,bW,dD,dE,dF,dG,hO,dH,dI) = $Tuple2(nil, dC(de, bW, dD, dE, dF, dG, hO, dH, dI, true, false, 0, ""))
1481+@Callable(dN)
1482+func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,gZ,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, gZ, cP, cQ, true, false, 0, ""))
15771483
15781484
15791485
1580-@Callable(cP)
1581-func estimateGetOperationWrapperREADONLY (de,hP,dg,hO) = {
1582- let dX = dd(de, hP, dg, addressFromStringValue(hO))
1583- $Tuple2(nil, $Tuple10(dX._1, dX._2, dX._3, dX._4, dX._5, dX._6, dX._7, toString(dX._8), dX._9, dX._10))
1486+@Callable(dN)
1487+func estimateGetOperationWrapperREADONLY (cm,ha,co,gZ) = {
1488+ let df = cl(cm, ha, co, addressFromStringValue(gZ))
1489+ $Tuple2(nil, $Tuple10(df._1, df._2, df._3, df._4, df._5, df._6, df._7, toString(df._8), df._9, df._10))
15841490 }
15851491
15861492
1587-@Verifier(hQ)
1588-func hR () = {
1589- let hS = {
1590- let gl = gk()
1591- if ($isInstanceOf(gl, "ByteVector"))
1493+@Verifier(hb)
1494+func hc () = {
1495+ let hd = {
1496+ let aw = fz()
1497+ if ($isInstanceOf(aw, "ByteVector"))
15921498 then {
1593- let gp = gl
1594- gp
1499+ let fD = aw
1500+ fD
15951501 }
1596- else if ($isInstanceOf(gl, "Unit"))
1597- then hQ.senderPublicKey
1502+ else if ($isInstanceOf(aw, "Unit"))
1503+ then hb.senderPublicKey
15981504 else throw("Match error")
15991505 }
1600- let gl = hQ
1601- if ($isInstanceOf(gl, "Order"))
1506+ let aw = hb
1507+ if ($isInstanceOf(aw, "Order"))
16021508 then {
1603- let eZ = gl
1604- let hT = aW()
1605- let hU = eY(eZ)
1606- let aF = hU._1
1607- let aG = hU._2
1608- let aH = sigVerify(eZ.bodyBytes, eZ.proofs[0], eZ.senderPublicKey)
1609- let aI = sigVerify(eZ.bodyBytes, eZ.proofs[1], hT)
1610- if (if (if (aF)
1611- then aH
1509+ let dA = aw
1510+ let he = aK()
1511+ let hf = dz(dA)
1512+ let hg = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1513+ let hh = sigVerify(dA.bodyBytes, dA.proofs[1], he)
1514+ if (if (if (hf)
1515+ then hg
16121516 else false)
1613- then aI
1517+ then hh
16141518 else false)
16151519 then true
1616- else aE(aF, aG, aH, aI)
1520+ else ar(hf, hg, hh)
16171521 }
1618- else if ($isInstanceOf(gl, "SetScriptTransaction"))
1522+ else if ($isInstanceOf(aw, "SetScriptTransaction"))
16191523 then {
1620- let cC = gl
1621- if (sigVerify(hQ.bodyBytes, hQ.proofs[0], hS))
1524+ let ea = aw
1525+ let hi = blake2b256(value(ea.script))
1526+ let hj = fromBase64String(value(getString(aE, ap())))
1527+ let hk = scriptHash(this)
1528+ if (if ((hj == hi))
1529+ then (hk != hi)
1530+ else false)
16221531 then true
1623- else {
1624- let hV = blake2b256(value(cC.script))
1625- let hW = fromBase64String(value(getString(aQ, aC())))
1626- let hX = scriptHash(this)
1627- if ((hW == hV))
1628- then (hX != hV)
1629- else false
1630- }
1532+ else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
16311533 }
1632- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1534+ else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
16331535 }
16341536

github/deemru/w8io/169f3d6 
329.83 ms