tx · EPkEm2qeyB8TNat9gJ8LyBqy4muMstFhxK4aBoahZhUm

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.04100000 Waves

2023.05.10 14:22 [3637189] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "EPkEm2qeyB8TNat9gJ8LyBqy4muMstFhxK4aBoahZhUm", "fee": 4100000, "feeAssetId": null, "timestamp": 1683717735853, "version": 2, "chainId": 87, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "WPN6w5a5Gb5R8ayydEpkW4n8raovM6FUVSNdG3a5wsbg3aDoyuRiYgFm4M81n2DWYh1rAV4emXTQL4173KSnUe8" ], "script": "base64:BgKxLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4Njg2ODkxNSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEmNmZ0luQW1vdW50QXNzZWRJZCIRY2ZnSW5QcmljZUFzc2V0SWQiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzQyMDEzNDY4IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgZjaGVja0QiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDIxMzA3MjE2NTIiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMjg0NzIyODY3IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIzMTc0MjMyMjEiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNTQxOTI1NjMxIgNkTHAiDSR0MDI1OTczMjYwNzMiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyODcyOTI5MTkxIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjkxOTcyOTM3MyILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyOTM3NzI5NjMxIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzE3NDMzMTg1NCIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMjA0NDMyMzUxIgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMzMTM2MzM0ODYiEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMzNDg5MzM1OTciEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyICcGQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgRnZXRZIglpc1JldmVyc2UiE3Bvb2xBbW91bnRJbkJhbGFuY2UiDSR0MDM1MDg0MzUxMDQiDSR0MDM1NDM1MzU0ODIiE3NraXBPcmRlclZhbGlkYXRpb24iDWNsZWFuQW1vdW50SW4iDWZlZVBvb2xBbW91bnQiDSR0MDM1ODM0MzYyNTgiCGFzc2V0T3V0IgJkeSILdG90YWxHZXRSYXciBW5ld1hwIgRuZXdEIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiBmNoZWNrcyIHYXNzZXRJbiINJHQwMzc2OTQzODA4OCIIY2hlY2tNaW4iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDA0MjIzMjQyMzc0IgVjaGVjayIUbHBBc3NldEVtaXNzaW9uQWZ0ZXIiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIg0kdDA0NDAxNTQ0MTczIgdlc3RpbUxQIg0kdDA0NTA1ODQ1NDA3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwNDU0MTA0NTUxOCIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0NjU0ODQ2NjEzIglvdXRBbXRBbXQiDSR0MDQ3Nzg2NDc4NjgiDWlzR2V0RGlzYWJsZWQiDSR0MDQ4NDg2NDg2NDEiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQ5MTY1NDkyMjkiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIg0kdDA1MDIzOTUwMjk0Ig0kdDA1MDY2OTUwNzg0Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDUxOTUwNTIwMzEiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA1MzA1ODUzMTM5Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA1NDM5MDU0NDcxIhdscEFzc2V0UmVjaXBpZW50QWRkcmVzcyINJHQwNTU0OTM1NTY4MSIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDU1ODA5NTU5MTIiDSR0MDU2MDYwNTYxNjQiCGFtdEFzU3RyIgdwckFzU3RyIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgNjZmciDSR0MDU4NTE4NTg3MTciBGxpc3QiBWRlbGF5IgVkZWx0YSIGdGFyZ2V0IgZjdXJBbXAiCW5ld0FtcFJhdyIGbmV3QW1wIghsYXN0Q2FsbCIEd2FpdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTY1MDU5NzY3IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iGAQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUkBSgkAvAIDBQFJBQFjBQFKAQFMAgFNAU4JAKADAQkAvAIDBQFNCQC2AgEFAU4FAWMBAU8DAU0BTgFQCQCgAwEJAL0CBAUBTQkAtgIBBQFOBQFjBQFQAQFRAgFJAUoJALwCAwUBSQUBYwkAtgIBBQFKAQFSAgFNAU4JALwCAwUBTQkAtgIBBQFOBQFjAQFTAwFUAVUBVgkAawMFAVQFAVUFAVYBAVcBAU0DCQC/AgIFAWQFAU0JAL4CAQUBTQUBTQEBWAEBTQMJAL8CAgUBZAUBTQkAvgIBBQFNBQFNAQFZAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBWgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhYQACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJhYgACESVzJXNfX3ByaWNlX19sYXN0AQJhYwICYWQCYWUJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQJhZAkAzAgCCQCkAwEFAmFlBQNuaWwFAW4BAmFmAgJhZwJhaAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFnAgJfXwUCYWgBAmFpAgJhZwJhaAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFnAgJfXwUCYWgBAmFqAAIPJXNfX2Ftb3VudEFzc2V0AQJhawACDiVzX19wcmljZUFzc2V0AQJhbAACByVzX19hbXABAmFtAQJhbgkArAICAgslcyVkX19hbXBfXwkApAMBBQJhbgECYW8AAhUlc19fY2hhbmdlQW1wTGFzdENhbGwAAmFwAgclc19fZmVlAAJhcQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhcAUBRwACYXIJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYXMJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYXQJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXUAHgACYXYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXQFAmF1AQJhdwACESVzX19mYWN0b3J5Q29uZmlnAQJheAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXkCAmF6AmFBCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhegICX18FAmFBAghfX2NvbmZpZwECYUIBAmFDCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFDAQJhRAACDCVzX19zaHV0ZG93bgECYUUAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUYAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUcBAmFICQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwUCYUgBAmFJBAJhSgJhSwJhTAJhTQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUoCAiAoBQJhSwIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTAIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU0BAmFOAQJhTwQCYVAJAKYIAQUCYU8DCQABAgUCYVACB0FkZHJlc3MEAmFRBQJhUAUCYVEFBHRoaXMBAmFSAAQCYVMEAmFQCQCiCAEJAQFZAAMJAAECBQJhUAIGU3RyaW5nBAJhVAUCYVAJAQJhTgEFAmFUBQR0aGlzBAJhUAkAnQgCBQJhUwkBAmFhAAMJAAECBQJhUAIGU3RyaW5nBAJhVQUCYVAJAQJhTgEFAmFVBQR0aGlzAQJhVgICYVcCYVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhVwUCYVgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVcJAMwIAgIBLgkAzAgCBQJhWAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhWQICYVcCYVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhVwUCYVgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVcJAMwIAgIBLgkAzAgCBQJhWAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhWgECYmEJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJhBQNuaWwCASABAmJiAQJiYQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJiYQUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFWAgUEdGhpcwkBAVkAAAJiYwoAAmJkCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmQCA0ludAUCYmQJAAIBCQCsAgIJAAMBBQJiZAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZQoAAmJkCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJkAgNJbnQFAmJkCQACAQkArAICCQADAQUCYmQCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmYJAQJhVgIFBHRoaXMJAQJhbAABAmJnAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVAkBAmFEAAcBAmJoAAkA2QQBCQECYVYCBQJhVAkBAmF4AAACYmkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhVgIFAmFUCQECYUYAAQJiagAEAmJrCQECYVYCBQR0aGlzCQECYWoABAJibAkBAmFWAgUEdGhpcwkBAmFrAAQCYm0JAQJhWQIFAmFUCQECYUIBBQJibAQCYXoJAQJhWQIFAmFUCQECYUIBBQJiawkAtQkCCQECYVYCBQJhVAkBAmF5AgkApAMBBQJhegkApAMBBQJibQUBbgECYm4BAmJvAwkAAAIFAmJvBQFrBQR1bml0CQDZBAEFAmJvAQJicAECYm8DCQAAAgUCYm8FBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYm8BAmJxAQJicgkAmwoJCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJyBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXUJANkEAQkAkQMCBQJicgUBdgkBAmJuAQkAkQMCBQJicgUBdwkBAmJuAQkAkQMCBQJicgUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJyBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXoJANkEAQkAkQMCBQJicgUBQQkA2QQBCQCRAwIFAmJyBQFCAAJicwkBAmJxAQkBAmJqAAACYnQFAmJzAAJidQgFAmJ0Al8xAAJidggFAmJ0Al8yAAJidwgFAmJ0Al8zAAJieAgFAmJ0Al80AAJieQgFAmJ0Al81AAJieggFAmJ0Al82AAJiQQgFAmJ0Al83AAJiQggFAmJ0Al84AAJiQwgFAmJ0Al85AQJiRAAJALUJAgkBAmFWAgUCYVQJAQJhdwAFAW4AAmJFCQECYkQAAAJiRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkUFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRQUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkoKAmJLAmJMAmJNAmJOAmJPAmJQAmJRAmJSAmJTAmJUCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMJAMwIAgkApAMBBQJiVAUDbmlsBQFuAQJiVQYCYlYCYlcCYlgCYk4CYlECYlIJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYlgJAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJRCQDMCAIJAKQDAQUCYlIFA25pbAUBbgECYlkBAmJaAwkAAAIFAmJaAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiWgECY2ECAmNiAmNjCQC8AgMFAmNiBQFjBQJjYwECY2QDAmNiAmNjAVAJAL0CBAUCY2IFAWMFAmNjBQFQAQJjZQMCY2YCY2cCY2gEAmNpCQC8AgMJALgCAgUCY2YFAmNnBQFiBQJjZwQCY2oJAL8CAgkAuAICBQJjaAkBAVcBBQJjaQUBZAMJAQEhAQUCY2oJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2kJAJQKAgUCY2oJAJkDAQkAzAgCBQJjZgkAzAgCBQJjZwUDbmlsAQJjawMCY2wCY20CY24EAmNpCQC8AgMFAmNtBQFiBQJjbAQCY28JAL8CAgUCY24FAmNpAwMFAmNvBgkAvwICBQJjbQUCY2wJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNtAgEgCQCmAwEFAmNsAgEgCQCmAwEFAmNpAgEgCQCmAwEFAmNuBQJjbwECY3AEAmNxAmNyAmNzAmN0BAJjdQkBAUgCBQJjcwUCY3EEAmN2CQEBSAIFAmN0BQJjcgkBAmNhAgUCY3YFAmN1AQJjdwMCY3MCY3QCY3gEAmN5BQJiegQCY3oFAmJBBAJjQQkBAmNwBAUCY3kFAmN6BQJjcwUCY3QEAmNjCQEBSAIFAmNzBQJjeQQCY2IJAQFIAgUCY3QFAmN6BAJjQgkBAUgCBQJjeAUBYQQCY0MJAQJjYQIFAmNjBQJjQgQCY0QJAQJjYQIFAmNiBQJjQgkAzAgCBQJjQQkAzAgCBQJjQwkAzAgCBQJjRAUDbmlsAQJjRQMCY3MCY3QCY3gEAmNGCQECY3cDBQJjcwUCY3QFAmN4CQDMCAIJAQFMAgkAkQMCBQJjRgAABQFhCQDMCAIJAQFMAgkAkQMCBQJjRgABBQFhCQDMCAIJAQFMAgkAkQMCBQJjRgACBQFhBQNuaWwBAmNHAgJjSAJhcQQCY0kDCQAAAgUCYXEAAAAACQBrAwUCY0gFAmFxBQFhCQCUCgIJAGUCBQJjSAUCY0kFAmNJAQJjSgECY0sEAmNMCQCRAwIFAmNLAAAEAmNNCQCRAwIFAmNLAAEEAmFVCQC3AgIFAmNMBQJjTQMJAAACBQJhVQUBZQUBZQQCYVEJAQ1wYXJzZUludFZhbHVlAQUCYmYEAmNOCQBoAgUCYVEAAgQCY0YJALwCAwUCY0wFAmNNBQFmBAJjTwkAvAIDBQJjRgUBaQUBZgQCY1AJALwCAwkAtgIBBQJjTgUCYVUFAWYEAmNRCQC2AgEJAGUCBQJjTgABCgECY1IBAmNTBAJjVAkAvAIDBQJjUwUCY1MFAWYEAmNVCQC8AgMFAmNUBQJjUwUBZgQCY1YJALwCAwUCY1UFAWYFAmNPCQC8AgMJALcCAgUCY1AJALwCAwUCY1YFAWcFAWYFAmNTCQC3AgIJALwCAwUCY1EFAmNTBQFmCQC8AgMFAWgFAmNWBQFmCgECY1cCAmNYAmNZAwgFAmNYAl8yBQJjWAQCY1MIBQJjWAJfMQQCY1oJAQJjUgEFAmNTBAJkYQkAuAICBQJjWgkBBXZhbHVlAQUCY1MEAmRiAwkAvwICBQFlBQJkYQkAvgIBBQJkYQUCZGEDCQDAAgIFAWYFAmRiCQCUCgIFAmNaBgkAlAoCBQJjWgcEAmRjCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCZGQKAAJkZQUCZGMKAAJkZgkAkAMBBQJkZQoAAmRnCQCUCgIFAmFVBwoBAmRoAgJkaQJkagMJAGcCBQJkagUCZGYFAmRpCQECY1cCBQJkaQkAkQMCBQJkZQUCZGoKAQJkawICZGkCZGoDCQBnAgUCZGoFAmRmBQJkaQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGsCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCCQECZGgCBQJkZwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY1MIBQJkZAJfMQQCZGwIBQJkZAJfMgMFAmRsBQJjUwkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjUwECZG0EAmRuAmRvAmRwAmRxBAJkcgUCYncEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHUFAmJ6BAJkdgUCYkEEAmR3CQCkAwEFAmJ2BAJkeAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRyBQJkbwkAAgECD1dyb25nIHBtdCBhc3NldAQCZHkJAQJiWQEFAmRzBAJkegkBAUgCBQJkeQUCZHUEAmRBCQECYlkBBQJkdAQCZEIJAQFIAgUCZEEFAmR2BAJkQwkBAmNhAgUCZEIFAmR6BAJkRAkBAUwCBQJkQwUBYQQCZEUJAQFIAgUCZHAFAWEEAmRGCQEBSAIFAmR4BQFhBAJkRwkAvAIDBQJkegUCZEUFAmRGBAJkSAkAvAIDBQJkQgUCZEUFAmRGBAJkSQkBAU8DBQJkRwUCZHUFBUZMT09SBAJkSgkBAU8DBQJkSAUCZHYFBUZMT09SBAJkSwMJAAACBQJkbgIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHEFAmRJAwkAAAIFAmRzAgVXQVZFUwUEdW5pdAkA2QQBBQJkcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcQUCZEoDCQAAAgUCZHQCBVdBVkVTBQR1bml0CQDZBAEFAmR0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZHEFAmRuCQECYlUGBQJkSQUCZEoFAmRwBQJkRAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmREBQNuaWwJAJwKCgUCZEkFAmRKBQJkcwUCZHQFAmR5BQJkQQUCZHgFAmRDBQJkdwUCZEsBAmRMDQJkbgJjaAJkTQJkTgJkTwJkUAJkcQJkUQJkUgJkUwJkVAJkVQJkVgQCZHIFAmJ3BAJkVwkA2AQBCQEFdmFsdWUBBQJieAQCZFgJANgEAQkBBXZhbHVlAQUCYnkEAmRZBQJiQgQCZFoFAmJDBAJlYQUCYnoEAmViBQJiQQQCZHcJAKQDAQUCYnYEAmVjCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRyAghXciBscCBhcwhxdWFudGl0eQQCZHkDBQJkUQkBAmJZAQUCZFcDAwUCZFMJAAACBQJkVgUCZFcHCQBlAgkBAmJZAQUCZFcFAmRVAwUCZFMJAQJiWQEFAmRXCQBlAgkBAmJZAQUCZFcFAmRNBAJkQQMFAmRRCQECYlkBBQJkWAMDBQJkUwkAAAIFAmRWBQJkWAcJAGUCCQECYlkBBQJkWAUCZFUDBQJkUwkBAmJZAQUCZFgJAGUCCQECYlkBBQJkWAUCZE8EAmVkCQEBSAIFAmRNBQJlYQQCZWUJAQFIAgUCZE8FAmViBAJlZgkBAmNhAgUCZWUFAmVkBAJkegkBAUgCBQJkeQUCZWEEAmRCCQEBSAIFAmRBBQJlYgQCY20JAQJjSgEJAMwIAgUCZHoJAMwIAgUCZEIFA25pbAQCZWcDCQAAAgUCZWMAAAQCY2wJAQJjSgEJAMwIAgkAtwICBQJkegUCZWQJAMwIAgkAtwICBQJkQgUCZWUFA25pbAQCZWgDCQC/AgIFAmNsBQJjbQYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVoBQJlaAQCZEMFAWQEAmVpBQFkBAJjQgUCY2wJAJcKBQkBAUwCBQJjQgUBYQkBAUwCBQJlZAUCZWEJAQFMAgUCZWUFAmViCQECY2ECCQC3AgIFAmRCBQJlZQkAtwICBQJkegUCZWQFAmVpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkQwkBAmNhAgUCZEIFAmR6BAJlagkAvAIDCQEBVwEJALgCAgUCZEMFAmVmBQFjBQJkQwQCZWkJAQFIAgUCY2gFAWEDAwMFAmRUCQECIT0CBQJkQwUBZAcJAL8CAgUCZWoFAmVpBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlagIDID4gCQCmAwEFAmVpBAJlawkBAUgCBQJlYwUBYQQCZWwJAL0CBAUCZWQJAQJjZAMFAmRCBQJkegUHQ0VJTElORwUBYwUHQ0VJTElORwQCZW0JAL0CBAUCZWUFAWMJAQJjZAMFAmRCBQJkegUFRkxPT1IFB0NFSUxJTkcEAmVuAwkAvwICBQJlbAUCZWUJAJQKAgUCZW0FAmVlCQCUCgIFAmVkBQJlbAQCZW8IBQJlbgJfMQQCZXAIBQJlbgJfMgQCY2wJAQJjSgEJAMwIAgkAtwICBQJkegUCZW8JAMwIAgkAtwICBQJkQgUCZXAFA25pbAQCZWgDCQC/AgIFAmNsBQJjbQYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVoBQJlaAQCY0IJALwCAwUCZWsJALgCAgUCY2wFAmNtBQJjbQkAlwoFCQEBTwMFAmNCBQFhBQVGTE9PUgkBAU8DBQJlbwUCZWEFB0NFSUxJTkcJAQFPAwUCZXAFAmViBQdDRUlMSU5HBQJkQwUCZWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVxCAUCZWcCXzEEAmVyCAUCZWcCXzIEAmVzCAUCZWcCXzMEAmRECQEBTAIIBQJlZwJfNAUBYQQCZXQJAQFMAggFAmVnAl81BQFhAwkAZwIAAAUCZXEJAAIBAgdMUCA8PSAwBAJldQMJAQEhAQUCZFIAAAUCZXEEAmV2CQBlAgUCZE0FAmVyBAJldwkAZQIFAmRPBQJlcwQCZXgDAwUCZFMJAAACBQJkVgUCZFcHCQCUCgIFAmRVAAADAwUCZFMJAAACBQJkVgUCZFgHCQCUCgIAAAUCZFUJAJQKAgUCZXIFAmVzBAJleQgFAmV4Al8xBAJleggFAmV4Al8yBAJlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIFAmRxBQJkbgkBAmJKCgUCZXkFAmV6BQJldQUCZEQFAmNoBQJldAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXYFAmV3BQNuaWwJAJ8KDQUCZXEFAmV1BQJkRAUCZHkFAmRBBQJlYwUCZHIFAmR3BQJlQQUCZXYFAmV3BQJkTgUCZFABAmVCAwJjSwJjWQJlQwQCZUQFAWcEAmVFCQCRAwIFAmNLAwkAAAIFAmNZAAAAAQAABAJlRgkApwMBBQFsBAJhUQkAuQICCQCnAwEFAmJmBQJlRgQCYVUFAmVFBAJjTgkAuQICBQJhUQUCZUQEAmVHCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZUMFAmVDCQC5AgIFAmVFBQJlRAUCZUMFAmVGCQC5AgIFAmNOBQJlRAQCZUgJALgCAgkAtwICBQJhVQkAugICCQC5AgIFAmVDBQJlRgUCY04FAmVDCgECY1cCAmNYAmVJBAJlSgUCY1gEAmVLCAUCZUoCXzEEAmRsCAUCZUoCXzIDCQECIT0CBQJkbAUEdW5pdAUCY1gEAmVMCQC6AgIJALcCAgkAuQICBQJlSwUCZUsFAmVHCQC3AgIJALkCAgUBZwUCZUsFAmVIBAJlTQkBAVgBCQC4AgIFAmVMCQEFdmFsdWUBBQJlSwMJAMACAgUBZgUCZU0JAJQKAgUCZUwFAmVJCQCUCgIFAmVMBQR1bml0BAJkYwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlTgoAAmRlBQJkYwoAAmRmCQCQAwEFAmRlCgACZGcJAJQKAgUCZUMFBHVuaXQKAQJkaAICZGkCZGoDCQBnAgUCZGoFAmRmBQJkaQkBAmNXAgUCZGkJAJEDAgUCZGUFAmRqCgECZGsCAmRpAmRqAwkAZwIFAmRqBQJkZgUCZGkJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRrAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgkBAmRoAgUCZGcAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUsIBQJlTgJfMQQCZGwIBQJlTgJfMgMJAQIhPQIFAmRsBQR1bml0BQJlSwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlSwECZU8DAmVQAmVRAmVSBAJlUwkAvAIDCQECY0oBCQDMCAIJAQFLAgUCZVAJALYCAQUCYnoJAMwIAgkBAUsCBQJlUQkAtgIBBQJiQQUDbmlsBQFjBQJlUgMJAAACBQJlUgUBZQUBZQUCZVMBAmVUAwJlVQJlVgJlVwQCZVgJALgCAgkAtgIBCQECYlkBCQECYnABBQJieAUCZVUEAmVZCQC4AgIJALYCAQkBAmJZAQkBAmJwAQUCYnkFAmVWBAJlWgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ3CHF1YW50aXR5BQJlVwQCZmEJAQJlTwMFAmVYBQJlWQUCZVoFAmZhAQJmYgMCZmMCZmQCZVcEAmVYCQBkAgkBAmJZAQkBAmJwAQUCYngFAmZjBAJlWQkAZAIJAQJiWQEJAQJicAEFAmJ5BQJmZAQCZVoJAGQCCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQUCZVcEAmVTCQECZU8DCQC2AgEFAmVYCQC2AgEFAmVZCQC2AgEFAmVaBAJmZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXMFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcgkApgMBBQJlUwUDbmlsCQCUCgIFAmZlBQJlUwECZmYCAmZnAmVTAwkAwAICBQJlUwUCZmcGCQECYVoBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmaAECZmkEAmVYCQECYlkBCQECYnABBQJieAQCZVkJAQJiWQEJAQJicAEFAmJ5BAJmaggFAmZpBmFtb3VudAQCZmsJAG4ECAUCZmkGYW1vdW50CAUCZmkFcHJpY2UFAWEFBUZMT09SBAJmbAMJAAACCAUCZmkJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmoJAQEtAQUCZmsJAJQKAgkBAS0BBQJmagUCZmsEAmZjCAUCZmwCXzEEAmZkCAUCZmwCXzIDAwMJAQJiZwAGCQAAAgUCYnYFAXIGCQAAAgUCYnYFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmkJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJieAYJAQIhPQIICAUCZmkJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJ5CQACAQIJV3IgYXNzZXRzBAJmbQkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFyAgEwBAJmbgkBAmZiAwUCZmMFAmZkAAAEAmZvCAUCZm4CXzEEAmZwCAUCZm4CXzIEAmZxCQDAAgIFAmZwBQJmbQQCZnIJALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZm0JAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmcAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVYCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlWQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmMJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmQJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZxBQJmcgECZnMBAmNZAwkBAiE9AgkAkAMBCAUCY1kIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZ0CQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABAJkbwkBBXZhbHVlAQgFAmZ0B2Fzc2V0SWQEAmRVCAUCZnQGYW1vdW50BAJlZwkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbwUCZFUIBQJjWQZjYWxsZXIEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmR3CQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQQCZEsIBQJlZwNfMTADAwkBAmJnAAYJAAACBQJkdwUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmR3CQCXCgUFAmRJBQJkSgUCZFUFAmRvBQJkSwECZnUKAmZ2AmFoAmZ3AmZ4AmNoAmRSAmRTAmRUAmRVAmRWBAJlZwkBAmRMDQUCYWgFAmNoCAkBBXZhbHVlAQUCZncGYW1vdW50CAkBBXZhbHVlAQUCZncHYXNzZXRJZAgJAQV2YWx1ZQEFAmZ4BmFtb3VudAgJAQV2YWx1ZQEFAmZ4B2Fzc2V0SWQFAmZ2CQAAAgUCYWgCAAUCZFIFAmRTBQJkVAUCZFUFAmRWBAJkdwkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzgDAwMJAQJiZwAGCQAAAgUCZHcFAXEGCQAAAgUCZHcFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmR3BQJlZwECZnkFAmZ6AmRvAmRxAmFoAmZBBAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmRyBQJidwQCZWEFAmJ6BAJlYgUCYkEEAmVaCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHICEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZCAwkAvwICBQJlWgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZCBQJmQgQCZHkJAQJiWQEFAmRzBAJkQQkBAmJZAQUCZHQEAmZDAwkAAAIFAmFoAgAJAJQKAgUCZHkFAmRBAwkAAAIFAmRvBQJkcwMJAGYCBQJmegUCZHkJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkeQUCZnoFAmRBAwkAAAIFAmRvBQJkdAMJAGYCBQJmegUCZEEJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmR5CQBlAgUCZEEFAmZ6CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZkQIBQJmQwJfMQQCZkUIBQJmQwJfMgQCZkYDCQAAAgUCZG8FAmRzCQCUCgIFAmZ6AAADCQAAAgUCZG8FAmR0CQCUCgIAAAUCZnoJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZHCAUCZkYCXzEEAmZICAUCZkYCXzIEAmZJAwUCZkEJAJUKAwgJAQJjRwIFAmZHBQJiYwJfMQgJAQJjRwIFAmZIBQJiYwJfMQgJAQJjRwIFAmZ6BQJiYwJfMgkAlQoDBQJmRwUCZkgAAAQCZkoIBQJmSQJfMQQCZksIBQJmSQJfMgQCY0kIBQJmSQJfMwQCZkwJAGQCBQJmRAUCZkoEAmZNCQBkAgUCZkUFAmZLBAJjbQkBAmNKAQkAzAgCCQEBSAIFAmZEBQJiegkAzAgCCQEBSAIFAmZFBQJiQQUDbmlsBAJjbAkBAmNKAQkAzAgCCQEBSAIFAmZMBQJiegkAzAgCCQEBSAIFAmZNBQJiQQUDbmlsBAJlaAMJAL8CAgUCY2wFAmNtBgkBBXRocm93AAMJAAACBQJlaAUCZWgEAmZOCQC9AgQFAmVaCQC4AgIFAmNsBQJjbQUCY20FBUZMT09SBAJkRAkBAUwCCQECY2ECCQEBSAIFAmZNBQJlYgkBAUgCBQJmTAUCZWEFAWEEAmVBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgUCZHEFAmFoCQECYkoKBQJmRwUCZkgJAKADAQUCZk4FAmREAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZk8JAGsDBQJmRQUBYQUCZkQEAmZQCQBrAwUCZnoFAWEJAGQCBQJmTwUBYQQCZlEJAGUCBQJmegUCZlAEAmZSCQC8AgMFAmVaCQC2AgEFAmZRCQC2AgEFAmZFBAJmUwkAoAMBCQC8AgMJALgCAgUCZk4FAmZSBQFiBQJmUgkAlgoECQCgAwEFAmZOBQJlQQUCY0kFAmZTCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmVAYCZlUCZlYCZlcCZnYCZlgCZlkEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ3BAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmZaBQJiegQCZ2EFAmJBBAJnYgUCYnYEAmRxAwkAAAIFAmZ2BQJiSQUCZlgFAmZ2BAJmdAkBBXZhbHVlAQkAkQMCBQJmVwAABAJkbwkBBXZhbHVlAQgFAmZ0B2Fzc2V0SWQEAmRVCAUCZnQGYW1vdW50BAJmYQkBAmVUAwUBZQUBZQUBZQMJAAACBQJmYQUCZmEEAmRuCQDYBAEFAmZZAwkBAiE9AgUCZHIJANgEAQUCZG8JAAIBAghXcm9uZyBMUAQCZHkJAQJiWQEFAmRzBAJkQQkBAmJZAQUCZHQEAmdjCgACYmQJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmVQkAzAgCBQJkVQUDbmlsBQNuaWwDCQABAgUCYmQCCihJbnQsIEludCkFAmJkCQACAQkArAICCQADAQUCYmQCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZ2MFAmdjBAJjSQgFAmdjAl8yBAJnZAgFAmdjAl8xBAJnZQMDCQBmAgUCZlYAAAkAZgIFAmZWBQJnZAcJAQJhWgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlYFA25pbAIABQJnZAQCZ2YDCQAAAgUCZlUFAmRzCQCWCgQFAmdlAAAJAGUCCQBlAgUCZHkFAmdlBQJjSQUCZEEDCQAAAgUCZlUFAmR0CQCWCgQAAAUCZ2UFAmR5CQBlAgkAZQIFAmRBBQJnZQUCY0kJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2cIBQJnZgJfMQQCZ2gIBQJnZgJfMgQCZkwIBQJnZgJfMwQCZk0IBQJnZgJfNAQCZ2kJAQJjYQIJAQFIAgUCZk0FAmdhCQEBSAIFAmZMBQJmWgQCZ2oJAQFMAgUCZ2kFAWEEAmdrAwkAAAIFAmZVAgVXQVZFUwUEdW5pdAkA2QQBBQJmVQQCZ2wDCQBmAgUCY0kAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiaQUCY0kFAmdrBQNuaWwFA25pbAQCZEsJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcQUCZ2UFAmdrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZHEFAmRuCQECYlUGBQJnZwUCZ2gFAmRVBQJnagUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZ2oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdqBQNuaWwFAmdsAwkAAAIFAmRLBQJkSwQCZ20JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZFUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmRVBQNuaWwDCQAAAgUCZ20FAmdtBAJnbgQCZ28DCQAAAgUEdGhpcwUCYmkAAAUCY0kEAmdwAwkAAAIJAQJibgEFAmZVBQJieAYHAwUCZ3AJAJQKAgkBAS0BCQBkAgUCZ2QFAmdvAAAJAJQKAgAACQEBLQEJAGQCBQJnZAUCZ28EAmZjCAUCZ24CXzEEAmZkCAUCZ24CXzIEAmdxCQECZmIDBQJmYwUCZmQAAAQCZ3IIBQJncQJfMQQCZVMIBQJncQJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAJQKAgkAzggCBQJkSwUCZ3IFAmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJndAAEAmd1CQECYVIABAJhUAkAnQgCBQJndQkBAVoAAwkAAQIFAmFQAgZTdHJpbmcEAmFVBQJhUAkA2QQBBQJhVQMJAAECBQJhUAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJndgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJndwECY1kEAmFQCQECZ3QAAwkAAQIFAmFQAgpCeXRlVmVjdG9yBAJneAUCYVAJAAACCAUCY1kPY2FsbGVyUHVibGljS2V5BQJneAMJAAECBQJhUAIEVW5pdAkAAAIIBQJjWQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3kBAmNZBAJhUAkBAmd0AAMJAAECBQJhUAIKQnl0ZVZlY3RvcgQCZ3gFAmFQAwkAAAIIBQJjWQ9jYWxsZXJQdWJsaWNLZXkFAmd4BgUCZ3YDCQABAgUCYVACBFVuaXQDCQAAAggFAmNZBmNhbGxlcgUEdGhpcwYFAmd2CQACAQILTWF0Y2ggZXJyb3IBAmd6AwJnQQJlQwJnQgQCYnIJAQJiagAEAmRzCQCRAwIFAmJyBQF3BAJkdAkAkQMCBQJicgUBeAQCZUQFAWcEAmVGCQCnAwEFAWwEAmFRCQC5AgIJAKcDAQUCYmYFAmVGBAJjSwMJAAACBQJnQQcJAMwIAgkAtwICCQC2AgEJAQJiWQEFAmRzBQJnQgkAzAgCCQC2AgEJAQJiWQEFAmR0BQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiWQEFAmR0BQJnQgkAzAgCCQC2AgEJAQJiWQEFAmRzBQNuaWwEAmVFCQCRAwIFAmNLAAAEAmFVBQJlRQQCY04JALkCAgUCYVEFAmVEBAJlRwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVDBQJlQwkAuQICBQJlRQUCZUQFAmVDBQJlRgkAuQICBQJjTgUCZUQEAmVICQC4AgIJALcCAgUCYVUJALoCAgkAuQICBQJlQwUCZUYFAmNOBQJlQwoBAmNXAgJjWAJlSQQCZ0MFAmNYBAJlSwgFAmdDAl8xBAJkbAgFAmdDAl8yAwkBAiE9AgUCZGwFBHVuaXQFAmNYBAJlTAkAugICCQC3AgIJALkCAgUCZUsFAmVLBQJlRwkAtwICCQC5AgIFAWcFAmVLBQJlSAQCZU0JAQFYAQkAuAICBQJlTAkBBXZhbHVlAQUCZUsDCQDAAgIFAWYFAmVNCQCUCgIFAmVMBQJlSQkAlAoCBQJlTAUEdW5pdAQCZGMJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ0QKAAJkZQUCZGMKAAJkZgkAkAMBBQJkZQoAAmRnCQCUCgIFAmVDBQR1bml0CgECZGgCAmRpAmRqAwkAZwIFAmRqBQJkZgUCZGkJAQJjVwIFAmRpCQCRAwIFAmRlBQJkagoBAmRrAgJkaQJkagMJAGcCBQJkagUCZGYFAmRpCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkawIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIJAQJkaAIFAmRnAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVLCAUCZ0QCXzEEAmRsCAUCZ0QCXzIDCQECIT0CBQJkbAUEdW5pdAUCZUsJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUsBAmdFAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVAkBAmFHAQkApQgBBQR0aGlzBxsCY1kBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ0YCZ0ECZ0cEAmdIAwkAAAIFAmdBBwQCZ0kJAQJhVgIFBHRoaXMJAQJhawAEAmdCCQC3AgIJALYCAQkBAmJZAQkBAmFWAgUEdGhpcwkBAmFqAAkAtgIBBQJnRgkAlAoCBQJnSQUCZ0IEAmdJCQECYVYCBQR0aGlzCQECYWoABAJnQgkAtwICCQC2AgEJAQJiWQEJAQJhVgIFBHRoaXMJAQJhawAJALYCAQUCZ0YJAJQKAgUCZ0kFAmdCBAJnSQgFAmdIAl8xBAJnQggFAmdIAl8yBAJicgkBAmJqAAQCZHMJAJEDAgUCYnIFAXcEAmR0CQCRAwIFAmJyBQF4BAJjSwkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAQCZUMJAQJjSgEFAmNLBAJlSwkBAmd6AwUCZ0EFAmVDCQC2AgEFAmdGBAJnSgkAuAICCQC4AgIJALYCAQkBAmJZAQUCZ0kFAmVLCQC2AgEAAQQCZ0sJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnSgUDbmlsBAJnTAMJAAACBQJnQQcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJZAQUCZHMJALYCAQUCZ0YJALYCAQUCZ0cJAMwIAgkAuAICCQC2AgEJAQJiWQEFAmR0BQJnSgUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlkBBQJkcwUCZ0oJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJZAQUCZHQJALYCAQUCZ0YJALYCAQUCZ0cFA25pbAQCZ00JAQJjSgEFAmdMBAJlaAMJAMACAgUCZ00FAmVDBgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmVDCQDMCAIJAKYDAQUCZ00FA25pbAICX18DCQAAAgUCZWgFAmVoCQCUCgIFA25pbAUCZ0sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnRgJnQQJnTgJnTwJnRwQCZ1AKAAJiZAkA/AcEBQJhVAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJkAgZTdHJpbmcFAmJkCQACAQkArAICCQADAQUCYmQCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ1EJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQFAmdGBgkBAmFaAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNZBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ1AGCQECYVoBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdRBQJnUQQCZnQJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAEAmdSCQECYnABCAUCZnQHYXNzZXRJZAQCZ1MDCQAAAgUCZ0EHBAJnSQkBAmFWAgUEdGhpcwkBAmFrAAQCZ0IJAGUCCQECYlkBBQJnUggJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdJBQJnQgQCZ0kJAQJhVgIFBHRoaXMJAQJhagAEAmdCCQBlAgkBAmJZAQUCZ1IICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnSQUCZ0IEAmdJCAUCZ1MCXzEEAmdCCAUCZ1MCXzIEAmJyCQECYmoABAJkcwkAkQMCBQJicgUBdwQCZHQJAJEDAgUCYnIFAXgEAmNLAwkAAAIFAmdBBwkAzAgCCQC4AgIJALYCAQkBAmJZAQUCZHMJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALgCAgkAtgIBCQECYlkBBQJkdAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZUMJAQJjSgEFAmNLBAJlSwkBAmd6AwUCZ0EFAmVDCQC2AgEAAAQCZ0oJALgCAgkAuAICCQC2AgEJAQJiWQEFAmdJBQJlSwkAtgIBAAEEAmdLCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0oFA25pbAQCZ1QDCQBnAgUCZ0sFAmdOBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdUBQJnVAQCZ0wDCQAAAgUCZ0EHCQDMCAIJALcCAgkAtgIBCQECYlkBBQJkcwkAtgIBBQJnRwkAzAgCCQC4AgIJALYCAQkBAmJZAQUCZHQFAmdKBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiWQEFAmRzBQJnSgkAzAgCCQC3AgIJALYCAQkBAmJZAQUCZHQJALYCAQUCZ0cFA25pbAQCZ00JAQJjSgEFAmdMBAJlaAMJAMACAgUCZ00FAmVDBgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVoBQJlaAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdPBQJnSwkBAmJuAQUCZ0kFA25pbAUCZ0sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBC2NvbnN0cnVjdG9yAQFZBAJlRwkBAmd5AQUCY1kDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQNwdXQCAmdVAmdWBAJnVwkBAmJEAAQCZ1gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdXBQFDAgpXciBzdCBhZGRyBAJnWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ1cFAUUCCldyIHNsIGFkZHIDCQBmAgAABQJnVQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCY1kIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50BAJoYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAQZhbW91bnQEAmVYCQC4AgIJALYCAQkBAmJZAQkBAmJwAQUCYngFAmdaAwkAAAIFAmVYBQJlWAQCZVkJALgCAgkAtgIBCQECYlkBCQECYnABBQJieQUCaGEDCQAAAgUCZVkFAmVZBAJlWgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQMJAAACBQJlWgUCZVoEAmZhCQECZVQDBQJnWgUCaGEJALYCAQAAAwkAAAIFAmZhBQJmYQQCaGIJAQJmdQoJAKUIAQgFAmNZBmNhbGxlcgkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJjWQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCY1kIcGF5bWVudHMAAQUCZ1UGBwYAAAIABAJldQgFAmhiAl8yBAJoYwgFAmhiAl83BAJkSwgFAmhiAl85BAJldggFAmhiA18xMAQCZXcIBQJoYgNfMTEEAmRzCAUCaGIDXzEyBAJkdAgFAmhiA18xMwQCZWcJAPwHBAUCYVQCBGVtaXQJAMwIAgUCZXUFA25pbAUDbmlsAwkAAAIFAmVnBQJlZwQCaGQEAmFQBQJlZwMJAAECBQJhUAIHQWRkcmVzcwQCaGUFAmFQCQD8BwQFAmhlAgRlbWl0CQDMCAIFAmV1BQNuaWwFA25pbAUEdW5pdAMJAAACBQJoZAUCaGQEAmhmAwkAZgIFAmV2AAAJAPwHBAUCZ1kCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcwUCZXYFA25pbAUDbmlsAwkAAAIFAmhmBQJoZgQCaGcDCQBmAgUCZXcAAAkA/AcEBQJnWQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJldwUDbmlsBQNuaWwDCQAAAgUCaGcFAmhnBAJoaAMFAmdWBAJoaQkA/AcEBQJnWAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGMFAmV1BQNuaWwDCQAAAgUCaGkFAmhpBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNZBmNhbGxlcgUCZXUFAmhjBQNuaWwEAmhqCQECZmIDAAAAAAAABAJncggFAmhqAl8xBAJlUwgFAmhqAl8yBAJoawMJAMACAgUCZVMFAmZhBgkBAmFaAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJlWAkAzAgCCQCmAwEFAmVZCQDMCAIJAKYDAQUCZVoJAMwIAgkApgMBBQJmYQkAzAgCCQCmAwEFAmVTCQDMCAIJAKQDAQUCZXYJAMwIAgkApAMBBQJldwUDbmlsAgEgAwkAAAIFAmhrBQJoawQCaGwICQEFdmFsdWUBCQDsBwEFAmJ3CHF1YW50aXR5AwkAAAIFAmhsBQJobAkAzggCCQDOCAIFAmRLBQJoaAUCZ3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBC3B1dE9uZVRrblYyAgJmVgJnVgQCaG0KAAJiZAkA/AcEBQJhVAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJkAgdCb29sZWFuBQJiZAkAAgEJAKwCAgkAAwEFAmJkAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobgMDAwkBAmJnAAYJAAACBQJidgUBcQYJAAACBQJidgUBcwYFAmhtBAJnUQkAzAgCAwMJAQEhAQUCaG4GCQECZ3cBBQJjWQYJAQJhWgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNZCHBheW1lbnRzAAEGCQECYVoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHIFAmJ3BAJmWgUCYnoEAmdhBQJiQQQCZHEDCQAAAggFAmNZBmNhbGxlcgUEdGhpcwgFAmNZDG9yaWdpbkNhbGxlcggFAmNZBmNhbGxlcgQCZnQJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAEAmRvCQDYBAEJAQV2YWx1ZQEIBQJmdAdhc3NldElkBAJkVQgFAmZ0BmFtb3VudAQCZmEDCQAAAggFAmZ0B2Fzc2V0SWQFAmJ4CQECZVQDCQC2AgEFAmRVCQC2AgEAAAkAtgIBAAAJAQJlVAMJALYCAQAACQC2AgEFAmRVCQC2AgEAAAMJAAACBQJmYQUCZmEEAmhvCQECZnkFBQJkVQUCZG8JAKUIAQUCZHEJANgEAQgFAmNZDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmhvBQJobwQCY0kIBQJobwJfMwQCZEsIBQJobwJfMgQCaHAIBQJobwJfMQQCZXUDAwkAZgIFAmZWAAAJAGYCBQJmVgUCaHAHCQECYVoBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZWBQNuaWwCAAUCaHAEAmhiCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmV1BQNuaWwFA25pbAMJAAACBQJoYgUCaGIEAmhkBAJhUAUCaGIDCQABAgUCYVACB0FkZHJlc3MEAmhlBQJhUAkA/AcEBQJoZQIEZW1pdAkAzAgCBQJldQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGQFAmhkBAJoaAMFAmdWBAJoaQkA/AcEBQJiRgIIc3Rha2VGb3IJAMwIAgkApQgBCAUCY1kGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRyBQJldQUDbmlsAwkAAAIFAmhpBQJoaQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjWQZjYWxsZXIFAmV1BQJkcgUDbmlsBAJnbAMJAGYCBQJjSQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJpBQJjSQkA2QQBBQJkbwUDbmlsBQNuaWwEAmhxAwkAAAIFBHRoaXMFAmJpCQCUCgIAAAAABAJocgMJAAACCAUCZnQHYXNzZXRJZAUCYngGBwMFAmhyCQCUCgIJAQEtAQUCY0kAAAkAlAoCAAAJAQEtAQUCY0kEAmZjCAUCaHECXzEEAmZkCAUCaHECXzIEAmhzCQECZmIDBQJmYwUCZmQAAAQCZ3IIBQJocwJfMQQCZVMIBQJocwJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAJQKAgkAzggCCQDOCAIJAM4IAgUCZEsFAmhoBQJnbAUCZ3IFAmV1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQpwdXRGb3JGcmVlAQJodAMJAGYCAAAFAmh0CQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmNZCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmh1CQECZnUKCQClCAEIBQJjWQZjYWxsZXIJANgEAQgFAmNZDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNZCHBheW1lbnRzAAEFAmh0BwcGAAACAAQCZEsIBQJodQJfOQQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNZCHBheW1lbnRzAAAGYW1vdW50BAJoYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1kIcGF5bWVudHMAAQZhbW91bnQEAmZhCQECZVQDBQJnWgUCaGEJALYCAQAAAwkAAAIFAmZhBQJmYQQCaHYJAQJmYgMAAAAAAAAEAmdyCAUCaHYCXzEEAmVTCAUCaHYCXzIEAmdzCQECZmYCBQJmYQUCZVMDCQAAAgUCZ3MFAmdzCQDOCAIFAmRLBQJncgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWQEDZ2V0AAQCZmEJAQJlVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZmEFAmZhBAJlZwkBAmZzAQUCY1kEAmh3CAUCZWcCXzEEAmRKCAUCZWcCXzIEAmRVCAUCZWcCXzMEAmRvCAUCZWcCXzQEAmRLCAUCZWcCXzUEAmVICQD8BwQFAmFUAgRidXJuCQDMCAIFAmRVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJkVQUDbmlsAwkAAAIFAmVIBQJlSAQCaHgJAQJmYgMJAQEtAQUCaHcJAQEtAQUCZEoAAAQCZ3IIBQJoeAJfMQQCZVMIBQJoeAJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQtnZXRPbmVUa25WMgICZlUCZlYEAmhtCgACYmQJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZAIHQm9vbGVhbgUCYmQJAAIBCQCsAgIJAAMBBQJiZAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHkDAwkBAmJnAAYJAAACBQJidgUBcwYFAmhtBAJnUQkAzAgCAwMJAQEhAQUCaHkGCQECZ3cBBQJjWQYJAQJhWgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNZCHBheW1lbnRzAAEGCQECYVoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmh6CQECZlQGBQJmVQUCZlYIBQJjWQhwYXltZW50cwgFAmNZBmNhbGxlcggFAmNZDG9yaWdpbkNhbGxlcggFAmNZDXRyYW5zYWN0aW9uSWQEAmRLCAUCaHoCXzEEAmdlCAUCaHoCXzIJAJQKAgUCZEsFAmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQpyZWZyZXNoRExwAAQCaEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXMAAAQCaEIDCQBnAgkAZQIFBmhlaWdodAUCaEEFAmF2BQR1bml0CQECYVoBCQC5CQIJAMwIAgkApAMBBQJhdgkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaEIFAmhCBAJmbQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXICATAJAQJiYgECC2ludmFsaWQgZExwBAJoQwkBAmZiAwAAAAAAAAQCaEQIBQJoQwJfMQQCZVMIBQJoQwJfMgQCZmUDCQECIT0CBQJmbQUCZVMFAmhECQECYVoBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZmUJAKYDAQUCZVMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZVAmhFBAJkcwkA2AQBCQEFdmFsdWUBBQJieAQCZHQJANgEAQkBBXZhbHVlAQUCYnkEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ3BAJjSwkAzAgCCQC2AgEJAQJiWQEFAmRzCQDMCAIJALYCAQkBAmJZAQUCZHQFA25pbAQCZVIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRyAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjbQkBAmNKAQUCY0sEAmNsCQC4AgIFAmNtCQC8AgMJALYCAQUCaEUFAmNtBQJlUgQCaEYDCQAAAgUCZlUFAmRzAAADCQAAAgUCZlUFAmR0AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaEcJAQJlQgMFAmNLBQJoRgUCY2wEAmdKCQC4AgIJAJEDAgUCY0sFAmhGBQJoRwQCZ0sJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdKBQFmBQNuaWwEAmhICQECY0cCBQJnSwUCYmUEAmdkCAUCaEgCXzEEAmNJCAUCaEgCXzIJAJQKAgUDbmlsCQCUCgIFAmdkBQJjSQJjWQEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlUCaEUEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkdAkA2AQBCQEFdmFsdWUBBQJieQQCZHIJANgEAQkBBXZhbHVlAQUCYncEAmR5CQECYlkBBQJkcwQCZEEJAQJiWQEFAmR0BAJoSQoAAmJkCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlUJAMwIAgUCaEUFA25pbAUDbmlsAwkAAQIFAmJkAgooSW50LCBJbnQpBQJiZAkAAgEJAKwCAgkAAwEFAmJkAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJnZAgFAmhJAl8xBAJjSQgFAmhJAl8yBAJlZwkBAmRtBAIABQJkcgUCaEUFBHRoaXMEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmhKCQBkAgUCZEkFAmRKBAJmUwMJAAACBQJoSgAAAwkAAAIFAmdkAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmdkBQJoSgUBYQUCaEoJAJQKAgUDbmlsCQCVCgMFAmdkBQJjSQUCZlMCY1kBCWdldE5vTGVzcwICaEsCaEwEAmVnCQECZnMBBQJjWQQCZEkIBQJlZwJfMQQCZEoIBQJlZwJfMgQCZFUIBQJlZwJfMwQCZG8IBQJlZwJfNAQCZEsIBQJlZwJfNQMJAGYCBQJoSwUCZEkJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZEkCAyA8IAkApAMBBQJoSwMJAGYCBQJoTAUCZEoJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkSgIDIDwgCQCkAwEFAmhMBAJmYQkBAmVUAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYQUCZmEEAmhNCQD8BwQFAmFUAgRidXJuCQDMCAIFAmRVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJkVQUDbmlsAwkAAAIFAmhNBQJoTQQCaE4JAQJmYgMJAQEtAQUCZEkJAQEtAQUCZEoAAAQCZ3IIBQJoTgJfMQQCZVMIBQJoTgJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZAQ11bnN0YWtlQW5kR2V0AQJjSAQCaE8DCQECIT0CCQCQAwEIBQJjWQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaE8FAmhPBAJoUAkBAmJEAAQCaGMFAmJ3BAJoUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFAFAUMCCldyIHN0IGFkZHIEAmZhCQECZVQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmZhBQJmYQQCaFIJAPwHBAUCaFECB3Vuc3Rha2UJAMwIAgkA2AQBBQJoYwkAzAgCBQJjSAUDbmlsBQNuaWwDCQAAAgUCaFIFAmhSBAJlZwkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJoYwUCY0gIBQJjWQZjYWxsZXIEAmRJCAUCZWcCXzEEAmRKCAUCZWcCXzIEAmR3CQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQQCZEsIBQJlZwNfMTAEAmhTAwMJAQJiZwAGCQAAAgUCZHcFAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkdwYDCQAAAgUCaFMFAmhTBAJoVAkA/AcEBQJhVAIEYnVybgkAzAgCBQJjSAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoYwUCY0gFA25pbAMJAAACBQJoVAUCaFQEAmhVCQECZmIDCQEBLQEFAmRJCQEBLQEFAmRKAAAEAmdyCAUCaFUCXzEEAmVTCAUCaFUCXzIEAmdzCQECZmYCBQJmYQUCZVMDCQAAAgUCZ3MFAmdzCQDOCAIFAmRLBQJncgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWQETdW5zdGFrZUFuZEdldE5vTGVzcwMCaFYCaFcCaEwEAmh5AwkBAmJnAAYJAAACBQJidgUBcwQCZ1EJAMwIAgMJAQEhAQUCaHkGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1kIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmZhCQECZVQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmZhBQJmYQQCaFIJAPwHBAUCYkYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJidwkAzAgCBQJoVgUDbmlsBQNuaWwDCQAAAgUCaFIFAmhSBAJoWAkBAmRtBAkA2AQBCAUCY1kNdHJhbnNhY3Rpb25JZAkA2AQBBQJidwUCaFYIBQJjWQZjYWxsZXIEAmRJCAUCaFgCXzEEAmRKCAUCaFgCXzIEAmRLCAUCaFgDXzEwBAJoWQkAzAgCAwkAZwIFAmRJBQJoVwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoVwUDbmlsAgAJAMwIAgMJAGcCBQJkSgUCaEwGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoTAUDbmlsAgAFA25pbAMJAAACBQJoWQUCaFkEAmhNCQD8BwQFAmFUAgRidXJuCQDMCAIFAmhWBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJoVgUDbmlsAwkAAAIFAmhNBQJoTQQCaFoJAQJmYgMJAQEtAQUCZEkJAQEtAQUCZEoAAAQCZ3IIBQJoWgJfMQQCZVMIBQJoWgJfMgQCZ3MJAQJmZgIFAmZhBQJlUwMJAAACBQJncwUCZ3MJAM4IAgUCZEsFAmdyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNZARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhWAmZVAmZWBAJobQoAAmJkCQD8BwQFAmFUAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmQCB0Jvb2xlYW4FAmJkCQACAQkArAICCQADAQUCYmQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh5AwMJAQJiZwAGCQAAAgUCYnYFAXMGBQJobQQCZ1EJAMwIAgMDCQEBIQEFAmh5BgkBAmd3AQUCY1kGCQECYVoBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWQhwYXltZW50cwAABgkBAmFaAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1EFAmdRBAJoUAkBAmJEAAQCaGMFAmJ3BAJoUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFAFAUMCCldyIHN0IGFkZHIEAmRxCAUCY1kGY2FsbGVyBAJpYQUEdGhpcwQCaFIJAPwHBAUCaFECD3Vuc3Rha2VJTlRFUk5BTAkAzAgCBQJoYwkAzAgCBQJoVgkAzAgCCAUCZHEFYnl0ZXMJAMwIAggFAmlhBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJoUgUCaFIEAmliCQECZlQGBQJmVQUCZlYJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhjBQJoVgUDbmlsCAUCY1kGY2FsbGVyCAUCY1kMb3JpZ2luQ2FsbGVyCAUCY1kNdHJhbnNhY3Rpb25JZAQCZEsIBQJpYgJfMQQCZ2UIBQJpYgJfMgkAlAoCBQJkSwUCZ2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1kBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmljAmlkBAJpZQkBAmZ5BQUCaWMFAmlkAgACAAYEAmZOCAUCaWUCXzEEAmRLCAUCaWUCXzIEAmNJCAUCaWUCXzMEAmZTCAUCaWUCXzQJAJQKAgUDbmlsCQCVCgMFAmZOBQJjSQUCZlMCY1kBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaWMCaWQEAmlmCQECZnkFBQJpYwUCaWQCAAIABwQCZk4IBQJpZgJfMQQCZEsIBQJpZgJfMgQCY0kIBQJpZgJfMwQCZlMIBQJpZgJfNAkAlAoCBQNuaWwJAJUKAwUCZk4FAmNJBQJmUwJjWQEIYWN0aXZhdGUCAmlnAmloAwkBAiE9AgkApQgBCAUCY1kGY2FsbGVyCQClCAEFAmFUCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAAUCaWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCaWgFA25pbAIHc3VjY2VzcwJjWQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmoAAmNZARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiWgkAlAoCBQNuaWwJAQJiWQEFAmJaAmNZARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjcwJjdAJjeAQCaWkJAQJjdwMFAmNzBQJjdAUCY3gJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJpaQAACQDMCAIJAKYDAQkAkQMCBQJpaQABCQDMCAIJAKYDAQkAkQMCBQJpaQACBQNuaWwCY1kBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAU0CaWoJAJQKAgUDbmlsCQEBTAIJAKcDAQUBTQUCaWoCY1kBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJjWQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJjYgJjYwkAlAoCBQNuaWwJAKYDAQkBAmNhAgkApwMBBQJjYgkApwMBBQJjYwJjWQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRuAmNoAmRNAmROAmRPAmRQAmlrAmRRAmRSCQCUCgIFA25pbAkBAmRMDQUCZG4FAmNoBQJkTQUCZE4FAmRPBQJkUAUCaWsFAmRRBQJkUgYHAAACAAJjWQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRuAmlsAmRwAmlrBAJlZwkBAmRtBAUCZG4FAmlsBQJkcAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaWsJAJQKAgUDbmlsCQCcCgoIBQJlZwJfMQgFAmVnAl8yCAUCZWcCXzMIBQJlZwJfNAgFAmVnAl81CAUCZWcCXzYIBQJlZwJfNwkApgMBCAUCZWcCXzgIBQJlZwJfOQgFAmVnA18xMAJjWQEJY2hhbmdlQW1wAAQCaW0JAPwHBAUCYVQCGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwEAmluBAJhUAUCaW0DCQABAgUCYVACCUxpc3RbQW55XQQCaW8FAmFQCQCVCgMKAAJiZAkAkQMCBQJpbwAAAwkAAQIFAmJkAgNJbnQFAmJkCQACAQkArAICCQADAQUCYmQCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJkCQCRAwIFAmlvAAEDCQABAgUCYmQCA0ludAUCYmQJAAIBCQCsAgIJAAMBBQJiZAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgACYmQJAJEDAgUCaW8AAgMJAAECBQJiZAIDSW50BQJiZAkAAgEJAKwCAgkAAwEFAmJkAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQJhWgECEmludmFsaWQgZW50cnkgdHlwZQQCaXAIBQJpbgJfMQQCaXEIBQJpbgJfMgQCaXIIBQJpbgJfMwQCaXMJAQ1wYXJzZUludFZhbHVlAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFsAAQCaXQJAGQCBQJpcwUCaXEEAml1AwkAZgIAAAUCaXEDCQBmAgUCaXIFAml0BQJpcgUCaXQDCQBmAgUCaXQFAmlyBQJpcgUCaXQEAml2CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhbwAAAAQCaXcJAGQCBQJpdgUCaXAEAmdRCQDMCAIDCQBmAgUGaGVpZ2h0BQJpdwYJAQJhWgECF3RyeSBhZ2FpbiBpbiBmZXcgYmxvY2tzCQDMCAIDCQECIT0CBQJpcwUCaXUGCQECYVoBAhZhbHJlYWR5IHJlYWNoZWQgdGFyZ2V0BQNuaWwDCQAAAgUCZ1EFAmdRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8ABQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAkApAMBBQJpdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYW0BBQZoZWlnaHQJAKQDAQUCaXUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaXgBAml5AAQCaXoEAmFQCQECZ3QAAwkAAQIFAmFQAgpCeXRlVmVjdG9yBAJneAUCYVAFAmd4AwkAAQIFAmFQAgRVbml0CAUCaXgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFQBQJpeAMJAAECBQJhUAIFT3JkZXIEAmZpBQJhUAQCaUEJAQJiaAAEAmlCAwkBAmdFAAkAlAoCBgIACQECZmgBBQJmaQQCYUoIBQJpQgJfMQQCYUsIBQJpQgJfMgQCYUwJAPQDAwgFAmZpCWJvZHlCeXRlcwkAkQMCCAUCZmkGcHJvb2ZzAAAIBQJmaQ9zZW5kZXJQdWJsaWNLZXkEAmFNCQD0AwMIBQJmaQlib2R5Qnl0ZXMJAJEDAggFAmZpBnByb29mcwABBQJpQQMDAwUCYUoFAmFMBwUCYU0HBgkBAmFJBAUCYUoFAmFLBQJhTAUCYU0DCQABAgUCYVACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJhVQUCYVADCQD0AwMIBQJpeAlib2R5Qnl0ZXMJAJEDAggFAml4BnByb29mcwAABQJpegYEAmlDCQD2AwEJAQV2YWx1ZQEIBQJhVQZzY3JpcHQEAmlECQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVQJAQJhRQAEAmlFCQDxBwEFBHRoaXMDCQAAAgUCaUQFAmlDCQECIT0CBQJpRQUCaUMHCQD0AwMIBQJpeAlib2R5Qnl0ZXMJAJEDAggFAml4BnByb29mcwAABQJpek7bkhU=", "height": 3637189, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DiVZQE6C8A8A4jZEXSyPiiv9PenDUf3MxWPN4xgfdcjb Next: CBhM4nEQmu63nfRfsbmB9sAoUEM8kbTLzCX21ros379q Diff:
OldNewDifferences
104104 func Z () = "%s__managerPublicKey"
105105
106106
107-func aa () = "%s__pendingManagerPublicKey"
107+func aa () = "%s__managerVaultAddress"
108108
109109
110110 func ab () = "%s%s__price__last"
131131 func am (an) = ("%s%d__amp__" + toString(an))
132132
133133
134-func ao () = "%s__addonAddr"
134+func ao () = "%s__changeAmpLastCall"
135135
136136
137-func ap () = "%s__changeAmpLastCall"
137+let ap = "%s__fee"
138+
139+let aq = valueOrElse(getInteger(this, ap), G)
140+
141+let ar = makeString(["%s", "dLp"], n)
142+
143+let as = makeString(["%s", "dLpRefreshedHeight"], n)
144+
145+let at = makeString(["%s", "refreshDLpDelay"], n)
146+
147+let au = 30
148+
149+let av = valueOrElse(getInteger(this, at), au)
150+
151+func aw () = "%s__factoryConfig"
138152
139153
140-let aq = "%s__fee"
141-
142-let ar = valueOrElse(getInteger(this, aq), G)
143-
144-let as = makeString(["%s", "dLp"], n)
145-
146-let at = makeString(["%s", "dLpRefreshedHeight"], n)
147-
148-let au = makeString(["%s", "refreshDLpDelay"], n)
149-
150-let av = 30
151-
152-let aw = valueOrElse(getInteger(this, au), av)
153-
154-func ax () = "%s__factoryConfig"
154+func ax () = "%s%s__matcher__publicKey"
155155
156156
157-func ay () = "%s%s__matcher__publicKey"
157+func ay (az,aA) = (((("%d%d%s__" + az) + "__") + aA) + "__config")
158158
159159
160-func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160+func aB (aC) = ("%s%s%s__mappings__baseAsset2internalId__" + aC)
161161
162162
163-func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163+func aD () = "%s__shutdown"
164164
165165
166-func aE () = "%s__shutdown"
166+func aE () = "%s__allowedLpStableScriptHash"
167167
168168
169-func aF () = "%s__allowedLpStableScriptHash"
169+func aF () = "%s__feeCollectorAddress"
170170
171171
172-func aG () = "%s__feeCollectorAddress"
172+func aG (aH) = ("%s%s__skipOrderValidation__" + aH)
173173
174174
175-func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175+func aI (aJ,aK,aL,aM) = throw((((((((("order validation failed: orderValid=" + toString(aJ)) + " (") + aK) + ")") + " senderValid=") + toString(aL)) + " matcherValid=") + toString(aM)))
176176
177177
178-func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
179-
180-
181-func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
182-
183-
184-func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
185-
186-
187-func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
188-
189-
190-func aU (aT) = makeString(["lp_stable.ride:", aT], " ")
191-
192-
193-let aV = addressFromStringValue(aO(this, Y()))
194-
195-let aW = {
196- let aX = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
197- if ($isInstanceOf(aX, "Int"))
198- then aX
199- else throw(($getType(aX) + " couldn't be cast to Int"))
200- }
201-
202-let aY = {
203- let aX = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
204- if ($isInstanceOf(aX, "Int"))
205- then aX
206- else throw(($getType(aX) + " couldn't be cast to Int"))
207- }
208-
209-let aZ = aO(this, al())
210-
211-func ba () = valueOrElse(getBoolean(aV, aE()), false)
212-
213-
214-func bb () = fromBase58String(aO(aV, ay()))
215-
216-
217-let bc = addressFromStringValue(aO(aV, aG()))
218-
219-func bd () = {
220- let be = aO(this, aj())
221- let bf = aO(this, ak())
222- let bg = aR(aV, aC(bf))
223- let aA = aR(aV, aC(be))
224- split(aO(aV, az(toString(aA), toString(bg))), n)
178+func aN (aO) = {
179+ let aP = addressFromString(aO)
180+ if ($isInstanceOf(aP, "Address"))
181+ then {
182+ let aQ = aP
183+ aQ
184+ }
185+ else this
225186 }
226187
227188
228-func bh (bi) = if ((bi == k))
229- then unit
230- else fromBase58String(bi)
231-
232-
233-func bj (bi) = if ((bi == unit))
234- then k
235- else toBase58String(value(bi))
236-
237-
238-func bk (bl) = $Tuple9(addressFromStringValue(bl[t]), parseIntValue(bl[u]), fromBase58String(bl[v]), bh(bl[w]), bh(bl[x]), parseIntValue(bl[y]), parseIntValue(bl[z]), fromBase58String(bl[A]), fromBase58String(bl[B]))
239-
240-
241-let bm = bk(bd())
242-
243-let bn = bm
244-
245-let bo = bn._1
246-
247-let bp = bn._2
248-
249-let bq = bn._3
250-
251-let br = bn._4
252-
253-let bs = bn._5
254-
255-let bt = bn._6
256-
257-let bu = bn._7
258-
259-let bv = bn._8
260-
261-let bw = bn._9
262-
263-func bx () = split(aO(aV, ax()), n)
264-
265-
266-let by = bx()
267-
268-let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
269-
270-let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
271-
272-let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
273-
274-let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
275-
276-func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], n)
277-
278-
279-func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], n)
280-
281-
282-func bS (bT) = if ((bT == "WAVES"))
283- then wavesBalance(this).available
284- else assetBalance(this, fromBase58String(bT))
285-
286-
287-func bU (bV,bW) = fraction(bV, c, bW)
288-
289-
290-func bX (bV,bW,P) = fraction(bV, c, bW, P)
291-
292-
293-func bY (bZ,ca,cb) = {
294- let cc = fraction((bZ - ca), b, ca)
295- let cd = ((cb - W(cc)) > d)
296- if (!(cd))
297- then throw(("Big slpg: " + toString(cc)))
298- else $Tuple2(cd, min([bZ, ca]))
189+func aR () = {
190+ let aS = {
191+ let aP = getString(Y())
192+ if ($isInstanceOf(aP, "String"))
193+ then {
194+ let aT = aP
195+ aN(aT)
196+ }
197+ else this
198+ }
199+ let aP = getString(aS, aa())
200+ if ($isInstanceOf(aP, "String"))
201+ then {
202+ let aU = aP
203+ aN(aU)
204+ }
205+ else this
299206 }
300207
301208
302-func ce (cf,cg,ch) = {
303- let cc = fraction(cg, b, cf)
304- let ci = (ch > cc)
305- if (if (ci)
306- then true
307- else (cg > cf))
308- then throw(((((((toString(cg) + " ") + toString(cf)) + " ") + toString(cc)) + " ") + toString(ch)))
309- else ci
209+func aV (aW,aX) = valueOrErrorMessage(getString(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
210+
211+
212+func aY (aW,aX) = valueOrErrorMessage(getInteger(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
213+
214+
215+func aZ (ba) = throw(makeString(["lp_stable.ride:", ba], " "))
216+
217+
218+func bb (ba) = makeString(["lp_stable.ride:", ba], " ")
219+
220+
221+let aT = addressFromStringValue(aV(this, Y()))
222+
223+let bc = {
224+ let bd = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
225+ if ($isInstanceOf(bd, "Int"))
226+ then bd
227+ else throw(($getType(bd) + " couldn't be cast to Int"))
228+ }
229+
230+let be = {
231+ let bd = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
232+ if ($isInstanceOf(bd, "Int"))
233+ then bd
234+ else throw(($getType(bd) + " couldn't be cast to Int"))
235+ }
236+
237+let bf = aV(this, al())
238+
239+func bg () = valueOrElse(getBoolean(aT, aD()), false)
240+
241+
242+func bh () = fromBase58String(aV(aT, ax()))
243+
244+
245+let bi = addressFromStringValue(aV(aT, aF()))
246+
247+func bj () = {
248+ let bk = aV(this, aj())
249+ let bl = aV(this, ak())
250+ let bm = aY(aT, aB(bl))
251+ let az = aY(aT, aB(bk))
252+ split(aV(aT, ay(toString(az), toString(bm))), n)
310253 }
311254
312255
313-func cj (ck,cl,cm,cn) = {
314- let co = H(cm, ck)
315- let cp = H(cn, cl)
316- bU(cp, co)
256+func bn (bo) = if ((bo == k))
257+ then unit
258+ else fromBase58String(bo)
259+
260+
261+func bp (bo) = if ((bo == unit))
262+ then k
263+ else toBase58String(value(bo))
264+
265+
266+func bq (br) = $Tuple9(addressFromStringValue(br[t]), parseIntValue(br[u]), fromBase58String(br[v]), bn(br[w]), bn(br[x]), parseIntValue(br[y]), parseIntValue(br[z]), fromBase58String(br[A]), fromBase58String(br[B]))
267+
268+
269+let bs = bq(bj())
270+
271+let bt = bs
272+
273+let bu = bt._1
274+
275+let bv = bt._2
276+
277+let bw = bt._3
278+
279+let bx = bt._4
280+
281+let by = bt._5
282+
283+let bz = bt._6
284+
285+let bA = bt._7
286+
287+let bB = bt._8
288+
289+let bC = bt._9
290+
291+func bD () = split(aV(aT, aw()), n)
292+
293+
294+let bE = bD()
295+
296+let bF = valueOrErrorMessage(addressFromString(bE[C]), "Invalid staking contract address")
297+
298+let bG = valueOrErrorMessage(addressFromString(bE[E]), "Invalid slipage contract address")
299+
300+let bH = valueOrErrorMessage(addressFromString(bE[F]), "Invalid gwx contract address")
301+
302+let bI = valueOrErrorMessage(addressFromString(bE[D]), "Invalid gwx contract address")
303+
304+func bJ (bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT)], n)
305+
306+
307+func bU (bV,bW,bX,bN,bQ,bR) = makeString(["%d%d%d%d%d%d", toString(bV), toString(bW), toString(bX), toString(bN), toString(bQ), toString(bR)], n)
308+
309+
310+func bY (bZ) = if ((bZ == "WAVES"))
311+ then wavesBalance(this).available
312+ else assetBalance(this, fromBase58String(bZ))
313+
314+
315+func ca (cb,cc) = fraction(cb, c, cc)
316+
317+
318+func cd (cb,cc,P) = fraction(cb, c, cc, P)
319+
320+
321+func ce (cf,cg,ch) = {
322+ let ci = fraction((cf - cg), b, cg)
323+ let cj = ((ch - W(ci)) > d)
324+ if (!(cj))
325+ then throw(("Big slpg: " + toString(ci)))
326+ else $Tuple2(cj, min([cf, cg]))
317327 }
318328
319329
320-func cq (cm,cn,cr) = {
321- let cs = bt
322- let ct = bu
323- let cu = cj(cs, ct, cm, cn)
324- let bW = H(cm, cs)
325- let bV = H(cn, ct)
326- let cv = H(cr, a)
327- let cw = bU(bW, cv)
328- let cx = bU(bV, cv)
329-[cu, cw, cx]
330+func ck (cl,cm,cn) = {
331+ let ci = fraction(cm, b, cl)
332+ let co = (cn > ci)
333+ if (if (co)
334+ then true
335+ else (cm > cl))
336+ then throw(((((((toString(cm) + " ") + toString(cl)) + " ") + toString(ci)) + " ") + toString(cn)))
337+ else co
330338 }
331339
332340
333-func cy (cm,cn,cr) = {
334- let cz = cq(cm, cn, cr)
335-[L(cz[0], a), L(cz[1], a), L(cz[2], a)]
341+func cp (cq,cr,cs,ct) = {
342+ let cu = H(cs, cq)
343+ let cv = H(ct, cr)
344+ ca(cv, cu)
336345 }
337346
338347
339-func cA (cB,ar) = {
340- let cC = if ((ar == 0))
341- then 0
342- else fraction(cB, ar, a)
343- $Tuple2((cB - cC), cC)
348+func cw (cs,ct,cx) = {
349+ let cy = bz
350+ let cz = bA
351+ let cA = cp(cy, cz, cs, ct)
352+ let cc = H(cs, cy)
353+ let cb = H(ct, cz)
354+ let cB = H(cx, a)
355+ let cC = ca(cc, cB)
356+ let cD = ca(cb, cB)
357+[cA, cC, cD]
344358 }
345359
346360
347-func cD (cE) = {
348- let cF = cE[0]
349- let cG = cE[1]
350- let cH = (cF + cG)
351- if ((cH == e))
361+func cE (cs,ct,cx) = {
362+ let cF = cw(cs, ct, cx)
363+[L(cF[0], a), L(cF[1], a), L(cF[2], a)]
364+ }
365+
366+
367+func cG (cH,aq) = {
368+ let cI = if ((aq == 0))
369+ then 0
370+ else fraction(cH, aq, a)
371+ $Tuple2((cH - cI), cI)
372+ }
373+
374+
375+func cJ (cK) = {
376+ let cL = cK[0]
377+ let cM = cK[1]
378+ let aU = (cL + cM)
379+ if ((aU == e))
352380 then e
353381 else {
354- let cI = parseIntValue(aZ)
355- let cJ = (cI * 2)
356- let cz = fraction(cF, cG, f)
357- let cK = fraction(cz, i, f)
358- let cL = fraction(toBigInt(cJ), cH, f)
359- let cM = toBigInt((cJ - 1))
360- func cN (cO) = {
361- let cP = fraction(cO, cO, f)
362- let cQ = fraction(cP, cO, f)
363- let cR = fraction(cQ, f, cK)
364- fraction((cL + fraction(cR, g, f)), cO, (fraction(cM, cO, f) + fraction(h, cR, f)))
382+ let aQ = parseIntValue(bf)
383+ let cN = (aQ * 2)
384+ let cF = fraction(cL, cM, f)
385+ let cO = fraction(cF, i, f)
386+ let cP = fraction(toBigInt(cN), aU, f)
387+ let cQ = toBigInt((cN - 1))
388+ func cR (cS) = {
389+ let cT = fraction(cS, cS, f)
390+ let cU = fraction(cT, cS, f)
391+ let cV = fraction(cU, f, cO)
392+ fraction((cP + fraction(cV, g, f)), cS, (fraction(cQ, cS, f) + fraction(h, cV, f)))
365393 }
366394
367- func cS (cT,cU) = if (cT._2)
368- then cT
395+ func cW (cX,cY) = if (cX._2)
396+ then cX
369397 else {
370- let cO = cT._1
371- let cV = cN(cO)
372- let cW = (cV - value(cO))
373- let cX = if ((e > cW))
374- then -(cW)
375- else cW
376- if ((f >= cX))
377- then $Tuple2(cV, true)
378- else $Tuple2(cV, false)
398+ let cS = cX._1
399+ let cZ = cR(cS)
400+ let da = (cZ - value(cS))
401+ let db = if ((e > da))
402+ then -(da)
403+ else da
404+ if ((f >= db))
405+ then $Tuple2(cZ, true)
406+ else $Tuple2(cZ, false)
379407 }
380408
381- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
382- let cZ = {
383- let da = cY
384- let db = size(da)
385- let dc = $Tuple2(cH, false)
386- func dd (de,df) = if ((df >= db))
387- then de
388- else cS(de, da[df])
409+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
410+ let dd = {
411+ let de = dc
412+ let df = size(de)
413+ let dg = $Tuple2(aU, false)
414+ func dh (di,dj) = if ((dj >= df))
415+ then di
416+ else cW(di, de[dj])
389417
390- func dg (de,df) = if ((df >= db))
391- then de
418+ func dk (di,dj) = if ((dj >= df))
419+ then di
392420 else throw("List size exceeds 17")
393421
394- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
422+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
395423 }
396- let cO = cZ._1
397- let dh = cZ._2
398- if (dh)
399- then cO
400- else throw(("D calculation error, D = " + toString(cO)))
424+ let cS = dd._1
425+ let dl = dd._2
426+ if (dl)
427+ then cS
428+ else throw(("D calculation error, D = " + toString(cS)))
401429 }
402430 }
403431
404432
405-func di (dj,dk,dl,dm) = {
406- let dn = bq
407- let do = toBase58String(value(br))
408- let dp = toBase58String(value(bs))
409- let dq = bt
410- let dr = bu
411- let ds = toString(bp)
412- let dt = valueOrErrorMessage(assetInfo(dn), "Wrong LP id").quantity
413- if ((toBase58String(dn) != dk))
433+func dm (dn,do,dp,dq) = {
434+ let dr = bw
435+ let ds = toBase58String(value(bx))
436+ let dt = toBase58String(value(by))
437+ let du = bz
438+ let dv = bA
439+ let dw = toString(bv)
440+ let dx = valueOrErrorMessage(assetInfo(dr), "Wrong LP id").quantity
441+ if ((toBase58String(dr) != do))
414442 then throw("Wrong pmt asset")
415443 else {
416- let du = bS(do)
417- let dv = H(du, dq)
418- let dw = bS(dp)
419- let dx = H(dw, dr)
420- let dy = bU(dx, dv)
421- let dz = L(dy, a)
422- let dA = H(dl, a)
423- let dB = H(dt, a)
424- let dC = fraction(dv, dA, dB)
425- let dD = fraction(dx, dA, dB)
426- let dE = O(dC, dq, FLOOR)
427- let dF = O(dD, dr, FLOOR)
428- let dG = if ((dj == ""))
444+ let dy = bY(ds)
445+ let dz = H(dy, du)
446+ let dA = bY(dt)
447+ let dB = H(dA, dv)
448+ let dC = ca(dB, dz)
449+ let dD = L(dC, a)
450+ let dE = H(dp, a)
451+ let dF = H(dx, a)
452+ let dG = fraction(dz, dE, dF)
453+ let dH = fraction(dB, dE, dF)
454+ let dI = O(dG, du, FLOOR)
455+ let dJ = O(dH, dv, FLOOR)
456+ let dK = if ((dn == ""))
429457 then nil
430- else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
458+ else [ScriptTransfer(dq, dI, if ((ds == "WAVES"))
431459 then unit
432- else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
460+ else fromBase58String(ds)), ScriptTransfer(dq, dJ, if ((dt == "WAVES"))
433461 then unit
434- else fromBase58String(dp)), StringEntry(ai(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz)]
435- $Tuple10(dE, dF, do, dp, du, dw, dt, dy, ds, dG)
462+ else fromBase58String(dt)), StringEntry(ai(toString(dq), dn), bU(dI, dJ, dp, dD, height, lastBlock.timestamp)), IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD)]
463+ $Tuple10(dI, dJ, ds, dt, dy, dA, dx, dC, dw, dK)
436464 }
437465 }
438466
439467
440-func dH (dj,cb,dI,dJ,dK,dL,dm,dM,dN,dO,dP,dQ,dR) = {
441- let dn = bq
442- let dS = toBase58String(value(br))
443- let dT = toBase58String(value(bs))
444- let dU = bv
445- let dV = bw
446- let dW = bt
447- let dX = bu
448- let ds = toString(bp)
449- let dY = valueOrErrorMessage(assetInfo(dn), "Wr lp as").quantity
450- let du = if (dM)
451- then bS(dS)
452- else if (if (dO)
453- then (dR == dS)
468+func dL (dn,ch,dM,dN,dO,dP,dq,dQ,dR,dS,dT,dU,dV) = {
469+ let dr = bw
470+ let dW = toBase58String(value(bx))
471+ let dX = toBase58String(value(by))
472+ let dY = bB
473+ let dZ = bC
474+ let ea = bz
475+ let eb = bA
476+ let dw = toString(bv)
477+ let ec = valueOrErrorMessage(assetInfo(dr), "Wr lp as").quantity
478+ let dy = if (dQ)
479+ then bY(dW)
480+ else if (if (dS)
481+ then (dV == dW)
454482 else false)
455- then (bS(dS) - dQ)
456- else if (dO)
457- then bS(dS)
458- else (bS(dS) - dI)
459- let dw = if (dM)
460- then bS(dT)
461- else if (if (dO)
462- then (dR == dT)
483+ then (bY(dW) - dU)
484+ else if (dS)
485+ then bY(dW)
486+ else (bY(dW) - dM)
487+ let dA = if (dQ)
488+ then bY(dX)
489+ else if (if (dS)
490+ then (dV == dX)
463491 else false)
464- then (bS(dT) - dQ)
465- else if (dO)
466- then bS(dT)
467- else (bS(dT) - dK)
468- let dZ = H(dI, dW)
469- let ea = H(dK, dX)
470- let eb = bU(ea, dZ)
471- let dv = H(du, dW)
472- let dx = H(dw, dX)
473- let cg = cD([dv, dx])
474- let ec = if ((dY == 0))
492+ then (bY(dX) - dU)
493+ else if (dS)
494+ then bY(dX)
495+ else (bY(dX) - dO)
496+ let ed = H(dM, ea)
497+ let ee = H(dO, eb)
498+ let ef = ca(ee, ed)
499+ let dz = H(dy, ea)
500+ let dB = H(dA, eb)
501+ let cm = cJ([dz, dB])
502+ let eg = if ((ec == 0))
475503 then {
476- let cf = cD([(dv + dZ), (dx + ea)])
477- let ed = if ((cf > cg))
504+ let cl = cJ([(dz + ed), (dB + ee)])
505+ let eh = if ((cl > cm))
478506 then true
479507 else throw("D1 should be greater than D0")
480- if ((ed == ed))
508+ if ((eh == eh))
481509 then {
482- let dy = d
483- let ee = d
484- let cv = cf
485- $Tuple5(L(cv, a), L(dZ, dW), L(ea, dX), bU((dx + ea), (dv + dZ)), ee)
510+ let dC = d
511+ let ei = d
512+ let cB = cl
513+ $Tuple5(L(cB, a), L(ed, ea), L(ee, eb), ca((dB + ee), (dz + ed)), ei)
486514 }
487515 else throw("Strict value is not equal to itself.")
488516 }
489517 else {
490- let dy = bU(dx, dv)
491- let ef = fraction(W((dy - eb)), c, dy)
492- let ee = H(cb, a)
493- if (if (if (dP)
494- then (dy != d)
518+ let dC = ca(dB, dz)
519+ let ej = fraction(W((dC - ef)), c, dC)
520+ let ei = H(ch, a)
521+ if (if (if (dT)
522+ then (dC != d)
495523 else false)
496- then (ef > ee)
524+ then (ej > ei)
497525 else false)
498- then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
526+ then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
499527 else {
500- let eg = H(dY, a)
501- let eh = fraction(dZ, bX(dx, dv, CEILING), c, CEILING)
502- let ei = fraction(ea, c, bX(dx, dv, FLOOR), CEILING)
503- let ej = if ((eh > ea))
504- then $Tuple2(ei, ea)
505- else $Tuple2(dZ, eh)
506- let ek = ej._1
507- let el = ej._2
508- let cf = cD([(dv + ek), (dx + el)])
509- let ed = if ((cf > cg))
528+ let ek = H(ec, a)
529+ let el = fraction(ed, cd(dB, dz, CEILING), c, CEILING)
530+ let em = fraction(ee, c, cd(dB, dz, FLOOR), CEILING)
531+ let en = if ((el > ee))
532+ then $Tuple2(em, ee)
533+ else $Tuple2(ed, el)
534+ let eo = en._1
535+ let ep = en._2
536+ let cl = cJ([(dz + eo), (dB + ep)])
537+ let eh = if ((cl > cm))
510538 then true
511539 else throw("D1 should be greater than D0")
512- if ((ed == ed))
540+ if ((eh == eh))
513541 then {
514- let cv = fraction(eg, (cf - cg), cg)
515- $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
542+ let cB = fraction(ek, (cl - cm), cm)
543+ $Tuple5(O(cB, a, FLOOR), O(eo, ea, CEILING), O(ep, eb, CEILING), dC, ei)
516544 }
517545 else throw("Strict value is not equal to itself.")
518546 }
519547 }
520- let em = ec._1
521- let en = ec._2
522- let eo = ec._3
523- let dz = L(ec._4, a)
524- let ep = L(ec._5, a)
525- if ((0 >= em))
548+ let eq = eg._1
549+ let er = eg._2
550+ let es = eg._3
551+ let dD = L(eg._4, a)
552+ let et = L(eg._5, a)
553+ if ((0 >= eq))
526554 then throw("LP <= 0")
527555 else {
528- let eq = if (!(dN))
556+ let eu = if (!(dR))
529557 then 0
530- else em
531- let er = (dI - en)
532- let es = (dK - eo)
533- let et = if (if (dO)
534- then (dR == dS)
558+ else eq
559+ let ev = (dM - er)
560+ let ew = (dO - es)
561+ let ex = if (if (dS)
562+ then (dV == dW)
535563 else false)
536- then $Tuple2(dQ, 0)
537- else if (if (dO)
538- then (dR == dT)
564+ then $Tuple2(dU, 0)
565+ else if (if (dS)
566+ then (dV == dX)
539567 else false)
540- then $Tuple2(0, dQ)
541- else $Tuple2(en, eo)
542- let eu = et._1
543- let ev = et._2
544- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
545- $Tuple13(em, eq, dz, du, dw, dY, dn, ds, ew, er, es, dJ, dL)
568+ then $Tuple2(0, dU)
569+ else $Tuple2(er, es)
570+ let ey = ex._1
571+ let ez = ex._2
572+ let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, dn), bJ(ey, ez, eu, dD, ch, et, height, lastBlock.timestamp, ev, ew))]
573+ $Tuple13(eq, eu, dD, dy, dA, ec, dr, dw, eA, ev, ew, dN, dP)
546574 }
547575 }
548576
549577
550-func ex (cE,cU,ey) = {
551- let ez = g
552- let eA = cE[if ((cU == 0))
578+func eB (cK,cY,eC) = {
579+ let eD = g
580+ let eE = cK[if ((cY == 0))
553581 then 1
554582 else 0]
555- let eB = parseBigIntValue(l)
556- let cI = (parseBigIntValue(aZ) * eB)
557- let cH = eA
558- let cJ = (cI * ez)
559- let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
560- let eD = ((cH + ((ey * eB) / cJ)) - ey)
561- func cS (cT,eE) = {
562- let eF = cT
563- let eG = eF._1
564- let dh = eF._2
565- if ((dh != unit))
566- then cT
583+ let eF = parseBigIntValue(l)
584+ let aQ = (parseBigIntValue(bf) * eF)
585+ let aU = eE
586+ let cN = (aQ * eD)
587+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
588+ let eH = ((aU + ((eC * eF) / cN)) - eC)
589+ func cW (cX,eI) = {
590+ let eJ = cX
591+ let eK = eJ._1
592+ let dl = eJ._2
593+ if ((dl != unit))
594+ then cX
567595 else {
568- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
569- let eI = X((eH - value(eG)))
570- if ((f >= eI))
571- then $Tuple2(eH, eE)
572- else $Tuple2(eH, unit)
596+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
597+ let eM = X((eL - value(eK)))
598+ if ((f >= eM))
599+ then $Tuple2(eL, eI)
600+ else $Tuple2(eL, unit)
573601 }
574602 }
575603
576- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
577- let eJ = {
578- let da = cY
579- let db = size(da)
580- let dc = $Tuple2(ey, unit)
581- func dd (de,df) = if ((df >= db))
582- then de
583- else cS(de, da[df])
604+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
605+ let eN = {
606+ let de = dc
607+ let df = size(de)
608+ let dg = $Tuple2(eC, unit)
609+ func dh (di,dj) = if ((dj >= df))
610+ then di
611+ else cW(di, de[dj])
584612
585- func dg (de,df) = if ((df >= db))
586- then de
613+ func dk (di,dj) = if ((dj >= df))
614+ then di
587615 else throw("List size exceeds 15")
588616
589- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
617+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
590618 }
591- let eG = eJ._1
592- let dh = eJ._2
593- if ((dh != unit))
594- then eG
595- else throw(("Y calculation error, Y = " + toString(eG)))
619+ let eK = eN._1
620+ let dl = eN._2
621+ if ((dl != unit))
622+ then eK
623+ else throw(("Y calculation error, Y = " + toString(eK)))
596624 }
597625
598626
599-func eK (eL,eM,eN) = {
600- let eO = fraction(cD([K(eL, toBigInt(bt)), K(eM, toBigInt(bu))]), c, eN)
601- if ((eN == e))
627+func eO (eP,eQ,eR) = {
628+ let eS = fraction(cJ([K(eP, toBigInt(bz)), K(eQ, toBigInt(bA))]), c, eR)
629+ if ((eR == e))
602630 then e
603- else eO
631+ else eS
604632 }
605633
606634
607-func eP (eQ,eR,eS) = {
608- let eT = (toBigInt(bS(bj(br))) - eQ)
609- let eU = (toBigInt(bS(bj(bs))) - eR)
610- let eV = (toBigInt(value(assetInfo(bq)).quantity) - eS)
611- let eW = eK(eT, eU, eV)
612- eW
635+func eT (eU,eV,eW) = {
636+ let eX = (toBigInt(bY(bp(bx))) - eU)
637+ let eY = (toBigInt(bY(bp(by))) - eV)
638+ let eZ = (toBigInt(value(assetInfo(bw)).quantity) - eW)
639+ let fa = eO(eX, eY, eZ)
640+ fa
613641 }
614642
615643
616-func eX (eY,eZ,eS) = {
617- let eT = (bS(bj(br)) + eY)
618- let eU = (bS(bj(bs)) + eZ)
619- let eV = (value(assetInfo(bq)).quantity + eS)
620- let eO = eK(toBigInt(eT), toBigInt(eU), toBigInt(eV))
621- let fa = [IntegerEntry(at, height), StringEntry(as, toString(eO))]
622- $Tuple2(fa, eO)
644+func fb (fc,fd,eW) = {
645+ let eX = (bY(bp(bx)) + fc)
646+ let eY = (bY(bp(by)) + fd)
647+ let eZ = (value(assetInfo(bw)).quantity + eW)
648+ let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
649+ let fe = [IntegerEntry(as, height), StringEntry(ar, toString(eS))]
650+ $Tuple2(fe, eS)
623651 }
624652
625653
626-func fb (fc,eO) = if ((eO >= fc))
654+func ff (fg,eS) = if ((eS >= fg))
627655 then true
628- else aS("updated DLp lower than current DLp")
656+ else aZ("updated DLp lower than current DLp")
629657
630658
631-func fd (fe) = {
632- let eT = bS(bj(br))
633- let eU = bS(bj(bs))
634- let ff = fe.amount
635- let fg = fraction(fe.amount, fe.price, a, FLOOR)
636- let fh = if ((fe.orderType == Buy))
637- then $Tuple2(ff, -(fg))
638- else $Tuple2(-(ff), fg)
639- let eY = fh._1
640- let eZ = fh._2
641- if (if (if (ba())
659+func fh (fi) = {
660+ let eX = bY(bp(bx))
661+ let eY = bY(bp(by))
662+ let fj = fi.amount
663+ let fk = fraction(fi.amount, fi.price, a, FLOOR)
664+ let fl = if ((fi.orderType == Buy))
665+ then $Tuple2(fj, -(fk))
666+ else $Tuple2(-(fj), fk)
667+ let fc = fl._1
668+ let fd = fl._2
669+ if (if (if (bg())
642670 then true
643- else (bp == r))
671+ else (bv == r))
644672 then true
645- else (bp == s))
673+ else (bv == s))
646674 then throw("Admin blocked")
647- else if (if ((fe.assetPair.amountAsset != br))
675+ else if (if ((fi.assetPair.amountAsset != bx))
648676 then true
649- else (fe.assetPair.priceAsset != bs))
677+ else (fi.assetPair.priceAsset != by))
650678 then throw("Wr assets")
651679 else {
652- let fi = parseBigIntValue(valueOrElse(getString(this, as), "0"))
653- let fj = eX(eY, eZ, 0)
654- let fk = fj._1
655- let fl = fj._2
656- let fm = (fl >= fi)
657- let fn = makeString(["dLp=", toString(fi), " dLpNew=", toString(fl), " amountAssetBalance=", toString(eT), " priceAssetBalance=", toString(eU), " amountAssetBalanceDelta=", toString(eY), " priceAssetBalanceDelta=", toString(eZ), " height=", toString(height)], "")
658- $Tuple2(fm, fn)
680+ let fm = parseBigIntValue(valueOrElse(getString(this, ar), "0"))
681+ let fn = fb(fc, fd, 0)
682+ let fo = fn._1
683+ let fp = fn._2
684+ let fq = (fp >= fm)
685+ let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
686+ $Tuple2(fq, fr)
659687 }
660688 }
661689
662690
663-func fo (cU) = if ((size(cU.payments) != 1))
691+func fs (cY) = if ((size(cY.payments) != 1))
664692 then throw("1 pmnt exp")
665693 else {
666- let fp = value(cU.payments[0])
667- let dk = value(fp.assetId)
668- let dQ = fp.amount
669- let ec = di(toBase58String(cU.transactionId), toBase58String(dk), dQ, cU.caller)
670- let dE = ec._1
671- let dF = ec._2
672- let ds = parseIntValue(ec._9)
673- let dG = ec._10
674- if (if (ba())
694+ let ft = value(cY.payments[0])
695+ let do = value(ft.assetId)
696+ let dU = ft.amount
697+ let eg = dm(toBase58String(cY.transactionId), toBase58String(do), dU, cY.caller)
698+ let dI = eg._1
699+ let dJ = eg._2
700+ let dw = parseIntValue(eg._9)
701+ let dK = eg._10
702+ if (if (bg())
675703 then true
676- else (ds == s))
677- then throw(("Admin blocked: " + toString(ds)))
678- else $Tuple5(dE, dF, dQ, dk, dG)
704+ else (dw == s))
705+ then throw(("Admin blocked: " + toString(dw)))
706+ else $Tuple5(dI, dJ, dU, do, dK)
679707 }
680708
681709
682-func fq (fr,ah,fs,ft,cb,dN,dO,dP,dQ,dR) = {
683- let ec = dH(ah, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ah == ""), dN, dO, dP, dQ, dR)
684- let ds = parseIntValue(ec._8)
685- if (if (if (ba())
710+func fu (fv,ah,fw,fx,ch,dR,dS,dT,dU,dV) = {
711+ let eg = dL(ah, ch, value(fw).amount, value(fw).assetId, value(fx).amount, value(fx).assetId, fv, (ah == ""), dR, dS, dT, dU, dV)
712+ let dw = parseIntValue(eg._8)
713+ if (if (if (bg())
686714 then true
687- else (ds == q))
715+ else (dw == q))
688716 then true
689- else (ds == s))
690- then throw(("Blocked:" + toString(ds)))
691- else ec
717+ else (dw == s))
718+ then throw(("Blocked:" + toString(dw)))
719+ else eg
692720 }
693721
694722
695-func fu (fv,dk,dm,ah,fw) = {
696- let do = toBase58String(value(br))
697- let dp = toBase58String(value(bs))
698- let dn = bq
699- let dW = bt
700- let dX = bu
701- let eV = toBigInt(valueOrErrorMessage(assetInfo(dn), "invalid lp asset").quantity)
702- let fx = if ((eV > e))
723+func fy (fz,do,dq,ah,fA) = {
724+ let ds = toBase58String(value(bx))
725+ let dt = toBase58String(value(by))
726+ let dr = bw
727+ let ea = bz
728+ let eb = bA
729+ let eZ = toBigInt(valueOrErrorMessage(assetInfo(dr), "invalid lp asset").quantity)
730+ let fB = if ((eZ > e))
703731 then true
704732 else throw("initial deposit requires all coins")
705- if ((fx == fx))
733+ if ((fB == fB))
706734 then {
707- let du = bS(do)
708- let dw = bS(dp)
709- let fy = if ((ah == ""))
710- then $Tuple2(du, dw)
711- else if ((dk == do))
712- then if ((fv > du))
735+ let dy = bY(ds)
736+ let dA = bY(dt)
737+ let fC = if ((ah == ""))
738+ then $Tuple2(dy, dA)
739+ else if ((do == ds))
740+ then if ((fz > dy))
713741 then throw("invalid payment amount")
714- else $Tuple2((du - fv), dw)
715- else if ((dk == dp))
716- then if ((fv > dw))
742+ else $Tuple2((dy - fz), dA)
743+ else if ((do == dt))
744+ then if ((fz > dA))
717745 then throw("invalid payment amount")
718- else $Tuple2(du, (dw - fv))
746+ else $Tuple2(dy, (dA - fz))
719747 else throw("wrong pmtAssetId")
720- let fz = fy._1
721- let fA = fy._2
722- let fB = if ((dk == do))
723- then $Tuple2(fv, 0)
724- else if ((dk == dp))
725- then $Tuple2(0, fv)
748+ let fD = fC._1
749+ let fE = fC._2
750+ let fF = if ((do == ds))
751+ then $Tuple2(fz, 0)
752+ else if ((do == dt))
753+ then $Tuple2(0, fz)
726754 else throw("invalid payment")
727- let fC = fB._1
728- let fD = fB._2
729- let fE = if (fw)
730- then $Tuple3(cA(fC, aW)._1, cA(fD, aW)._1, cA(fv, aW)._2)
731- else $Tuple3(fC, fD, 0)
732- let fF = fE._1
733- let fG = fE._2
734- let cC = fE._3
735- let fH = (fz + fF)
736- let fI = (fA + fG)
737- let cg = cD([H(fz, bt), H(fA, bu)])
738- let cf = cD([H(fH, bt), H(fI, bu)])
739- let ed = if ((cf > cg))
755+ let fG = fF._1
756+ let fH = fF._2
757+ let fI = if (fA)
758+ then $Tuple3(cG(fG, bc)._1, cG(fH, bc)._1, cG(fz, bc)._2)
759+ else $Tuple3(fG, fH, 0)
760+ let fJ = fI._1
761+ let fK = fI._2
762+ let cI = fI._3
763+ let fL = (fD + fJ)
764+ let fM = (fE + fK)
765+ let cm = cJ([H(fD, bz), H(fE, bA)])
766+ let cl = cJ([H(fL, bz), H(fM, bA)])
767+ let eh = if ((cl > cm))
740768 then true
741769 else throw()
742- if ((ed == ed))
770+ if ((eh == eh))
743771 then {
744- let fJ = fraction(eV, (cf - cg), cg, FLOOR)
745- let dz = L(bU(H(fI, dX), H(fH, dW)), a)
746- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, ah), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
747- let fK = fraction(fA, a, fz)
748- let fL = fraction(fv, a, (fK + a))
749- let fM = (fv - fL)
750- let fN = fraction(eV, toBigInt(fM), toBigInt(fA))
751- let fO = toInt(fraction((fJ - fN), b, fN))
752- $Tuple4(toInt(fJ), ew, cC, fO)
772+ let fN = fraction(eZ, (cl - cm), cm, FLOOR)
773+ let dD = L(ca(H(fM, eb), H(fL, ea)), a)
774+ let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, ah), bJ(fG, fH, toInt(fN), dD, 0, 0, height, lastBlock.timestamp, 0, 0))]
775+ let fO = fraction(fE, a, fD)
776+ let fP = fraction(fz, a, (fO + a))
777+ let fQ = (fz - fP)
778+ let fR = fraction(eZ, toBigInt(fQ), toBigInt(fE))
779+ let fS = toInt(fraction((fN - fR), b, fR))
780+ $Tuple4(toInt(fN), eA, cI, fS)
753781 }
754782 else throw("Strict value is not equal to itself.")
755783 }
757785 }
758786
759787
760-func fP (fQ,fR,fS,fr,fT,fU) = {
761- let dn = toBase58String(value(bq))
762- let do = toBase58String(value(br))
763- let dp = toBase58String(value(bs))
764- let fV = bt
765- let fW = bu
766- let fX = bp
767- let dm = if ((fr == bC))
768- then fT
769- else fr
770- let fp = value(fS[0])
771- let dk = value(fp.assetId)
772- let dQ = fp.amount
773- let eW = eP(e, e, e)
774- if ((eW == eW))
788+func fT (fU,fV,fW,fv,fX,fY) = {
789+ let dr = toBase58String(value(bw))
790+ let ds = toBase58String(value(bx))
791+ let dt = toBase58String(value(by))
792+ let fZ = bz
793+ let ga = bA
794+ let gb = bv
795+ let dq = if ((fv == bI))
796+ then fX
797+ else fv
798+ let ft = value(fW[0])
799+ let do = value(ft.assetId)
800+ let dU = ft.amount
801+ let fa = eT(e, e, e)
802+ if ((fa == fa))
775803 then {
776- let dj = toBase58String(fU)
777- if ((dn != toBase58String(dk)))
804+ let dn = toBase58String(fY)
805+ if ((dr != toBase58String(do)))
778806 then throw("Wrong LP")
779807 else {
780- let du = bS(do)
781- let dw = bS(dp)
782- let fY = {
783- let aX = invoke(this, "getOneTknV2READONLY", [fQ, dQ], nil)
784- if ($isInstanceOf(aX, "(Int, Int)"))
785- then aX
786- else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
808+ let dy = bY(ds)
809+ let dA = bY(dt)
810+ let gc = {
811+ let bd = invoke(this, "getOneTknV2READONLY", [fU, dU], nil)
812+ if ($isInstanceOf(bd, "(Int, Int)"))
813+ then bd
814+ else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
787815 }
788- if ((fY == fY))
816+ if ((gc == gc))
789817 then {
790- let cC = fY._2
791- let fZ = fY._1
792- let ga = if (if ((fR > 0))
793- then (fR > fZ)
818+ let cI = gc._2
819+ let gd = gc._1
820+ let ge = if (if ((fV > 0))
821+ then (fV > gd)
794822 else false)
795- then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
796- else fZ
797- let gb = if ((fQ == do))
798- then $Tuple4(ga, 0, ((du - ga) - cC), dw)
799- else if ((fQ == dp))
800- then $Tuple4(0, ga, du, ((dw - ga) - cC))
823+ then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
824+ else gd
825+ let gf = if ((fU == ds))
826+ then $Tuple4(ge, 0, ((dy - ge) - cI), dA)
827+ else if ((fU == dt))
828+ then $Tuple4(0, ge, dy, ((dA - ge) - cI))
801829 else throw("invalid out asset id")
802- let gc = gb._1
803- let gd = gb._2
804- let fH = gb._3
805- let fI = gb._4
806- let ge = bU(H(fI, fW), H(fH, fV))
807- let gf = L(ge, a)
808- let gg = if ((fQ == "WAVES"))
830+ let gg = gf._1
831+ let gh = gf._2
832+ let fL = gf._3
833+ let fM = gf._4
834+ let gi = ca(H(fM, ga), H(fL, fZ))
835+ let gj = L(gi, a)
836+ let gk = if ((fU == "WAVES"))
809837 then unit
810- else fromBase58String(fQ)
811- let gh = if ((cC > 0))
812- then [ScriptTransfer(bc, cC, gg)]
838+ else fromBase58String(fU)
839+ let gl = if ((cI > 0))
840+ then [ScriptTransfer(bi, cI, gk)]
813841 else nil
814- let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(ai(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ab(), gf), IntegerEntry(ac(height, lastBlock.timestamp), gf)] ++ gh)
815- if ((dG == dG))
842+ let dK = ([ScriptTransfer(dq, ge, gk), StringEntry(ai(toString(dq), dn), bU(gg, gh, dU, gj, height, lastBlock.timestamp)), IntegerEntry(ab(), gj), IntegerEntry(ac(height, lastBlock.timestamp), gj)] ++ gl)
843+ if ((dK == dK))
816844 then {
817- let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
818- if ((gi == gi))
845+ let gm = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
846+ if ((gm == gm))
819847 then {
820- let gj = {
821- let gk = if ((this == bc))
848+ let gn = {
849+ let go = if ((this == bi))
822850 then 0
823- else cC
824- let gl = if ((bh(fQ) == br))
851+ else cI
852+ let gp = if ((bn(fU) == bx))
825853 then true
826854 else false
827- if (gl)
828- then $Tuple2(-((fZ + gk)), 0)
829- else $Tuple2(0, -((fZ + gk)))
855+ if (gp)
856+ then $Tuple2(-((gd + go)), 0)
857+ else $Tuple2(0, -((gd + go)))
830858 }
831- let eY = gj._1
832- let eZ = gj._2
833- let gm = eX(eY, eZ, 0)
834- let gn = gm._1
835- let eO = gm._2
836- let go = fb(eW, eO)
837- if ((go == go))
838- then $Tuple2((dG ++ gn), ga)
859+ let fc = gn._1
860+ let fd = gn._2
861+ let gq = fb(fc, fd, 0)
862+ let gr = gq._1
863+ let eS = gq._2
864+ let gs = ff(fa, eS)
865+ if ((gs == gs))
866+ then $Tuple2((dK ++ gr), ge)
839867 else throw("Strict value is not equal to itself.")
840868 }
841869 else throw("Strict value is not equal to itself.")
849877 }
850878
851879
852-func gp () = {
853- let gq = getString(Z())
854- if ($isInstanceOf(gq, "String"))
880+func gt () = {
881+ let gu = aR()
882+ let aP = getString(gu, Z())
883+ if ($isInstanceOf(aP, "String"))
855884 then {
856- let cH = gq
857- fromBase58String(cH)
885+ let aU = aP
886+ fromBase58String(aU)
858887 }
859- else if ($isInstanceOf(gq, "Unit"))
888+ else if ($isInstanceOf(aP, "Unit"))
860889 then unit
861890 else throw("Match error")
862891 }
863892
864893
865-func gr () = {
866- let gq = getString(aa())
867- if ($isInstanceOf(gq, "String"))
894+let gv = throw("Permission denied")
895+
896+func gw (cY) = {
897+ let aP = gt()
898+ if ($isInstanceOf(aP, "ByteVector"))
868899 then {
869- let cH = gq
870- fromBase58String(cH)
900+ let gx = aP
901+ (cY.callerPublicKey == gx)
871902 }
872- else if ($isInstanceOf(gq, "Unit"))
873- then unit
903+ else if ($isInstanceOf(aP, "Unit"))
904+ then (cY.caller == this)
874905 else throw("Match error")
875906 }
876907
877908
878-let gs = throw("Permission denied")
879-
880-func gt (cU) = {
881- let gq = gp()
882- if ($isInstanceOf(gq, "ByteVector"))
909+func gy (cY) = {
910+ let aP = gt()
911+ if ($isInstanceOf(aP, "ByteVector"))
883912 then {
884- let gu = gq
885- (cU.callerPublicKey == gu)
913+ let gx = aP
914+ if ((cY.callerPublicKey == gx))
915+ then true
916+ else gv
886917 }
887- else if ($isInstanceOf(gq, "Unit"))
888- then (cU.caller == this)
918+ else if ($isInstanceOf(aP, "Unit"))
919+ then if ((cY.caller == this))
920+ then true
921+ else gv
889922 else throw("Match error")
890923 }
891924
892925
893-func gv (cU) = {
894- let gq = gp()
895- if ($isInstanceOf(gq, "ByteVector"))
896- then {
897- let gu = gq
898- if ((cU.callerPublicKey == gu))
899- then true
900- else gs
901- }
902- else if ($isInstanceOf(gq, "Unit"))
903- then if ((cU.caller == this))
904- then true
905- else gs
906- else throw("Match error")
926+func gz (gA,eC,gB) = {
927+ let br = bj()
928+ let ds = br[w]
929+ let dt = br[x]
930+ let eD = g
931+ let eF = parseBigIntValue(l)
932+ let aQ = (parseBigIntValue(bf) * eF)
933+ let cK = if ((gA == false))
934+ then [(toBigInt(bY(ds)) + gB), toBigInt(bY(dt))]
935+ else [(toBigInt(bY(dt)) + gB), toBigInt(bY(ds))]
936+ let eE = cK[0]
937+ let aU = eE
938+ let cN = (aQ * eD)
939+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
940+ let eH = ((aU + ((eC * eF) / cN)) - eC)
941+ func cW (cX,eI) = {
942+ let gC = cX
943+ let eK = gC._1
944+ let dl = gC._2
945+ if ((dl != unit))
946+ then cX
947+ else {
948+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
949+ let eM = X((eL - value(eK)))
950+ if ((f >= eM))
951+ then $Tuple2(eL, eI)
952+ else $Tuple2(eL, unit)
953+ }
954+ }
955+
956+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
957+ let gD = {
958+ let de = dc
959+ let df = size(de)
960+ let dg = $Tuple2(eC, unit)
961+ func dh (di,dj) = if ((dj >= df))
962+ then di
963+ else cW(di, de[dj])
964+
965+ func dk (di,dj) = if ((dj >= df))
966+ then di
967+ else throw("List size exceeds 15")
968+
969+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
970+ }
971+ let eK = gD._1
972+ let dl = gD._2
973+ if ((dl != unit))
974+ then eK
975+ else throw(("Y calculation error, Y = " + toString(eK)))
907976 }
908977
909978
910-func gw (gx,ey,gy) = {
911- let bl = bd()
912- let do = bl[w]
913- let dp = bl[x]
914- let ez = g
915- let eB = parseBigIntValue(l)
916- let cI = (parseBigIntValue(aZ) * eB)
917- let cE = if ((gx == false))
918- then [(toBigInt(bS(do)) + gy), toBigInt(bS(dp))]
919- else [(toBigInt(bS(dp)) + gy), toBigInt(bS(do))]
920- let eA = cE[0]
921- let cH = eA
922- let cJ = (cI * ez)
923- let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
924- let eD = ((cH + ((ey * eB) / cJ)) - ey)
925- func cS (cT,eE) = {
926- let gz = cT
927- let eG = gz._1
928- let dh = gz._2
929- if ((dh != unit))
930- then cT
931- else {
932- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
933- let eI = X((eH - value(eG)))
934- if ((f >= eI))
935- then $Tuple2(eH, eE)
936- else $Tuple2(eH, unit)
937- }
938- }
939-
940- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
941- let gA = {
942- let da = cY
943- let db = size(da)
944- let dc = $Tuple2(ey, unit)
945- func dd (de,df) = if ((df >= db))
946- then de
947- else cS(de, da[df])
948-
949- func dg (de,df) = if ((df >= db))
950- then de
951- else throw("List size exceeds 15")
952-
953- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
954- }
955- let eG = gA._1
956- let dh = gA._2
957- if ((dh != unit))
958- then eG
959- else throw(("Y calculation error, Y = " + toString(eG)))
960- }
979+func gE () = valueOrElse(getBoolean(aT, aG(toString(this))), false)
961980
962981
963-func gB () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
964-
965-
966-@Callable(cU)
967-func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968- let gE = if ((gx == false))
982+@Callable(cY)
983+func calculateAmountOutForSwapREADONLY (gF,gA,gG) = {
984+ let gH = if ((gA == false))
969985 then {
970- let gF = aO(this, ak())
971- let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
972- $Tuple2(gF, gy)
986+ let gI = aV(this, ak())
987+ let gB = (toBigInt(bY(aV(this, aj()))) + toBigInt(gF))
988+ $Tuple2(gI, gB)
973989 }
974990 else {
975- let gF = aO(this, aj())
976- let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
977- $Tuple2(gF, gy)
991+ let gI = aV(this, aj())
992+ let gB = (toBigInt(bY(aV(this, ak()))) + toBigInt(gF))
993+ $Tuple2(gI, gB)
978994 }
979- let gF = gE._1
980- let gy = gE._2
981- let bl = bd()
982- let do = bl[w]
983- let dp = bl[x]
984- let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
985- let ey = cD(cE)
986- let eG = gw(gx, ey, toBigInt(gC))
987- let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
988- let gH = max([0, toInt(gG)])
989- let gI = if ((gx == false))
990- then [((toBigInt(bS(do)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
991- else [(toBigInt(bS(do)) - gG), ((toBigInt(bS(dp)) + toBigInt(gC)) + toBigInt(gD))]
992- let gJ = cD(gI)
993- let ed = if ((gJ >= ey))
995+ let gI = gH._1
996+ let gB = gH._2
997+ let br = bj()
998+ let ds = br[w]
999+ let dt = br[x]
1000+ let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
1001+ let eC = cJ(cK)
1002+ let eK = gz(gA, eC, toBigInt(gF))
1003+ let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
1004+ let gK = max([0, toInt(gJ)])
1005+ let gL = if ((gA == false))
1006+ then [((toBigInt(bY(ds)) + toBigInt(gF)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
1007+ else [(toBigInt(bY(ds)) - gJ), ((toBigInt(bY(dt)) + toBigInt(gF)) + toBigInt(gG))]
1008+ let gM = cJ(gL)
1009+ let eh = if ((gM >= eC))
9941010 then true
995- else throw(makeString(["new D is fewer error", toString(ey), toString(gJ)], "__"))
996- if ((ed == ed))
997- then $Tuple2(nil, gH)
1011+ else throw(makeString(["new D is fewer error", toString(eC), toString(gM)], "__"))
1012+ if ((eh == eh))
1013+ then $Tuple2(nil, gK)
9981014 else throw("Strict value is not equal to itself.")
9991015 }
10001016
10011017
10021018
1003-@Callable(cU)
1004-func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
1005- let gM = {
1006- let aX = invoke(aV, "getSwapContractREADONLY", nil, nil)
1007- if ($isInstanceOf(aX, "String"))
1008- then aX
1009- else throw(($getType(aX) + " couldn't be cast to String"))
1019+@Callable(cY)
1020+func calculateAmountOutForSwapAndSendTokens (gF,gA,gN,gO,gG) = {
1021+ let gP = {
1022+ let bd = invoke(aT, "getSwapContractREADONLY", nil, nil)
1023+ if ($isInstanceOf(bd, "String"))
1024+ then bd
1025+ else throw(($getType(bd) + " couldn't be cast to String"))
10101026 }
1011- let gN = [if ((value(cU.payments[0]).amount >= gC))
1027+ let gQ = [if ((value(cY.payments[0]).amount >= gF))
10121028 then true
1013- else aS("Wrong amount"), if ((cU.caller == addressFromStringValue(gM)))
1029+ else aZ("Wrong amount"), if ((cY.caller == addressFromStringValue(gP)))
10141030 then true
1015- else aS("Permission denied")]
1016- if ((gN == gN))
1031+ else aZ("Permission denied")]
1032+ if ((gQ == gQ))
10171033 then {
1018- let fp = value(cU.payments[0])
1019- let gO = bj(fp.assetId)
1020- let gP = if ((gx == false))
1034+ let ft = value(cY.payments[0])
1035+ let gR = bp(ft.assetId)
1036+ let gS = if ((gA == false))
10211037 then {
1022- let gF = aO(this, ak())
1023- let gy = (bS(gO) - value(cU.payments[0]).amount)
1024- $Tuple2(gF, gy)
1038+ let gI = aV(this, ak())
1039+ let gB = (bY(gR) - value(cY.payments[0]).amount)
1040+ $Tuple2(gI, gB)
10251041 }
10261042 else {
1027- let gF = aO(this, aj())
1028- let gy = (bS(gO) - value(cU.payments[0]).amount)
1029- $Tuple2(gF, gy)
1043+ let gI = aV(this, aj())
1044+ let gB = (bY(gR) - value(cY.payments[0]).amount)
1045+ $Tuple2(gI, gB)
10301046 }
1031- let gF = gP._1
1032- let gy = gP._2
1033- let bl = bd()
1034- let do = bl[w]
1035- let dp = bl[x]
1036- let cE = if ((gx == false))
1037- then [(toBigInt(bS(do)) - toBigInt(value(cU.payments[0]).amount)), toBigInt(bS(dp))]
1038- else [toBigInt(bS(do)), (toBigInt(bS(dp)) - toBigInt(value(cU.payments[0]).amount))]
1039- let ey = cD(cE)
1040- let eG = gw(gx, ey, toBigInt(0))
1041- let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
1042- let gH = max([0, toInt(gG)])
1043- let gQ = if ((gH >= gK))
1047+ let gI = gS._1
1048+ let gB = gS._2
1049+ let br = bj()
1050+ let ds = br[w]
1051+ let dt = br[x]
1052+ let cK = if ((gA == false))
1053+ then [(toBigInt(bY(ds)) - toBigInt(value(cY.payments[0]).amount)), toBigInt(bY(dt))]
1054+ else [toBigInt(bY(ds)), (toBigInt(bY(dt)) - toBigInt(value(cY.payments[0]).amount))]
1055+ let eC = cJ(cK)
1056+ let eK = gz(gA, eC, toBigInt(0))
1057+ let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
1058+ let gK = max([0, toInt(gJ)])
1059+ let gT = if ((gK >= gN))
10441060 then true
10451061 else throw("Exchange result is fewer coins than expected")
1046- if ((gQ == gQ))
1062+ if ((gT == gT))
10471063 then {
1048- let gI = if ((gx == false))
1049- then [(toBigInt(bS(do)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
1050- else [(toBigInt(bS(do)) - gG), (toBigInt(bS(dp)) + toBigInt(gD))]
1051- let gJ = cD(gI)
1052- let ed = if ((gJ >= ey))
1064+ let gL = if ((gA == false))
1065+ then [(toBigInt(bY(ds)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
1066+ else [(toBigInt(bY(ds)) - gJ), (toBigInt(bY(dt)) + toBigInt(gG))]
1067+ let gM = cJ(gL)
1068+ let eh = if ((gM >= eC))
10531069 then true
10541070 else throw("new D is fewer error")
1055- if ((ed == ed))
1056- then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bh(gF))], gH)
1071+ if ((eh == eh))
1072+ then $Tuple2([ScriptTransfer(addressFromStringValue(gO), gK, bn(gI))], gK)
10571073 else throw("Strict value is not equal to itself.")
10581074 }
10591075 else throw("Strict value is not equal to itself.")
10631079
10641080
10651081
1066-@Callable(cU)
1082+@Callable(cY)
10671083 func constructor (Y) = {
1068- let eC = gv(cU)
1069- if ((eC == eC))
1084+ let eG = gy(cY)
1085+ if ((eG == eG))
10701086 then [StringEntry(Y(), Y)]
10711087 else throw("Strict value is not equal to itself.")
10721088 }
10731089
10741090
10751091
1076-@Callable(cU)
1077-func setManager (gR) = {
1078- let eC = gv(cU)
1079- if ((eC == eC))
1080- then {
1081- let gS = fromBase58String(gR)
1082- if ((gS == gS))
1083- then [StringEntry(aa(), gR)]
1084- else throw("Strict value is not equal to itself.")
1085- }
1086- else throw("Strict value is not equal to itself.")
1087- }
1088-
1089-
1090-
1091-@Callable(cU)
1092-func confirmManager () = {
1093- let cz = gr()
1094- let gT = if (isDefined(cz))
1095- then true
1096- else throw("No pending manager")
1097- if ((gT == gT))
1098- then {
1099- let gU = if ((cU.callerPublicKey == value(cz)))
1100- then true
1101- else throw("You are not pending manager")
1102- if ((gU == gU))
1103- then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
1104- else throw("Strict value is not equal to itself.")
1105- }
1106- else throw("Strict value is not equal to itself.")
1107- }
1108-
1109-
1110-
1111-@Callable(cU)
1112-func put (gV,gW) = {
1113- let gX = bx()
1114- let gY = valueOrErrorMessage(addressFromString(gX[C]), "Wr st addr")
1115- let gZ = valueOrErrorMessage(addressFromString(gX[E]), "Wr sl addr")
1116- if ((0 > gV))
1092+@Callable(cY)
1093+func put (gU,gV) = {
1094+ let gW = bD()
1095+ let gX = valueOrErrorMessage(addressFromString(gW[C]), "Wr st addr")
1096+ let gY = valueOrErrorMessage(addressFromString(gW[E]), "Wr sl addr")
1097+ if ((0 > gU))
11171098 then throw("Wrong slippage")
1118- else if ((size(cU.payments) != 2))
1099+ else if ((size(cY.payments) != 2))
11191100 then throw("2 pmnts expd")
11201101 else {
1121- let ha = toBigInt(value(cU.payments[0]).amount)
1122- let hb = toBigInt(value(cU.payments[1]).amount)
1123- let eT = (toBigInt(bS(bj(br))) - ha)
1124- if ((eT == eT))
1102+ let gZ = toBigInt(value(cY.payments[0]).amount)
1103+ let ha = toBigInt(value(cY.payments[1]).amount)
1104+ let eX = (toBigInt(bY(bp(bx))) - gZ)
1105+ if ((eX == eX))
11251106 then {
1126- let eU = (toBigInt(bS(bj(bs))) - hb)
1127- if ((eU == eU))
1107+ let eY = (toBigInt(bY(bp(by))) - ha)
1108+ if ((eY == eY))
11281109 then {
1129- let eV = toBigInt(value(assetInfo(bq)).quantity)
1130- if ((eV == eV))
1110+ let eZ = toBigInt(value(assetInfo(bw)).quantity)
1111+ if ((eZ == eZ))
11311112 then {
1132- let eW = eP(ha, hb, toBigInt(0))
1133- if ((eW == eW))
1113+ let fa = eT(gZ, ha, toBigInt(0))
1114+ if ((fa == fa))
11341115 then {
1135- let hc = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], gV, true, false, true, 0, "")
1136- let eq = hc._2
1137- let hd = hc._7
1138- let dG = hc._9
1139- let er = hc._10
1140- let es = hc._11
1141- let do = hc._12
1142- let dp = hc._13
1143- let ec = invoke(aV, "emit", [eq], nil)
1144- if ((ec == ec))
1116+ let hb = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], gU, true, false, true, 0, "")
1117+ let eu = hb._2
1118+ let hc = hb._7
1119+ let dK = hb._9
1120+ let ev = hb._10
1121+ let ew = hb._11
1122+ let ds = hb._12
1123+ let dt = hb._13
1124+ let eg = invoke(aT, "emit", [eu], nil)
1125+ if ((eg == eg))
11451126 then {
1146- let he = {
1147- let gq = ec
1148- if ($isInstanceOf(gq, "Address"))
1127+ let hd = {
1128+ let aP = eg
1129+ if ($isInstanceOf(aP, "Address"))
11491130 then {
1150- let hf = gq
1151- invoke(hf, "emit", [eq], nil)
1131+ let he = aP
1132+ invoke(he, "emit", [eu], nil)
11521133 }
11531134 else unit
11541135 }
1155- if ((he == he))
1136+ if ((hd == hd))
11561137 then {
1157- let hg = if ((er > 0))
1158- then invoke(gZ, "put", nil, [AttachedPayment(do, er)])
1138+ let hf = if ((ev > 0))
1139+ then invoke(gY, "put", nil, [AttachedPayment(ds, ev)])
11591140 else nil
1160- if ((hg == hg))
1141+ if ((hf == hf))
11611142 then {
1162- let hh = if ((es > 0))
1163- then invoke(gZ, "put", nil, [AttachedPayment(dp, es)])
1143+ let hg = if ((ew > 0))
1144+ then invoke(gY, "put", nil, [AttachedPayment(dt, ew)])
11641145 else nil
1165- if ((hh == hh))
1146+ if ((hg == hg))
11661147 then {
1167- let hi = if (gW)
1148+ let hh = if (gV)
11681149 then {
1169- let hj = invoke(gY, "stake", nil, [AttachedPayment(hd, eq)])
1170- if ((hj == hj))
1150+ let hi = invoke(gX, "stake", nil, [AttachedPayment(hc, eu)])
1151+ if ((hi == hi))
11711152 then nil
11721153 else throw("Strict value is not equal to itself.")
11731154 }
1174- else [ScriptTransfer(cU.caller, eq, hd)]
1175- let hk = eX(0, 0, 0)
1176- let gn = hk._1
1177- let eO = hk._2
1178- let hl = if ((eO >= eW))
1155+ else [ScriptTransfer(cY.caller, eu, hc)]
1156+ let hj = fb(0, 0, 0)
1157+ let gr = hj._1
1158+ let eS = hj._2
1159+ let hk = if ((eS >= fa))
11791160 then true
1180- else aS(makeString(["updated DLp lower than current DLp", toString(eT), toString(eU), toString(eV), toString(eW), toString(eO), toString(er), toString(es)], " "))
1181- if ((hl == hl))
1161+ else aZ(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1162+ if ((hk == hk))
11821163 then {
1183- let hm = value(assetInfo(bq)).quantity
1184- if ((hm == hm))
1185- then ((dG ++ hi) ++ gn)
1164+ let hl = value(assetInfo(bw)).quantity
1165+ if ((hl == hl))
1166+ then ((dK ++ hh) ++ gr)
11861167 else throw("Strict value is not equal to itself.")
11871168 }
11881169 else throw("Strict value is not equal to itself.")
12071188
12081189
12091190
1210-@Callable(cU)
1211-func putOneTknV2 (fR,gW) = {
1212- let hn = {
1213- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1214- if ($isInstanceOf(aX, "Boolean"))
1215- then aX
1216- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1191+@Callable(cY)
1192+func putOneTknV2 (fV,gV) = {
1193+ let hm = {
1194+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195+ if ($isInstanceOf(bd, "Boolean"))
1196+ then bd
1197+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
12171198 }
1218- let ho = if (if (if (ba())
1199+ let hn = if (if (if (bg())
12191200 then true
1220- else (bp == q))
1201+ else (bv == q))
12211202 then true
1222- else (bp == s))
1203+ else (bv == s))
12231204 then true
1224- else hn
1225- let gN = [if (if (!(ho))
1205+ else hm
1206+ let gQ = [if (if (!(hn))
12261207 then true
1227- else gt(cU))
1208+ else gw(cY))
12281209 then true
1229- else aS("put operation is blocked by admin"), if ((size(cU.payments) == 1))
1210+ else aZ("put operation is blocked by admin"), if ((size(cY.payments) == 1))
12301211 then true
1231- else aS("exactly 1 payment are expected")]
1232- if ((gN == gN))
1212+ else aZ("exactly 1 payment are expected")]
1213+ if ((gQ == gQ))
12331214 then {
1234- let do = toBase58String(value(br))
1235- let dp = toBase58String(value(bs))
1236- let dn = bq
1237- let fV = bt
1238- let fW = bu
1239- let dm = if ((cU.caller == this))
1240- then cU.originCaller
1241- else cU.caller
1242- let fp = value(cU.payments[0])
1243- let dk = toBase58String(value(fp.assetId))
1244- let dQ = fp.amount
1245- let eW = if ((fp.assetId == br))
1246- then eP(toBigInt(dQ), toBigInt(0), toBigInt(0))
1247- else eP(toBigInt(0), toBigInt(dQ), toBigInt(0))
1248- if ((eW == eW))
1215+ let ds = toBase58String(value(bx))
1216+ let dt = toBase58String(value(by))
1217+ let dr = bw
1218+ let fZ = bz
1219+ let ga = bA
1220+ let dq = if ((cY.caller == this))
1221+ then cY.originCaller
1222+ else cY.caller
1223+ let ft = value(cY.payments[0])
1224+ let do = toBase58String(value(ft.assetId))
1225+ let dU = ft.amount
1226+ let fa = if ((ft.assetId == bx))
1227+ then eT(toBigInt(dU), toBigInt(0), toBigInt(0))
1228+ else eT(toBigInt(0), toBigInt(dU), toBigInt(0))
1229+ if ((fa == fa))
12491230 then {
1250- let hp = fu(dQ, dk, toString(dm), toBase58String(cU.transactionId), true)
1251- if ((hp == hp))
1231+ let ho = fy(dU, do, toString(dq), toBase58String(cY.transactionId), true)
1232+ if ((ho == ho))
12521233 then {
1253- let cC = hp._3
1254- let dG = hp._2
1255- let hq = hp._1
1256- let eq = if (if ((fR > 0))
1257- then (fR > hq)
1234+ let cI = ho._3
1235+ let dK = ho._2
1236+ let hp = ho._1
1237+ let eu = if (if ((fV > 0))
1238+ then (fV > hp)
12581239 else false)
1259- then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
1260- else hq
1261- let hc = invoke(aV, "emit", [eq], nil)
1262- if ((hc == hc))
1240+ then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
1241+ else hp
1242+ let hb = invoke(aT, "emit", [eu], nil)
1243+ if ((hb == hb))
12631244 then {
1264- let he = {
1265- let gq = hc
1266- if ($isInstanceOf(gq, "Address"))
1245+ let hd = {
1246+ let aP = hb
1247+ if ($isInstanceOf(aP, "Address"))
12671248 then {
1268- let hf = gq
1269- invoke(hf, "emit", [eq], nil)
1249+ let he = aP
1250+ invoke(he, "emit", [eu], nil)
12701251 }
12711252 else unit
12721253 }
1273- if ((he == he))
1254+ if ((hd == hd))
12741255 then {
1275- let hi = if (gW)
1256+ let hh = if (gV)
12761257 then {
1277- let hj = invoke(bz, "stakeFor", [toString(cU.caller)], [AttachedPayment(dn, eq)])
1278- if ((hj == hj))
1258+ let hi = invoke(bF, "stakeFor", [toString(cY.caller)], [AttachedPayment(dr, eu)])
1259+ if ((hi == hi))
12791260 then nil
12801261 else throw("Strict value is not equal to itself.")
12811262 }
1282- else [ScriptTransfer(cU.caller, eq, dn)]
1283- let gh = if ((cC > 0))
1284- then [ScriptTransfer(bc, cC, fromBase58String(dk))]
1263+ else [ScriptTransfer(cY.caller, eu, dr)]
1264+ let gl = if ((cI > 0))
1265+ then [ScriptTransfer(bi, cI, fromBase58String(do))]
12851266 else nil
1286- let hr = if ((this == bc))
1267+ let hq = if ((this == bi))
12871268 then $Tuple2(0, 0)
12881269 else {
1289- let hs = if ((fp.assetId == br))
1270+ let hr = if ((ft.assetId == bx))
12901271 then true
12911272 else false
1292- if (hs)
1293- then $Tuple2(-(cC), 0)
1294- else $Tuple2(0, -(cC))
1273+ if (hr)
1274+ then $Tuple2(-(cI), 0)
1275+ else $Tuple2(0, -(cI))
12951276 }
1296- let eY = hr._1
1297- let eZ = hr._2
1298- let ht = eX(eY, eZ, 0)
1299- let gn = ht._1
1300- let eO = ht._2
1301- let go = fb(eW, eO)
1302- if ((go == go))
1303- then $Tuple2((((dG ++ hi) ++ gh) ++ gn), eq)
1277+ let fc = hq._1
1278+ let fd = hq._2
1279+ let hs = fb(fc, fd, 0)
1280+ let gr = hs._1
1281+ let eS = hs._2
1282+ let gs = ff(fa, eS)
1283+ if ((gs == gs))
1284+ then $Tuple2((((dK ++ hh) ++ gl) ++ gr), eu)
13041285 else throw("Strict value is not equal to itself.")
13051286 }
13061287 else throw("Strict value is not equal to itself.")
13161297
13171298
13181299
1319-@Callable(cU)
1320-func putForFree (hu) = if ((0 > hu))
1300+@Callable(cY)
1301+func putForFree (ht) = if ((0 > ht))
13211302 then throw("Wrong slpg")
1322- else if ((size(cU.payments) != 2))
1303+ else if ((size(cY.payments) != 2))
13231304 then throw("2 pmnts expd")
13241305 else {
1325- let hv = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], hu, false, false, true, 0, "")
1326- let dG = hv._9
1327- let ha = toBigInt(value(cU.payments[0]).amount)
1328- let hb = toBigInt(value(cU.payments[1]).amount)
1329- let eW = eP(ha, hb, toBigInt(0))
1330- if ((eW == eW))
1306+ let hu = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], ht, false, false, true, 0, "")
1307+ let dK = hu._9
1308+ let gZ = toBigInt(value(cY.payments[0]).amount)
1309+ let ha = toBigInt(value(cY.payments[1]).amount)
1310+ let fa = eT(gZ, ha, toBigInt(0))
1311+ if ((fa == fa))
13311312 then {
1332- let hw = eX(0, 0, 0)
1333- let gn = hw._1
1334- let eO = hw._2
1335- let go = fb(eW, eO)
1336- if ((go == go))
1337- then (dG ++ gn)
1313+ let hv = fb(0, 0, 0)
1314+ let gr = hv._1
1315+ let eS = hv._2
1316+ let gs = ff(fa, eS)
1317+ if ((gs == gs))
1318+ then (dK ++ gr)
13381319 else throw("Strict value is not equal to itself.")
13391320 }
13401321 else throw("Strict value is not equal to itself.")
13421323
13431324
13441325
1345-@Callable(cU)
1326+@Callable(cY)
13461327 func get () = {
1347- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1348- if ((eW == eW))
1328+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1329+ if ((fa == fa))
13491330 then {
1350- let ec = fo(cU)
1351- let hx = ec._1
1352- let dF = ec._2
1353- let dQ = ec._3
1354- let dk = ec._4
1355- let dG = ec._5
1356- let eD = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1357- if ((eD == eD))
1331+ let eg = fs(cY)
1332+ let hw = eg._1
1333+ let dJ = eg._2
1334+ let dU = eg._3
1335+ let do = eg._4
1336+ let dK = eg._5
1337+ let eH = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
1338+ if ((eH == eH))
13581339 then {
1359- let hy = eX(-(hx), -(dF), 0)
1360- let gn = hy._1
1361- let eO = hy._2
1362- let go = fb(eW, eO)
1363- if ((go == go))
1364- then (dG ++ gn)
1340+ let hx = fb(-(hw), -(dJ), 0)
1341+ let gr = hx._1
1342+ let eS = hx._2
1343+ let gs = ff(fa, eS)
1344+ if ((gs == gs))
1345+ then (dK ++ gr)
13651346 else throw("Strict value is not equal to itself.")
13661347 }
13671348 else throw("Strict value is not equal to itself.")
13711352
13721353
13731354
1374-@Callable(cU)
1375-func getOneTknV2 (fQ,fR) = {
1376- let hn = {
1377- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1378- if ($isInstanceOf(aX, "Boolean"))
1379- then aX
1380- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1355+@Callable(cY)
1356+func getOneTknV2 (fU,fV) = {
1357+ let hm = {
1358+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1359+ if ($isInstanceOf(bd, "Boolean"))
1360+ then bd
1361+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
13811362 }
1382- let hz = if (if (ba())
1363+ let hy = if (if (bg())
13831364 then true
1384- else (bp == s))
1365+ else (bv == s))
13851366 then true
1386- else hn
1387- let gN = [if (if (!(hz))
1367+ else hm
1368+ let gQ = [if (if (!(hy))
13881369 then true
1389- else gt(cU))
1370+ else gw(cY))
13901371 then true
1391- else aS("get operation is blocked by admin"), if ((size(cU.payments) == 1))
1372+ else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 1))
13921373 then true
1393- else aS("exactly 1 payment are expected")]
1394- if ((gN == gN))
1374+ else aZ("exactly 1 payment are expected")]
1375+ if ((gQ == gQ))
13951376 then {
1396- let hA = fP(fQ, fR, cU.payments, cU.caller, cU.originCaller, cU.transactionId)
1397- let dG = hA._1
1398- let ga = hA._2
1399- $Tuple2(dG, ga)
1377+ let hz = fT(fU, fV, cY.payments, cY.caller, cY.originCaller, cY.transactionId)
1378+ let dK = hz._1
1379+ let ge = hz._2
1380+ $Tuple2(dK, ge)
14001381 }
14011382 else throw("Strict value is not equal to itself.")
14021383 }
14031384
14041385
14051386
1406-@Callable(cU)
1387+@Callable(cY)
14071388 func refreshDLp () = {
1408- let hB = valueOrElse(getInteger(at), 0)
1409- let hC = if (((height - hB) >= aw))
1389+ let hA = valueOrElse(getInteger(as), 0)
1390+ let hB = if (((height - hA) >= av))
14101391 then unit
1411- else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1412- if ((hC == hC))
1392+ else aZ(makeString([toString(av), " blocks have not passed since the previous call"], ""))
1393+ if ((hB == hB))
14131394 then {
1414- let fi = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), aU("invalid dLp"))
1415- let hD = eX(0, 0, 0)
1416- let hE = hD._1
1417- let eO = hD._2
1418- let fa = if ((fi != eO))
1419- then hE
1420- else aS("nothing to refresh")
1421- $Tuple2(fa, toString(eO))
1395+ let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ar), "0")), bb("invalid dLp"))
1396+ let hC = fb(0, 0, 0)
1397+ let hD = hC._1
1398+ let eS = hC._2
1399+ let fe = if ((fm != eS))
1400+ then hD
1401+ else aZ("nothing to refresh")
1402+ $Tuple2(fe, toString(eS))
14221403 }
14231404 else throw("Strict value is not equal to itself.")
14241405 }
14251406
14261407
14271408
1428-@Callable(cU)
1429-func getOneTknV2READONLY (fQ,hF) = {
1430- let do = toBase58String(value(br))
1431- let dp = toBase58String(value(bs))
1432- let dn = toBase58String(value(bq))
1433- let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
1434- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dn)), "invalid lp asset").quantity)
1435- let cg = cD(cE)
1436- let cf = (cg - fraction(toBigInt(hF), cg, eN))
1437- let hG = if ((fQ == do))
1409+@Callable(cY)
1410+func getOneTknV2READONLY (fU,hE) = {
1411+ let ds = toBase58String(value(bx))
1412+ let dt = toBase58String(value(by))
1413+ let dr = toBase58String(value(bw))
1414+ let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
1415+ let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dr)), "invalid lp asset").quantity)
1416+ let cm = cJ(cK)
1417+ let cl = (cm - fraction(toBigInt(hE), cm, eR))
1418+ let hF = if ((fU == ds))
14381419 then 0
1439- else if ((fQ == dp))
1420+ else if ((fU == dt))
14401421 then 1
14411422 else throw("invalid out asset id")
1442- let hH = ex(cE, hG, cf)
1443- let gG = (cE[hG] - hH)
1444- let gH = max([0, toInt((gG - f))])
1445- let hI = cA(gH, aY)
1446- let fZ = hI._1
1447- let cC = hI._2
1448- $Tuple2(nil, $Tuple2(fZ, cC))
1423+ let hG = eB(cK, hF, cl)
1424+ let gJ = (cK[hF] - hG)
1425+ let gK = max([0, toInt((gJ - f))])
1426+ let hH = cG(gK, be)
1427+ let gd = hH._1
1428+ let cI = hH._2
1429+ $Tuple2(nil, $Tuple2(gd, cI))
14491430 }
14501431
14511432
14521433
1453-@Callable(cU)
1454-func getOneTknV2WithBonusREADONLY (fQ,hF) = {
1455- let do = toBase58String(value(br))
1456- let dp = toBase58String(value(bs))
1457- let dn = toBase58String(value(bq))
1458- let du = bS(do)
1459- let dw = bS(dp)
1460- let hJ = {
1461- let aX = invoke(this, "getOneTknV2READONLY", [fQ, hF], nil)
1462- if ($isInstanceOf(aX, "(Int, Int)"))
1463- then aX
1464- else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
1434+@Callable(cY)
1435+func getOneTknV2WithBonusREADONLY (fU,hE) = {
1436+ let ds = toBase58String(value(bx))
1437+ let dt = toBase58String(value(by))
1438+ let dr = toBase58String(value(bw))
1439+ let dy = bY(ds)
1440+ let dA = bY(dt)
1441+ let hI = {
1442+ let bd = invoke(this, "getOneTknV2READONLY", [fU, hE], nil)
1443+ if ($isInstanceOf(bd, "(Int, Int)"))
1444+ then bd
1445+ else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
14651446 }
1466- let fZ = hJ._1
1467- let cC = hJ._2
1468- let ec = di("", dn, hF, this)
1469- let dE = ec._1
1470- let dF = ec._2
1471- let hK = (dE + dF)
1472- let fO = if ((hK == 0))
1473- then if ((fZ == 0))
1447+ let gd = hI._1
1448+ let cI = hI._2
1449+ let eg = dm("", dr, hE, this)
1450+ let dI = eg._1
1451+ let dJ = eg._2
1452+ let hJ = (dI + dJ)
1453+ let fS = if ((hJ == 0))
1454+ then if ((gd == 0))
14741455 then 0
14751456 else throw("bonus calculation error")
1476- else fraction((fZ - hK), a, hK)
1477- $Tuple2(nil, $Tuple3(fZ, cC, fO))
1457+ else fraction((gd - hJ), a, hJ)
1458+ $Tuple2(nil, $Tuple3(gd, cI, fS))
14781459 }
14791460
14801461
14811462
1482-@Callable(cU)
1483-func getNoLess (hL,hM) = {
1484- let ec = fo(cU)
1485- let dE = ec._1
1486- let dF = ec._2
1487- let dQ = ec._3
1488- let dk = ec._4
1489- let dG = ec._5
1490- if ((hL > dE))
1491- then throw(((("Failed: " + toString(dE)) + " < ") + toString(hL)))
1492- else if ((hM > dF))
1493- then throw(((("Failed: " + toString(dF)) + " < ") + toString(hM)))
1463+@Callable(cY)
1464+func getNoLess (hK,hL) = {
1465+ let eg = fs(cY)
1466+ let dI = eg._1
1467+ let dJ = eg._2
1468+ let dU = eg._3
1469+ let do = eg._4
1470+ let dK = eg._5
1471+ if ((hK > dI))
1472+ then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
1473+ else if ((hL > dJ))
1474+ then throw(((("Failed: " + toString(dJ)) + " < ") + toString(hL)))
14941475 else {
1495- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1496- if ((eW == eW))
1476+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1477+ if ((fa == fa))
14971478 then {
1498- let hN = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1499- if ((hN == hN))
1479+ let hM = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
1480+ if ((hM == hM))
15001481 then {
1501- let hO = eX(-(dE), -(dF), 0)
1502- let gn = hO._1
1503- let eO = hO._2
1504- let go = fb(eW, eO)
1505- if ((go == go))
1506- then (dG ++ gn)
1482+ let hN = fb(-(dI), -(dJ), 0)
1483+ let gr = hN._1
1484+ let eS = hN._2
1485+ let gs = ff(fa, eS)
1486+ if ((gs == gs))
1487+ then (dK ++ gr)
15071488 else throw("Strict value is not equal to itself.")
15081489 }
15091490 else throw("Strict value is not equal to itself.")
15141495
15151496
15161497
1517-@Callable(cU)
1518-func unstakeAndGet (cB) = {
1519- let hP = if ((size(cU.payments) != 0))
1498+@Callable(cY)
1499+func unstakeAndGet (cH) = {
1500+ let hO = if ((size(cY.payments) != 0))
15201501 then throw("No pmnts expd")
15211502 else true
1522- if ((hP == hP))
1503+ if ((hO == hO))
15231504 then {
1524- let hQ = bx()
1525- let hd = bq
1526- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1527- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1528- if ((eW == eW))
1505+ let hP = bD()
1506+ let hc = bw
1507+ let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
1508+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1509+ if ((fa == fa))
15291510 then {
1530- let hS = invoke(hR, "unstake", [toBase58String(hd), cB], nil)
1531- if ((hS == hS))
1511+ let hR = invoke(hQ, "unstake", [toBase58String(hc), cH], nil)
1512+ if ((hR == hR))
15321513 then {
1533- let ec = di(toBase58String(cU.transactionId), toBase58String(hd), cB, cU.caller)
1534- let dE = ec._1
1535- let dF = ec._2
1536- let ds = parseIntValue(ec._9)
1537- let dG = ec._10
1538- let hT = if (if (ba())
1514+ let eg = dm(toBase58String(cY.transactionId), toBase58String(hc), cH, cY.caller)
1515+ let dI = eg._1
1516+ let dJ = eg._2
1517+ let dw = parseIntValue(eg._9)
1518+ let dK = eg._10
1519+ let hS = if (if (bg())
15391520 then true
1540- else (ds == s))
1541- then throw(("Blocked: " + toString(ds)))
1521+ else (dw == s))
1522+ then throw(("Blocked: " + toString(dw)))
15421523 else true
1543- if ((hT == hT))
1524+ if ((hS == hS))
15441525 then {
1545- let hU = invoke(aV, "burn", [cB], [AttachedPayment(hd, cB)])
1546- if ((hU == hU))
1526+ let hT = invoke(aT, "burn", [cH], [AttachedPayment(hc, cH)])
1527+ if ((hT == hT))
15471528 then {
1548- let hV = eX(-(dE), -(dF), 0)
1549- let gn = hV._1
1550- let eO = hV._2
1551- let go = fb(eW, eO)
1552- if ((go == go))
1553- then (dG ++ gn)
1529+ let hU = fb(-(dI), -(dJ), 0)
1530+ let gr = hU._1
1531+ let eS = hU._2
1532+ let gs = ff(fa, eS)
1533+ if ((gs == gs))
1534+ then (dK ++ gr)
15541535 else throw("Strict value is not equal to itself.")
15551536 }
15561537 else throw("Strict value is not equal to itself.")
15661547
15671548
15681549
1569-@Callable(cU)
1570-func unstakeAndGetNoLess (hW,hX,hM) = {
1571- let hz = if (ba())
1550+@Callable(cY)
1551+func unstakeAndGetNoLess (hV,hW,hL) = {
1552+ let hy = if (bg())
15721553 then true
1573- else (bp == s)
1574- let gN = [if (!(hz))
1554+ else (bv == s)
1555+ let gQ = [if (!(hy))
15751556 then true
1576- else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
1557+ else throw("get operation is blocked by admin"), if ((size(cY.payments) == 0))
15771558 then true
15781559 else throw("no payments are expected")]
1579- if ((gN == gN))
1560+ if ((gQ == gQ))
15801561 then {
1581- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1582- if ((eW == eW))
1562+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1563+ if ((fa == fa))
15831564 then {
1584- let hS = invoke(bz, "unstake", [toBase58String(bq), hW], nil)
1585- if ((hS == hS))
1565+ let hR = invoke(bF, "unstake", [toBase58String(bw), hV], nil)
1566+ if ((hR == hR))
15861567 then {
1587- let hY = di(toBase58String(cU.transactionId), toBase58String(bq), hW, cU.caller)
1588- let dE = hY._1
1589- let dF = hY._2
1590- let dG = hY._10
1591- let hZ = [if ((dE >= hX))
1568+ let hX = dm(toBase58String(cY.transactionId), toBase58String(bw), hV, cY.caller)
1569+ let dI = hX._1
1570+ let dJ = hX._2
1571+ let dK = hX._10
1572+ let hY = [if ((dI >= hW))
15921573 then true
1593- else throw(makeString(["amount asset amount to receive is less than ", toString(hX)], "")), if ((dF >= hM))
1574+ else throw(makeString(["amount asset amount to receive is less than ", toString(hW)], "")), if ((dJ >= hL))
15941575 then true
1595- else throw(makeString(["price asset amount to receive is less than ", toString(hM)], ""))]
1596- if ((hZ == hZ))
1576+ else throw(makeString(["price asset amount to receive is less than ", toString(hL)], ""))]
1577+ if ((hY == hY))
15971578 then {
1598- let hN = invoke(aV, "burn", [hW], [AttachedPayment(bq, hW)])
1599- if ((hN == hN))
1579+ let hM = invoke(aT, "burn", [hV], [AttachedPayment(bw, hV)])
1580+ if ((hM == hM))
16001581 then {
1601- let ia = eX(-(dE), -(dF), 0)
1602- let gn = ia._1
1603- let eO = ia._2
1604- let go = fb(eW, eO)
1605- if ((go == go))
1606- then (dG ++ gn)
1582+ let hZ = fb(-(dI), -(dJ), 0)
1583+ let gr = hZ._1
1584+ let eS = hZ._2
1585+ let gs = ff(fa, eS)
1586+ if ((gs == gs))
1587+ then (dK ++ gr)
16071588 else throw("Strict value is not equal to itself.")
16081589 }
16091590 else throw("Strict value is not equal to itself.")
16191600
16201601
16211602
1622-@Callable(cU)
1623-func unstakeAndGetOneTknV2 (hW,fQ,fR) = {
1624- let hn = {
1625- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1626- if ($isInstanceOf(aX, "Boolean"))
1627- then aX
1628- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1603+@Callable(cY)
1604+func unstakeAndGetOneTknV2 (hV,fU,fV) = {
1605+ let hm = {
1606+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1607+ if ($isInstanceOf(bd, "Boolean"))
1608+ then bd
1609+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
16291610 }
1630- let hz = if (if (ba())
1611+ let hy = if (if (bg())
16311612 then true
1632- else (bp == s))
1613+ else (bv == s))
16331614 then true
1634- else hn
1635- let gN = [if (if (!(hz))
1615+ else hm
1616+ let gQ = [if (if (!(hy))
16361617 then true
1637- else gt(cU))
1618+ else gw(cY))
16381619 then true
1639- else aS("get operation is blocked by admin"), if ((size(cU.payments) == 0))
1620+ else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 0))
16401621 then true
1641- else aS("no payments are expected")]
1642- if ((gN == gN))
1622+ else aZ("no payments are expected")]
1623+ if ((gQ == gQ))
16431624 then {
1644- let hQ = bx()
1645- let hd = bq
1646- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1647- let dm = cU.caller
1648- let ib = this
1649- let hS = invoke(hR, "unstakeINTERNAL", [hd, hW, dm.bytes, ib.bytes], nil)
1650- if ((hS == hS))
1625+ let hP = bD()
1626+ let hc = bw
1627+ let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
1628+ let dq = cY.caller
1629+ let ia = this
1630+ let hR = invoke(hQ, "unstakeINTERNAL", [hc, hV, dq.bytes, ia.bytes], nil)
1631+ if ((hR == hR))
16511632 then {
1652- let ic = fP(fQ, fR, [AttachedPayment(hd, hW)], cU.caller, cU.originCaller, cU.transactionId)
1653- let dG = ic._1
1654- let ga = ic._2
1655- $Tuple2(dG, ga)
1633+ let ib = fT(fU, fV, [AttachedPayment(hc, hV)], cY.caller, cY.originCaller, cY.transactionId)
1634+ let dK = ib._1
1635+ let ge = ib._2
1636+ $Tuple2(dK, ge)
16561637 }
16571638 else throw("Strict value is not equal to itself.")
16581639 }
16611642
16621643
16631644
1664-@Callable(cU)
1665-func putOneTknV2WithBonusREADONLY (id,ie) = {
1666- let if = fu(id, ie, "", "", true)
1667- let fJ = if._1
1668- let dG = if._2
1669- let cC = if._3
1670- let fO = if._4
1671- $Tuple2(nil, $Tuple3(fJ, cC, fO))
1645+@Callable(cY)
1646+func putOneTknV2WithBonusREADONLY (ic,id) = {
1647+ let ie = fy(ic, id, "", "", true)
1648+ let fN = ie._1
1649+ let dK = ie._2
1650+ let cI = ie._3
1651+ let fS = ie._4
1652+ $Tuple2(nil, $Tuple3(fN, cI, fS))
16721653 }
16731654
16741655
16751656
1676-@Callable(cU)
1677-func putOneTknV2WithoutTakeFeeREADONLY (id,ie) = {
1678- let ig = fu(id, ie, "", "", false)
1679- let fJ = ig._1
1680- let dG = ig._2
1681- let cC = ig._3
1682- let fO = ig._4
1683- $Tuple2(nil, $Tuple3(fJ, cC, fO))
1657+@Callable(cY)
1658+func putOneTknV2WithoutTakeFeeREADONLY (ic,id) = {
1659+ let if = fy(ic, id, "", "", false)
1660+ let fN = if._1
1661+ let dK = if._2
1662+ let cI = if._3
1663+ let fS = if._4
1664+ $Tuple2(nil, $Tuple3(fN, cI, fS))
16841665 }
16851666
16861667
16871668
1688-@Callable(cU)
1689-func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
1669+@Callable(cY)
1670+func activate (ig,ih) = if ((toString(cY.caller) != toString(aT)))
16901671 then throw("denied")
1691- else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
1672+ else $Tuple2([StringEntry(aj(), ig), StringEntry(ak(), ih)], "success")
16921673
16931674
16941675
1695-@Callable(cU)
1696-func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697- then gs
1698- else [StringEntry(ij, hT)]
1676+@Callable(cY)
1677+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bj())
16991678
17001679
17011680
1702-@Callable(cU)
1703-func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704- then gs
1705- else [IntegerEntry(ij, hT)]
1681+@Callable(cY)
1682+func getAccBalanceWrapperREADONLY (bZ) = $Tuple2(nil, bY(bZ))
17061683
17071684
17081685
1709-@Callable(cU)
1710-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
1711-
1712-
1713-
1714-@Callable(cU)
1715-func getAccBalanceWrapperREADONLY (bT) = $Tuple2(nil, bS(bT))
1716-
1717-
1718-
1719-@Callable(cU)
1720-func calcPricesWrapperREADONLY (cm,cn,cr) = {
1721- let ik = cq(cm, cn, cr)
1722- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1686+@Callable(cY)
1687+func calcPricesWrapperREADONLY (cs,ct,cx) = {
1688+ let ii = cw(cs, ct, cx)
1689+ $Tuple2(nil, [toString(ii[0]), toString(ii[1]), toString(ii[2])])
17231690 }
17241691
17251692
17261693
1727-@Callable(cU)
1728-func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
1694+@Callable(cY)
1695+func fromX18WrapperREADONLY (M,ij) = $Tuple2(nil, L(parseBigIntValue(M), ij))
17291696
17301697
17311698
1732-@Callable(cU)
1699+@Callable(cY)
17331700 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17341701
17351702
17361703
1737-@Callable(cU)
1738-func calcPriceBigIntWrapperREADONLY (bV,bW) = $Tuple2(nil, toString(bU(parseBigIntValue(bV), parseBigIntValue(bW))))
1704+@Callable(cY)
1705+func calcPriceBigIntWrapperREADONLY (cb,cc) = $Tuple2(nil, toString(ca(parseBigIntValue(cb), parseBigIntValue(cc))))
17391706
17401707
17411708
1742-@Callable(cU)
1743-func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,im,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, im, dM, dN, true, false, 0, ""))
1709+@Callable(cY)
1710+func estimatePutOperationWrapperREADONLY (dn,ch,dM,dN,dO,dP,ik,dQ,dR) = $Tuple2(nil, dL(dn, ch, dM, dN, dO, dP, ik, dQ, dR, true, false, 0, ""))
17441711
17451712
17461713
1747-@Callable(cU)
1748-func estimateGetOperationWrapperREADONLY (dj,in,dl,im) = {
1749- let ec = di(dj, in, dl, addressFromStringValue(im))
1750- $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
1714+@Callable(cY)
1715+func estimateGetOperationWrapperREADONLY (dn,il,dp,ik) = {
1716+ let eg = dm(dn, il, dp, addressFromStringValue(ik))
1717+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17511718 }
17521719
17531720
17541721
1755-@Callable(cU)
1722+@Callable(cY)
17561723 func changeAmp () = {
1757- let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758- let ip = {
1759- let gq = io
1760- if ($isInstanceOf(gq, "List[Any]"))
1724+ let im = invoke(aT, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1725+ let in = {
1726+ let aP = im
1727+ if ($isInstanceOf(aP, "List[Any]"))
17611728 then {
1762- let iq = gq
1729+ let io = aP
17631730 $Tuple3({
1764- let aX = iq[0]
1765- if ($isInstanceOf(aX, "Int"))
1766- then aX
1767- else throw(($getType(aX) + " couldn't be cast to Int"))
1731+ let bd = io[0]
1732+ if ($isInstanceOf(bd, "Int"))
1733+ then bd
1734+ else throw(($getType(bd) + " couldn't be cast to Int"))
17681735 }, {
1769- let aX = iq[1]
1770- if ($isInstanceOf(aX, "Int"))
1771- then aX
1772- else throw(($getType(aX) + " couldn't be cast to Int"))
1736+ let bd = io[1]
1737+ if ($isInstanceOf(bd, "Int"))
1738+ then bd
1739+ else throw(($getType(bd) + " couldn't be cast to Int"))
17731740 }, {
1774- let aX = iq[2]
1775- if ($isInstanceOf(aX, "Int"))
1776- then aX
1777- else throw(($getType(aX) + " couldn't be cast to Int"))
1741+ let bd = io[2]
1742+ if ($isInstanceOf(bd, "Int"))
1743+ then bd
1744+ else throw(($getType(bd) + " couldn't be cast to Int"))
17781745 })
17791746 }
1780- else aS("invalid entry type")
1747+ else aZ("invalid entry type")
17811748 }
1782- let ir = ip._1
1783- let is = ip._2
1784- let it = ip._3
1785- let iu = parseIntValue(getStringValue(al()))
1786- let iv = (iu + is)
1787- let iw = if ((0 > is))
1788- then if ((it > iv))
1789- then it
1790- else iv
1791- else if ((iv > it))
1792- then it
1793- else iv
1794- let ix = valueOrElse(getInteger(ap()), 0)
1795- let iy = (ix + ir)
1796- let gN = [if ((height > iy))
1749+ let ip = in._1
1750+ let iq = in._2
1751+ let ir = in._3
1752+ let is = parseIntValue(getStringValue(al()))
1753+ let it = (is + iq)
1754+ let iu = if ((0 > iq))
1755+ then if ((ir > it))
1756+ then ir
1757+ else it
1758+ else if ((it > ir))
1759+ then ir
1760+ else it
1761+ let iv = valueOrElse(getInteger(ao()), 0)
1762+ let iw = (iv + ip)
1763+ let gQ = [if ((height > iw))
17971764 then true
1798- else aS("try again in few blocks"), if ((iu != iw))
1765+ else aZ("try again in few blocks"), if ((is != iu))
17991766 then true
1800- else aS("already reached target")]
1801- if ((gN == gN))
1802- then [IntegerEntry(ap(), height), StringEntry(al(), toString(iw)), StringEntry(am(height), toString(iw))]
1767+ else aZ("already reached target")]
1768+ if ((gQ == gQ))
1769+ then [IntegerEntry(ao(), height), StringEntry(al(), toString(iu)), StringEntry(am(height), toString(iu))]
18031770 else throw("Strict value is not equal to itself.")
18041771 }
18051772
18061773
1807-@Verifier(iz)
1808-func iA () = {
1809- let iB = {
1810- let gq = gp()
1811- if ($isInstanceOf(gq, "ByteVector"))
1774+@Verifier(ix)
1775+func iy () = {
1776+ let iz = {
1777+ let aP = gt()
1778+ if ($isInstanceOf(aP, "ByteVector"))
18121779 then {
1813- let gu = gq
1814- gu
1780+ let gx = aP
1781+ gx
18151782 }
1816- else if ($isInstanceOf(gq, "Unit"))
1817- then iz.senderPublicKey
1783+ else if ($isInstanceOf(aP, "Unit"))
1784+ then ix.senderPublicKey
18181785 else throw("Match error")
18191786 }
1820- let gq = iz
1821- if ($isInstanceOf(gq, "Order"))
1787+ let aP = ix
1788+ if ($isInstanceOf(aP, "Order"))
18221789 then {
1823- let fe = gq
1824- let iC = bb()
1825- let iD = if (gB())
1790+ let fi = aP
1791+ let iA = bh()
1792+ let iB = if (gE())
18261793 then $Tuple2(true, "")
1827- else fd(fe)
1828- let aK = iD._1
1829- let aL = iD._2
1830- let aM = sigVerify(fe.bodyBytes, fe.proofs[0], fe.senderPublicKey)
1831- let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iC)
1832- if (if (if (aK)
1794+ else fh(fi)
1795+ let aJ = iB._1
1796+ let aK = iB._2
1797+ let aL = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1798+ let aM = sigVerify(fi.bodyBytes, fi.proofs[1], iA)
1799+ if (if (if (aJ)
1800+ then aL
1801+ else false)
18331802 then aM
18341803 else false)
1835- then aN
1836- else false)
18371804 then true
1838- else aJ(aK, aL, aM, aN)
1805+ else aI(aJ, aK, aL, aM)
18391806 }
1840- else if ($isInstanceOf(gq, "SetScriptTransaction"))
1807+ else if ($isInstanceOf(aP, "SetScriptTransaction"))
18411808 then {
1842- let cH = gq
1843- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1809+ let aU = aP
1810+ if (sigVerify(ix.bodyBytes, ix.proofs[0], iz))
18441811 then true
18451812 else {
1846- let iE = blake2b256(value(cH.script))
1847- let iF = fromBase64String(value(getString(aV, aF())))
1848- let iG = scriptHash(this)
1849- if ((iF == iE))
1850- then (iG != iE)
1813+ let iC = blake2b256(value(aU.script))
1814+ let iD = fromBase64String(value(getString(aT, aE())))
1815+ let iE = scriptHash(this)
1816+ if ((iD == iC))
1817+ then (iE != iC)
18511818 else false
18521819 }
18531820 }
1854- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1821+ else sigVerify(ix.bodyBytes, ix.proofs[0], iz)
18551822 }
18561823
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
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (I,J) = fraction(I, c, J)
7474
7575
7676 func L (M,N) = toInt(fraction(M, toBigInt(N), c))
7777
7878
7979 func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
8080
8181
8282 func Q (I,J) = fraction(I, c, toBigInt(J))
8383
8484
8585 func R (M,N) = fraction(M, toBigInt(N), c)
8686
8787
8888 func S (T,U,V) = fraction(T, U, V)
8989
9090
9191 func W (M) = if ((d > M))
9292 then -(M)
9393 else M
9494
9595
9696 func X (M) = if ((d > M))
9797 then -(M)
9898 else M
9999
100100
101101 func Y () = "%s__factoryContract"
102102
103103
104104 func Z () = "%s__managerPublicKey"
105105
106106
107-func aa () = "%s__pendingManagerPublicKey"
107+func aa () = "%s__managerVaultAddress"
108108
109109
110110 func ab () = "%s%s__price__last"
111111
112112
113113 func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
114114
115115
116116 func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
117117
118118
119119 func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
120120
121121
122122 func aj () = "%s__amountAsset"
123123
124124
125125 func ak () = "%s__priceAsset"
126126
127127
128128 func al () = "%s__amp"
129129
130130
131131 func am (an) = ("%s%d__amp__" + toString(an))
132132
133133
134-func ao () = "%s__addonAddr"
134+func ao () = "%s__changeAmpLastCall"
135135
136136
137-func ap () = "%s__changeAmpLastCall"
137+let ap = "%s__fee"
138+
139+let aq = valueOrElse(getInteger(this, ap), G)
140+
141+let ar = makeString(["%s", "dLp"], n)
142+
143+let as = makeString(["%s", "dLpRefreshedHeight"], n)
144+
145+let at = makeString(["%s", "refreshDLpDelay"], n)
146+
147+let au = 30
148+
149+let av = valueOrElse(getInteger(this, at), au)
150+
151+func aw () = "%s__factoryConfig"
138152
139153
140-let aq = "%s__fee"
141-
142-let ar = valueOrElse(getInteger(this, aq), G)
143-
144-let as = makeString(["%s", "dLp"], n)
145-
146-let at = makeString(["%s", "dLpRefreshedHeight"], n)
147-
148-let au = makeString(["%s", "refreshDLpDelay"], n)
149-
150-let av = 30
151-
152-let aw = valueOrElse(getInteger(this, au), av)
153-
154-func ax () = "%s__factoryConfig"
154+func ax () = "%s%s__matcher__publicKey"
155155
156156
157-func ay () = "%s%s__matcher__publicKey"
157+func ay (az,aA) = (((("%d%d%s__" + az) + "__") + aA) + "__config")
158158
159159
160-func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160+func aB (aC) = ("%s%s%s__mappings__baseAsset2internalId__" + aC)
161161
162162
163-func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163+func aD () = "%s__shutdown"
164164
165165
166-func aE () = "%s__shutdown"
166+func aE () = "%s__allowedLpStableScriptHash"
167167
168168
169-func aF () = "%s__allowedLpStableScriptHash"
169+func aF () = "%s__feeCollectorAddress"
170170
171171
172-func aG () = "%s__feeCollectorAddress"
172+func aG (aH) = ("%s%s__skipOrderValidation__" + aH)
173173
174174
175-func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175+func aI (aJ,aK,aL,aM) = throw((((((((("order validation failed: orderValid=" + toString(aJ)) + " (") + aK) + ")") + " senderValid=") + toString(aL)) + " matcherValid=") + toString(aM)))
176176
177177
178-func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
179-
180-
181-func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
182-
183-
184-func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
185-
186-
187-func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
188-
189-
190-func aU (aT) = makeString(["lp_stable.ride:", aT], " ")
191-
192-
193-let aV = addressFromStringValue(aO(this, Y()))
194-
195-let aW = {
196- let aX = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
197- if ($isInstanceOf(aX, "Int"))
198- then aX
199- else throw(($getType(aX) + " couldn't be cast to Int"))
200- }
201-
202-let aY = {
203- let aX = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
204- if ($isInstanceOf(aX, "Int"))
205- then aX
206- else throw(($getType(aX) + " couldn't be cast to Int"))
207- }
208-
209-let aZ = aO(this, al())
210-
211-func ba () = valueOrElse(getBoolean(aV, aE()), false)
212-
213-
214-func bb () = fromBase58String(aO(aV, ay()))
215-
216-
217-let bc = addressFromStringValue(aO(aV, aG()))
218-
219-func bd () = {
220- let be = aO(this, aj())
221- let bf = aO(this, ak())
222- let bg = aR(aV, aC(bf))
223- let aA = aR(aV, aC(be))
224- split(aO(aV, az(toString(aA), toString(bg))), n)
178+func aN (aO) = {
179+ let aP = addressFromString(aO)
180+ if ($isInstanceOf(aP, "Address"))
181+ then {
182+ let aQ = aP
183+ aQ
184+ }
185+ else this
225186 }
226187
227188
228-func bh (bi) = if ((bi == k))
229- then unit
230- else fromBase58String(bi)
231-
232-
233-func bj (bi) = if ((bi == unit))
234- then k
235- else toBase58String(value(bi))
236-
237-
238-func bk (bl) = $Tuple9(addressFromStringValue(bl[t]), parseIntValue(bl[u]), fromBase58String(bl[v]), bh(bl[w]), bh(bl[x]), parseIntValue(bl[y]), parseIntValue(bl[z]), fromBase58String(bl[A]), fromBase58String(bl[B]))
239-
240-
241-let bm = bk(bd())
242-
243-let bn = bm
244-
245-let bo = bn._1
246-
247-let bp = bn._2
248-
249-let bq = bn._3
250-
251-let br = bn._4
252-
253-let bs = bn._5
254-
255-let bt = bn._6
256-
257-let bu = bn._7
258-
259-let bv = bn._8
260-
261-let bw = bn._9
262-
263-func bx () = split(aO(aV, ax()), n)
264-
265-
266-let by = bx()
267-
268-let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
269-
270-let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
271-
272-let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
273-
274-let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
275-
276-func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], n)
277-
278-
279-func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], n)
280-
281-
282-func bS (bT) = if ((bT == "WAVES"))
283- then wavesBalance(this).available
284- else assetBalance(this, fromBase58String(bT))
285-
286-
287-func bU (bV,bW) = fraction(bV, c, bW)
288-
289-
290-func bX (bV,bW,P) = fraction(bV, c, bW, P)
291-
292-
293-func bY (bZ,ca,cb) = {
294- let cc = fraction((bZ - ca), b, ca)
295- let cd = ((cb - W(cc)) > d)
296- if (!(cd))
297- then throw(("Big slpg: " + toString(cc)))
298- else $Tuple2(cd, min([bZ, ca]))
189+func aR () = {
190+ let aS = {
191+ let aP = getString(Y())
192+ if ($isInstanceOf(aP, "String"))
193+ then {
194+ let aT = aP
195+ aN(aT)
196+ }
197+ else this
198+ }
199+ let aP = getString(aS, aa())
200+ if ($isInstanceOf(aP, "String"))
201+ then {
202+ let aU = aP
203+ aN(aU)
204+ }
205+ else this
299206 }
300207
301208
302-func ce (cf,cg,ch) = {
303- let cc = fraction(cg, b, cf)
304- let ci = (ch > cc)
305- if (if (ci)
306- then true
307- else (cg > cf))
308- then throw(((((((toString(cg) + " ") + toString(cf)) + " ") + toString(cc)) + " ") + toString(ch)))
309- else ci
209+func aV (aW,aX) = valueOrErrorMessage(getString(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
210+
211+
212+func aY (aW,aX) = valueOrErrorMessage(getInteger(aW, aX), makeString(["mandatory ", toString(aW), ".", aX, " not defined"], ""))
213+
214+
215+func aZ (ba) = throw(makeString(["lp_stable.ride:", ba], " "))
216+
217+
218+func bb (ba) = makeString(["lp_stable.ride:", ba], " ")
219+
220+
221+let aT = addressFromStringValue(aV(this, Y()))
222+
223+let bc = {
224+ let bd = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
225+ if ($isInstanceOf(bd, "Int"))
226+ then bd
227+ else throw(($getType(bd) + " couldn't be cast to Int"))
228+ }
229+
230+let be = {
231+ let bd = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
232+ if ($isInstanceOf(bd, "Int"))
233+ then bd
234+ else throw(($getType(bd) + " couldn't be cast to Int"))
235+ }
236+
237+let bf = aV(this, al())
238+
239+func bg () = valueOrElse(getBoolean(aT, aD()), false)
240+
241+
242+func bh () = fromBase58String(aV(aT, ax()))
243+
244+
245+let bi = addressFromStringValue(aV(aT, aF()))
246+
247+func bj () = {
248+ let bk = aV(this, aj())
249+ let bl = aV(this, ak())
250+ let bm = aY(aT, aB(bl))
251+ let az = aY(aT, aB(bk))
252+ split(aV(aT, ay(toString(az), toString(bm))), n)
310253 }
311254
312255
313-func cj (ck,cl,cm,cn) = {
314- let co = H(cm, ck)
315- let cp = H(cn, cl)
316- bU(cp, co)
256+func bn (bo) = if ((bo == k))
257+ then unit
258+ else fromBase58String(bo)
259+
260+
261+func bp (bo) = if ((bo == unit))
262+ then k
263+ else toBase58String(value(bo))
264+
265+
266+func bq (br) = $Tuple9(addressFromStringValue(br[t]), parseIntValue(br[u]), fromBase58String(br[v]), bn(br[w]), bn(br[x]), parseIntValue(br[y]), parseIntValue(br[z]), fromBase58String(br[A]), fromBase58String(br[B]))
267+
268+
269+let bs = bq(bj())
270+
271+let bt = bs
272+
273+let bu = bt._1
274+
275+let bv = bt._2
276+
277+let bw = bt._3
278+
279+let bx = bt._4
280+
281+let by = bt._5
282+
283+let bz = bt._6
284+
285+let bA = bt._7
286+
287+let bB = bt._8
288+
289+let bC = bt._9
290+
291+func bD () = split(aV(aT, aw()), n)
292+
293+
294+let bE = bD()
295+
296+let bF = valueOrErrorMessage(addressFromString(bE[C]), "Invalid staking contract address")
297+
298+let bG = valueOrErrorMessage(addressFromString(bE[E]), "Invalid slipage contract address")
299+
300+let bH = valueOrErrorMessage(addressFromString(bE[F]), "Invalid gwx contract address")
301+
302+let bI = valueOrErrorMessage(addressFromString(bE[D]), "Invalid gwx contract address")
303+
304+func bJ (bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT)], n)
305+
306+
307+func bU (bV,bW,bX,bN,bQ,bR) = makeString(["%d%d%d%d%d%d", toString(bV), toString(bW), toString(bX), toString(bN), toString(bQ), toString(bR)], n)
308+
309+
310+func bY (bZ) = if ((bZ == "WAVES"))
311+ then wavesBalance(this).available
312+ else assetBalance(this, fromBase58String(bZ))
313+
314+
315+func ca (cb,cc) = fraction(cb, c, cc)
316+
317+
318+func cd (cb,cc,P) = fraction(cb, c, cc, P)
319+
320+
321+func ce (cf,cg,ch) = {
322+ let ci = fraction((cf - cg), b, cg)
323+ let cj = ((ch - W(ci)) > d)
324+ if (!(cj))
325+ then throw(("Big slpg: " + toString(ci)))
326+ else $Tuple2(cj, min([cf, cg]))
317327 }
318328
319329
320-func cq (cm,cn,cr) = {
321- let cs = bt
322- let ct = bu
323- let cu = cj(cs, ct, cm, cn)
324- let bW = H(cm, cs)
325- let bV = H(cn, ct)
326- let cv = H(cr, a)
327- let cw = bU(bW, cv)
328- let cx = bU(bV, cv)
329-[cu, cw, cx]
330+func ck (cl,cm,cn) = {
331+ let ci = fraction(cm, b, cl)
332+ let co = (cn > ci)
333+ if (if (co)
334+ then true
335+ else (cm > cl))
336+ then throw(((((((toString(cm) + " ") + toString(cl)) + " ") + toString(ci)) + " ") + toString(cn)))
337+ else co
330338 }
331339
332340
333-func cy (cm,cn,cr) = {
334- let cz = cq(cm, cn, cr)
335-[L(cz[0], a), L(cz[1], a), L(cz[2], a)]
341+func cp (cq,cr,cs,ct) = {
342+ let cu = H(cs, cq)
343+ let cv = H(ct, cr)
344+ ca(cv, cu)
336345 }
337346
338347
339-func cA (cB,ar) = {
340- let cC = if ((ar == 0))
341- then 0
342- else fraction(cB, ar, a)
343- $Tuple2((cB - cC), cC)
348+func cw (cs,ct,cx) = {
349+ let cy = bz
350+ let cz = bA
351+ let cA = cp(cy, cz, cs, ct)
352+ let cc = H(cs, cy)
353+ let cb = H(ct, cz)
354+ let cB = H(cx, a)
355+ let cC = ca(cc, cB)
356+ let cD = ca(cb, cB)
357+[cA, cC, cD]
344358 }
345359
346360
347-func cD (cE) = {
348- let cF = cE[0]
349- let cG = cE[1]
350- let cH = (cF + cG)
351- if ((cH == e))
361+func cE (cs,ct,cx) = {
362+ let cF = cw(cs, ct, cx)
363+[L(cF[0], a), L(cF[1], a), L(cF[2], a)]
364+ }
365+
366+
367+func cG (cH,aq) = {
368+ let cI = if ((aq == 0))
369+ then 0
370+ else fraction(cH, aq, a)
371+ $Tuple2((cH - cI), cI)
372+ }
373+
374+
375+func cJ (cK) = {
376+ let cL = cK[0]
377+ let cM = cK[1]
378+ let aU = (cL + cM)
379+ if ((aU == e))
352380 then e
353381 else {
354- let cI = parseIntValue(aZ)
355- let cJ = (cI * 2)
356- let cz = fraction(cF, cG, f)
357- let cK = fraction(cz, i, f)
358- let cL = fraction(toBigInt(cJ), cH, f)
359- let cM = toBigInt((cJ - 1))
360- func cN (cO) = {
361- let cP = fraction(cO, cO, f)
362- let cQ = fraction(cP, cO, f)
363- let cR = fraction(cQ, f, cK)
364- fraction((cL + fraction(cR, g, f)), cO, (fraction(cM, cO, f) + fraction(h, cR, f)))
382+ let aQ = parseIntValue(bf)
383+ let cN = (aQ * 2)
384+ let cF = fraction(cL, cM, f)
385+ let cO = fraction(cF, i, f)
386+ let cP = fraction(toBigInt(cN), aU, f)
387+ let cQ = toBigInt((cN - 1))
388+ func cR (cS) = {
389+ let cT = fraction(cS, cS, f)
390+ let cU = fraction(cT, cS, f)
391+ let cV = fraction(cU, f, cO)
392+ fraction((cP + fraction(cV, g, f)), cS, (fraction(cQ, cS, f) + fraction(h, cV, f)))
365393 }
366394
367- func cS (cT,cU) = if (cT._2)
368- then cT
395+ func cW (cX,cY) = if (cX._2)
396+ then cX
369397 else {
370- let cO = cT._1
371- let cV = cN(cO)
372- let cW = (cV - value(cO))
373- let cX = if ((e > cW))
374- then -(cW)
375- else cW
376- if ((f >= cX))
377- then $Tuple2(cV, true)
378- else $Tuple2(cV, false)
398+ let cS = cX._1
399+ let cZ = cR(cS)
400+ let da = (cZ - value(cS))
401+ let db = if ((e > da))
402+ then -(da)
403+ else da
404+ if ((f >= db))
405+ then $Tuple2(cZ, true)
406+ else $Tuple2(cZ, false)
379407 }
380408
381- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
382- let cZ = {
383- let da = cY
384- let db = size(da)
385- let dc = $Tuple2(cH, false)
386- func dd (de,df) = if ((df >= db))
387- then de
388- else cS(de, da[df])
409+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
410+ let dd = {
411+ let de = dc
412+ let df = size(de)
413+ let dg = $Tuple2(aU, false)
414+ func dh (di,dj) = if ((dj >= df))
415+ then di
416+ else cW(di, de[dj])
389417
390- func dg (de,df) = if ((df >= db))
391- then de
418+ func dk (di,dj) = if ((dj >= df))
419+ then di
392420 else throw("List size exceeds 17")
393421
394- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
422+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
395423 }
396- let cO = cZ._1
397- let dh = cZ._2
398- if (dh)
399- then cO
400- else throw(("D calculation error, D = " + toString(cO)))
424+ let cS = dd._1
425+ let dl = dd._2
426+ if (dl)
427+ then cS
428+ else throw(("D calculation error, D = " + toString(cS)))
401429 }
402430 }
403431
404432
405-func di (dj,dk,dl,dm) = {
406- let dn = bq
407- let do = toBase58String(value(br))
408- let dp = toBase58String(value(bs))
409- let dq = bt
410- let dr = bu
411- let ds = toString(bp)
412- let dt = valueOrErrorMessage(assetInfo(dn), "Wrong LP id").quantity
413- if ((toBase58String(dn) != dk))
433+func dm (dn,do,dp,dq) = {
434+ let dr = bw
435+ let ds = toBase58String(value(bx))
436+ let dt = toBase58String(value(by))
437+ let du = bz
438+ let dv = bA
439+ let dw = toString(bv)
440+ let dx = valueOrErrorMessage(assetInfo(dr), "Wrong LP id").quantity
441+ if ((toBase58String(dr) != do))
414442 then throw("Wrong pmt asset")
415443 else {
416- let du = bS(do)
417- let dv = H(du, dq)
418- let dw = bS(dp)
419- let dx = H(dw, dr)
420- let dy = bU(dx, dv)
421- let dz = L(dy, a)
422- let dA = H(dl, a)
423- let dB = H(dt, a)
424- let dC = fraction(dv, dA, dB)
425- let dD = fraction(dx, dA, dB)
426- let dE = O(dC, dq, FLOOR)
427- let dF = O(dD, dr, FLOOR)
428- let dG = if ((dj == ""))
444+ let dy = bY(ds)
445+ let dz = H(dy, du)
446+ let dA = bY(dt)
447+ let dB = H(dA, dv)
448+ let dC = ca(dB, dz)
449+ let dD = L(dC, a)
450+ let dE = H(dp, a)
451+ let dF = H(dx, a)
452+ let dG = fraction(dz, dE, dF)
453+ let dH = fraction(dB, dE, dF)
454+ let dI = O(dG, du, FLOOR)
455+ let dJ = O(dH, dv, FLOOR)
456+ let dK = if ((dn == ""))
429457 then nil
430- else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
458+ else [ScriptTransfer(dq, dI, if ((ds == "WAVES"))
431459 then unit
432- else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
460+ else fromBase58String(ds)), ScriptTransfer(dq, dJ, if ((dt == "WAVES"))
433461 then unit
434- else fromBase58String(dp)), StringEntry(ai(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz)]
435- $Tuple10(dE, dF, do, dp, du, dw, dt, dy, ds, dG)
462+ else fromBase58String(dt)), StringEntry(ai(toString(dq), dn), bU(dI, dJ, dp, dD, height, lastBlock.timestamp)), IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD)]
463+ $Tuple10(dI, dJ, ds, dt, dy, dA, dx, dC, dw, dK)
436464 }
437465 }
438466
439467
440-func dH (dj,cb,dI,dJ,dK,dL,dm,dM,dN,dO,dP,dQ,dR) = {
441- let dn = bq
442- let dS = toBase58String(value(br))
443- let dT = toBase58String(value(bs))
444- let dU = bv
445- let dV = bw
446- let dW = bt
447- let dX = bu
448- let ds = toString(bp)
449- let dY = valueOrErrorMessage(assetInfo(dn), "Wr lp as").quantity
450- let du = if (dM)
451- then bS(dS)
452- else if (if (dO)
453- then (dR == dS)
468+func dL (dn,ch,dM,dN,dO,dP,dq,dQ,dR,dS,dT,dU,dV) = {
469+ let dr = bw
470+ let dW = toBase58String(value(bx))
471+ let dX = toBase58String(value(by))
472+ let dY = bB
473+ let dZ = bC
474+ let ea = bz
475+ let eb = bA
476+ let dw = toString(bv)
477+ let ec = valueOrErrorMessage(assetInfo(dr), "Wr lp as").quantity
478+ let dy = if (dQ)
479+ then bY(dW)
480+ else if (if (dS)
481+ then (dV == dW)
454482 else false)
455- then (bS(dS) - dQ)
456- else if (dO)
457- then bS(dS)
458- else (bS(dS) - dI)
459- let dw = if (dM)
460- then bS(dT)
461- else if (if (dO)
462- then (dR == dT)
483+ then (bY(dW) - dU)
484+ else if (dS)
485+ then bY(dW)
486+ else (bY(dW) - dM)
487+ let dA = if (dQ)
488+ then bY(dX)
489+ else if (if (dS)
490+ then (dV == dX)
463491 else false)
464- then (bS(dT) - dQ)
465- else if (dO)
466- then bS(dT)
467- else (bS(dT) - dK)
468- let dZ = H(dI, dW)
469- let ea = H(dK, dX)
470- let eb = bU(ea, dZ)
471- let dv = H(du, dW)
472- let dx = H(dw, dX)
473- let cg = cD([dv, dx])
474- let ec = if ((dY == 0))
492+ then (bY(dX) - dU)
493+ else if (dS)
494+ then bY(dX)
495+ else (bY(dX) - dO)
496+ let ed = H(dM, ea)
497+ let ee = H(dO, eb)
498+ let ef = ca(ee, ed)
499+ let dz = H(dy, ea)
500+ let dB = H(dA, eb)
501+ let cm = cJ([dz, dB])
502+ let eg = if ((ec == 0))
475503 then {
476- let cf = cD([(dv + dZ), (dx + ea)])
477- let ed = if ((cf > cg))
504+ let cl = cJ([(dz + ed), (dB + ee)])
505+ let eh = if ((cl > cm))
478506 then true
479507 else throw("D1 should be greater than D0")
480- if ((ed == ed))
508+ if ((eh == eh))
481509 then {
482- let dy = d
483- let ee = d
484- let cv = cf
485- $Tuple5(L(cv, a), L(dZ, dW), L(ea, dX), bU((dx + ea), (dv + dZ)), ee)
510+ let dC = d
511+ let ei = d
512+ let cB = cl
513+ $Tuple5(L(cB, a), L(ed, ea), L(ee, eb), ca((dB + ee), (dz + ed)), ei)
486514 }
487515 else throw("Strict value is not equal to itself.")
488516 }
489517 else {
490- let dy = bU(dx, dv)
491- let ef = fraction(W((dy - eb)), c, dy)
492- let ee = H(cb, a)
493- if (if (if (dP)
494- then (dy != d)
518+ let dC = ca(dB, dz)
519+ let ej = fraction(W((dC - ef)), c, dC)
520+ let ei = H(ch, a)
521+ if (if (if (dT)
522+ then (dC != d)
495523 else false)
496- then (ef > ee)
524+ then (ej > ei)
497525 else false)
498- then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
526+ then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
499527 else {
500- let eg = H(dY, a)
501- let eh = fraction(dZ, bX(dx, dv, CEILING), c, CEILING)
502- let ei = fraction(ea, c, bX(dx, dv, FLOOR), CEILING)
503- let ej = if ((eh > ea))
504- then $Tuple2(ei, ea)
505- else $Tuple2(dZ, eh)
506- let ek = ej._1
507- let el = ej._2
508- let cf = cD([(dv + ek), (dx + el)])
509- let ed = if ((cf > cg))
528+ let ek = H(ec, a)
529+ let el = fraction(ed, cd(dB, dz, CEILING), c, CEILING)
530+ let em = fraction(ee, c, cd(dB, dz, FLOOR), CEILING)
531+ let en = if ((el > ee))
532+ then $Tuple2(em, ee)
533+ else $Tuple2(ed, el)
534+ let eo = en._1
535+ let ep = en._2
536+ let cl = cJ([(dz + eo), (dB + ep)])
537+ let eh = if ((cl > cm))
510538 then true
511539 else throw("D1 should be greater than D0")
512- if ((ed == ed))
540+ if ((eh == eh))
513541 then {
514- let cv = fraction(eg, (cf - cg), cg)
515- $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
542+ let cB = fraction(ek, (cl - cm), cm)
543+ $Tuple5(O(cB, a, FLOOR), O(eo, ea, CEILING), O(ep, eb, CEILING), dC, ei)
516544 }
517545 else throw("Strict value is not equal to itself.")
518546 }
519547 }
520- let em = ec._1
521- let en = ec._2
522- let eo = ec._3
523- let dz = L(ec._4, a)
524- let ep = L(ec._5, a)
525- if ((0 >= em))
548+ let eq = eg._1
549+ let er = eg._2
550+ let es = eg._3
551+ let dD = L(eg._4, a)
552+ let et = L(eg._5, a)
553+ if ((0 >= eq))
526554 then throw("LP <= 0")
527555 else {
528- let eq = if (!(dN))
556+ let eu = if (!(dR))
529557 then 0
530- else em
531- let er = (dI - en)
532- let es = (dK - eo)
533- let et = if (if (dO)
534- then (dR == dS)
558+ else eq
559+ let ev = (dM - er)
560+ let ew = (dO - es)
561+ let ex = if (if (dS)
562+ then (dV == dW)
535563 else false)
536- then $Tuple2(dQ, 0)
537- else if (if (dO)
538- then (dR == dT)
564+ then $Tuple2(dU, 0)
565+ else if (if (dS)
566+ then (dV == dX)
539567 else false)
540- then $Tuple2(0, dQ)
541- else $Tuple2(en, eo)
542- let eu = et._1
543- let ev = et._2
544- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
545- $Tuple13(em, eq, dz, du, dw, dY, dn, ds, ew, er, es, dJ, dL)
568+ then $Tuple2(0, dU)
569+ else $Tuple2(er, es)
570+ let ey = ex._1
571+ let ez = ex._2
572+ let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, dn), bJ(ey, ez, eu, dD, ch, et, height, lastBlock.timestamp, ev, ew))]
573+ $Tuple13(eq, eu, dD, dy, dA, ec, dr, dw, eA, ev, ew, dN, dP)
546574 }
547575 }
548576
549577
550-func ex (cE,cU,ey) = {
551- let ez = g
552- let eA = cE[if ((cU == 0))
578+func eB (cK,cY,eC) = {
579+ let eD = g
580+ let eE = cK[if ((cY == 0))
553581 then 1
554582 else 0]
555- let eB = parseBigIntValue(l)
556- let cI = (parseBigIntValue(aZ) * eB)
557- let cH = eA
558- let cJ = (cI * ez)
559- let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
560- let eD = ((cH + ((ey * eB) / cJ)) - ey)
561- func cS (cT,eE) = {
562- let eF = cT
563- let eG = eF._1
564- let dh = eF._2
565- if ((dh != unit))
566- then cT
583+ let eF = parseBigIntValue(l)
584+ let aQ = (parseBigIntValue(bf) * eF)
585+ let aU = eE
586+ let cN = (aQ * eD)
587+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
588+ let eH = ((aU + ((eC * eF) / cN)) - eC)
589+ func cW (cX,eI) = {
590+ let eJ = cX
591+ let eK = eJ._1
592+ let dl = eJ._2
593+ if ((dl != unit))
594+ then cX
567595 else {
568- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
569- let eI = X((eH - value(eG)))
570- if ((f >= eI))
571- then $Tuple2(eH, eE)
572- else $Tuple2(eH, unit)
596+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
597+ let eM = X((eL - value(eK)))
598+ if ((f >= eM))
599+ then $Tuple2(eL, eI)
600+ else $Tuple2(eL, unit)
573601 }
574602 }
575603
576- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
577- let eJ = {
578- let da = cY
579- let db = size(da)
580- let dc = $Tuple2(ey, unit)
581- func dd (de,df) = if ((df >= db))
582- then de
583- else cS(de, da[df])
604+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
605+ let eN = {
606+ let de = dc
607+ let df = size(de)
608+ let dg = $Tuple2(eC, unit)
609+ func dh (di,dj) = if ((dj >= df))
610+ then di
611+ else cW(di, de[dj])
584612
585- func dg (de,df) = if ((df >= db))
586- then de
613+ func dk (di,dj) = if ((dj >= df))
614+ then di
587615 else throw("List size exceeds 15")
588616
589- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
617+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
590618 }
591- let eG = eJ._1
592- let dh = eJ._2
593- if ((dh != unit))
594- then eG
595- else throw(("Y calculation error, Y = " + toString(eG)))
619+ let eK = eN._1
620+ let dl = eN._2
621+ if ((dl != unit))
622+ then eK
623+ else throw(("Y calculation error, Y = " + toString(eK)))
596624 }
597625
598626
599-func eK (eL,eM,eN) = {
600- let eO = fraction(cD([K(eL, toBigInt(bt)), K(eM, toBigInt(bu))]), c, eN)
601- if ((eN == e))
627+func eO (eP,eQ,eR) = {
628+ let eS = fraction(cJ([K(eP, toBigInt(bz)), K(eQ, toBigInt(bA))]), c, eR)
629+ if ((eR == e))
602630 then e
603- else eO
631+ else eS
604632 }
605633
606634
607-func eP (eQ,eR,eS) = {
608- let eT = (toBigInt(bS(bj(br))) - eQ)
609- let eU = (toBigInt(bS(bj(bs))) - eR)
610- let eV = (toBigInt(value(assetInfo(bq)).quantity) - eS)
611- let eW = eK(eT, eU, eV)
612- eW
635+func eT (eU,eV,eW) = {
636+ let eX = (toBigInt(bY(bp(bx))) - eU)
637+ let eY = (toBigInt(bY(bp(by))) - eV)
638+ let eZ = (toBigInt(value(assetInfo(bw)).quantity) - eW)
639+ let fa = eO(eX, eY, eZ)
640+ fa
613641 }
614642
615643
616-func eX (eY,eZ,eS) = {
617- let eT = (bS(bj(br)) + eY)
618- let eU = (bS(bj(bs)) + eZ)
619- let eV = (value(assetInfo(bq)).quantity + eS)
620- let eO = eK(toBigInt(eT), toBigInt(eU), toBigInt(eV))
621- let fa = [IntegerEntry(at, height), StringEntry(as, toString(eO))]
622- $Tuple2(fa, eO)
644+func fb (fc,fd,eW) = {
645+ let eX = (bY(bp(bx)) + fc)
646+ let eY = (bY(bp(by)) + fd)
647+ let eZ = (value(assetInfo(bw)).quantity + eW)
648+ let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
649+ let fe = [IntegerEntry(as, height), StringEntry(ar, toString(eS))]
650+ $Tuple2(fe, eS)
623651 }
624652
625653
626-func fb (fc,eO) = if ((eO >= fc))
654+func ff (fg,eS) = if ((eS >= fg))
627655 then true
628- else aS("updated DLp lower than current DLp")
656+ else aZ("updated DLp lower than current DLp")
629657
630658
631-func fd (fe) = {
632- let eT = bS(bj(br))
633- let eU = bS(bj(bs))
634- let ff = fe.amount
635- let fg = fraction(fe.amount, fe.price, a, FLOOR)
636- let fh = if ((fe.orderType == Buy))
637- then $Tuple2(ff, -(fg))
638- else $Tuple2(-(ff), fg)
639- let eY = fh._1
640- let eZ = fh._2
641- if (if (if (ba())
659+func fh (fi) = {
660+ let eX = bY(bp(bx))
661+ let eY = bY(bp(by))
662+ let fj = fi.amount
663+ let fk = fraction(fi.amount, fi.price, a, FLOOR)
664+ let fl = if ((fi.orderType == Buy))
665+ then $Tuple2(fj, -(fk))
666+ else $Tuple2(-(fj), fk)
667+ let fc = fl._1
668+ let fd = fl._2
669+ if (if (if (bg())
642670 then true
643- else (bp == r))
671+ else (bv == r))
644672 then true
645- else (bp == s))
673+ else (bv == s))
646674 then throw("Admin blocked")
647- else if (if ((fe.assetPair.amountAsset != br))
675+ else if (if ((fi.assetPair.amountAsset != bx))
648676 then true
649- else (fe.assetPair.priceAsset != bs))
677+ else (fi.assetPair.priceAsset != by))
650678 then throw("Wr assets")
651679 else {
652- let fi = parseBigIntValue(valueOrElse(getString(this, as), "0"))
653- let fj = eX(eY, eZ, 0)
654- let fk = fj._1
655- let fl = fj._2
656- let fm = (fl >= fi)
657- let fn = makeString(["dLp=", toString(fi), " dLpNew=", toString(fl), " amountAssetBalance=", toString(eT), " priceAssetBalance=", toString(eU), " amountAssetBalanceDelta=", toString(eY), " priceAssetBalanceDelta=", toString(eZ), " height=", toString(height)], "")
658- $Tuple2(fm, fn)
680+ let fm = parseBigIntValue(valueOrElse(getString(this, ar), "0"))
681+ let fn = fb(fc, fd, 0)
682+ let fo = fn._1
683+ let fp = fn._2
684+ let fq = (fp >= fm)
685+ let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
686+ $Tuple2(fq, fr)
659687 }
660688 }
661689
662690
663-func fo (cU) = if ((size(cU.payments) != 1))
691+func fs (cY) = if ((size(cY.payments) != 1))
664692 then throw("1 pmnt exp")
665693 else {
666- let fp = value(cU.payments[0])
667- let dk = value(fp.assetId)
668- let dQ = fp.amount
669- let ec = di(toBase58String(cU.transactionId), toBase58String(dk), dQ, cU.caller)
670- let dE = ec._1
671- let dF = ec._2
672- let ds = parseIntValue(ec._9)
673- let dG = ec._10
674- if (if (ba())
694+ let ft = value(cY.payments[0])
695+ let do = value(ft.assetId)
696+ let dU = ft.amount
697+ let eg = dm(toBase58String(cY.transactionId), toBase58String(do), dU, cY.caller)
698+ let dI = eg._1
699+ let dJ = eg._2
700+ let dw = parseIntValue(eg._9)
701+ let dK = eg._10
702+ if (if (bg())
675703 then true
676- else (ds == s))
677- then throw(("Admin blocked: " + toString(ds)))
678- else $Tuple5(dE, dF, dQ, dk, dG)
704+ else (dw == s))
705+ then throw(("Admin blocked: " + toString(dw)))
706+ else $Tuple5(dI, dJ, dU, do, dK)
679707 }
680708
681709
682-func fq (fr,ah,fs,ft,cb,dN,dO,dP,dQ,dR) = {
683- let ec = dH(ah, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ah == ""), dN, dO, dP, dQ, dR)
684- let ds = parseIntValue(ec._8)
685- if (if (if (ba())
710+func fu (fv,ah,fw,fx,ch,dR,dS,dT,dU,dV) = {
711+ let eg = dL(ah, ch, value(fw).amount, value(fw).assetId, value(fx).amount, value(fx).assetId, fv, (ah == ""), dR, dS, dT, dU, dV)
712+ let dw = parseIntValue(eg._8)
713+ if (if (if (bg())
686714 then true
687- else (ds == q))
715+ else (dw == q))
688716 then true
689- else (ds == s))
690- then throw(("Blocked:" + toString(ds)))
691- else ec
717+ else (dw == s))
718+ then throw(("Blocked:" + toString(dw)))
719+ else eg
692720 }
693721
694722
695-func fu (fv,dk,dm,ah,fw) = {
696- let do = toBase58String(value(br))
697- let dp = toBase58String(value(bs))
698- let dn = bq
699- let dW = bt
700- let dX = bu
701- let eV = toBigInt(valueOrErrorMessage(assetInfo(dn), "invalid lp asset").quantity)
702- let fx = if ((eV > e))
723+func fy (fz,do,dq,ah,fA) = {
724+ let ds = toBase58String(value(bx))
725+ let dt = toBase58String(value(by))
726+ let dr = bw
727+ let ea = bz
728+ let eb = bA
729+ let eZ = toBigInt(valueOrErrorMessage(assetInfo(dr), "invalid lp asset").quantity)
730+ let fB = if ((eZ > e))
703731 then true
704732 else throw("initial deposit requires all coins")
705- if ((fx == fx))
733+ if ((fB == fB))
706734 then {
707- let du = bS(do)
708- let dw = bS(dp)
709- let fy = if ((ah == ""))
710- then $Tuple2(du, dw)
711- else if ((dk == do))
712- then if ((fv > du))
735+ let dy = bY(ds)
736+ let dA = bY(dt)
737+ let fC = if ((ah == ""))
738+ then $Tuple2(dy, dA)
739+ else if ((do == ds))
740+ then if ((fz > dy))
713741 then throw("invalid payment amount")
714- else $Tuple2((du - fv), dw)
715- else if ((dk == dp))
716- then if ((fv > dw))
742+ else $Tuple2((dy - fz), dA)
743+ else if ((do == dt))
744+ then if ((fz > dA))
717745 then throw("invalid payment amount")
718- else $Tuple2(du, (dw - fv))
746+ else $Tuple2(dy, (dA - fz))
719747 else throw("wrong pmtAssetId")
720- let fz = fy._1
721- let fA = fy._2
722- let fB = if ((dk == do))
723- then $Tuple2(fv, 0)
724- else if ((dk == dp))
725- then $Tuple2(0, fv)
748+ let fD = fC._1
749+ let fE = fC._2
750+ let fF = if ((do == ds))
751+ then $Tuple2(fz, 0)
752+ else if ((do == dt))
753+ then $Tuple2(0, fz)
726754 else throw("invalid payment")
727- let fC = fB._1
728- let fD = fB._2
729- let fE = if (fw)
730- then $Tuple3(cA(fC, aW)._1, cA(fD, aW)._1, cA(fv, aW)._2)
731- else $Tuple3(fC, fD, 0)
732- let fF = fE._1
733- let fG = fE._2
734- let cC = fE._3
735- let fH = (fz + fF)
736- let fI = (fA + fG)
737- let cg = cD([H(fz, bt), H(fA, bu)])
738- let cf = cD([H(fH, bt), H(fI, bu)])
739- let ed = if ((cf > cg))
755+ let fG = fF._1
756+ let fH = fF._2
757+ let fI = if (fA)
758+ then $Tuple3(cG(fG, bc)._1, cG(fH, bc)._1, cG(fz, bc)._2)
759+ else $Tuple3(fG, fH, 0)
760+ let fJ = fI._1
761+ let fK = fI._2
762+ let cI = fI._3
763+ let fL = (fD + fJ)
764+ let fM = (fE + fK)
765+ let cm = cJ([H(fD, bz), H(fE, bA)])
766+ let cl = cJ([H(fL, bz), H(fM, bA)])
767+ let eh = if ((cl > cm))
740768 then true
741769 else throw()
742- if ((ed == ed))
770+ if ((eh == eh))
743771 then {
744- let fJ = fraction(eV, (cf - cg), cg, FLOOR)
745- let dz = L(bU(H(fI, dX), H(fH, dW)), a)
746- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, ah), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
747- let fK = fraction(fA, a, fz)
748- let fL = fraction(fv, a, (fK + a))
749- let fM = (fv - fL)
750- let fN = fraction(eV, toBigInt(fM), toBigInt(fA))
751- let fO = toInt(fraction((fJ - fN), b, fN))
752- $Tuple4(toInt(fJ), ew, cC, fO)
772+ let fN = fraction(eZ, (cl - cm), cm, FLOOR)
773+ let dD = L(ca(H(fM, eb), H(fL, ea)), a)
774+ let eA = [IntegerEntry(ab(), dD), IntegerEntry(ac(height, lastBlock.timestamp), dD), StringEntry(af(dq, ah), bJ(fG, fH, toInt(fN), dD, 0, 0, height, lastBlock.timestamp, 0, 0))]
775+ let fO = fraction(fE, a, fD)
776+ let fP = fraction(fz, a, (fO + a))
777+ let fQ = (fz - fP)
778+ let fR = fraction(eZ, toBigInt(fQ), toBigInt(fE))
779+ let fS = toInt(fraction((fN - fR), b, fR))
780+ $Tuple4(toInt(fN), eA, cI, fS)
753781 }
754782 else throw("Strict value is not equal to itself.")
755783 }
756784 else throw("Strict value is not equal to itself.")
757785 }
758786
759787
760-func fP (fQ,fR,fS,fr,fT,fU) = {
761- let dn = toBase58String(value(bq))
762- let do = toBase58String(value(br))
763- let dp = toBase58String(value(bs))
764- let fV = bt
765- let fW = bu
766- let fX = bp
767- let dm = if ((fr == bC))
768- then fT
769- else fr
770- let fp = value(fS[0])
771- let dk = value(fp.assetId)
772- let dQ = fp.amount
773- let eW = eP(e, e, e)
774- if ((eW == eW))
788+func fT (fU,fV,fW,fv,fX,fY) = {
789+ let dr = toBase58String(value(bw))
790+ let ds = toBase58String(value(bx))
791+ let dt = toBase58String(value(by))
792+ let fZ = bz
793+ let ga = bA
794+ let gb = bv
795+ let dq = if ((fv == bI))
796+ then fX
797+ else fv
798+ let ft = value(fW[0])
799+ let do = value(ft.assetId)
800+ let dU = ft.amount
801+ let fa = eT(e, e, e)
802+ if ((fa == fa))
775803 then {
776- let dj = toBase58String(fU)
777- if ((dn != toBase58String(dk)))
804+ let dn = toBase58String(fY)
805+ if ((dr != toBase58String(do)))
778806 then throw("Wrong LP")
779807 else {
780- let du = bS(do)
781- let dw = bS(dp)
782- let fY = {
783- let aX = invoke(this, "getOneTknV2READONLY", [fQ, dQ], nil)
784- if ($isInstanceOf(aX, "(Int, Int)"))
785- then aX
786- else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
808+ let dy = bY(ds)
809+ let dA = bY(dt)
810+ let gc = {
811+ let bd = invoke(this, "getOneTknV2READONLY", [fU, dU], nil)
812+ if ($isInstanceOf(bd, "(Int, Int)"))
813+ then bd
814+ else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
787815 }
788- if ((fY == fY))
816+ if ((gc == gc))
789817 then {
790- let cC = fY._2
791- let fZ = fY._1
792- let ga = if (if ((fR > 0))
793- then (fR > fZ)
818+ let cI = gc._2
819+ let gd = gc._1
820+ let ge = if (if ((fV > 0))
821+ then (fV > gd)
794822 else false)
795- then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
796- else fZ
797- let gb = if ((fQ == do))
798- then $Tuple4(ga, 0, ((du - ga) - cC), dw)
799- else if ((fQ == dp))
800- then $Tuple4(0, ga, du, ((dw - ga) - cC))
823+ then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
824+ else gd
825+ let gf = if ((fU == ds))
826+ then $Tuple4(ge, 0, ((dy - ge) - cI), dA)
827+ else if ((fU == dt))
828+ then $Tuple4(0, ge, dy, ((dA - ge) - cI))
801829 else throw("invalid out asset id")
802- let gc = gb._1
803- let gd = gb._2
804- let fH = gb._3
805- let fI = gb._4
806- let ge = bU(H(fI, fW), H(fH, fV))
807- let gf = L(ge, a)
808- let gg = if ((fQ == "WAVES"))
830+ let gg = gf._1
831+ let gh = gf._2
832+ let fL = gf._3
833+ let fM = gf._4
834+ let gi = ca(H(fM, ga), H(fL, fZ))
835+ let gj = L(gi, a)
836+ let gk = if ((fU == "WAVES"))
809837 then unit
810- else fromBase58String(fQ)
811- let gh = if ((cC > 0))
812- then [ScriptTransfer(bc, cC, gg)]
838+ else fromBase58String(fU)
839+ let gl = if ((cI > 0))
840+ then [ScriptTransfer(bi, cI, gk)]
813841 else nil
814- let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(ai(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ab(), gf), IntegerEntry(ac(height, lastBlock.timestamp), gf)] ++ gh)
815- if ((dG == dG))
842+ let dK = ([ScriptTransfer(dq, ge, gk), StringEntry(ai(toString(dq), dn), bU(gg, gh, dU, gj, height, lastBlock.timestamp)), IntegerEntry(ab(), gj), IntegerEntry(ac(height, lastBlock.timestamp), gj)] ++ gl)
843+ if ((dK == dK))
816844 then {
817- let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
818- if ((gi == gi))
845+ let gm = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
846+ if ((gm == gm))
819847 then {
820- let gj = {
821- let gk = if ((this == bc))
848+ let gn = {
849+ let go = if ((this == bi))
822850 then 0
823- else cC
824- let gl = if ((bh(fQ) == br))
851+ else cI
852+ let gp = if ((bn(fU) == bx))
825853 then true
826854 else false
827- if (gl)
828- then $Tuple2(-((fZ + gk)), 0)
829- else $Tuple2(0, -((fZ + gk)))
855+ if (gp)
856+ then $Tuple2(-((gd + go)), 0)
857+ else $Tuple2(0, -((gd + go)))
830858 }
831- let eY = gj._1
832- let eZ = gj._2
833- let gm = eX(eY, eZ, 0)
834- let gn = gm._1
835- let eO = gm._2
836- let go = fb(eW, eO)
837- if ((go == go))
838- then $Tuple2((dG ++ gn), ga)
859+ let fc = gn._1
860+ let fd = gn._2
861+ let gq = fb(fc, fd, 0)
862+ let gr = gq._1
863+ let eS = gq._2
864+ let gs = ff(fa, eS)
865+ if ((gs == gs))
866+ then $Tuple2((dK ++ gr), ge)
839867 else throw("Strict value is not equal to itself.")
840868 }
841869 else throw("Strict value is not equal to itself.")
842870 }
843871 else throw("Strict value is not equal to itself.")
844872 }
845873 else throw("Strict value is not equal to itself.")
846874 }
847875 }
848876 else throw("Strict value is not equal to itself.")
849877 }
850878
851879
852-func gp () = {
853- let gq = getString(Z())
854- if ($isInstanceOf(gq, "String"))
880+func gt () = {
881+ let gu = aR()
882+ let aP = getString(gu, Z())
883+ if ($isInstanceOf(aP, "String"))
855884 then {
856- let cH = gq
857- fromBase58String(cH)
885+ let aU = aP
886+ fromBase58String(aU)
858887 }
859- else if ($isInstanceOf(gq, "Unit"))
888+ else if ($isInstanceOf(aP, "Unit"))
860889 then unit
861890 else throw("Match error")
862891 }
863892
864893
865-func gr () = {
866- let gq = getString(aa())
867- if ($isInstanceOf(gq, "String"))
894+let gv = throw("Permission denied")
895+
896+func gw (cY) = {
897+ let aP = gt()
898+ if ($isInstanceOf(aP, "ByteVector"))
868899 then {
869- let cH = gq
870- fromBase58String(cH)
900+ let gx = aP
901+ (cY.callerPublicKey == gx)
871902 }
872- else if ($isInstanceOf(gq, "Unit"))
873- then unit
903+ else if ($isInstanceOf(aP, "Unit"))
904+ then (cY.caller == this)
874905 else throw("Match error")
875906 }
876907
877908
878-let gs = throw("Permission denied")
879-
880-func gt (cU) = {
881- let gq = gp()
882- if ($isInstanceOf(gq, "ByteVector"))
909+func gy (cY) = {
910+ let aP = gt()
911+ if ($isInstanceOf(aP, "ByteVector"))
883912 then {
884- let gu = gq
885- (cU.callerPublicKey == gu)
913+ let gx = aP
914+ if ((cY.callerPublicKey == gx))
915+ then true
916+ else gv
886917 }
887- else if ($isInstanceOf(gq, "Unit"))
888- then (cU.caller == this)
918+ else if ($isInstanceOf(aP, "Unit"))
919+ then if ((cY.caller == this))
920+ then true
921+ else gv
889922 else throw("Match error")
890923 }
891924
892925
893-func gv (cU) = {
894- let gq = gp()
895- if ($isInstanceOf(gq, "ByteVector"))
896- then {
897- let gu = gq
898- if ((cU.callerPublicKey == gu))
899- then true
900- else gs
901- }
902- else if ($isInstanceOf(gq, "Unit"))
903- then if ((cU.caller == this))
904- then true
905- else gs
906- else throw("Match error")
926+func gz (gA,eC,gB) = {
927+ let br = bj()
928+ let ds = br[w]
929+ let dt = br[x]
930+ let eD = g
931+ let eF = parseBigIntValue(l)
932+ let aQ = (parseBigIntValue(bf) * eF)
933+ let cK = if ((gA == false))
934+ then [(toBigInt(bY(ds)) + gB), toBigInt(bY(dt))]
935+ else [(toBigInt(bY(dt)) + gB), toBigInt(bY(ds))]
936+ let eE = cK[0]
937+ let aU = eE
938+ let cN = (aQ * eD)
939+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cN * eD))
940+ let eH = ((aU + ((eC * eF) / cN)) - eC)
941+ func cW (cX,eI) = {
942+ let gC = cX
943+ let eK = gC._1
944+ let dl = gC._2
945+ if ((dl != unit))
946+ then cX
947+ else {
948+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
949+ let eM = X((eL - value(eK)))
950+ if ((f >= eM))
951+ then $Tuple2(eL, eI)
952+ else $Tuple2(eL, unit)
953+ }
954+ }
955+
956+ let dc = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
957+ let gD = {
958+ let de = dc
959+ let df = size(de)
960+ let dg = $Tuple2(eC, unit)
961+ func dh (di,dj) = if ((dj >= df))
962+ then di
963+ else cW(di, de[dj])
964+
965+ func dk (di,dj) = if ((dj >= df))
966+ then di
967+ else throw("List size exceeds 15")
968+
969+ dk(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dh(dg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
970+ }
971+ let eK = gD._1
972+ let dl = gD._2
973+ if ((dl != unit))
974+ then eK
975+ else throw(("Y calculation error, Y = " + toString(eK)))
907976 }
908977
909978
910-func gw (gx,ey,gy) = {
911- let bl = bd()
912- let do = bl[w]
913- let dp = bl[x]
914- let ez = g
915- let eB = parseBigIntValue(l)
916- let cI = (parseBigIntValue(aZ) * eB)
917- let cE = if ((gx == false))
918- then [(toBigInt(bS(do)) + gy), toBigInt(bS(dp))]
919- else [(toBigInt(bS(dp)) + gy), toBigInt(bS(do))]
920- let eA = cE[0]
921- let cH = eA
922- let cJ = (cI * ez)
923- let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
924- let eD = ((cH + ((ey * eB) / cJ)) - ey)
925- func cS (cT,eE) = {
926- let gz = cT
927- let eG = gz._1
928- let dh = gz._2
929- if ((dh != unit))
930- then cT
931- else {
932- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
933- let eI = X((eH - value(eG)))
934- if ((f >= eI))
935- then $Tuple2(eH, eE)
936- else $Tuple2(eH, unit)
937- }
938- }
939-
940- let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
941- let gA = {
942- let da = cY
943- let db = size(da)
944- let dc = $Tuple2(ey, unit)
945- func dd (de,df) = if ((df >= db))
946- then de
947- else cS(de, da[df])
948-
949- func dg (de,df) = if ((df >= db))
950- then de
951- else throw("List size exceeds 15")
952-
953- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
954- }
955- let eG = gA._1
956- let dh = gA._2
957- if ((dh != unit))
958- then eG
959- else throw(("Y calculation error, Y = " + toString(eG)))
960- }
979+func gE () = valueOrElse(getBoolean(aT, aG(toString(this))), false)
961980
962981
963-func gB () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
964-
965-
966-@Callable(cU)
967-func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968- let gE = if ((gx == false))
982+@Callable(cY)
983+func calculateAmountOutForSwapREADONLY (gF,gA,gG) = {
984+ let gH = if ((gA == false))
969985 then {
970- let gF = aO(this, ak())
971- let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
972- $Tuple2(gF, gy)
986+ let gI = aV(this, ak())
987+ let gB = (toBigInt(bY(aV(this, aj()))) + toBigInt(gF))
988+ $Tuple2(gI, gB)
973989 }
974990 else {
975- let gF = aO(this, aj())
976- let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
977- $Tuple2(gF, gy)
991+ let gI = aV(this, aj())
992+ let gB = (toBigInt(bY(aV(this, ak()))) + toBigInt(gF))
993+ $Tuple2(gI, gB)
978994 }
979- let gF = gE._1
980- let gy = gE._2
981- let bl = bd()
982- let do = bl[w]
983- let dp = bl[x]
984- let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
985- let ey = cD(cE)
986- let eG = gw(gx, ey, toBigInt(gC))
987- let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
988- let gH = max([0, toInt(gG)])
989- let gI = if ((gx == false))
990- then [((toBigInt(bS(do)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
991- else [(toBigInt(bS(do)) - gG), ((toBigInt(bS(dp)) + toBigInt(gC)) + toBigInt(gD))]
992- let gJ = cD(gI)
993- let ed = if ((gJ >= ey))
995+ let gI = gH._1
996+ let gB = gH._2
997+ let br = bj()
998+ let ds = br[w]
999+ let dt = br[x]
1000+ let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
1001+ let eC = cJ(cK)
1002+ let eK = gz(gA, eC, toBigInt(gF))
1003+ let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
1004+ let gK = max([0, toInt(gJ)])
1005+ let gL = if ((gA == false))
1006+ then [((toBigInt(bY(ds)) + toBigInt(gF)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
1007+ else [(toBigInt(bY(ds)) - gJ), ((toBigInt(bY(dt)) + toBigInt(gF)) + toBigInt(gG))]
1008+ let gM = cJ(gL)
1009+ let eh = if ((gM >= eC))
9941010 then true
995- else throw(makeString(["new D is fewer error", toString(ey), toString(gJ)], "__"))
996- if ((ed == ed))
997- then $Tuple2(nil, gH)
1011+ else throw(makeString(["new D is fewer error", toString(eC), toString(gM)], "__"))
1012+ if ((eh == eh))
1013+ then $Tuple2(nil, gK)
9981014 else throw("Strict value is not equal to itself.")
9991015 }
10001016
10011017
10021018
1003-@Callable(cU)
1004-func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
1005- let gM = {
1006- let aX = invoke(aV, "getSwapContractREADONLY", nil, nil)
1007- if ($isInstanceOf(aX, "String"))
1008- then aX
1009- else throw(($getType(aX) + " couldn't be cast to String"))
1019+@Callable(cY)
1020+func calculateAmountOutForSwapAndSendTokens (gF,gA,gN,gO,gG) = {
1021+ let gP = {
1022+ let bd = invoke(aT, "getSwapContractREADONLY", nil, nil)
1023+ if ($isInstanceOf(bd, "String"))
1024+ then bd
1025+ else throw(($getType(bd) + " couldn't be cast to String"))
10101026 }
1011- let gN = [if ((value(cU.payments[0]).amount >= gC))
1027+ let gQ = [if ((value(cY.payments[0]).amount >= gF))
10121028 then true
1013- else aS("Wrong amount"), if ((cU.caller == addressFromStringValue(gM)))
1029+ else aZ("Wrong amount"), if ((cY.caller == addressFromStringValue(gP)))
10141030 then true
1015- else aS("Permission denied")]
1016- if ((gN == gN))
1031+ else aZ("Permission denied")]
1032+ if ((gQ == gQ))
10171033 then {
1018- let fp = value(cU.payments[0])
1019- let gO = bj(fp.assetId)
1020- let gP = if ((gx == false))
1034+ let ft = value(cY.payments[0])
1035+ let gR = bp(ft.assetId)
1036+ let gS = if ((gA == false))
10211037 then {
1022- let gF = aO(this, ak())
1023- let gy = (bS(gO) - value(cU.payments[0]).amount)
1024- $Tuple2(gF, gy)
1038+ let gI = aV(this, ak())
1039+ let gB = (bY(gR) - value(cY.payments[0]).amount)
1040+ $Tuple2(gI, gB)
10251041 }
10261042 else {
1027- let gF = aO(this, aj())
1028- let gy = (bS(gO) - value(cU.payments[0]).amount)
1029- $Tuple2(gF, gy)
1043+ let gI = aV(this, aj())
1044+ let gB = (bY(gR) - value(cY.payments[0]).amount)
1045+ $Tuple2(gI, gB)
10301046 }
1031- let gF = gP._1
1032- let gy = gP._2
1033- let bl = bd()
1034- let do = bl[w]
1035- let dp = bl[x]
1036- let cE = if ((gx == false))
1037- then [(toBigInt(bS(do)) - toBigInt(value(cU.payments[0]).amount)), toBigInt(bS(dp))]
1038- else [toBigInt(bS(do)), (toBigInt(bS(dp)) - toBigInt(value(cU.payments[0]).amount))]
1039- let ey = cD(cE)
1040- let eG = gw(gx, ey, toBigInt(0))
1041- let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
1042- let gH = max([0, toInt(gG)])
1043- let gQ = if ((gH >= gK))
1047+ let gI = gS._1
1048+ let gB = gS._2
1049+ let br = bj()
1050+ let ds = br[w]
1051+ let dt = br[x]
1052+ let cK = if ((gA == false))
1053+ then [(toBigInt(bY(ds)) - toBigInt(value(cY.payments[0]).amount)), toBigInt(bY(dt))]
1054+ else [toBigInt(bY(ds)), (toBigInt(bY(dt)) - toBigInt(value(cY.payments[0]).amount))]
1055+ let eC = cJ(cK)
1056+ let eK = gz(gA, eC, toBigInt(0))
1057+ let gJ = ((toBigInt(bY(gI)) - eK) - toBigInt(1))
1058+ let gK = max([0, toInt(gJ)])
1059+ let gT = if ((gK >= gN))
10441060 then true
10451061 else throw("Exchange result is fewer coins than expected")
1046- if ((gQ == gQ))
1062+ if ((gT == gT))
10471063 then {
1048- let gI = if ((gx == false))
1049- then [(toBigInt(bS(do)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
1050- else [(toBigInt(bS(do)) - gG), (toBigInt(bS(dp)) + toBigInt(gD))]
1051- let gJ = cD(gI)
1052- let ed = if ((gJ >= ey))
1064+ let gL = if ((gA == false))
1065+ then [(toBigInt(bY(ds)) + toBigInt(gG)), (toBigInt(bY(dt)) - gJ)]
1066+ else [(toBigInt(bY(ds)) - gJ), (toBigInt(bY(dt)) + toBigInt(gG))]
1067+ let gM = cJ(gL)
1068+ let eh = if ((gM >= eC))
10531069 then true
10541070 else throw("new D is fewer error")
1055- if ((ed == ed))
1056- then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bh(gF))], gH)
1071+ if ((eh == eh))
1072+ then $Tuple2([ScriptTransfer(addressFromStringValue(gO), gK, bn(gI))], gK)
10571073 else throw("Strict value is not equal to itself.")
10581074 }
10591075 else throw("Strict value is not equal to itself.")
10601076 }
10611077 else throw("Strict value is not equal to itself.")
10621078 }
10631079
10641080
10651081
1066-@Callable(cU)
1082+@Callable(cY)
10671083 func constructor (Y) = {
1068- let eC = gv(cU)
1069- if ((eC == eC))
1084+ let eG = gy(cY)
1085+ if ((eG == eG))
10701086 then [StringEntry(Y(), Y)]
10711087 else throw("Strict value is not equal to itself.")
10721088 }
10731089
10741090
10751091
1076-@Callable(cU)
1077-func setManager (gR) = {
1078- let eC = gv(cU)
1079- if ((eC == eC))
1080- then {
1081- let gS = fromBase58String(gR)
1082- if ((gS == gS))
1083- then [StringEntry(aa(), gR)]
1084- else throw("Strict value is not equal to itself.")
1085- }
1086- else throw("Strict value is not equal to itself.")
1087- }
1088-
1089-
1090-
1091-@Callable(cU)
1092-func confirmManager () = {
1093- let cz = gr()
1094- let gT = if (isDefined(cz))
1095- then true
1096- else throw("No pending manager")
1097- if ((gT == gT))
1098- then {
1099- let gU = if ((cU.callerPublicKey == value(cz)))
1100- then true
1101- else throw("You are not pending manager")
1102- if ((gU == gU))
1103- then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
1104- else throw("Strict value is not equal to itself.")
1105- }
1106- else throw("Strict value is not equal to itself.")
1107- }
1108-
1109-
1110-
1111-@Callable(cU)
1112-func put (gV,gW) = {
1113- let gX = bx()
1114- let gY = valueOrErrorMessage(addressFromString(gX[C]), "Wr st addr")
1115- let gZ = valueOrErrorMessage(addressFromString(gX[E]), "Wr sl addr")
1116- if ((0 > gV))
1092+@Callable(cY)
1093+func put (gU,gV) = {
1094+ let gW = bD()
1095+ let gX = valueOrErrorMessage(addressFromString(gW[C]), "Wr st addr")
1096+ let gY = valueOrErrorMessage(addressFromString(gW[E]), "Wr sl addr")
1097+ if ((0 > gU))
11171098 then throw("Wrong slippage")
1118- else if ((size(cU.payments) != 2))
1099+ else if ((size(cY.payments) != 2))
11191100 then throw("2 pmnts expd")
11201101 else {
1121- let ha = toBigInt(value(cU.payments[0]).amount)
1122- let hb = toBigInt(value(cU.payments[1]).amount)
1123- let eT = (toBigInt(bS(bj(br))) - ha)
1124- if ((eT == eT))
1102+ let gZ = toBigInt(value(cY.payments[0]).amount)
1103+ let ha = toBigInt(value(cY.payments[1]).amount)
1104+ let eX = (toBigInt(bY(bp(bx))) - gZ)
1105+ if ((eX == eX))
11251106 then {
1126- let eU = (toBigInt(bS(bj(bs))) - hb)
1127- if ((eU == eU))
1107+ let eY = (toBigInt(bY(bp(by))) - ha)
1108+ if ((eY == eY))
11281109 then {
1129- let eV = toBigInt(value(assetInfo(bq)).quantity)
1130- if ((eV == eV))
1110+ let eZ = toBigInt(value(assetInfo(bw)).quantity)
1111+ if ((eZ == eZ))
11311112 then {
1132- let eW = eP(ha, hb, toBigInt(0))
1133- if ((eW == eW))
1113+ let fa = eT(gZ, ha, toBigInt(0))
1114+ if ((fa == fa))
11341115 then {
1135- let hc = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], gV, true, false, true, 0, "")
1136- let eq = hc._2
1137- let hd = hc._7
1138- let dG = hc._9
1139- let er = hc._10
1140- let es = hc._11
1141- let do = hc._12
1142- let dp = hc._13
1143- let ec = invoke(aV, "emit", [eq], nil)
1144- if ((ec == ec))
1116+ let hb = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], gU, true, false, true, 0, "")
1117+ let eu = hb._2
1118+ let hc = hb._7
1119+ let dK = hb._9
1120+ let ev = hb._10
1121+ let ew = hb._11
1122+ let ds = hb._12
1123+ let dt = hb._13
1124+ let eg = invoke(aT, "emit", [eu], nil)
1125+ if ((eg == eg))
11451126 then {
1146- let he = {
1147- let gq = ec
1148- if ($isInstanceOf(gq, "Address"))
1127+ let hd = {
1128+ let aP = eg
1129+ if ($isInstanceOf(aP, "Address"))
11491130 then {
1150- let hf = gq
1151- invoke(hf, "emit", [eq], nil)
1131+ let he = aP
1132+ invoke(he, "emit", [eu], nil)
11521133 }
11531134 else unit
11541135 }
1155- if ((he == he))
1136+ if ((hd == hd))
11561137 then {
1157- let hg = if ((er > 0))
1158- then invoke(gZ, "put", nil, [AttachedPayment(do, er)])
1138+ let hf = if ((ev > 0))
1139+ then invoke(gY, "put", nil, [AttachedPayment(ds, ev)])
11591140 else nil
1160- if ((hg == hg))
1141+ if ((hf == hf))
11611142 then {
1162- let hh = if ((es > 0))
1163- then invoke(gZ, "put", nil, [AttachedPayment(dp, es)])
1143+ let hg = if ((ew > 0))
1144+ then invoke(gY, "put", nil, [AttachedPayment(dt, ew)])
11641145 else nil
1165- if ((hh == hh))
1146+ if ((hg == hg))
11661147 then {
1167- let hi = if (gW)
1148+ let hh = if (gV)
11681149 then {
1169- let hj = invoke(gY, "stake", nil, [AttachedPayment(hd, eq)])
1170- if ((hj == hj))
1150+ let hi = invoke(gX, "stake", nil, [AttachedPayment(hc, eu)])
1151+ if ((hi == hi))
11711152 then nil
11721153 else throw("Strict value is not equal to itself.")
11731154 }
1174- else [ScriptTransfer(cU.caller, eq, hd)]
1175- let hk = eX(0, 0, 0)
1176- let gn = hk._1
1177- let eO = hk._2
1178- let hl = if ((eO >= eW))
1155+ else [ScriptTransfer(cY.caller, eu, hc)]
1156+ let hj = fb(0, 0, 0)
1157+ let gr = hj._1
1158+ let eS = hj._2
1159+ let hk = if ((eS >= fa))
11791160 then true
1180- else aS(makeString(["updated DLp lower than current DLp", toString(eT), toString(eU), toString(eV), toString(eW), toString(eO), toString(er), toString(es)], " "))
1181- if ((hl == hl))
1161+ else aZ(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1162+ if ((hk == hk))
11821163 then {
1183- let hm = value(assetInfo(bq)).quantity
1184- if ((hm == hm))
1185- then ((dG ++ hi) ++ gn)
1164+ let hl = value(assetInfo(bw)).quantity
1165+ if ((hl == hl))
1166+ then ((dK ++ hh) ++ gr)
11861167 else throw("Strict value is not equal to itself.")
11871168 }
11881169 else throw("Strict value is not equal to itself.")
11891170 }
11901171 else throw("Strict value is not equal to itself.")
11911172 }
11921173 else throw("Strict value is not equal to itself.")
11931174 }
11941175 else throw("Strict value is not equal to itself.")
11951176 }
11961177 else throw("Strict value is not equal to itself.")
11971178 }
11981179 else throw("Strict value is not equal to itself.")
11991180 }
12001181 else throw("Strict value is not equal to itself.")
12011182 }
12021183 else throw("Strict value is not equal to itself.")
12031184 }
12041185 else throw("Strict value is not equal to itself.")
12051186 }
12061187 }
12071188
12081189
12091190
1210-@Callable(cU)
1211-func putOneTknV2 (fR,gW) = {
1212- let hn = {
1213- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1214- if ($isInstanceOf(aX, "Boolean"))
1215- then aX
1216- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1191+@Callable(cY)
1192+func putOneTknV2 (fV,gV) = {
1193+ let hm = {
1194+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195+ if ($isInstanceOf(bd, "Boolean"))
1196+ then bd
1197+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
12171198 }
1218- let ho = if (if (if (ba())
1199+ let hn = if (if (if (bg())
12191200 then true
1220- else (bp == q))
1201+ else (bv == q))
12211202 then true
1222- else (bp == s))
1203+ else (bv == s))
12231204 then true
1224- else hn
1225- let gN = [if (if (!(ho))
1205+ else hm
1206+ let gQ = [if (if (!(hn))
12261207 then true
1227- else gt(cU))
1208+ else gw(cY))
12281209 then true
1229- else aS("put operation is blocked by admin"), if ((size(cU.payments) == 1))
1210+ else aZ("put operation is blocked by admin"), if ((size(cY.payments) == 1))
12301211 then true
1231- else aS("exactly 1 payment are expected")]
1232- if ((gN == gN))
1212+ else aZ("exactly 1 payment are expected")]
1213+ if ((gQ == gQ))
12331214 then {
1234- let do = toBase58String(value(br))
1235- let dp = toBase58String(value(bs))
1236- let dn = bq
1237- let fV = bt
1238- let fW = bu
1239- let dm = if ((cU.caller == this))
1240- then cU.originCaller
1241- else cU.caller
1242- let fp = value(cU.payments[0])
1243- let dk = toBase58String(value(fp.assetId))
1244- let dQ = fp.amount
1245- let eW = if ((fp.assetId == br))
1246- then eP(toBigInt(dQ), toBigInt(0), toBigInt(0))
1247- else eP(toBigInt(0), toBigInt(dQ), toBigInt(0))
1248- if ((eW == eW))
1215+ let ds = toBase58String(value(bx))
1216+ let dt = toBase58String(value(by))
1217+ let dr = bw
1218+ let fZ = bz
1219+ let ga = bA
1220+ let dq = if ((cY.caller == this))
1221+ then cY.originCaller
1222+ else cY.caller
1223+ let ft = value(cY.payments[0])
1224+ let do = toBase58String(value(ft.assetId))
1225+ let dU = ft.amount
1226+ let fa = if ((ft.assetId == bx))
1227+ then eT(toBigInt(dU), toBigInt(0), toBigInt(0))
1228+ else eT(toBigInt(0), toBigInt(dU), toBigInt(0))
1229+ if ((fa == fa))
12491230 then {
1250- let hp = fu(dQ, dk, toString(dm), toBase58String(cU.transactionId), true)
1251- if ((hp == hp))
1231+ let ho = fy(dU, do, toString(dq), toBase58String(cY.transactionId), true)
1232+ if ((ho == ho))
12521233 then {
1253- let cC = hp._3
1254- let dG = hp._2
1255- let hq = hp._1
1256- let eq = if (if ((fR > 0))
1257- then (fR > hq)
1234+ let cI = ho._3
1235+ let dK = ho._2
1236+ let hp = ho._1
1237+ let eu = if (if ((fV > 0))
1238+ then (fV > hp)
12581239 else false)
1259- then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
1260- else hq
1261- let hc = invoke(aV, "emit", [eq], nil)
1262- if ((hc == hc))
1240+ then aZ(makeString(["amount to receive is less than ", toString(fV)], ""))
1241+ else hp
1242+ let hb = invoke(aT, "emit", [eu], nil)
1243+ if ((hb == hb))
12631244 then {
1264- let he = {
1265- let gq = hc
1266- if ($isInstanceOf(gq, "Address"))
1245+ let hd = {
1246+ let aP = hb
1247+ if ($isInstanceOf(aP, "Address"))
12671248 then {
1268- let hf = gq
1269- invoke(hf, "emit", [eq], nil)
1249+ let he = aP
1250+ invoke(he, "emit", [eu], nil)
12701251 }
12711252 else unit
12721253 }
1273- if ((he == he))
1254+ if ((hd == hd))
12741255 then {
1275- let hi = if (gW)
1256+ let hh = if (gV)
12761257 then {
1277- let hj = invoke(bz, "stakeFor", [toString(cU.caller)], [AttachedPayment(dn, eq)])
1278- if ((hj == hj))
1258+ let hi = invoke(bF, "stakeFor", [toString(cY.caller)], [AttachedPayment(dr, eu)])
1259+ if ((hi == hi))
12791260 then nil
12801261 else throw("Strict value is not equal to itself.")
12811262 }
1282- else [ScriptTransfer(cU.caller, eq, dn)]
1283- let gh = if ((cC > 0))
1284- then [ScriptTransfer(bc, cC, fromBase58String(dk))]
1263+ else [ScriptTransfer(cY.caller, eu, dr)]
1264+ let gl = if ((cI > 0))
1265+ then [ScriptTransfer(bi, cI, fromBase58String(do))]
12851266 else nil
1286- let hr = if ((this == bc))
1267+ let hq = if ((this == bi))
12871268 then $Tuple2(0, 0)
12881269 else {
1289- let hs = if ((fp.assetId == br))
1270+ let hr = if ((ft.assetId == bx))
12901271 then true
12911272 else false
1292- if (hs)
1293- then $Tuple2(-(cC), 0)
1294- else $Tuple2(0, -(cC))
1273+ if (hr)
1274+ then $Tuple2(-(cI), 0)
1275+ else $Tuple2(0, -(cI))
12951276 }
1296- let eY = hr._1
1297- let eZ = hr._2
1298- let ht = eX(eY, eZ, 0)
1299- let gn = ht._1
1300- let eO = ht._2
1301- let go = fb(eW, eO)
1302- if ((go == go))
1303- then $Tuple2((((dG ++ hi) ++ gh) ++ gn), eq)
1277+ let fc = hq._1
1278+ let fd = hq._2
1279+ let hs = fb(fc, fd, 0)
1280+ let gr = hs._1
1281+ let eS = hs._2
1282+ let gs = ff(fa, eS)
1283+ if ((gs == gs))
1284+ then $Tuple2((((dK ++ hh) ++ gl) ++ gr), eu)
13041285 else throw("Strict value is not equal to itself.")
13051286 }
13061287 else throw("Strict value is not equal to itself.")
13071288 }
13081289 else throw("Strict value is not equal to itself.")
13091290 }
13101291 else throw("Strict value is not equal to itself.")
13111292 }
13121293 else throw("Strict value is not equal to itself.")
13131294 }
13141295 else throw("Strict value is not equal to itself.")
13151296 }
13161297
13171298
13181299
1319-@Callable(cU)
1320-func putForFree (hu) = if ((0 > hu))
1300+@Callable(cY)
1301+func putForFree (ht) = if ((0 > ht))
13211302 then throw("Wrong slpg")
1322- else if ((size(cU.payments) != 2))
1303+ else if ((size(cY.payments) != 2))
13231304 then throw("2 pmnts expd")
13241305 else {
1325- let hv = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], hu, false, false, true, 0, "")
1326- let dG = hv._9
1327- let ha = toBigInt(value(cU.payments[0]).amount)
1328- let hb = toBigInt(value(cU.payments[1]).amount)
1329- let eW = eP(ha, hb, toBigInt(0))
1330- if ((eW == eW))
1306+ let hu = fu(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], ht, false, false, true, 0, "")
1307+ let dK = hu._9
1308+ let gZ = toBigInt(value(cY.payments[0]).amount)
1309+ let ha = toBigInt(value(cY.payments[1]).amount)
1310+ let fa = eT(gZ, ha, toBigInt(0))
1311+ if ((fa == fa))
13311312 then {
1332- let hw = eX(0, 0, 0)
1333- let gn = hw._1
1334- let eO = hw._2
1335- let go = fb(eW, eO)
1336- if ((go == go))
1337- then (dG ++ gn)
1313+ let hv = fb(0, 0, 0)
1314+ let gr = hv._1
1315+ let eS = hv._2
1316+ let gs = ff(fa, eS)
1317+ if ((gs == gs))
1318+ then (dK ++ gr)
13381319 else throw("Strict value is not equal to itself.")
13391320 }
13401321 else throw("Strict value is not equal to itself.")
13411322 }
13421323
13431324
13441325
1345-@Callable(cU)
1326+@Callable(cY)
13461327 func get () = {
1347- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1348- if ((eW == eW))
1328+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1329+ if ((fa == fa))
13491330 then {
1350- let ec = fo(cU)
1351- let hx = ec._1
1352- let dF = ec._2
1353- let dQ = ec._3
1354- let dk = ec._4
1355- let dG = ec._5
1356- let eD = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1357- if ((eD == eD))
1331+ let eg = fs(cY)
1332+ let hw = eg._1
1333+ let dJ = eg._2
1334+ let dU = eg._3
1335+ let do = eg._4
1336+ let dK = eg._5
1337+ let eH = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
1338+ if ((eH == eH))
13581339 then {
1359- let hy = eX(-(hx), -(dF), 0)
1360- let gn = hy._1
1361- let eO = hy._2
1362- let go = fb(eW, eO)
1363- if ((go == go))
1364- then (dG ++ gn)
1340+ let hx = fb(-(hw), -(dJ), 0)
1341+ let gr = hx._1
1342+ let eS = hx._2
1343+ let gs = ff(fa, eS)
1344+ if ((gs == gs))
1345+ then (dK ++ gr)
13651346 else throw("Strict value is not equal to itself.")
13661347 }
13671348 else throw("Strict value is not equal to itself.")
13681349 }
13691350 else throw("Strict value is not equal to itself.")
13701351 }
13711352
13721353
13731354
1374-@Callable(cU)
1375-func getOneTknV2 (fQ,fR) = {
1376- let hn = {
1377- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1378- if ($isInstanceOf(aX, "Boolean"))
1379- then aX
1380- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1355+@Callable(cY)
1356+func getOneTknV2 (fU,fV) = {
1357+ let hm = {
1358+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1359+ if ($isInstanceOf(bd, "Boolean"))
1360+ then bd
1361+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
13811362 }
1382- let hz = if (if (ba())
1363+ let hy = if (if (bg())
13831364 then true
1384- else (bp == s))
1365+ else (bv == s))
13851366 then true
1386- else hn
1387- let gN = [if (if (!(hz))
1367+ else hm
1368+ let gQ = [if (if (!(hy))
13881369 then true
1389- else gt(cU))
1370+ else gw(cY))
13901371 then true
1391- else aS("get operation is blocked by admin"), if ((size(cU.payments) == 1))
1372+ else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 1))
13921373 then true
1393- else aS("exactly 1 payment are expected")]
1394- if ((gN == gN))
1374+ else aZ("exactly 1 payment are expected")]
1375+ if ((gQ == gQ))
13951376 then {
1396- let hA = fP(fQ, fR, cU.payments, cU.caller, cU.originCaller, cU.transactionId)
1397- let dG = hA._1
1398- let ga = hA._2
1399- $Tuple2(dG, ga)
1377+ let hz = fT(fU, fV, cY.payments, cY.caller, cY.originCaller, cY.transactionId)
1378+ let dK = hz._1
1379+ let ge = hz._2
1380+ $Tuple2(dK, ge)
14001381 }
14011382 else throw("Strict value is not equal to itself.")
14021383 }
14031384
14041385
14051386
1406-@Callable(cU)
1387+@Callable(cY)
14071388 func refreshDLp () = {
1408- let hB = valueOrElse(getInteger(at), 0)
1409- let hC = if (((height - hB) >= aw))
1389+ let hA = valueOrElse(getInteger(as), 0)
1390+ let hB = if (((height - hA) >= av))
14101391 then unit
1411- else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1412- if ((hC == hC))
1392+ else aZ(makeString([toString(av), " blocks have not passed since the previous call"], ""))
1393+ if ((hB == hB))
14131394 then {
1414- let fi = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), aU("invalid dLp"))
1415- let hD = eX(0, 0, 0)
1416- let hE = hD._1
1417- let eO = hD._2
1418- let fa = if ((fi != eO))
1419- then hE
1420- else aS("nothing to refresh")
1421- $Tuple2(fa, toString(eO))
1395+ let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ar), "0")), bb("invalid dLp"))
1396+ let hC = fb(0, 0, 0)
1397+ let hD = hC._1
1398+ let eS = hC._2
1399+ let fe = if ((fm != eS))
1400+ then hD
1401+ else aZ("nothing to refresh")
1402+ $Tuple2(fe, toString(eS))
14221403 }
14231404 else throw("Strict value is not equal to itself.")
14241405 }
14251406
14261407
14271408
1428-@Callable(cU)
1429-func getOneTknV2READONLY (fQ,hF) = {
1430- let do = toBase58String(value(br))
1431- let dp = toBase58String(value(bs))
1432- let dn = toBase58String(value(bq))
1433- let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
1434- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dn)), "invalid lp asset").quantity)
1435- let cg = cD(cE)
1436- let cf = (cg - fraction(toBigInt(hF), cg, eN))
1437- let hG = if ((fQ == do))
1409+@Callable(cY)
1410+func getOneTknV2READONLY (fU,hE) = {
1411+ let ds = toBase58String(value(bx))
1412+ let dt = toBase58String(value(by))
1413+ let dr = toBase58String(value(bw))
1414+ let cK = [toBigInt(bY(ds)), toBigInt(bY(dt))]
1415+ let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dr)), "invalid lp asset").quantity)
1416+ let cm = cJ(cK)
1417+ let cl = (cm - fraction(toBigInt(hE), cm, eR))
1418+ let hF = if ((fU == ds))
14381419 then 0
1439- else if ((fQ == dp))
1420+ else if ((fU == dt))
14401421 then 1
14411422 else throw("invalid out asset id")
1442- let hH = ex(cE, hG, cf)
1443- let gG = (cE[hG] - hH)
1444- let gH = max([0, toInt((gG - f))])
1445- let hI = cA(gH, aY)
1446- let fZ = hI._1
1447- let cC = hI._2
1448- $Tuple2(nil, $Tuple2(fZ, cC))
1423+ let hG = eB(cK, hF, cl)
1424+ let gJ = (cK[hF] - hG)
1425+ let gK = max([0, toInt((gJ - f))])
1426+ let hH = cG(gK, be)
1427+ let gd = hH._1
1428+ let cI = hH._2
1429+ $Tuple2(nil, $Tuple2(gd, cI))
14491430 }
14501431
14511432
14521433
1453-@Callable(cU)
1454-func getOneTknV2WithBonusREADONLY (fQ,hF) = {
1455- let do = toBase58String(value(br))
1456- let dp = toBase58String(value(bs))
1457- let dn = toBase58String(value(bq))
1458- let du = bS(do)
1459- let dw = bS(dp)
1460- let hJ = {
1461- let aX = invoke(this, "getOneTknV2READONLY", [fQ, hF], nil)
1462- if ($isInstanceOf(aX, "(Int, Int)"))
1463- then aX
1464- else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
1434+@Callable(cY)
1435+func getOneTknV2WithBonusREADONLY (fU,hE) = {
1436+ let ds = toBase58String(value(bx))
1437+ let dt = toBase58String(value(by))
1438+ let dr = toBase58String(value(bw))
1439+ let dy = bY(ds)
1440+ let dA = bY(dt)
1441+ let hI = {
1442+ let bd = invoke(this, "getOneTknV2READONLY", [fU, hE], nil)
1443+ if ($isInstanceOf(bd, "(Int, Int)"))
1444+ then bd
1445+ else throw(($getType(bd) + " couldn't be cast to (Int, Int)"))
14651446 }
1466- let fZ = hJ._1
1467- let cC = hJ._2
1468- let ec = di("", dn, hF, this)
1469- let dE = ec._1
1470- let dF = ec._2
1471- let hK = (dE + dF)
1472- let fO = if ((hK == 0))
1473- then if ((fZ == 0))
1447+ let gd = hI._1
1448+ let cI = hI._2
1449+ let eg = dm("", dr, hE, this)
1450+ let dI = eg._1
1451+ let dJ = eg._2
1452+ let hJ = (dI + dJ)
1453+ let fS = if ((hJ == 0))
1454+ then if ((gd == 0))
14741455 then 0
14751456 else throw("bonus calculation error")
1476- else fraction((fZ - hK), a, hK)
1477- $Tuple2(nil, $Tuple3(fZ, cC, fO))
1457+ else fraction((gd - hJ), a, hJ)
1458+ $Tuple2(nil, $Tuple3(gd, cI, fS))
14781459 }
14791460
14801461
14811462
1482-@Callable(cU)
1483-func getNoLess (hL,hM) = {
1484- let ec = fo(cU)
1485- let dE = ec._1
1486- let dF = ec._2
1487- let dQ = ec._3
1488- let dk = ec._4
1489- let dG = ec._5
1490- if ((hL > dE))
1491- then throw(((("Failed: " + toString(dE)) + " < ") + toString(hL)))
1492- else if ((hM > dF))
1493- then throw(((("Failed: " + toString(dF)) + " < ") + toString(hM)))
1463+@Callable(cY)
1464+func getNoLess (hK,hL) = {
1465+ let eg = fs(cY)
1466+ let dI = eg._1
1467+ let dJ = eg._2
1468+ let dU = eg._3
1469+ let do = eg._4
1470+ let dK = eg._5
1471+ if ((hK > dI))
1472+ then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
1473+ else if ((hL > dJ))
1474+ then throw(((("Failed: " + toString(dJ)) + " < ") + toString(hL)))
14941475 else {
1495- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1496- if ((eW == eW))
1476+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1477+ if ((fa == fa))
14971478 then {
1498- let hN = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1499- if ((hN == hN))
1479+ let hM = invoke(aT, "burn", [dU], [AttachedPayment(do, dU)])
1480+ if ((hM == hM))
15001481 then {
1501- let hO = eX(-(dE), -(dF), 0)
1502- let gn = hO._1
1503- let eO = hO._2
1504- let go = fb(eW, eO)
1505- if ((go == go))
1506- then (dG ++ gn)
1482+ let hN = fb(-(dI), -(dJ), 0)
1483+ let gr = hN._1
1484+ let eS = hN._2
1485+ let gs = ff(fa, eS)
1486+ if ((gs == gs))
1487+ then (dK ++ gr)
15071488 else throw("Strict value is not equal to itself.")
15081489 }
15091490 else throw("Strict value is not equal to itself.")
15101491 }
15111492 else throw("Strict value is not equal to itself.")
15121493 }
15131494 }
15141495
15151496
15161497
1517-@Callable(cU)
1518-func unstakeAndGet (cB) = {
1519- let hP = if ((size(cU.payments) != 0))
1498+@Callable(cY)
1499+func unstakeAndGet (cH) = {
1500+ let hO = if ((size(cY.payments) != 0))
15201501 then throw("No pmnts expd")
15211502 else true
1522- if ((hP == hP))
1503+ if ((hO == hO))
15231504 then {
1524- let hQ = bx()
1525- let hd = bq
1526- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1527- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1528- if ((eW == eW))
1505+ let hP = bD()
1506+ let hc = bw
1507+ let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
1508+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1509+ if ((fa == fa))
15291510 then {
1530- let hS = invoke(hR, "unstake", [toBase58String(hd), cB], nil)
1531- if ((hS == hS))
1511+ let hR = invoke(hQ, "unstake", [toBase58String(hc), cH], nil)
1512+ if ((hR == hR))
15321513 then {
1533- let ec = di(toBase58String(cU.transactionId), toBase58String(hd), cB, cU.caller)
1534- let dE = ec._1
1535- let dF = ec._2
1536- let ds = parseIntValue(ec._9)
1537- let dG = ec._10
1538- let hT = if (if (ba())
1514+ let eg = dm(toBase58String(cY.transactionId), toBase58String(hc), cH, cY.caller)
1515+ let dI = eg._1
1516+ let dJ = eg._2
1517+ let dw = parseIntValue(eg._9)
1518+ let dK = eg._10
1519+ let hS = if (if (bg())
15391520 then true
1540- else (ds == s))
1541- then throw(("Blocked: " + toString(ds)))
1521+ else (dw == s))
1522+ then throw(("Blocked: " + toString(dw)))
15421523 else true
1543- if ((hT == hT))
1524+ if ((hS == hS))
15441525 then {
1545- let hU = invoke(aV, "burn", [cB], [AttachedPayment(hd, cB)])
1546- if ((hU == hU))
1526+ let hT = invoke(aT, "burn", [cH], [AttachedPayment(hc, cH)])
1527+ if ((hT == hT))
15471528 then {
1548- let hV = eX(-(dE), -(dF), 0)
1549- let gn = hV._1
1550- let eO = hV._2
1551- let go = fb(eW, eO)
1552- if ((go == go))
1553- then (dG ++ gn)
1529+ let hU = fb(-(dI), -(dJ), 0)
1530+ let gr = hU._1
1531+ let eS = hU._2
1532+ let gs = ff(fa, eS)
1533+ if ((gs == gs))
1534+ then (dK ++ gr)
15541535 else throw("Strict value is not equal to itself.")
15551536 }
15561537 else throw("Strict value is not equal to itself.")
15571538 }
15581539 else throw("Strict value is not equal to itself.")
15591540 }
15601541 else throw("Strict value is not equal to itself.")
15611542 }
15621543 else throw("Strict value is not equal to itself.")
15631544 }
15641545 else throw("Strict value is not equal to itself.")
15651546 }
15661547
15671548
15681549
1569-@Callable(cU)
1570-func unstakeAndGetNoLess (hW,hX,hM) = {
1571- let hz = if (ba())
1550+@Callable(cY)
1551+func unstakeAndGetNoLess (hV,hW,hL) = {
1552+ let hy = if (bg())
15721553 then true
1573- else (bp == s)
1574- let gN = [if (!(hz))
1554+ else (bv == s)
1555+ let gQ = [if (!(hy))
15751556 then true
1576- else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
1557+ else throw("get operation is blocked by admin"), if ((size(cY.payments) == 0))
15771558 then true
15781559 else throw("no payments are expected")]
1579- if ((gN == gN))
1560+ if ((gQ == gQ))
15801561 then {
1581- let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1582- if ((eW == eW))
1562+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1563+ if ((fa == fa))
15831564 then {
1584- let hS = invoke(bz, "unstake", [toBase58String(bq), hW], nil)
1585- if ((hS == hS))
1565+ let hR = invoke(bF, "unstake", [toBase58String(bw), hV], nil)
1566+ if ((hR == hR))
15861567 then {
1587- let hY = di(toBase58String(cU.transactionId), toBase58String(bq), hW, cU.caller)
1588- let dE = hY._1
1589- let dF = hY._2
1590- let dG = hY._10
1591- let hZ = [if ((dE >= hX))
1568+ let hX = dm(toBase58String(cY.transactionId), toBase58String(bw), hV, cY.caller)
1569+ let dI = hX._1
1570+ let dJ = hX._2
1571+ let dK = hX._10
1572+ let hY = [if ((dI >= hW))
15921573 then true
1593- else throw(makeString(["amount asset amount to receive is less than ", toString(hX)], "")), if ((dF >= hM))
1574+ else throw(makeString(["amount asset amount to receive is less than ", toString(hW)], "")), if ((dJ >= hL))
15941575 then true
1595- else throw(makeString(["price asset amount to receive is less than ", toString(hM)], ""))]
1596- if ((hZ == hZ))
1576+ else throw(makeString(["price asset amount to receive is less than ", toString(hL)], ""))]
1577+ if ((hY == hY))
15971578 then {
1598- let hN = invoke(aV, "burn", [hW], [AttachedPayment(bq, hW)])
1599- if ((hN == hN))
1579+ let hM = invoke(aT, "burn", [hV], [AttachedPayment(bw, hV)])
1580+ if ((hM == hM))
16001581 then {
1601- let ia = eX(-(dE), -(dF), 0)
1602- let gn = ia._1
1603- let eO = ia._2
1604- let go = fb(eW, eO)
1605- if ((go == go))
1606- then (dG ++ gn)
1582+ let hZ = fb(-(dI), -(dJ), 0)
1583+ let gr = hZ._1
1584+ let eS = hZ._2
1585+ let gs = ff(fa, eS)
1586+ if ((gs == gs))
1587+ then (dK ++ gr)
16071588 else throw("Strict value is not equal to itself.")
16081589 }
16091590 else throw("Strict value is not equal to itself.")
16101591 }
16111592 else throw("Strict value is not equal to itself.")
16121593 }
16131594 else throw("Strict value is not equal to itself.")
16141595 }
16151596 else throw("Strict value is not equal to itself.")
16161597 }
16171598 else throw("Strict value is not equal to itself.")
16181599 }
16191600
16201601
16211602
1622-@Callable(cU)
1623-func unstakeAndGetOneTknV2 (hW,fQ,fR) = {
1624- let hn = {
1625- let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1626- if ($isInstanceOf(aX, "Boolean"))
1627- then aX
1628- else throw(($getType(aX) + " couldn't be cast to Boolean"))
1603+@Callable(cY)
1604+func unstakeAndGetOneTknV2 (hV,fU,fV) = {
1605+ let hm = {
1606+ let bd = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1607+ if ($isInstanceOf(bd, "Boolean"))
1608+ then bd
1609+ else throw(($getType(bd) + " couldn't be cast to Boolean"))
16291610 }
1630- let hz = if (if (ba())
1611+ let hy = if (if (bg())
16311612 then true
1632- else (bp == s))
1613+ else (bv == s))
16331614 then true
1634- else hn
1635- let gN = [if (if (!(hz))
1615+ else hm
1616+ let gQ = [if (if (!(hy))
16361617 then true
1637- else gt(cU))
1618+ else gw(cY))
16381619 then true
1639- else aS("get operation is blocked by admin"), if ((size(cU.payments) == 0))
1620+ else aZ("get operation is blocked by admin"), if ((size(cY.payments) == 0))
16401621 then true
1641- else aS("no payments are expected")]
1642- if ((gN == gN))
1622+ else aZ("no payments are expected")]
1623+ if ((gQ == gQ))
16431624 then {
1644- let hQ = bx()
1645- let hd = bq
1646- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1647- let dm = cU.caller
1648- let ib = this
1649- let hS = invoke(hR, "unstakeINTERNAL", [hd, hW, dm.bytes, ib.bytes], nil)
1650- if ((hS == hS))
1625+ let hP = bD()
1626+ let hc = bw
1627+ let hQ = valueOrErrorMessage(addressFromString(hP[C]), "Wr st addr")
1628+ let dq = cY.caller
1629+ let ia = this
1630+ let hR = invoke(hQ, "unstakeINTERNAL", [hc, hV, dq.bytes, ia.bytes], nil)
1631+ if ((hR == hR))
16511632 then {
1652- let ic = fP(fQ, fR, [AttachedPayment(hd, hW)], cU.caller, cU.originCaller, cU.transactionId)
1653- let dG = ic._1
1654- let ga = ic._2
1655- $Tuple2(dG, ga)
1633+ let ib = fT(fU, fV, [AttachedPayment(hc, hV)], cY.caller, cY.originCaller, cY.transactionId)
1634+ let dK = ib._1
1635+ let ge = ib._2
1636+ $Tuple2(dK, ge)
16561637 }
16571638 else throw("Strict value is not equal to itself.")
16581639 }
16591640 else throw("Strict value is not equal to itself.")
16601641 }
16611642
16621643
16631644
1664-@Callable(cU)
1665-func putOneTknV2WithBonusREADONLY (id,ie) = {
1666- let if = fu(id, ie, "", "", true)
1667- let fJ = if._1
1668- let dG = if._2
1669- let cC = if._3
1670- let fO = if._4
1671- $Tuple2(nil, $Tuple3(fJ, cC, fO))
1645+@Callable(cY)
1646+func putOneTknV2WithBonusREADONLY (ic,id) = {
1647+ let ie = fy(ic, id, "", "", true)
1648+ let fN = ie._1
1649+ let dK = ie._2
1650+ let cI = ie._3
1651+ let fS = ie._4
1652+ $Tuple2(nil, $Tuple3(fN, cI, fS))
16721653 }
16731654
16741655
16751656
1676-@Callable(cU)
1677-func putOneTknV2WithoutTakeFeeREADONLY (id,ie) = {
1678- let ig = fu(id, ie, "", "", false)
1679- let fJ = ig._1
1680- let dG = ig._2
1681- let cC = ig._3
1682- let fO = ig._4
1683- $Tuple2(nil, $Tuple3(fJ, cC, fO))
1657+@Callable(cY)
1658+func putOneTknV2WithoutTakeFeeREADONLY (ic,id) = {
1659+ let if = fy(ic, id, "", "", false)
1660+ let fN = if._1
1661+ let dK = if._2
1662+ let cI = if._3
1663+ let fS = if._4
1664+ $Tuple2(nil, $Tuple3(fN, cI, fS))
16841665 }
16851666
16861667
16871668
1688-@Callable(cU)
1689-func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
1669+@Callable(cY)
1670+func activate (ig,ih) = if ((toString(cY.caller) != toString(aT)))
16901671 then throw("denied")
1691- else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
1672+ else $Tuple2([StringEntry(aj(), ig), StringEntry(ak(), ih)], "success")
16921673
16931674
16941675
1695-@Callable(cU)
1696-func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697- then gs
1698- else [StringEntry(ij, hT)]
1676+@Callable(cY)
1677+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bj())
16991678
17001679
17011680
1702-@Callable(cU)
1703-func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704- then gs
1705- else [IntegerEntry(ij, hT)]
1681+@Callable(cY)
1682+func getAccBalanceWrapperREADONLY (bZ) = $Tuple2(nil, bY(bZ))
17061683
17071684
17081685
1709-@Callable(cU)
1710-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
1711-
1712-
1713-
1714-@Callable(cU)
1715-func getAccBalanceWrapperREADONLY (bT) = $Tuple2(nil, bS(bT))
1716-
1717-
1718-
1719-@Callable(cU)
1720-func calcPricesWrapperREADONLY (cm,cn,cr) = {
1721- let ik = cq(cm, cn, cr)
1722- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1686+@Callable(cY)
1687+func calcPricesWrapperREADONLY (cs,ct,cx) = {
1688+ let ii = cw(cs, ct, cx)
1689+ $Tuple2(nil, [toString(ii[0]), toString(ii[1]), toString(ii[2])])
17231690 }
17241691
17251692
17261693
1727-@Callable(cU)
1728-func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
1694+@Callable(cY)
1695+func fromX18WrapperREADONLY (M,ij) = $Tuple2(nil, L(parseBigIntValue(M), ij))
17291696
17301697
17311698
1732-@Callable(cU)
1699+@Callable(cY)
17331700 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17341701
17351702
17361703
1737-@Callable(cU)
1738-func calcPriceBigIntWrapperREADONLY (bV,bW) = $Tuple2(nil, toString(bU(parseBigIntValue(bV), parseBigIntValue(bW))))
1704+@Callable(cY)
1705+func calcPriceBigIntWrapperREADONLY (cb,cc) = $Tuple2(nil, toString(ca(parseBigIntValue(cb), parseBigIntValue(cc))))
17391706
17401707
17411708
1742-@Callable(cU)
1743-func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,im,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, im, dM, dN, true, false, 0, ""))
1709+@Callable(cY)
1710+func estimatePutOperationWrapperREADONLY (dn,ch,dM,dN,dO,dP,ik,dQ,dR) = $Tuple2(nil, dL(dn, ch, dM, dN, dO, dP, ik, dQ, dR, true, false, 0, ""))
17441711
17451712
17461713
1747-@Callable(cU)
1748-func estimateGetOperationWrapperREADONLY (dj,in,dl,im) = {
1749- let ec = di(dj, in, dl, addressFromStringValue(im))
1750- $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
1714+@Callable(cY)
1715+func estimateGetOperationWrapperREADONLY (dn,il,dp,ik) = {
1716+ let eg = dm(dn, il, dp, addressFromStringValue(ik))
1717+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17511718 }
17521719
17531720
17541721
1755-@Callable(cU)
1722+@Callable(cY)
17561723 func changeAmp () = {
1757- let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758- let ip = {
1759- let gq = io
1760- if ($isInstanceOf(gq, "List[Any]"))
1724+ let im = invoke(aT, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1725+ let in = {
1726+ let aP = im
1727+ if ($isInstanceOf(aP, "List[Any]"))
17611728 then {
1762- let iq = gq
1729+ let io = aP
17631730 $Tuple3({
1764- let aX = iq[0]
1765- if ($isInstanceOf(aX, "Int"))
1766- then aX
1767- else throw(($getType(aX) + " couldn't be cast to Int"))
1731+ let bd = io[0]
1732+ if ($isInstanceOf(bd, "Int"))
1733+ then bd
1734+ else throw(($getType(bd) + " couldn't be cast to Int"))
17681735 }, {
1769- let aX = iq[1]
1770- if ($isInstanceOf(aX, "Int"))
1771- then aX
1772- else throw(($getType(aX) + " couldn't be cast to Int"))
1736+ let bd = io[1]
1737+ if ($isInstanceOf(bd, "Int"))
1738+ then bd
1739+ else throw(($getType(bd) + " couldn't be cast to Int"))
17731740 }, {
1774- let aX = iq[2]
1775- if ($isInstanceOf(aX, "Int"))
1776- then aX
1777- else throw(($getType(aX) + " couldn't be cast to Int"))
1741+ let bd = io[2]
1742+ if ($isInstanceOf(bd, "Int"))
1743+ then bd
1744+ else throw(($getType(bd) + " couldn't be cast to Int"))
17781745 })
17791746 }
1780- else aS("invalid entry type")
1747+ else aZ("invalid entry type")
17811748 }
1782- let ir = ip._1
1783- let is = ip._2
1784- let it = ip._3
1785- let iu = parseIntValue(getStringValue(al()))
1786- let iv = (iu + is)
1787- let iw = if ((0 > is))
1788- then if ((it > iv))
1789- then it
1790- else iv
1791- else if ((iv > it))
1792- then it
1793- else iv
1794- let ix = valueOrElse(getInteger(ap()), 0)
1795- let iy = (ix + ir)
1796- let gN = [if ((height > iy))
1749+ let ip = in._1
1750+ let iq = in._2
1751+ let ir = in._3
1752+ let is = parseIntValue(getStringValue(al()))
1753+ let it = (is + iq)
1754+ let iu = if ((0 > iq))
1755+ then if ((ir > it))
1756+ then ir
1757+ else it
1758+ else if ((it > ir))
1759+ then ir
1760+ else it
1761+ let iv = valueOrElse(getInteger(ao()), 0)
1762+ let iw = (iv + ip)
1763+ let gQ = [if ((height > iw))
17971764 then true
1798- else aS("try again in few blocks"), if ((iu != iw))
1765+ else aZ("try again in few blocks"), if ((is != iu))
17991766 then true
1800- else aS("already reached target")]
1801- if ((gN == gN))
1802- then [IntegerEntry(ap(), height), StringEntry(al(), toString(iw)), StringEntry(am(height), toString(iw))]
1767+ else aZ("already reached target")]
1768+ if ((gQ == gQ))
1769+ then [IntegerEntry(ao(), height), StringEntry(al(), toString(iu)), StringEntry(am(height), toString(iu))]
18031770 else throw("Strict value is not equal to itself.")
18041771 }
18051772
18061773
1807-@Verifier(iz)
1808-func iA () = {
1809- let iB = {
1810- let gq = gp()
1811- if ($isInstanceOf(gq, "ByteVector"))
1774+@Verifier(ix)
1775+func iy () = {
1776+ let iz = {
1777+ let aP = gt()
1778+ if ($isInstanceOf(aP, "ByteVector"))
18121779 then {
1813- let gu = gq
1814- gu
1780+ let gx = aP
1781+ gx
18151782 }
1816- else if ($isInstanceOf(gq, "Unit"))
1817- then iz.senderPublicKey
1783+ else if ($isInstanceOf(aP, "Unit"))
1784+ then ix.senderPublicKey
18181785 else throw("Match error")
18191786 }
1820- let gq = iz
1821- if ($isInstanceOf(gq, "Order"))
1787+ let aP = ix
1788+ if ($isInstanceOf(aP, "Order"))
18221789 then {
1823- let fe = gq
1824- let iC = bb()
1825- let iD = if (gB())
1790+ let fi = aP
1791+ let iA = bh()
1792+ let iB = if (gE())
18261793 then $Tuple2(true, "")
1827- else fd(fe)
1828- let aK = iD._1
1829- let aL = iD._2
1830- let aM = sigVerify(fe.bodyBytes, fe.proofs[0], fe.senderPublicKey)
1831- let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iC)
1832- if (if (if (aK)
1794+ else fh(fi)
1795+ let aJ = iB._1
1796+ let aK = iB._2
1797+ let aL = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1798+ let aM = sigVerify(fi.bodyBytes, fi.proofs[1], iA)
1799+ if (if (if (aJ)
1800+ then aL
1801+ else false)
18331802 then aM
18341803 else false)
1835- then aN
1836- else false)
18371804 then true
1838- else aJ(aK, aL, aM, aN)
1805+ else aI(aJ, aK, aL, aM)
18391806 }
1840- else if ($isInstanceOf(gq, "SetScriptTransaction"))
1807+ else if ($isInstanceOf(aP, "SetScriptTransaction"))
18411808 then {
1842- let cH = gq
1843- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1809+ let aU = aP
1810+ if (sigVerify(ix.bodyBytes, ix.proofs[0], iz))
18441811 then true
18451812 else {
1846- let iE = blake2b256(value(cH.script))
1847- let iF = fromBase64String(value(getString(aV, aF())))
1848- let iG = scriptHash(this)
1849- if ((iF == iE))
1850- then (iG != iE)
1813+ let iC = blake2b256(value(aU.script))
1814+ let iD = fromBase64String(value(getString(aT, aE())))
1815+ let iE = scriptHash(this)
1816+ if ((iD == iC))
1817+ then (iE != iC)
18511818 else false
18521819 }
18531820 }
1854- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1821+ else sigVerify(ix.bodyBytes, ix.proofs[0], iz)
18551822 }
18561823

github/deemru/w8io/6500d08 
1189.56 ms