tx · G9Kem8zaL8srmJWwPHSwuQ4RL8wy56b5ftKUBxN7SGJe

3PJazesjmprZcXYcFx3LxBux9T7q6qYoEDu:  -0.04200000 Waves

2023.03.23 11:24 [3567987] smart account 3PJazesjmprZcXYcFx3LxBux9T7q6qYoEDu > SELF 0.00000000 Waves

{ "type": 13, "id": "G9Kem8zaL8srmJWwPHSwuQ4RL8wy56b5ftKUBxN7SGJe", "fee": 4200000, "feeAssetId": null, "timestamp": 1679559879895, "version": 2, "chainId": 87, "sender": "3PJazesjmprZcXYcFx3LxBux9T7q6qYoEDu", "senderPublicKey": "Eh7K5LqQLQiMVtfTT8GBou465Ta9MUg5GpmqtykkYK8J", "proofs": [ "2SHUmTukJNsF3kKjjEFUMfx9Ce55vKWyvWaZB4C6xL3C8ehMP4Tqj35LDBV9Ba1KAVwY3n5jgHxAc7P2xH8miVzh" ], "script": "base64:BgLMLAgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igh0MUJpZ0ludCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgJ0MiICZjIiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIgNhZGEiFGtleUNoYW5nZUFtcExhc3RDYWxsIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIhZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uIgtwb29sQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiA2ZjYSIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4MTk0ODQyMyIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEmNmZ0luQW1vdW50QXNzZWRJZCIRY2ZnSW5QcmljZUFzc2V0SWQiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgFzIgFhIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMjkyODEyOTc2IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgZjaGVja0QiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDIwODE1MjExNjAiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMjM1NTIyMzc1IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyNjgyMjI3MjkiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDkyNzI1MTM5IgNkTHAiDSR0MDI1NDgxMjU1ODEiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyODIzNzI4Njk5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjg3MDUyODg4MSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyODg4NTI5MTM5IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzEyNTEzMTM2MiIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMTU1MjMxODU5IgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMyNjQ0MzI5OTQiEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMyOTk3MzMxMDUiEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIBbSIHJG1hdGNoMCICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzNDU1MjM0NTcyIg0kdDAzNDkwMzM0OTUwIhNza2lwT3JkZXJWYWxpZGF0aW9uIg1jbGVhbkFtb3VudEluIg1mZWVQb29sQW1vdW50Ig0kdDAzNTMwMjM1NzI2Ighhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgVuZXdYcCIEbmV3RCIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IgZjaGVja3MiB2Fzc2V0SW4iDSR0MDM3MTYyMzc1NTYiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwNDIxNzU0MjMxNyIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCINJHQwNDM5NTg0NDExNiIHZXN0aW1MUCINJHQwNDUwMDE0NTM1MCIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDQ1MzUzNDU0NjEiB21heFNscGciBmVzdFB1dCINJHQwNDY0OTE0NjU1NiIJb3V0QW10QW10Ig0kdDA0NzcyOTQ3ODExIg1pc0dldERpc2FibGVkIg0kdDA0ODQyOTQ4NTg0IhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0OTEwODQ5MTcyIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSINJHQwNTAxODI1MDIzNyINJHQwNTA2MTI1MDcyNyIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MTg5MzUxOTc0Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNTMwMDE1MzA4MiINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNTQzMzM1NDQxNCIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDSR0MDU1NDM2NTU2MjQiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA1NTc1MjU1ODU1Ig0kdDA1NjAwMzU2MTA3IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCIDY2ZnIg0kdDA1ODc5NDU4OTkzIgRsaXN0IgVkZWxheSIFZGVsdGEiBnRhcmdldCIGY3VyQW1wIgluZXdBbXBSYXciBm5ld0FtcCIIbGFzdENhbGwiBHdhaXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiINJHQwNTk5MDU2MDAyMiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNohgEAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFJAUoJALwCAwUBSQUBYwUBSgEBTAIBTQFOCQCgAwEJALwCAwUBTQkAtgIBBQFOBQFjAQFPAwFNAU4BUAkAoAMBCQC9AgQFAU0JALYCAQUBTgUBYwUBUAEBUQIBSQFKCQC8AgMFAUkFAWMJALYCAQUBSgEBUgIBTQFOCQC8AgMFAU0JALYCAQUBTgUBYwEBUwMBVAFVAVYJAGsDBQFUBQFVBQFWAQFXAQFNAwkAvwICBQFkBQFNCQC+AgEFAU0FAU0BAVgBAU0DCQC/AgIFAWQFAU0JAL4CAQUBTQUBTQEBWQACEyVzX19mYWN0b3J5Q29udHJhY3QBAVoAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWEAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFiAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFjAgJhZAJhZQkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFkCQDMCAIJAKQDAQUCYWUFA25pbAUBbgECYWYCAmFnAmFoCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWcCAl9fBQJhaAECYWkCAmFnAmFoCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWcCAl9fBQJhaAECYWoAAg8lc19fYW1vdW50QXNzZXQBAmFrAAIOJXNfX3ByaWNlQXNzZXQBAmFsAAIHJXNfX2FtcAECYW0BAmFuCQCsAgICCyVzJWRfX2FtcF9fCQCkAwEFAmFuAQJhbwACDSVzX19hZGRvbkFkZHIBAmFwAAIVJXNfX2NoYW5nZUFtcExhc3RDYWxsAAJhcQIHJXNfX2ZlZQACYXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXEFAUcAAmFzCQC5CQIJAMwIAgICJXMJAMwIAgIDZExwBQNuaWwFAW4AAmF0CQC5CQIJAMwIAgICJXMJAMwIAgISZExwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAW4AAmF1CQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaERMcERlbGF5BQNuaWwFAW4AAmF2AB4AAmF3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmF1BQJhdgECYXgAAhElc19fZmFjdG9yeUNvbmZpZwECYXkAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF6AgJhQQJhQgkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYUECAl9fBQJhQgIIX19jb25maWcBAmFDAQJhRAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhRAECYUUAAgwlc19fc2h1dGRvd24BAmFGAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFHAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIAQJhSQkArAICAhslcyVzX19za2lwT3JkZXJWYWxpZGF0aW9uX18FAmFJAQJhSgQCYUsCYUwCYU0CYU4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFLAgIgKAUCYUwCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYU0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFOAQJhTwICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhUgICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhUwECYVQJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFUBQNuaWwCASABAmFVAQJhVAkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAAJhVgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFPAgUEdGhpcwkBAVkAAAJhVwoAAmFYCQD8BwQFAmFWAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVgCA0ludAUCYVgJAAIBCQCsAgIJAAMBBQJhWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWQoAAmFYCQD8BwQFAmFWAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgNJbnQFAmFYCQACAQkArAICCQADAQUCYVgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVoJAQJhTwIFBHRoaXMJAQJhbAABAmJhAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVgkBAmFFAAcBAmJiAAkA2QQBCQECYU8CBQJhVgkBAmF5AAACYmMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFAmFWCQECYUcAAQJiZAAEAmJlCQECYU8CBQR0aGlzCQECYWoABAJiZgkBAmFPAgUEdGhpcwkBAmFrAAQCYmcJAQJhUgIFAmFWCQECYUMBBQJiZgQCYUEJAQJhUgIFAmFWCQECYUMBBQJiZQkAtQkCCQECYU8CBQJhVgkBAmF6AgkApAMBBQJhQQkApAMBBQJiZwUBbgECYmgBAmJpAwkAAAIFAmJpBQFrBQR1bml0CQDZBAEFAmJpAQJiagECYmkDCQAAAgUCYmkFBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYmkBAmJrAQJibAkAmwoJCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJsBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmwFAXUJANkEAQkAkQMCBQJibAUBdgkBAmJoAQkAkQMCBQJibAUBdwkBAmJoAQkAkQMCBQJibAUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmwFAXoJANkEAQkAkQMCBQJibAUBQQkA2QQBCQCRAwIFAmJsBQFCAAJibQkBAmJrAQkBAmJkAAACYm4FAmJtAAJibwgFAmJuAl8xAAJicAgFAmJuAl8yAAJicQgFAmJuAl8zAAJicggFAmJuAl80AAJicwgFAmJuAl81AAJidAgFAmJuAl82AAJidQgFAmJuAl83AAJidggFAmJuAl84AAJidwgFAmJuAl85AQJieAAJALUJAgkBAmFPAgUCYVYJAQJheAAFAW4AAmJ5CQECYngAAAJiegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnkFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnkFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiQgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnkFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJDCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJieQUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkQKAmJFAmJGAmJHAmJIAmJJAmJKAmJLAmJMAmJNAmJOCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgUDbmlsBQFuAQJiTwYCYlACYlECYlICYkgCYksCYkwJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJRCQDMCAIJAKQDAQUCYlIJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkwFA25pbAUBbgECYlMBAmJUAwkAAAIFAmJUAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiVAECYlUCAmJWAmJXCQC8AgMFAmJWBQFjBQJiVwECYlgDAmJWAmJXAVAJAL0CBAUCYlYFAWMFAmJXBQFQAQJiWQMCYloCY2ECY2IEAmNjCQC8AgMJALgCAgUCYloFAmNhBQFiBQJjYQQCY2QJAL8CAgkAuAICBQJjYgkBAVcBBQJjYwUBZAMJAQEhAQUCY2QJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2MJAJQKAgUCY2QJAJkDAQkAzAgCBQJiWgkAzAgCBQJjYQUDbmlsAQJjZQMCY2YCY2cCY2gEAmNjCQC8AgMFAmNnBQFiBQJjZgQCY2kJAL8CAgUCY2gFAmNjAwMFAmNpBgkAvwICBQJjZwUCY2YJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNnAgEgCQCmAwEFAmNmAgEgCQCmAwEFAmNjAgEgCQCmAwEFAmNoBQJjaQECY2oEAmNrAmNsAmNtAmNuBAJjbwkBAUgCBQJjbQUCY2sEAmNwCQEBSAIFAmNuBQJjbAkBAmJVAgUCY3AFAmNvAQJjcQMCY20CY24CY3IEAmNzBQJidAQCY3QFAmJ1BAJjdQkBAmNqBAUCY3MFAmN0BQJjbQUCY24EAmJXCQEBSAIFAmNtBQJjcwQCYlYJAQFIAgUCY24FAmN0BAJjdgkBAUgCBQJjcgUBYQQCY3cJAQJiVQIFAmJXBQJjdgQCY3gJAQJiVQIFAmJWBQJjdgkAzAgCBQJjdQkAzAgCBQJjdwkAzAgCBQJjeAUDbmlsAQJjeQMCY20CY24CY3IEAmN6CQECY3EDBQJjbQUCY24FAmNyCQDMCAIJAQFMAgkAkQMCBQJjegAABQFhCQDMCAIJAQFMAgkAkQMCBQJjegABBQFhCQDMCAIJAQFMAgkAkQMCBQJjegACBQFhBQNuaWwBAmNBAgJjQgJhcgQCY0MDCQAAAgUCYXIAAAAACQBrAwUCY0IFAmFyBQFhCQCUCgIJAGUCBQJjQgUCY0MFAmNDAQJjRAECY0UEAmNGCQCRAwIFAmNFAAAEAmNHCQCRAwIFAmNFAAEEAmNICQC3AgIFAmNGBQJjRwMJAAACBQJjSAUBZQUBZQQCY0kJAQ1wYXJzZUludFZhbHVlAQUCYVoEAmNKCQBoAgUCY0kAAgQCY3oJALwCAwUCY0YFAmNHBQFmBAJjSwkAvAIDBQJjegUBaQUBZgQCY0wJALwCAwkAtgIBBQJjSgUCY0gFAWYEAmNNCQC2AgEJAGUCBQJjSgABCgECY04BAmNPBAJjUAkAvAIDBQJjTwUCY08FAWYEAmNRCQC8AgMFAmNQBQJjTwUBZgQCY1IJALwCAwUCY1EFAWYFAmNLCQC8AgMJALcCAgUCY0wJALwCAwUCY1IFAWcFAWYFAmNPCQC3AgIJALwCAwUCY00FAmNPBQFmCQC8AgMFAWgFAmNSBQFmCgECY1MCAmNUAmNVAwgFAmNUAl8yBQJjVAQCY08IBQJjVAJfMQQCY1YJAQJjTgEFAmNPBAJjVwkAuAICBQJjVgkBBXZhbHVlAQUCY08EAmNYAwkAvwICBQFlBQJjVwkAvgIBBQJjVwUCY1cDCQDAAgIFAWYFAmNYCQCUCgIFAmNWBgkAlAoCBQJjVgcEAmNZCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCY1oKAAJkYQUCY1kKAAJkYgkAkAMBBQJkYQoAAmRjCQCUCgIFAmNIBwoBAmRkAgJkZQJkZgMJAGcCBQJkZgUCZGIFAmRlCQECY1MCBQJkZQkAkQMCBQJkYQUCZGYKAQJkZwICZGUCZGYDCQBnAgUCZGYFAmRiBQJkZQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGcCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCCQECZGQCBQJkYwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY08IBQJjWgJfMQQCZGgIBQJjWgJfMgMFAmRoBQJjTwkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjTwECZGkEAmRqAmRrAmRsAmRtBAJkbgUCYnEEAmRvCQDYBAEJAQV2YWx1ZQEFAmJyBAJkcAkA2AQBCQEFdmFsdWUBBQJicwQCZHEFAmJ0BAJkcgUCYnUEAmRzCQCkAwEFAmJwBAJkdAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRuBQJkawkAAgECD1dyb25nIHBtdCBhc3NldAQCZHUJAQJiUwEFAmRvBAJkdgkBAUgCBQJkdQUCZHEEAmR3CQECYlMBBQJkcAQCZHgJAQFIAgUCZHcFAmRyBAJkeQkBAmJVAgUCZHgFAmR2BAJkegkBAUwCBQJkeQUBYQQCZEEJAQFIAgUCZGwFAWEEAmRCCQEBSAIFAmR0BQFhBAJkQwkAvAIDBQJkdgUCZEEFAmRCBAJkRAkAvAIDBQJkeAUCZEEFAmRCBAJkRQkBAU8DBQJkQwUCZHEFBUZMT09SBAJkRgkBAU8DBQJkRAUCZHIFBUZMT09SBAJkRwMJAAACBQJkagIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZG0FAmRFAwkAAAIFAmRvAgVXQVZFUwUEdW5pdAkA2QQBBQJkbwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkbQUCZEYDCQAAAgUCZHACBVdBVkVTBQR1bml0CQDZBAEFAmRwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZG0FAmRqCQECYk8GBQJkRQUCZEYFAmRsBQJkegUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZHoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR6BQNuaWwJAJwKCgUCZEUFAmRGBQJkbwUCZHAFAmR1BQJkdwUCZHQFAmR5BQJkcwUCZEcBAmRIDQJkagJjYgJkSQJkSgJkSwJkTAJkbQJkTQJkTgJkTwJkUAJkUQJkUgQCZG4FAmJxBAJkUwkA2AQBCQEFdmFsdWUBBQJicgQCZFQJANgEAQkBBXZhbHVlAQUCYnMEAmRVBQJidgQCZFYFAmJ3BAJkVwUCYnQEAmRYBQJidQQCZHMJAKQDAQUCYnAEAmRZCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRuAghXciBscCBhcwhxdWFudGl0eQQCZHUDBQJkTQkBAmJTAQUCZFMDAwUCZE8JAAACBQJkUgUCZFMHCQBlAgkBAmJTAQUCZFMFAmRRAwUCZE8JAQJiUwEFAmRTCQBlAgkBAmJTAQUCZFMFAmRJBAJkdwMFAmRNCQECYlMBBQJkVAMDBQJkTwkAAAIFAmRSBQJkVAcJAGUCCQECYlMBBQJkVAUCZFEDBQJkTwkBAmJTAQUCZFQJAGUCCQECYlMBBQJkVAUCZEsEAmRaCQEBSAIFAmRJBQJkVwQCZWEJAQFIAgUCZEsFAmRYBAJlYgkBAmJVAgUCZWEFAmRaBAJkdgkBAUgCBQJkdQUCZFcEAmR4CQEBSAIFAmR3BQJkWAQCY2cJAQJjRAEJAMwIAgUCZHYJAMwIAgUCZHgFA25pbAQCZWMDCQAAAgUCZFkAAAQCY2YJAQJjRAEJAMwIAgkAtwICBQJkdgUCZFoJAMwIAgkAtwICBQJkeAUCZWEFA25pbAQCZWQDCQC/AgIFAmNmBQJjZwYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVkBQJlZAQCZHkFAWQEAmVlBQFkBAJjdgUCY2YJAJcKBQkBAUwCBQJjdgUBYQkBAUwCBQJkWgUCZFcJAQFMAgUCZWEFAmRYCQECYlUCCQC3AgIFAmR4BQJlYQkAtwICBQJkdgUCZFoFAmVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkeQkBAmJVAgUCZHgFAmR2BAJlZgkAvAIDCQEBVwEJALgCAgUCZHkFAmViBQFjBQJkeQQCZWUJAQFIAgUCY2IFAWEDAwMFAmRQCQECIT0CBQJkeQUBZAcJAL8CAgUCZWYFAmVlBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlZgIDID4gCQCmAwEFAmVlBAJlZwkBAUgCBQJkWQUBYQQCZWgJAL0CBAUCZFoJAQJiWAMFAmR4BQJkdgUHQ0VJTElORwUBYwUHQ0VJTElORwQCZWkJAL0CBAUCZWEFAWMJAQJiWAMFAmR4BQJkdgUFRkxPT1IFB0NFSUxJTkcEAmVqAwkAvwICBQJlaAUCZWEJAJQKAgUCZWkFAmVhCQCUCgIFAmRaBQJlaAQCZWsIBQJlagJfMQQCZWwIBQJlagJfMgQCY2YJAQJjRAEJAMwIAgkAtwICBQJkdgUCZWsJAMwIAgkAtwICBQJkeAUCZWwFA25pbAQCZWQDCQC/AgIFAmNmBQJjZwYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVkBQJlZAQCY3YJALwCAwUCZWcJALgCAgUCY2YFAmNnBQJjZwkAlwoFCQEBTwMFAmN2BQFhBQVGTE9PUgkBAU8DBQJlawUCZFcFB0NFSUxJTkcJAQFPAwUCZWwFAmRYBQdDRUlMSU5HBQJkeQUCZWUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVtCAUCZWMCXzEEAmVuCAUCZWMCXzIEAmVvCAUCZWMCXzMEAmR6CQEBTAIIBQJlYwJfNAUBYQQCZXAJAQFMAggFAmVjAl81BQFhAwkAZwIAAAUCZW0JAAIBAgdMUCA8PSAwBAJlcQMJAQEhAQUCZE4AAAUCZW0EAmVyCQBlAgUCZEkFAmVuBAJlcwkAZQIFAmRLBQJlbwQCZXQDAwUCZE8JAAACBQJkUgUCZFMHCQCUCgIFAmRRAAADAwUCZE8JAAACBQJkUgUCZFQHCQCUCgIAAAUCZFEJAJQKAgUCZW4FAmVvBAJldQgFAmV0Al8xBAJldggFAmV0Al8yBAJldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZHoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIFAmRtBQJkagkBAmJECgUCZXUFAmV2BQJlcQUCZHoFAmNiBQJlcAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXIFAmVzBQNuaWwJAJ8KDQUCZW0FAmVxBQJkegUCZHUFAmR3BQJkWQUCZG4FAmRzBQJldwUCZXIFAmVzBQJkSgUCZEwBAmV4AwJjRQJjVQJleQQCZXoFAWcEAmVBCQCRAwIFAmNFAwkAAAIFAmNVAAAAAQAABAJlQgkApwMBBQFsBAJjSQkAuQICCQCnAwEFAmFaBQJlQgQCY0gFAmVBBAJjSgkAuQICBQJjSQUCZXoEAmVDCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXkFAmV5CQC5AgIFAmVBBQJlegUCZXkFAmVCCQC5AgIFAmNKBQJlegQCZUQJALgCAgkAtwICBQJjSAkAugICCQC5AgIFAmV5BQJlQgUCY0oFAmV5CgECY1MCAmNUAmVFBAJlRgUCY1QEAmVHCAUCZUYCXzEEAmRoCAUCZUYCXzIDCQECIT0CBQJkaAUEdW5pdAUCY1QEAmVICQC6AgIJALcCAgkAuQICBQJlRwUCZUcFAmVDCQC3AgIJALkCAgUBZwUCZUcFAmVEBAJlSQkBAVgBCQC4AgIFAmVICQEFdmFsdWUBBQJlRwMJAMACAgUBZgUCZUkJAJQKAgUCZUgFAmVFCQCUCgIFAmVIBQR1bml0BAJjWQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlSgoAAmRhBQJjWQoAAmRiCQCQAwEFAmRhCgACZGMJAJQKAgUCZXkFBHVuaXQKAQJkZAICZGUCZGYDCQBnAgUCZGYFAmRiBQJkZQkBAmNTAgUCZGUJAJEDAgUCZGEFAmRmCgECZGcCAmRlAmRmAwkAZwIFAmRmBQJkYgUCZGUJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRnAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgUCZGMAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUcIBQJlSgJfMQQCZGgIBQJlSgJfMgMJAQIhPQIFAmRoBQR1bml0BQJlRwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRwECZUsDAmVMAmVNAmVOBAJlTwkAvAIDCQECY0QBCQDMCAIJAQFLAgUCZUwJALYCAQUCYnQJAMwIAgkBAUsCBQJlTQkAtgIBBQJidQUDbmlsBQFjBQJlTgMJAAACBQJlTgUBZQUBZQUCZU8BAmVQAwJlUQJlUgJlUwQCZVQJALgCAgkAtgIBCQECYlMBCQECYmoBBQJicgUCZVEEAmVVCQC4AgIJALYCAQkBAmJTAQkBAmJqAQUCYnMFAmVSBAJlVgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5BQJlUwQCZVcJAQJlSwMFAmVUBQJlVQUCZVYFAmVXAQJlWAMCZVkCZVoCZVMEAmVUCQBkAgkBAmJTAQkBAmJqAQUCYnIFAmVZBAJlVQkAZAIJAQJiUwEJAQJiagEFAmJzBQJlWgQCZVYJAGQCCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQUCZVMEAmVPCQECZUsDCQC2AgEFAmVUCQC2AgEFAmVVCQC2AgEFAmVWBAJmYQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcwkApgMBBQJlTwUDbmlsCQCUCgIFAmZhBQJlTwECZmICAmZjAmVPAwkAwAICBQJlTwUCZmMGCQECYVMBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmZAECZmUEAmVUCQECYlMBCQECYmoBBQJicgQCZVUJAQJiUwEJAQJiagEFAmJzBAJmZggFAmZlBmFtb3VudAQCZmcJAG4ECAUCZmUGYW1vdW50CAUCZmUFcHJpY2UFAWEFBUZMT09SBAJmaAMJAAACCAUCZmUJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmYJAQEtAQUCZmcJAJQKAgkBAS0BBQJmZgUCZmcEAmVZCAUCZmgCXzEEAmVaCAUCZmgCXzIDAwMJAQJiYQAGCQAAAgUCYnAFAXIGCQAAAgUCYnAFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmUJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJicgYJAQIhPQIICAUCZmUJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJzCQACAQIJV3IgYXNzZXRzBAJmaQkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwBAJmagkBAmVYAwUCZVkFAmVaAAAEAmZrCAUCZmoCXzEEAmZsCAUCZmoCXzIEAmZtCQDAAgIFAmZsBQJmaQQCZm4JALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZmkJAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmbAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVUCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlVQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVkJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVoJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZtBQJmbgECZm8BAmNVAwkBAiE9AgkAkAMBCAUCY1UIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZwCQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABAJkawkBBXZhbHVlAQgFAmZwB2Fzc2V0SWQEAmRRCAUCZnAGYW1vdW50BAJlYwkBAmRpBAkA2AQBCAUCY1UNdHJhbnNhY3Rpb25JZAkA2AQBBQJkawUCZFEIBQJjVQZjYWxsZXIEAmRFCAUCZWMCXzEEAmRGCAUCZWMCXzIEAmRzCQENcGFyc2VJbnRWYWx1ZQEIBQJlYwJfOQQCZEcIBQJlYwNfMTADAwkBAmJhAAYJAAACBQJkcwUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmRzCQCXCgUFAmRFBQJkRgUCZFEFAmRrBQJkRwECZnEKAmZyAmFoAmZzAmZ0AmNiAmROAmRPAmRQAmRRAmRSBAJlYwkBAmRIDQUCYWgFAmNiCAkBBXZhbHVlAQUCZnMGYW1vdW50CAkBBXZhbHVlAQUCZnMHYXNzZXRJZAgJAQV2YWx1ZQEFAmZ0BmFtb3VudAgJAQV2YWx1ZQEFAmZ0B2Fzc2V0SWQFAmZyCQAAAgUCYWgCAAUCZE4FAmRPBQJkUAUCZFEFAmRSBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZWMCXzgDAwMJAQJiYQAGCQAAAgUCZHMFAXEGCQAAAgUCZHMFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmRzBQJlYwECZnUFAmZ2AmRrAmRtAmFoAmZ3BAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmRuBQJicQQCZFcFAmJ0BAJkWAUCYnUEAmVWCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZG4CEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZ4AwkAvwICBQJlVgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZ4BQJmeAQCZHUJAQJiUwEFAmRvBAJkdwkBAmJTAQUCZHAEAmZ5AwkAAAIFAmFoAgAJAJQKAgUCZHUFAmR3AwkAAAIFAmRrBQJkbwMJAGYCBQJmdgUCZHUJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkdQUCZnYFAmR3AwkAAAIFAmRrBQJkcAMJAGYCBQJmdgUCZHcJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmR1CQBlAgUCZHcFAmZ2CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZnoIBQJmeQJfMQQCZkEIBQJmeQJfMgQCZkIDCQAAAgUCZGsFAmRvCQCUCgIFAmZ2AAADCQAAAgUCZGsFAmRwCQCUCgIAAAUCZnYJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZDCAUCZkICXzEEAmZECAUCZkICXzIEAmZFAwUCZncJAJUKAwgJAQJjQQIFAmZDBQJhVwJfMQgJAQJjQQIFAmZEBQJhVwJfMQgJAQJjQQIFAmZ2BQJhVwJfMgkAlQoDBQJmQwUCZkQAAAQCZkYIBQJmRQJfMQQCZkcIBQJmRQJfMgQCY0MIBQJmRQJfMwQCZkgJAGQCBQJmegUCZkYEAmZJCQBkAgUCZkEFAmZHBAJjZwkBAmNEAQkAzAgCCQEBSAIFAmZ6BQJidAkAzAgCCQEBSAIFAmZBBQJidQUDbmlsBAJjZgkBAmNEAQkAzAgCCQEBSAIFAmZIBQJidAkAzAgCCQEBSAIFAmZJBQJidQUDbmlsBAJlZAMJAL8CAgUCY2YFAmNnBgkBBXRocm93AAMJAAACBQJlZAUCZWQEAmZKCQC9AgQFAmVWCQC4AgIFAmNmBQJjZwUCY2cFBUZMT09SBAJkegkBAUwCCQECYlUCCQEBSAIFAmZJBQJkWAkBAUgCBQJmSAUCZFcFAWEEAmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJkegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgUCZG0FAmFoCQECYkQKBQJmQwUCZkQJAKADAQUCZkoFAmR6AAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZksJAGsDBQJmQQUBYQUCZnoEAmZMCQBrAwUCZnYFAWEJAGQCBQJmSwUBYQQCZk0JAGUCBQJmdgUCZkwEAmZOCQC8AgMFAmVWCQC2AgEFAmZNCQC2AgEFAmZBBAJmTwkAoAMBCQC8AgMJALgCAgUCZkoFAmZOBQFiBQJmTgkAlgoECQCgAwEFAmZKBQJldwUCY0MFAmZPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmUAYCZlECZlICZlMCZnICZlQCZlUEAmRuCQDYBAEJAQV2YWx1ZQEFAmJxBAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmZWBQJidAQCZlcFAmJ1BAJmWAUCYnAEAmRtAwkAAAIFAmZyBQJiQwUCZlQFAmZyBAJmcAkBBXZhbHVlAQkAkQMCBQJmUwAABAJkawkBBXZhbHVlAQgFAmZwB2Fzc2V0SWQEAmRRCAUCZnAGYW1vdW50BAJlVwkBAmVQAwUBZQUBZQUBZQMJAAACBQJlVwUCZVcEAmRqCQDYBAEFAmZVAwkBAiE9AgUCZG4JANgEAQUCZGsJAAIBAghXcm9uZyBMUAQCZHUJAQJiUwEFAmRvBAJkdwkBAmJTAQUCZHAEAmZZCgACYVgJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmUQkAzAgCBQJkUQUDbmlsBQNuaWwDCQABAgUCYVgCCihJbnQsIEludCkFAmFYCQACAQkArAICCQADAQUCYVgCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZlkFAmZZBAJjQwgFAmZZAl8yBAJmWggFAmZZAl8xBAJnYQMDCQBmAgUCZlIAAAkAZgIFAmZSBQJmWgcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlIFA25pbAIABQJmWgQCZ2IDCQAAAgUCZlEFAmRvCQCWCgQFAmdhAAAJAGUCCQBlAgUCZHUFAmdhBQJjQwUCZHcDCQAAAgUCZlEFAmRwCQCWCgQAAAUCZ2EFAmR1CQBlAgkAZQIFAmR3BQJnYQUCY0MJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2MIBQJnYgJfMQQCZ2QIBQJnYgJfMgQCZkgIBQJnYgJfMwQCZkkIBQJnYgJfNAQCZ2UJAQJiVQIJAQFIAgUCZkkFAmZXCQEBSAIFAmZIBQJmVgQCZ2YJAQFMAgUCZ2UFAWEEAmdnAwkAAAIFAmZRAgVXQVZFUwUEdW5pdAkA2QQBBQJmUQQCZ2gDCQBmAgUCY0MAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiYwUCY0MFAmdnBQNuaWwFA25pbAQCZEcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkbQUCZ2EFAmdnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZG0FAmRqCQECYk8GBQJnYwUCZ2QFAmRRBQJnZgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZ2YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdmBQNuaWwFAmdoAwkAAAIFAmRHBQJkRwQCZ2kJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZFEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGsFAmRRBQNuaWwDCQAAAgUCZ2kFAmdpBAJnagQCZ2sDCQAAAgUEdGhpcwUCYmMAAAUCY0MEAmdsAwkAAAIJAQJiaAEFAmZRBQJicgYHAwUCZ2wJAJQKAgkBAS0BCQBkAgUCZloFAmdrAAAJAJQKAgAACQEBLQEJAGQCBQJmWgUCZ2sEAmVZCAUCZ2oCXzEEAmVaCAUCZ2oCXzIEAmdtCQECZVgDBQJlWQUCZVoAAAQCZ24IBQJnbQJfMQQCZU8IBQJnbQJfMgQCZ28JAQJmYgIFAmVXBQJlTwMJAAACBQJnbwUCZ28JAJQKAgkAzggCBQJkRwUCZ24FAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJncAAEAmdxCQCiCAEJAQFaAAMJAAECBQJncQIGU3RyaW5nBAJjSAUCZ3EJANkEAQUCY0gDCQABAgUCZ3ECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ3IABAJncQkAoggBCQECYWEAAwkAAQIFAmdxAgZTdHJpbmcEAmNIBQJncQkA2QQBBQJjSAMJAAECBQJncQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJncwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJndAECY1UEAmdxCQECZ3AAAwkAAQIFAmdxAgpCeXRlVmVjdG9yBAJndQUCZ3EJAAACCAUCY1UPY2FsbGVyUHVibGljS2V5BQJndQMJAAECBQJncQIEVW5pdAkAAAIIBQJjVQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3YBAmNVBAJncQkBAmdwAAMJAAECBQJncQIKQnl0ZVZlY3RvcgQCZ3UFAmdxAwkAAAIIBQJjVQ9jYWxsZXJQdWJsaWNLZXkFAmd1BgUCZ3MDCQABAgUCZ3ECBFVuaXQDCQAAAggFAmNVBmNhbGxlcgUEdGhpcwYFAmdzCQACAQILTWF0Y2ggZXJyb3IBAmd3AwJneAJleQJneQQCYmwJAQJiZAAEAmRvCQCRAwIFAmJsBQF3BAJkcAkAkQMCBQJibAUBeAQCZXoFAWcEAmVCCQCnAwEFAWwEAmNJCQC5AgIJAKcDAQUCYVoFAmVCBAJjRQMJAAACBQJneAcJAMwIAgkAtwICCQC2AgEJAQJiUwEFAmRvBQJneQkAzAgCCQC2AgEJAQJiUwEFAmRwBQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiUwEFAmRwBQJneQkAzAgCCQC2AgEJAQJiUwEFAmRvBQNuaWwEAmVBCQCRAwIFAmNFAAAEAmNIBQJlQQQCY0oJALkCAgUCY0kFAmV6BAJlQwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV5BQJleQkAuQICBQJlQQUCZXoFAmV5BQJlQgkAuQICBQJjSgUCZXoEAmVECQC4AgIJALcCAgUCY0gJALoCAgkAuQICBQJleQUCZUIFAmNKBQJleQoBAmNTAgJjVAJlRQQCZ3oFAmNUBAJlRwgFAmd6Al8xBAJkaAgFAmd6Al8yAwkBAiE9AgUCZGgFBHVuaXQFAmNUBAJlSAkAugICCQC3AgIJALkCAgUCZUcFAmVHBQJlQwkAtwICCQC5AgIFAWcFAmVHBQJlRAQCZUkJAQFYAQkAuAICBQJlSAkBBXZhbHVlAQUCZUcDCQDAAgIFAWYFAmVJCQCUCgIFAmVIBQJlRQkAlAoCBQJlSAUEdW5pdAQCY1kJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ0EKAAJkYQUCY1kKAAJkYgkAkAMBBQJkYQoAAmRjCQCUCgIFAmV5BQR1bml0CgECZGQCAmRlAmRmAwkAZwIFAmRmBQJkYgUCZGUJAQJjUwIFAmRlCQCRAwIFAmRhBQJkZgoBAmRnAgJkZQJkZgMJAGcCBQJkZgUCZGIFAmRlCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkZwIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIFAmRjAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVHCAUCZ0ECXzEEAmRoCAUCZ0ECXzIDCQECIT0CBQJkaAUEdW5pdAUCZUcJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUcBAmdCAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVgkBAmFIAQkApQgBBQR0aGlzBx8CY1UBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ0MCZ3gCZ0QEAmdFAwkAAAIFAmd4BwQCZ0YJAQJhTwIFBHRoaXMJAQJhawAEAmd5CQC3AgIJALYCAQkBAmJTAQkBAmFPAgUEdGhpcwkBAmFqAAkAtgIBBQJnQwkAlAoCBQJnRgUCZ3kEAmdGCQECYU8CBQR0aGlzCQECYWoABAJneQkAtwICCQC2AgEJAQJiUwEJAQJhTwIFBHRoaXMJAQJhawAJALYCAQUCZ0MJAJQKAgUCZ0YFAmd5BAJnRggFAmdFAl8xBAJneQgFAmdFAl8yBAJibAkBAmJkAAQCZG8JAJEDAgUCYmwFAXcEAmRwCQCRAwIFAmJsBQF4BAJjRQkAzAgCCQC2AgEJAQJiUwEFAmRvCQDMCAIJALYCAQkBAmJTAQUCZHAFA25pbAQCZXkJAQJjRAEFAmNFBAJlRwkBAmd3AwUCZ3gFAmV5CQC2AgEFAmdDBAJnRwkAuAICCQC4AgIJALYCAQkBAmJTAQUCZ0YFAmVHCQC2AgEAAQQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnRwUDbmlsBAJnSQMJAAACBQJneAcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJTAQUCZG8JALYCAQUCZ0MJALYCAQUCZ0QJAMwIAgkAuAICCQC2AgEJAQJiUwEFAmRwBQJnRwUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlMBBQJkbwUCZ0cJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJTAQUCZHAJALYCAQUCZ0MJALYCAQUCZ0QFA25pbAQCZ0oJAQJjRAEFAmdJBAJlZAMJAMACAgUCZ0oFAmV5BgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmV5CQDMCAIJAKYDAQUCZ0oFA25pbAICX18DCQAAAgUCZWQFAmVkCQCUCgIFA25pbAUCZ0gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnQwJneAJnSwJnTAJnRAQCZ00KAAJhWAkA/AcEBQJhVgIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFYAgZTdHJpbmcFAmFYCQACAQkArAICCQADAQUCYVgCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ04JAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQFAmdDBgkBAmFTAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNVBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ00GCQECYVMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdOBQJnTgQCZnAJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAEAmdPCQECYmoBCAUCZnAHYXNzZXRJZAQCZ1ADCQAAAgUCZ3gHBAJnRgkBAmFPAgUEdGhpcwkBAmFrAAQCZ3kJAGUCCQECYlMBBQJnTwgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdGBQJneQQCZ0YJAQJhTwIFBHRoaXMJAQJhagAEAmd5CQBlAgkBAmJTAQUCZ08ICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnRgUCZ3kEAmdGCAUCZ1ACXzEEAmd5CAUCZ1ACXzIEAmJsCQECYmQABAJkbwkAkQMCBQJibAUBdwQCZHAJAJEDAgUCYmwFAXgEAmNFAwkAAAIFAmd4BwkAzAgCCQC4AgIJALYCAQkBAmJTAQUCZG8JALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJTAQUCZHAFA25pbAkAzAgCCQC2AgEJAQJiUwEFAmRvCQDMCAIJALgCAgkAtgIBCQECYlMBBQJkcAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZXkJAQJjRAEFAmNFBAJlRwkBAmd3AwUCZ3gFAmV5CQC2AgEAAAQCZ0cJALgCAgkAuAICCQC2AgEJAQJiUwEFAmdGBQJlRwkAtgIBAAEEAmdICQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0cFA25pbAQCZ1EDCQBnAgUCZ0gFAmdLBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdRBQJnUQQCZ0kDCQAAAgUCZ3gHCQDMCAIJALcCAgkAtgIBCQECYlMBBQJkbwkAtgIBBQJnRAkAzAgCCQC4AgIJALYCAQkBAmJTAQUCZHAFAmdHBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiUwEFAmRvBQJnRwkAzAgCCQC3AgIJALYCAQkBAmJTAQUCZHAJALYCAQUCZ0QFA25pbAQCZ0oJAQJjRAEFAmdJBAJlZAMJAMACAgUCZ0oFAmV5BgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVkBQJlZAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdMBQJnSAkBAmJoAQUCZ0YFA25pbAUCZ0gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBC2NvbnN0cnVjdG9yAQFZBAJlQwkBAmd2AQUCY1UDCQAAAgUCZUMFAmVDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVAQpzZXRNYW5hZ2VyAQJnUgQCZUMJAQJndgEFAmNVAwkAAAIFAmVDBQJlQwQCZ1MJANkEAQUCZ1IDCQAAAgUCZ1MFAmdTCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBDmNvbmZpcm1NYW5hZ2VyAAQCY3oJAQJncgAEAmdUAwkBCWlzRGVmaW5lZAEFAmN6BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnVAUCZ1QEAmdVAwkAAAIIBQJjVQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmN6BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnVQUCZ1UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoACQDYBAEJAQV2YWx1ZQEFAmN6CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEDcHV0AgJnVgJnVwQCZ1gJAQJieAAEAmdZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnWAUBQwIKV3Igc3QgYWRkcgQCZ1oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdYBQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ1YJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNVCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmhhCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAQCaGIJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAEGYW1vdW50BAJlVAkAuAICCQC2AgEJAQJiUwEJAQJiagEFAmJyBQJoYQMJAAACBQJlVAUCZVQEAmVVCQC4AgIJALYCAQkBAmJTAQkBAmJqAQUCYnMFAmhiAwkAAAIFAmVVBQJlVQQCZVYJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkDCQAAAgUCZVYFAmVWBAJlVwkBAmVQAwUCaGEFAmhiCQC2AgEAAAMJAAACBQJlVwUCZVcEAmhjCQECZnEKCQClCAEIBQJjVQZjYWxsZXIJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNVCHBheW1lbnRzAAEFAmdWBgcGAAACAAQCZXEIBQJoYwJfMgQCaGQIBQJoYwJfNwQCZEcIBQJoYwJfOQQCZXIIBQJoYwNfMTAEAmVzCAUCaGMDXzExBAJkbwgFAmhjA18xMgQCZHAIBQJoYwNfMTMEAmVjCQD8BwQFAmFWAgRlbWl0CQDMCAIFAmVxBQNuaWwFA25pbAMJAAACBQJlYwUCZWMEAmhlBAJncQUCZWMDCQABAgUCZ3ECB0FkZHJlc3MEAmhmBQJncQkA/AcEBQJoZgIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGUFAmhlBAJoZwMJAGYCBQJlcgAACQD8BwQFAmdaAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmVyBQNuaWwFA25pbAMJAAACBQJoZwUCaGcEAmhoAwkAZgIFAmVzAAAJAPwHBAUCZ1oCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcAUCZXMFA25pbAUDbmlsAwkAAAIFAmhoBQJoaAQCaGkDBQJnVwQCaGoJAPwHBAUCZ1kCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhkBQJlcQUDbmlsAwkAAAIFAmhqBQJoagUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjVQZjYWxsZXIFAmVxBQJoZAUDbmlsBAJoawkBAmVYAwAAAAAAAAQCZ24IBQJoawJfMQQCZU8IBQJoawJfMgQCaGwDCQDAAgIFAmVPBQJlVwYJAQJhUwEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVQJAMwIAgkApgMBBQJlVQkAzAgCCQCmAwEFAmVWCQDMCAIJAKYDAQUCZVcJAMwIAgkApgMBBQJlTwkAzAgCCQCkAwEFAmVyCQDMCAIJAKQDAQUCZXMFA25pbAIBIAMJAAACBQJobAUCaGwEAmhtCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQMJAAACBQJobQUCaG0JAM4IAgkAzggCBQJkRwUCaGkFAmduCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVAQtwdXRPbmVUa25WMgICZlICZ1cEAmhuCgACYVgJAPwHBAUCYVYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWAIHQm9vbGVhbgUCYVgJAAIBCQCsAgIJAAMBBQJhWAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaG8DAwMJAQJiYQAGCQAAAgUCYnAFAXEGCQAAAgUCYnAFAXMGBQJobgQCZ04JAMwIAgMDCQEBIQEFAmhvBgkBAmd0AQUCY1UGCQECYVMBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjVQhwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmRuBQJicQQCZlYFAmJ0BAJmVwUCYnUEAmRtAwkAAAIIBQJjVQZjYWxsZXIFBHRoaXMIBQJjVQxvcmlnaW5DYWxsZXIIBQJjVQZjYWxsZXIEAmZwCQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABAJkawkA2AQBCQEFdmFsdWUBCAUCZnAHYXNzZXRJZAQCZFEIBQJmcAZhbW91bnQEAmVXAwkAAAIIBQJmcAdhc3NldElkBQJicgkBAmVQAwkAtgIBBQJkUQkAtgIBAAAJALYCAQAACQECZVADCQC2AgEAAAkAtgIBBQJkUQkAtgIBAAADCQAAAgUCZVcFAmVXBAJocAkBAmZ1BQUCZFEFAmRrCQClCAEFAmRtCQDYBAEIBQJjVQ10cmFuc2FjdGlvbklkBgMJAAACBQJocAUCaHAEAmNDCAUCaHACXzMEAmRHCAUCaHACXzIEAmhxCAUCaHACXzEEAmVxAwMJAGYCBQJmUgAACQBmAgUCZlIFAmhxBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUgUDbmlsAgAFAmhxBAJoYwkA/AcEBQJhVgIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwDCQAAAgUCaGMFAmhjBAJoZQQCZ3EFAmhjAwkAAQIFAmdxAgdBZGRyZXNzBAJoZgUCZ3EJAPwHBAUCaGYCBGVtaXQJAMwIAgUCZXEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmhlBQJoZQQCaGkDBQJnVwQCaGoJAPwHBAUCYnoCCHN0YWtlRm9yCQDMCAIJAKUIAQgFAmNVBmNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZXEFA25pbAMJAAACBQJoagUCaGoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1UGY2FsbGVyBQJlcQUCZG4FA25pbAQCZ2gDCQBmAgUCY0MAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiYwUCY0MJANkEAQUCZGsFA25pbAUDbmlsBAJocgMJAAACBQR0aGlzBQJiYwkAlAoCAAAAAAQCaHMDCQAAAggFAmZwB2Fzc2V0SWQFAmJyBgcDBQJocwkAlAoCCQEBLQEFAmNDAAAJAJQKAgAACQEBLQEFAmNDBAJlWQgFAmhyAl8xBAJlWggFAmhyAl8yBAJodAkBAmVYAwUCZVkFAmVaAAAEAmduCAUCaHQCXzEEAmVPCAUCaHQCXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRHBQJoaQUCZ2gFAmduBQJlcQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEKcHV0Rm9yRnJlZQECaHUDCQBmAgAABQJodQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJjVQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJodgkBAmZxCgkApQgBCAUCY1UGY2FsbGVyCQDYBAEIBQJjVQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjVQhwYXltZW50cwABBQJodQcHBgAAAgAEAmRHCAUCaHYCXzkEAmhhCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAQCaGIJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAEGYW1vdW50BAJlVwkBAmVQAwUCaGEFAmhiCQC2AgEAAAMJAAACBQJlVwUCZVcEAmh3CQECZVgDAAAAAAAABAJnbggFAmh3Al8xBAJlTwgFAmh3Al8yBAJnbwkBAmZiAgUCZVcFAmVPAwkAAAIFAmdvBQJnbwkAzggCBQJkRwUCZ24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBA2dldAAEAmVXCQECZVADCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVXBQJlVwQCZWMJAQJmbwEFAmNVBAJoeAgFAmVjAl8xBAJkRggFAmVjAl8yBAJkUQgFAmVjAl8zBAJkawgFAmVjAl80BAJkRwgFAmVjAl81BAJlRAkA/AcEBQJhVgIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkawUCZFEFA25pbAMJAAACBQJlRAUCZUQEAmh5CQECZVgDCQEBLQEFAmh4CQEBLQEFAmRGAAAEAmduCAUCaHkCXzEEAmVPCAUCaHkCXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQDOCAIFAmRHBQJnbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQELZ2V0T25lVGtuVjICAmZRAmZSBAJobgoAAmFYCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVgCB0Jvb2xlYW4FAmFYCQACAQkArAICCQADAQUCYVgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh6AwMJAQJiYQAGCQAAAgUCYnAFAXMGBQJobgQCZ04JAMwIAgMDCQEBIQEFAmh6BgkBAmd0AQUCY1UGCQECYVMBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjVQhwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJoQQkBAmZQBgUCZlEFAmZSCAUCY1UIcGF5bWVudHMIBQJjVQZjYWxsZXIIBQJjVQxvcmlnaW5DYWxsZXIIBQJjVQ10cmFuc2FjdGlvbklkBAJkRwgFAmhBAl8xBAJnYQgFAmhBAl8yCQCUCgIFAmRHBQJnYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEKcmVmcmVzaERMcAAEAmhCCQELdmFsdWVPckVsc2UCCQCfCAEFAmF0AAAEAmhDAwkAZwIJAGUCBQZoZWlnaHQFAmhCBQJhdwUEdW5pdAkBAmFTAQkAuQkCCQDMCAIJAKQDAQUCYXcJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhDBQJoQwQCZmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwCQECYVUBAgtpbnZhbGlkIGRMcAQCaEQJAQJlWAMAAAAAAAAEAmhFCAUCaEQCXzEEAmVPCAUCaEQCXzIEAmZhAwkBAiE9AgUCZmkFAmVPBQJoRQkBAmFTAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmZhCQCmAwEFAmVPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVARNnZXRPbmVUa25WMlJFQURPTkxZAgJmUQJoRgQCZG8JANgEAQkBBXZhbHVlAQUCYnIEAmRwCQDYBAEJAQV2YWx1ZQEFAmJzBAJkbgkA2AQBCQEFdmFsdWUBBQJicQQCY0UJAMwIAgkAtgIBCQECYlMBBQJkbwkAzAgCCQC2AgEJAQJiUwEFAmRwBQNuaWwEAmVOCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkbgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCY2cJAQJjRAEFAmNFBAJjZgkAuAICBQJjZwkAvAIDCQC2AgEFAmhGBQJjZwUCZU4EAmhHAwkAAAIFAmZRBQJkbwAAAwkAAAIFAmZRBQJkcAABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhICQECZXgDBQJjRQUCaEcFAmNmBAJnRwkAuAICCQCRAwIFAmNFBQJoRwUCaEgEAmdICQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnRwUBZgUDbmlsBAJoSQkBAmNBAgUCZ0gFAmFZBAJmWggFAmhJAl8xBAJjQwgFAmhJAl8yCQCUCgIFA25pbAkAlAoCBQJmWgUCY0MCY1UBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZRAmhGBAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmRuCQDYBAEJAQV2YWx1ZQEFAmJxBAJkdQkBAmJTAQUCZG8EAmR3CQECYlMBBQJkcAQCaEoKAAJhWAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZRCQDMCAIFAmhGBQNuaWwFA25pbAMJAAECBQJhWAIKKEludCwgSW50KQUCYVgJAAIBCQCsAgIJAAMBBQJhWAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZloIBQJoSgJfMQQCY0MIBQJoSgJfMgQCZWMJAQJkaQQCAAUCZG4FAmhGBQR0aGlzBAJkRQgFAmVjAl8xBAJkRggFAmVjAl8yBAJoSwkAZAIFAmRFBQJkRgQCZk8DCQAAAgUCaEsAAAMJAAACBQJmWgAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmWgUCaEsFAWEFAmhLCQCUCgIFA25pbAkAlQoDBQJmWgUCY0MFAmZPAmNVAQlnZXROb0xlc3MCAmhMAmhNBAJlYwkBAmZvAQUCY1UEAmRFCAUCZWMCXzEEAmRGCAUCZWMCXzIEAmRRCAUCZWMCXzMEAmRrCAUCZWMCXzQEAmRHCAUCZWMCXzUDCQBmAgUCaEwFAmRFCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmRFAgMgPCAJAKQDAQUCaEwDCQBmAgUCaE0FAmRGCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCZEYCAyA8IAkApAMBBQJoTQQCZVcJAQJlUAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVcFAmVXBAJoTgkA/AcEBQJhVgIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkawUCZFEFA25pbAMJAAACBQJoTgUCaE4EAmhPCQECZVgDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmduCAUCaE8CXzEEAmVPCAUCaE8CXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQDOCAIFAmRHBQJnbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQENdW5zdGFrZUFuZEdldAECY0IEAmhQAwkBAiE9AgkAkAMBCAUCY1UIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhQBQJoUAQCaFEJAQJieAAEAmhkBQJicQQCaFIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhRBQFDAgpXciBzdCBhZGRyBAJlVwkBAmVQAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVwUCZVcEAmhTCQD8BwQFAmhSAgd1bnN0YWtlCQDMCAIJANgEAQUCaGQJAMwIAgUCY0IFA25pbAUDbmlsAwkAAAIFAmhTBQJoUwQCZWMJAQJkaQQJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJANgEAQUCaGQFAmNCCAUCY1UGY2FsbGVyBAJkRQgFAmVjAl8xBAJkRggFAmVjAl8yBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZWMCXzkEAmRHCAUCZWMDXzEwBAJoVAMDCQECYmEABgkAAAIFAmRzBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCZHMGAwkAAAIFAmhUBQJoVAQCaFUJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCY0IFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGQFAmNCBQNuaWwDCQAAAgUCaFUFAmhVBAJoVgkBAmVYAwkBAS0BBQJkRQkBAS0BBQJkRgAABAJnbggFAmhWAl8xBAJlTwgFAmhWAl8yBAJnbwkBAmZiAgUCZVcFAmVPAwkAAAIFAmdvBQJnbwkAzggCBQJkRwUCZ24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhXAmhYAmhNBAJoegMJAQJiYQAGCQAAAgUCYnAFAXMEAmdOCQDMCAIDCQEBIQEFAmh6BgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNVCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJlVwkBAmVQAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVwUCZVcEAmhTCQD8BwQFAmJ6Agd1bnN0YWtlCQDMCAIJANgEAQUCYnEJAMwIAgUCaFcFA25pbAUDbmlsAwkAAAIFAmhTBQJoUwQCaFkJAQJkaQQJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJANgEAQUCYnEFAmhXCAUCY1UGY2FsbGVyBAJkRQgFAmhZAl8xBAJkRggFAmhZAl8yBAJkRwgFAmhZA18xMAQCaFoJAMwIAgMJAGcCBQJkRQUCaFgGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaFgFA25pbAIACQDMCAIDCQBnAgUCZEYFAmhNBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaE0FA25pbAIABQNuaWwDCQAAAgUCaFoFAmhaBAJoTgkA/AcEBQJhVgIEYnVybgkAzAgCBQJoVwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJicQUCaFcFA25pbAMJAAACBQJoTgUCaE4EAmlhCQECZVgDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmduCAUCaWECXzEEAmVPCAUCaWECXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQDOCAIFAmRHBQJnbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoVwJmUQJmUgQCaG4KAAJhWAkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgdCb29sZWFuBQJhWAkAAgEJAKwCAgkAAwEFAmFYAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJoegMDCQECYmEABgkAAAIFAmJwBQFzBgUCaG4EAmdOCQDMCAIDAwkBASEBBQJoegYJAQJndAEFAmNVBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1UIcGF5bWVudHMAAAYJAQJhUwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCaFEJAQJieAAEAmhkBQJicQQCaFIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhRBQFDAgpXciBzdCBhZGRyBAJkbQgFAmNVBmNhbGxlcgQCaWIFBHRoaXMEAmhTCQD8BwQFAmhSAg91bnN0YWtlSU5URVJOQUwJAMwIAgUCaGQJAMwIAgUCaFcJAMwIAggFAmRtBWJ5dGVzCQDMCAIIBQJpYgVieXRlcwUDbmlsBQNuaWwDCQAAAgUCaFMFAmhTBAJpYwkBAmZQBgUCZlEFAmZSCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoZAUCaFcFA25pbAgFAmNVBmNhbGxlcggFAmNVDG9yaWdpbkNhbGxlcggFAmNVDXRyYW5zYWN0aW9uSWQEAmRHCAUCaWMCXzEEAmdhCAUCaWMCXzIJAJQKAgUCZEcFAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJpZAJpZQQCaWYJAQJmdQUFAmlkBQJpZQIAAgAGBAJmSggFAmlmAl8xBAJkRwgFAmlmAl8yBAJjQwgFAmlmAl8zBAJmTwgFAmlmAl80CQCUCgIFA25pbAkAlQoDBQJmSgUCY0MFAmZPAmNVASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmlkAmllBAJpZwkBAmZ1BQUCaWQFAmllAgACAAcEAmZKCAUCaWcCXzEEAmRHCAUCaWcCXzIEAmNDCAUCaWcCXzMEAmZPCAUCaWcCXzQJAJQKAgUDbmlsCQCVCgMFAmZKBQJjQwUCZk8CY1UBCGFjdGl2YXRlAgJpaAJpaQMJAQIhPQIJAKUIAQgFAmNVBmNhbGxlcgkApQgBBQJhVgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagAFAmloCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAFAmlpBQNuaWwCB3N1Y2Nlc3MCY1UBBHNldFMCAmlqAmhUAwkBAiE9AgkApQgBCAUCY1UGY2FsbGVyCQECYU8CBQR0aGlzCQECYW8ABQJncwkAzAgCCQELU3RyaW5nRW50cnkCBQJpagUCaFQFA25pbAJjVQEEc2V0SQICaWoCaFQDCQECIT0CCQClCAEIBQJjVQZjYWxsZXIJAQJhTwIFBHRoaXMJAQJhbwAFAmdzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJpagUCaFQFA25pbAJjVQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmQAAmNVARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiVAkAlAoCBQNuaWwJAQJiUwEFAmJUAmNVARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjbQJjbgJjcgQCaWsJAQJjcQMFAmNtBQJjbgUCY3IJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJpawAACQDMCAIJAKYDAQkAkQMCBQJpawABCQDMCAIJAKYDAQkAkQMCBQJpawACBQNuaWwCY1UBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAU0CaWwJAJQKAgUDbmlsCQEBTAIJAKcDAQUBTQUCaWwCY1UBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJjVQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiVgJiVwkAlAoCBQNuaWwJAKYDAQkBAmJVAgkApwMBBQJiVgkApwMBBQJiVwJjVQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRqAmNiAmRJAmRKAmRLAmRMAmltAmRNAmROCQCUCgIFA25pbAkBAmRIDQUCZGoFAmNiBQJkSQUCZEoFAmRLBQJkTAUCaW0FAmRNBQJkTgYHAAACAAJjVQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRqAmluAmRsAmltBAJlYwkBAmRpBAUCZGoFAmluBQJkbAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaW0JAJQKAgUDbmlsCQCcCgoIBQJlYwJfMQgFAmVjAl8yCAUCZWMCXzMIBQJlYwJfNAgFAmVjAl81CAUCZWMCXzYIBQJlYwJfNwkApgMBCAUCZWMCXzgIBQJlYwJfOQgFAmVjA18xMAJjVQEJY2hhbmdlQW1wAAQCaW8JAPwHBAUCYVYCGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwEAmlwBAJncQUCaW8DCQABAgUCZ3ECCUxpc3RbQW55XQQCaXEFAmdxCQCVCgMKAAJhWAkAkQMCBQJpcQAAAwkAAQIFAmFYAgNJbnQFAmFYCQACAQkArAICCQADAQUCYVgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmFYCQCRAwIFAmlxAAEDCQABAgUCYVgCA0ludAUCYVgJAAIBCQCsAgIJAAMBBQJhWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgACYVgJAJEDAgUCaXEAAgMJAAECBQJhWAIDSW50BQJhWAkAAgEJAKwCAgkAAwEFAmFYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQJhUwECEmludmFsaWQgZW50cnkgdHlwZQQCaXIIBQJpcAJfMQQCaXMIBQJpcAJfMgQCaXQIBQJpcAJfMwQCaXUJAQ1wYXJzZUludFZhbHVlAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFsAAQCaXYJAGQCBQJpdQUCaXMEAml3AwkAZgIAAAUCaXMDCQBmAgUCaXQFAml2BQJpdAUCaXYDCQBmAgUCaXYFAml0BQJpdAUCaXYEAml4CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhcAAAAAQCaXkJAGQCBQJpeAUCaXIEAmdOCQDMCAIDCQBmAgUGaGVpZ2h0BQJpeQYJAQJhUwECF3RyeSBhZ2FpbiBpbiBmZXcgYmxvY2tzCQDMCAIDCQECIT0CBQJpdQUCaXcGCQECYVMBAhZhbHJlYWR5IHJlYWNoZWQgdGFyZ2V0BQNuaWwDCQAAAgUCZ04FAmdOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXAABQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAkApAMBBQJpdwkAzAgCCQELU3RyaW5nRW50cnkCCQECYW0BBQZoZWlnaHQJAKQDAQUCaXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaXoBAmlBAAQCaUIEAmdxCQECZ3AAAwkAAQIFAmdxAgpCeXRlVmVjdG9yBAJndQUCZ3EFAmd1AwkAAQIFAmdxAgRVbml0CAUCaXoPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmdxBQJpegMJAAECBQJncQIFT3JkZXIEAmZlBQJncQQCaUMJAQJiYgAEAmlEAwkBAmdCAAkAlAoCBgIACQECZmQBBQJmZQQCYUsIBQJpRAJfMQQCYUwIBQJpRAJfMgQCYU0JAPQDAwgFAmZlCWJvZHlCeXRlcwkAkQMCCAUCZmUGcHJvb2ZzAAAIBQJmZQ9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJmZQlib2R5Qnl0ZXMJAJEDAggFAmZlBnByb29mcwABBQJpQwMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCZ3ECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJjSAUCZ3EDCQD0AwMIBQJpeglib2R5Qnl0ZXMJAJEDAggFAml6BnByb29mcwAABQJpQgYEAmlFCQD2AwEJAQV2YWx1ZQEIBQJjSAZzY3JpcHQEAmlGCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVYJAQJhRgAEAmlHCQDxBwEFBHRoaXMDCQAAAgUCaUYFAmlFCQECIT0CBQJpRwUCaUUHCQD0AwMIBQJpeglib2R5Qnl0ZXMJAJEDAggFAml6BnByb29mcwAABQJpQpDIMkQ=", "height": 3567987, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DyZryxF6sdoZe8n1bRytLHgNua7dNaLkePgBa5ucpfL2 Next: EC6UqVGmAptvfkxpT7zF9kDdkqVhAmCfYcsHMjzJWAXc Diff:
OldNewDifferences
128128 func al () = "%s__amp"
129129
130130
131-func am () = "%s__addonAddr"
131+func am (an) = ("%s%d__amp__" + toString(an))
132132
133133
134-let an = "%s__fee"
135-
136-let ao = valueOrElse(getInteger(this, an), G)
137-
138-let ap = makeString(["%s", "dLp"], n)
139-
140-let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141-
142-let ar = makeString(["%s", "refreshDLpDelay"], n)
143-
144-let as = 30
145-
146-let at = valueOrElse(getInteger(this, ar), as)
147-
148-func au () = "%s__factoryConfig"
134+func ao () = "%s__addonAddr"
149135
150136
151-func av () = "%s%s__matcher__publicKey"
137+func ap () = "%s__changeAmpLastCall"
152138
153139
154-func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
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"
155155
156156
157-func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
157+func ay () = "%s%s__matcher__publicKey"
158158
159159
160-func aB () = "%s__shutdown"
160+func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161161
162162
163-func aC () = "%s__allowedLpStableScriptHash"
163+func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164164
165165
166-func aD () = "%s__feeCollectorAddress"
166+func aE () = "%s__shutdown"
167167
168168
169-func aE (aF) = ("%s%s__skipOrderValidation__" + aF)
169+func aF () = "%s__allowedLpStableScriptHash"
170170
171171
172-func aG (aH,aI,aJ,aK) = throw((((((((("order validation failed: orderValid=" + toString(aH)) + " (") + aI) + ")") + " senderValid=") + toString(aJ)) + " matcherValid=") + toString(aK)))
172+func aG () = "%s__feeCollectorAddress"
173173
174174
175-func aL (aM,aN) = valueOrErrorMessage(getString(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
175+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
176176
177177
178-func aO (aM,aN) = valueOrErrorMessage(getInteger(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
178+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
179179
180180
181-func aP (aQ) = throw(makeString(["lp_stable.ride:", aQ], " "))
181+func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
182182
183183
184-func aR (aQ) = makeString(["lp_stable.ride:", aQ], " ")
184+func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
185185
186186
187-let aS = addressFromStringValue(aL(this, Y()))
187+func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
188188
189-let aT = {
190- let aU = invoke(aS, "getInFeeREADONLY", [toString(this)], nil)
191- if ($isInstanceOf(aU, "Int"))
192- then aU
193- else throw(($getType(aU) + " couldn't be cast to Int"))
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"))
194200 }
195201
196-let aV = {
197- let aU = invoke(aS, "getOutFeeREADONLY", [toString(this)], nil)
198- if ($isInstanceOf(aU, "Int"))
199- then aU
200- else throw(($getType(aU) + " couldn't be cast to Int"))
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"))
201207 }
202208
203-let aW = aL(this, al())
209+let aZ = aO(this, al())
204210
205-func aX () = valueOrElse(getBoolean(aS, aB()), false)
211+func ba () = valueOrElse(getBoolean(aV, aE()), false)
206212
207213
208-func aY () = fromBase58String(aL(aS, av()))
214+func bb () = fromBase58String(aO(aV, ay()))
209215
210216
211-let aZ = addressFromStringValue(aL(aS, aD()))
217+let bc = addressFromStringValue(aO(aV, aG()))
212218
213-func ba () = {
214- let bb = aL(this, aj())
215- let bc = aL(this, ak())
216- let bd = aO(aS, az(bc))
217- let ax = aO(aS, az(bb))
218- split(aL(aS, aw(toString(ax), toString(bd))), n)
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)
219225 }
220226
221227
222-func be (bf) = if ((bf == k))
228+func bh (bi) = if ((bi == k))
223229 then unit
224- else fromBase58String(bf)
230+ else fromBase58String(bi)
225231
226232
227-func bg (bf) = if ((bf == unit))
233+func bj (bi) = if ((bi == unit))
228234 then k
229- else toBase58String(value(bf))
235+ else toBase58String(value(bi))
230236
231237
232-func bh (bi) = $Tuple9(addressFromStringValue(bi[t]), parseIntValue(bi[u]), fromBase58String(bi[v]), be(bi[w]), be(bi[x]), parseIntValue(bi[y]), parseIntValue(bi[z]), fromBase58String(bi[A]), fromBase58String(bi[B]))
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]))
233239
234240
235-let bj = bh(ba())
241+let bm = bk(bd())
236242
237-let bk = bj
243+let bn = bm
238244
239-let bl = bk._1
245+let bo = bn._1
240246
241-let bm = bk._2
247+let bp = bn._2
242248
243-let bn = bk._3
249+let bq = bn._3
244250
245-let bo = bk._4
251+let br = bn._4
246252
247-let bp = bk._5
253+let bs = bn._5
248254
249-let bq = bk._6
255+let bt = bn._6
250256
251-let br = bk._7
257+let bu = bn._7
252258
253-let bs = bk._8
259+let bv = bn._8
254260
255-let bt = bk._9
261+let bw = bn._9
256262
257-func bu () = split(aL(aS, au()), n)
263+func bx () = split(aO(aV, ax()), n)
258264
259265
260-let bv = bu()
266+let by = bx()
261267
262-let bw = valueOrErrorMessage(addressFromString(bv[C]), "Invalid staking contract address")
268+let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
263269
264-let bx = valueOrErrorMessage(addressFromString(bv[E]), "Invalid slipage contract address")
270+let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
265271
266-let by = valueOrErrorMessage(addressFromString(bv[F]), "Invalid gwx contract address")
272+let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
267273
268-let bz = valueOrErrorMessage(addressFromString(bv[D]), "Invalid gwx contract address")
274+let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
269275
270-func bA (bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK)], n)
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)
271277
272278
273-func bL (bM,bN,bO,bE,bH,bI) = makeString(["%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bE), toString(bH), toString(bI)], n)
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)
274280
275281
276-func bP (bQ) = if ((bQ == "WAVES"))
282+func bS (bT) = if ((bT == "WAVES"))
277283 then wavesBalance(this).available
278- else assetBalance(this, fromBase58String(bQ))
284+ else assetBalance(this, fromBase58String(bT))
279285
280286
281-func bR (bS,bT) = fraction(bS, c, bT)
287+func bU (bV,bW) = fraction(bV, c, bW)
282288
283289
284-func bU (bS,bT,P) = fraction(bS, c, bT, P)
290+func bX (bV,bW,P) = fraction(bV, c, bW, P)
285291
286292
287-func bV (bW,bX,bY) = {
288- let bZ = fraction((bW - bX), b, bX)
289- let ca = ((bY - W(bZ)) > d)
290- if (!(ca))
291- then throw(("Big slpg: " + toString(bZ)))
292- else $Tuple2(ca, min([bW, bX]))
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]))
293299 }
294300
295301
296-func cb (cc,cd,ce) = {
297- let bZ = fraction(cd, b, cc)
298- let cf = (ce > bZ)
299- if (if (cf)
302+func ce (cf,cg,ch) = {
303+ let cc = fraction(cg, b, cf)
304+ let ci = (ch > cc)
305+ if (if (ci)
300306 then true
301- else (cd > cc))
302- then throw(((((((toString(cd) + " ") + toString(cc)) + " ") + toString(bZ)) + " ") + toString(ce)))
303- else cf
307+ else (cg > cf))
308+ then throw(((((((toString(cg) + " ") + toString(cf)) + " ") + toString(cc)) + " ") + toString(ch)))
309+ else ci
304310 }
305311
306312
307-func cg (ch,ci,cj,ck) = {
308- let cl = H(cj, ch)
309- let cm = H(ck, ci)
310- bR(cm, cl)
313+func cj (ck,cl,cm,cn) = {
314+ let co = H(cm, ck)
315+ let cp = H(cn, cl)
316+ bU(cp, co)
311317 }
312318
313319
314-func cn (cj,ck,co) = {
315- let cp = bq
316- let cq = br
317- let cr = cg(cp, cq, cj, ck)
318- let bT = H(cj, cp)
319- let bS = H(ck, cq)
320- let cs = H(co, a)
321- let ct = bR(bT, cs)
322- let cu = bR(bS, cs)
323-[cr, ct, cu]
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]
324330 }
325331
326332
327-func cv (cj,ck,co) = {
328- let cw = cn(cj, ck, co)
329-[L(cw[0], a), L(cw[1], a), L(cw[2], a)]
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)]
330336 }
331337
332338
333-func cx (cy,ao) = {
334- let cz = if ((ao == 0))
339+func cA (cB,ar) = {
340+ let cC = if ((ar == 0))
335341 then 0
336- else fraction(cy, ao, a)
337- $Tuple2((cy - cz), cz)
342+ else fraction(cB, ar, a)
343+ $Tuple2((cB - cC), cC)
338344 }
339345
340346
341-func cA (cB) = {
342- let cC = cB[0]
343- let cD = cB[1]
344- let cE = (cC + cD)
345- if ((cE == e))
347+func cD (cE) = {
348+ let cF = cE[0]
349+ let cG = cE[1]
350+ let cH = (cF + cG)
351+ if ((cH == e))
346352 then e
347353 else {
348- let cF = parseIntValue(aW)
349- let cG = (cF * 2)
350- let cw = fraction(cC, cD, f)
351- let cH = fraction(cw, i, f)
352- let cI = fraction(toBigInt(cG), cE, f)
353- let cJ = toBigInt((cG - 1))
354- func cK (cL) = {
355- let cM = fraction(cL, cL, f)
356- let cN = fraction(cM, cL, f)
357- let cO = fraction(cN, f, cH)
358- fraction((cI + fraction(cO, g, f)), cL, (fraction(cJ, cL, f) + fraction(h, cO, f)))
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)))
359365 }
360366
361- func cP (cQ,cR) = if (cQ._2)
362- then cQ
367+ func cS (cT,cU) = if (cT._2)
368+ then cT
363369 else {
364- let cL = cQ._1
365- let cS = cK(cL)
366- let cT = (cS - value(cL))
367- let cU = if ((e > cT))
368- then -(cT)
369- else cT
370- if ((f >= cU))
371- then $Tuple2(cS, true)
372- else $Tuple2(cS, false)
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)
373379 }
374380
375- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
376- let cW = {
377- let cX = cV
378- let cY = size(cX)
379- let cZ = $Tuple2(cE, false)
380- func da (db,dc) = if ((dc >= cY))
381- then db
382- else cP(db, cX[dc])
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])
383389
384- func dd (db,dc) = if ((dc >= cY))
385- then db
390+ func dg (de,df) = if ((df >= db))
391+ then de
386392 else throw("List size exceeds 17")
387393
388- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
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)
389395 }
390- let cL = cW._1
391- let de = cW._2
392- if (de)
393- then cL
394- else throw(("D calculation error, D = " + toString(cL)))
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)))
395401 }
396402 }
397403
398404
399-func df (dg,dh,di,dj) = {
400- let dk = bn
401- let dl = toBase58String(value(bo))
402- let dm = toBase58String(value(bp))
405+func di (dj,dk,dl,dm) = {
403406 let dn = bq
404- let do = br
405- let dp = toString(bm)
406- let dq = valueOrErrorMessage(assetInfo(dk), "Wrong LP id").quantity
407- if ((toBase58String(dk) != dh))
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))
408414 then throw("Wrong pmt asset")
409415 else {
410- let dr = bP(dl)
411- let ds = H(dr, dn)
412- let dt = bP(dm)
413- let du = H(dt, do)
414- let dv = bR(du, ds)
415- let dw = L(dv, a)
416- let dx = H(di, a)
417- let dy = H(dq, a)
418- let dz = fraction(ds, dx, dy)
419- let dA = fraction(du, dx, dy)
420- let dB = O(dz, dn, FLOOR)
421- let dC = O(dA, do, FLOOR)
422- let dD = if ((dg == ""))
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 == ""))
423429 then nil
424- else [ScriptTransfer(dj, dB, if ((dl == "WAVES"))
430+ else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
425431 then unit
426- else fromBase58String(dl)), ScriptTransfer(dj, dC, if ((dm == "WAVES"))
432+ else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
427433 then unit
428- else fromBase58String(dm)), StringEntry(ai(toString(dj), dg), bL(dB, dC, di, dw, height, lastBlock.timestamp)), IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw)]
429- $Tuple10(dB, dC, dl, dm, dr, dt, dq, dv, dp, dD)
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)
430436 }
431437 }
432438
433439
434-func dE (dg,bY,dF,dG,dH,dI,dj,dJ,dK,dL,dM,dN,dO) = {
435- let dk = bn
436- let dP = toBase58String(value(bo))
437- let dQ = toBase58String(value(bp))
438- let dR = bs
439- let dS = bt
440- let dT = bq
441- let dU = br
442- let dp = toString(bm)
443- let dV = valueOrErrorMessage(assetInfo(dk), "Wr lp as").quantity
444- let dr = if (dJ)
445- then bP(dP)
446- else if (if (dL)
447- then (dO == dP)
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)
448454 else false)
449- then (bP(dP) - dN)
450- else if (dL)
451- then bP(dP)
452- else (bP(dP) - dF)
453- let dt = if (dJ)
454- then bP(dQ)
455- else if (if (dL)
456- then (dO == dQ)
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)
457463 else false)
458- then (bP(dQ) - dN)
459- else if (dL)
460- then bP(dQ)
461- else (bP(dQ) - dH)
462- let dW = H(dF, dT)
463- let dX = H(dH, dU)
464- let dY = bR(dX, dW)
465- let ds = H(dr, dT)
466- let du = H(dt, dU)
467- let cd = cA([ds, du])
468- let dZ = if ((dV == 0))
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))
469475 then {
470- let cc = cA([(ds + dW), (du + dX)])
471- let ea = if ((cc > cd))
476+ let cf = cD([(dv + dZ), (dx + ea)])
477+ let ed = if ((cf > cg))
472478 then true
473479 else throw("D1 should be greater than D0")
474- if ((ea == ea))
480+ if ((ed == ed))
475481 then {
476- let dv = d
477- let eb = d
478- let cs = cc
479- $Tuple5(L(cs, a), L(dW, dT), L(dX, dU), bR((du + dX), (ds + dW)), eb)
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)
480486 }
481487 else throw("Strict value is not equal to itself.")
482488 }
483489 else {
484- let dv = bR(du, ds)
485- let ec = fraction(W((dv - dY)), c, dv)
486- let eb = H(bY, a)
487- if (if (if (dM)
488- then (dv != d)
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)
489495 else false)
490- then (ec > eb)
496+ then (ef > ee)
491497 else false)
492- then throw(((("Price slippage " + toString(ec)) + " > ") + toString(eb)))
498+ then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
493499 else {
494- let ed = H(dV, a)
495- let ee = fraction(dW, bU(du, ds, CEILING), c, CEILING)
496- let ef = fraction(dX, c, bU(du, ds, FLOOR), CEILING)
497- let eg = if ((ee > dX))
498- then $Tuple2(ef, dX)
499- else $Tuple2(dW, ee)
500- let eh = eg._1
501- let ei = eg._2
502- let cc = cA([(ds + eh), (du + ei)])
503- let ea = if ((cc > cd))
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))
504510 then true
505511 else throw("D1 should be greater than D0")
506- if ((ea == ea))
512+ if ((ed == ed))
507513 then {
508- let cs = fraction(ed, (cc - cd), cd)
509- $Tuple5(O(cs, a, FLOOR), O(eh, dT, CEILING), O(ei, dU, CEILING), dv, eb)
514+ let cv = fraction(eg, (cf - cg), cg)
515+ $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
510516 }
511517 else throw("Strict value is not equal to itself.")
512518 }
513519 }
514- let ej = dZ._1
515- let ek = dZ._2
516- let el = dZ._3
517- let dw = L(dZ._4, a)
518- let em = L(dZ._5, a)
519- if ((0 >= ej))
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))
520526 then throw("LP <= 0")
521527 else {
522- let en = if (!(dK))
528+ let eq = if (!(dN))
523529 then 0
524- else ej
525- let eo = (dF - ek)
526- let ep = (dH - el)
527- let eq = if (if (dL)
528- then (dO == dP)
530+ else em
531+ let er = (dI - en)
532+ let es = (dK - eo)
533+ let et = if (if (dO)
534+ then (dR == dS)
529535 else false)
530- then $Tuple2(dN, 0)
531- else if (if (dL)
532- then (dO == dQ)
536+ then $Tuple2(dQ, 0)
537+ else if (if (dO)
538+ then (dR == dT)
533539 else false)
534- then $Tuple2(0, dN)
535- else $Tuple2(ek, el)
536- let er = eq._1
537- let es = eq._2
538- let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, dg), bA(er, es, en, dw, bY, em, height, lastBlock.timestamp, eo, ep))]
539- $Tuple13(ej, en, dw, dr, dt, dV, dk, dp, et, eo, ep, dG, dI)
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)
540546 }
541547 }
542548
543549
544-func eu (cB,cR,ev) = {
545- let ew = g
546- let ex = cB[if ((cR == 0))
550+func ex (cE,cU,ey) = {
551+ let ez = g
552+ let eA = cE[if ((cU == 0))
547553 then 1
548554 else 0]
549- let ey = parseBigIntValue(l)
550- let cF = (parseBigIntValue(aW) * ey)
551- let cE = ex
552- let cG = (cF * ew)
553- let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
554- let eA = ((cE + ((ev * ey) / cG)) - ev)
555- func cP (cQ,eB) = {
556- let eC = cQ
557- let eD = eC._1
558- let de = eC._2
559- if ((de != unit))
560- then cQ
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
561567 else {
562- let eE = (((eD * eD) + ez) / ((g * eD) + eA))
563- let eF = X((eE - value(eD)))
564- if ((f >= eF))
565- then $Tuple2(eE, eB)
566- else $Tuple2(eE, unit)
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)
567573 }
568574 }
569575
570- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
571- let eG = {
572- let cX = cV
573- let cY = size(cX)
574- let cZ = $Tuple2(ev, unit)
575- func da (db,dc) = if ((dc >= cY))
576- then db
577- else cP(db, cX[dc])
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])
578584
579- func dd (db,dc) = if ((dc >= cY))
580- then db
585+ func dg (de,df) = if ((df >= db))
586+ then de
581587 else throw("List size exceeds 15")
582588
583- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
584590 }
585- let eD = eG._1
586- let de = eG._2
587- if ((de != unit))
588- then eD
589- else throw(("Y calculation error, Y = " + toString(eD)))
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)))
590596 }
591597
592598
593-func eH (eI,eJ,eK) = {
594- let eL = fraction(cA([K(eI, toBigInt(bq)), K(eJ, toBigInt(br))]), c, eK)
595- if ((eK == e))
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))
596602 then e
597- else eL
603+ else eO
598604 }
599605
600606
601-func eM (eN,eO,eP) = {
602- let eQ = (toBigInt(bP(bg(bo))) - eN)
603- let eR = (toBigInt(bP(bg(bp))) - eO)
604- let eS = (toBigInt(value(assetInfo(bn)).quantity) - eP)
605- let eT = eH(eQ, eR, eS)
606- eT
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
607613 }
608614
609615
610-func eU (eV,eW,eP) = {
611- let eQ = (bP(bg(bo)) + eV)
612- let eR = (bP(bg(bp)) + eW)
613- let eS = (value(assetInfo(bn)).quantity + eP)
614- let eL = eH(toBigInt(eQ), toBigInt(eR), toBigInt(eS))
615- let eX = [IntegerEntry(aq, height), StringEntry(ap, toString(eL))]
616- $Tuple2(eX, eL)
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)
617623 }
618624
619625
620-func eY (eZ,eL) = if ((eL >= eZ))
626+func fb (fc,eO) = if ((eO >= fc))
621627 then true
622- else aP("updated DLp lower than current DLp")
628+ else aS("updated DLp lower than current DLp")
623629
624630
625-func fa (fb) = {
626- let eQ = bP(bg(bo))
627- let eR = bP(bg(bp))
628- let fc = fb.amount
629- let fd = fraction(fb.amount, fb.price, a, FLOOR)
630- let fe = if ((fb.orderType == Buy))
631- then $Tuple2(fc, -(fd))
632- else $Tuple2(-(fc), fd)
633- let eV = fe._1
634- let eW = fe._2
635- if (if (if (aX())
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())
636642 then true
637- else (bm == r))
643+ else (bp == r))
638644 then true
639- else (bm == s))
645+ else (bp == s))
640646 then throw("Admin blocked")
641- else if (if ((fb.assetPair.amountAsset != bo))
647+ else if (if ((fe.assetPair.amountAsset != br))
642648 then true
643- else (fb.assetPair.priceAsset != bp))
649+ else (fe.assetPair.priceAsset != bs))
644650 then throw("Wr assets")
645651 else {
646- let ff = parseBigIntValue(valueOrElse(getString(this, ap), "0"))
647- let fg = eU(eV, eW, 0)
648- let fh = fg._1
649- let fi = fg._2
650- let fj = (fi >= ff)
651- let fk = makeString(["dLp=", toString(ff), " dLpNew=", toString(fi), " amountAssetBalance=", toString(eQ), " priceAssetBalance=", toString(eR), " amountAssetBalanceDelta=", toString(eV), " priceAssetBalanceDelta=", toString(eW), " height=", toString(height)], "")
652- $Tuple2(fj, fk)
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)
653659 }
654660 }
655661
656662
657-func fl (cR) = if ((size(cR.payments) != 1))
663+func fo (cU) = if ((size(cU.payments) != 1))
658664 then throw("1 pmnt exp")
659665 else {
660- let fm = value(cR.payments[0])
661- let dh = value(fm.assetId)
662- let dN = fm.amount
663- let dZ = df(toBase58String(cR.transactionId), toBase58String(dh), dN, cR.caller)
664- let dB = dZ._1
665- let dC = dZ._2
666- let dp = parseIntValue(dZ._9)
667- let dD = dZ._10
668- if (if (aX())
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())
669675 then true
670- else (dp == s))
671- then throw(("Admin blocked: " + toString(dp)))
672- else $Tuple5(dB, dC, dN, dh, dD)
676+ else (ds == s))
677+ then throw(("Admin blocked: " + toString(ds)))
678+ else $Tuple5(dE, dF, dQ, dk, dG)
673679 }
674680
675681
676-func fn (fo,ah,fp,fq,bY,dK,dL,dM,dN,dO) = {
677- let dZ = dE(ah, bY, value(fp).amount, value(fp).assetId, value(fq).amount, value(fq).assetId, fo, (ah == ""), dK, dL, dM, dN, dO)
678- let dp = parseIntValue(dZ._8)
679- if (if (if (aX())
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())
680686 then true
681- else (dp == q))
687+ else (ds == q))
682688 then true
683- else (dp == s))
684- then throw(("Blocked:" + toString(dp)))
685- else dZ
689+ else (ds == s))
690+ then throw(("Blocked:" + toString(ds)))
691+ else ec
686692 }
687693
688694
689-func fr (fs,dh,dj,ah,ft) = {
690- let dl = toBase58String(value(bo))
691- let dm = toBase58String(value(bp))
692- let dk = bn
693- let dT = bq
694- let dU = br
695- let eS = toBigInt(valueOrErrorMessage(assetInfo(dk), "invalid lp asset").quantity)
696- let fu = if ((eS > e))
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))
697703 then true
698704 else throw("initial deposit requires all coins")
699- if ((fu == fu))
705+ if ((fx == fx))
700706 then {
701- let dr = bP(dl)
702- let dt = bP(dm)
703- let fv = if ((ah == ""))
704- then $Tuple2(dr, dt)
705- else if ((dh == dl))
706- then if ((fs > dr))
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))
707713 then throw("invalid payment amount")
708- else $Tuple2((dr - fs), dt)
709- else if ((dh == dm))
710- then if ((fs > dt))
714+ else $Tuple2((du - fv), dw)
715+ else if ((dk == dp))
716+ then if ((fv > dw))
711717 then throw("invalid payment amount")
712- else $Tuple2(dr, (dt - fs))
718+ else $Tuple2(du, (dw - fv))
713719 else throw("wrong pmtAssetId")
714- let fw = fv._1
715- let fx = fv._2
716- let fy = if ((dh == dl))
717- then $Tuple2(fs, 0)
718- else if ((dh == dm))
719- then $Tuple2(0, fs)
720- else throw("invalid payment")
721720 let fz = fy._1
722721 let fA = fy._2
723- let fB = if (ft)
724- then $Tuple3(cx(fz, aT)._1, cx(fA, aT)._1, cx(fs, aT)._2)
725- else $Tuple3(fz, fA, 0)
722+ let fB = if ((dk == do))
723+ then $Tuple2(fv, 0)
724+ else if ((dk == dp))
725+ then $Tuple2(0, fv)
726+ else throw("invalid payment")
726727 let fC = fB._1
727728 let fD = fB._2
728- let cz = fB._3
729- let fE = (fw + fC)
730- let fF = (fx + fD)
731- let cd = cA([H(fw, bq), H(fx, br)])
732- let cc = cA([H(fE, bq), H(fF, br)])
733- let ea = if ((cc > cd))
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))
734740 then true
735741 else throw()
736- if ((ea == ea))
742+ if ((ed == ed))
737743 then {
738- let fG = fraction(eS, (cc - cd), cd, FLOOR)
739- let dw = L(bR(H(fF, dU), H(fE, dT)), a)
740- let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, ah), bA(fz, fA, toInt(fG), dw, 0, 0, height, lastBlock.timestamp, 0, 0))]
741- let fH = fraction(fx, a, fw)
742- let fI = fraction(fs, a, (fH + a))
743- let fJ = (fs - fI)
744- let fK = fraction(eS, toBigInt(fJ), toBigInt(fx))
745- let fL = toInt(fraction((fG - fK), b, fK))
746- $Tuple4(toInt(fG), et, cz, fL)
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)
747753 }
748754 else throw("Strict value is not equal to itself.")
749755 }
751757 }
752758
753759
754-func fM (fN,fO,fP,fo,fQ,fR) = {
755- let dk = toBase58String(value(bn))
756- let dl = toBase58String(value(bo))
757- let dm = toBase58String(value(bp))
758- let fS = bq
759- let fT = br
760- let fU = bm
761- let dj = if ((fo == bz))
762- then fQ
763- else fo
764- let fm = value(fP[0])
765- let dh = value(fm.assetId)
766- let dN = fm.amount
767- let eT = eM(e, e, e)
768- if ((eT == eT))
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))
769775 then {
770- let dg = toBase58String(fR)
771- if ((dk != toBase58String(dh)))
776+ let dj = toBase58String(fU)
777+ if ((dn != toBase58String(dk)))
772778 then throw("Wrong LP")
773779 else {
774- let dr = bP(dl)
775- let dt = bP(dm)
776- let fV = {
777- let aU = invoke(this, "getOneTknV2READONLY", [fN, dN], nil)
778- if ($isInstanceOf(aU, "(Int, Int)"))
779- then aU
780- else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
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)"))
781787 }
782- if ((fV == fV))
788+ if ((fY == fY))
783789 then {
784- let cz = fV._2
785- let fW = fV._1
786- let fX = if (if ((fO > 0))
787- then (fO > fW)
790+ let cC = fY._2
791+ let fZ = fY._1
792+ let ga = if (if ((fR > 0))
793+ then (fR > fZ)
788794 else false)
789- then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
790- else fW
791- let fY = if ((fN == dl))
792- then $Tuple4(fX, 0, ((dr - fX) - cz), dt)
793- else if ((fN == dm))
794- then $Tuple4(0, fX, dr, ((dt - fX) - cz))
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))
795801 else throw("invalid out asset id")
796- let fZ = fY._1
797- let ga = fY._2
798- let fE = fY._3
799- let fF = fY._4
800- let gb = bR(H(fF, fT), H(fE, fS))
801- let gc = L(gb, a)
802- let gd = if ((fN == "WAVES"))
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"))
803809 then unit
804- else fromBase58String(fN)
805- let ge = if ((cz > 0))
806- then [ScriptTransfer(aZ, cz, gd)]
810+ else fromBase58String(fQ)
811+ let gh = if ((cC > 0))
812+ then [ScriptTransfer(bc, cC, gg)]
807813 else nil
808- let dD = ([ScriptTransfer(dj, fX, gd), StringEntry(ai(toString(dj), dg), bL(fZ, ga, dN, gc, height, lastBlock.timestamp)), IntegerEntry(ab(), gc), IntegerEntry(ac(height, lastBlock.timestamp), gc)] ++ ge)
809- if ((dD == dD))
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))
810816 then {
811- let gf = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
812- if ((gf == gf))
817+ let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
818+ if ((gi == gi))
813819 then {
814- let gg = {
815- let gh = if ((this == aZ))
820+ let gj = {
821+ let gk = if ((this == bc))
816822 then 0
817- else cz
818- let gi = if ((be(fN) == bo))
823+ else cC
824+ let gl = if ((bh(fQ) == br))
819825 then true
820826 else false
821- if (gi)
822- then $Tuple2(-((fW + gh)), 0)
823- else $Tuple2(0, -((fW + gh)))
827+ if (gl)
828+ then $Tuple2(-((fZ + gk)), 0)
829+ else $Tuple2(0, -((fZ + gk)))
824830 }
825- let eV = gg._1
826- let eW = gg._2
827- let gj = eU(eV, eW, 0)
828- let gk = gj._1
829- let eL = gj._2
830- let gl = eY(eT, eL)
831- if ((gl == gl))
832- then $Tuple2((dD ++ gk), fX)
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)
833839 else throw("Strict value is not equal to itself.")
834840 }
835841 else throw("Strict value is not equal to itself.")
843849 }
844850
845851
846-func gm () = {
847- let gn = getString(Z())
848- if ($isInstanceOf(gn, "String"))
852+func gp () = {
853+ let gq = getString(Z())
854+ if ($isInstanceOf(gq, "String"))
849855 then {
850- let cE = gn
851- fromBase58String(cE)
856+ let cH = gq
857+ fromBase58String(cH)
852858 }
853- else if ($isInstanceOf(gn, "Unit"))
859+ else if ($isInstanceOf(gq, "Unit"))
854860 then unit
855861 else throw("Match error")
856862 }
857863
858864
859-func go () = {
860- let gn = getString(aa())
861- if ($isInstanceOf(gn, "String"))
865+func gr () = {
866+ let gq = getString(aa())
867+ if ($isInstanceOf(gq, "String"))
862868 then {
863- let cE = gn
864- fromBase58String(cE)
869+ let cH = gq
870+ fromBase58String(cH)
865871 }
866- else if ($isInstanceOf(gn, "Unit"))
872+ else if ($isInstanceOf(gq, "Unit"))
867873 then unit
868874 else throw("Match error")
869875 }
870876
871877
872-let gp = throw("Permission denied")
878+let gs = throw("Permission denied")
873879
874-func gq (cR) = {
875- let gn = gm()
876- if ($isInstanceOf(gn, "ByteVector"))
880+func gt (cU) = {
881+ let gq = gp()
882+ if ($isInstanceOf(gq, "ByteVector"))
877883 then {
878- let gr = gn
879- (cR.callerPublicKey == gr)
884+ let gu = gq
885+ (cU.callerPublicKey == gu)
880886 }
881- else if ($isInstanceOf(gn, "Unit"))
882- then (cR.caller == this)
887+ else if ($isInstanceOf(gq, "Unit"))
888+ then (cU.caller == this)
883889 else throw("Match error")
884890 }
885891
886892
887-func gs (cR) = {
888- let gn = gm()
889- if ($isInstanceOf(gn, "ByteVector"))
893+func gv (cU) = {
894+ let gq = gp()
895+ if ($isInstanceOf(gq, "ByteVector"))
890896 then {
891- let gr = gn
892- if ((cR.callerPublicKey == gr))
897+ let gu = gq
898+ if ((cU.callerPublicKey == gu))
893899 then true
894- else gp
900+ else gs
895901 }
896- else if ($isInstanceOf(gn, "Unit"))
897- then if ((cR.caller == this))
902+ else if ($isInstanceOf(gq, "Unit"))
903+ then if ((cU.caller == this))
898904 then true
899- else gp
905+ else gs
900906 else throw("Match error")
901907 }
902908
903909
904-func gt (gu,ev,gv) = {
905- let bi = ba()
906- let dl = bi[w]
907- let dm = bi[x]
908- let ew = g
909- let ey = parseBigIntValue(l)
910- let cF = (parseBigIntValue(aW) * ey)
911- let cB = if ((gu == false))
912- then [(toBigInt(bP(dl)) + gv), toBigInt(bP(dm))]
913- else [(toBigInt(bP(dm)) + gv), toBigInt(bP(dl))]
914- let ex = cB[0]
915- let cE = ex
916- let cG = (cF * ew)
917- let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
918- let eA = ((cE + ((ev * ey) / cG)) - ev)
919- func cP (cQ,eB) = {
920- let gw = cQ
921- let eD = gw._1
922- let de = gw._2
923- if ((de != unit))
924- then cQ
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
925931 else {
926- let eE = (((eD * eD) + ez) / ((g * eD) + eA))
927- let eF = X((eE - value(eD)))
928- if ((f >= eF))
929- then $Tuple2(eE, eB)
930- else $Tuple2(eE, unit)
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)
931937 }
932938 }
933939
934- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
935- let gx = {
936- let cX = cV
937- let cY = size(cX)
938- let cZ = $Tuple2(ev, unit)
939- func da (db,dc) = if ((dc >= cY))
940- then db
941- else cP(db, cX[dc])
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])
942948
943- func dd (db,dc) = if ((dc >= cY))
944- then db
949+ func dg (de,df) = if ((df >= db))
950+ then de
945951 else throw("List size exceeds 15")
946952
947- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
948954 }
949- let eD = gx._1
950- let de = gx._2
951- if ((de != unit))
952- then eD
953- else throw(("Y calculation error, Y = " + toString(eD)))
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)))
954960 }
955961
956962
957-func gy () = valueOrElse(getBoolean(aS, aE(toString(this))), false)
963+func gB () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
958964
959965
960-@Callable(cR)
961-func calculateAmountOutForSwapREADONLY (gz,gu,gA) = {
962- let gB = if ((gu == false))
966+@Callable(cU)
967+func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968+ let gE = if ((gx == false))
963969 then {
964- let gC = aL(this, ak())
965- let gv = (toBigInt(bP(aL(this, aj()))) + toBigInt(gz))
966- $Tuple2(gC, gv)
970+ let gF = aO(this, ak())
971+ let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
972+ $Tuple2(gF, gy)
967973 }
968974 else {
969- let gC = aL(this, aj())
970- let gv = (toBigInt(bP(aL(this, ak()))) + toBigInt(gz))
971- $Tuple2(gC, gv)
975+ let gF = aO(this, aj())
976+ let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
977+ $Tuple2(gF, gy)
972978 }
973- let gC = gB._1
974- let gv = gB._2
975- let bi = ba()
976- let dl = bi[w]
977- let dm = bi[x]
978- let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
979- let ev = cA(cB)
980- let eD = gt(gu, ev, toBigInt(gz))
981- let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
982- let gE = max([0, toInt(gD)])
983- let gF = if ((gu == false))
984- then [((toBigInt(bP(dl)) + toBigInt(gz)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
985- else [(toBigInt(bP(dl)) - gD), ((toBigInt(bP(dm)) + toBigInt(gz)) + toBigInt(gA))]
986- let gG = cA(gF)
987- let ea = if ((gG >= ev))
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))
988994 then true
989- else throw(makeString(["new D is fewer error", toString(ev), toString(gG)], "__"))
990- if ((ea == ea))
991- then $Tuple2(nil, gE)
995+ else throw(makeString(["new D is fewer error", toString(ey), toString(gJ)], "__"))
996+ if ((ed == ed))
997+ then $Tuple2(nil, gH)
992998 else throw("Strict value is not equal to itself.")
993999 }
9941000
9951001
9961002
997-@Callable(cR)
998-func calculateAmountOutForSwapAndSendTokens (gz,gu,gH,gI,gA) = {
999- let gJ = {
1000- let aU = invoke(aS, "getSwapContractREADONLY", nil, nil)
1001- if ($isInstanceOf(aU, "String"))
1002- then aU
1003- else throw(($getType(aU) + " couldn't be cast to String"))
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"))
10041010 }
1005- let gK = [if ((value(cR.payments[0]).amount >= gz))
1011+ let gN = [if ((value(cU.payments[0]).amount >= gC))
10061012 then true
1007- else aP("Wrong amount"), if ((cR.caller == addressFromStringValue(gJ)))
1013+ else aS("Wrong amount"), if ((cU.caller == addressFromStringValue(gM)))
10081014 then true
1009- else aP("Permission denied")]
1010- if ((gK == gK))
1015+ else aS("Permission denied")]
1016+ if ((gN == gN))
10111017 then {
1012- let fm = value(cR.payments[0])
1013- let gL = bg(fm.assetId)
1014- let gM = if ((gu == false))
1018+ let fp = value(cU.payments[0])
1019+ let gO = bj(fp.assetId)
1020+ let gP = if ((gx == false))
10151021 then {
1016- let gC = aL(this, ak())
1017- let gv = (bP(gL) - value(cR.payments[0]).amount)
1018- $Tuple2(gC, gv)
1022+ let gF = aO(this, ak())
1023+ let gy = (bS(gO) - value(cU.payments[0]).amount)
1024+ $Tuple2(gF, gy)
10191025 }
10201026 else {
1021- let gC = aL(this, aj())
1022- let gv = (bP(gL) - value(cR.payments[0]).amount)
1023- $Tuple2(gC, gv)
1027+ let gF = aO(this, aj())
1028+ let gy = (bS(gO) - value(cU.payments[0]).amount)
1029+ $Tuple2(gF, gy)
10241030 }
1025- let gC = gM._1
1026- let gv = gM._2
1027- let bi = ba()
1028- let dl = bi[w]
1029- let dm = bi[x]
1030- let cB = if ((gu == false))
1031- then [(toBigInt(bP(dl)) - toBigInt(value(cR.payments[0]).amount)), toBigInt(bP(dm))]
1032- else [toBigInt(bP(dl)), (toBigInt(bP(dm)) - toBigInt(value(cR.payments[0]).amount))]
1033- let ev = cA(cB)
1034- let eD = gt(gu, ev, toBigInt(0))
1035- let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
1036- let gE = max([0, toInt(gD)])
1037- let gN = if ((gE >= gH))
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))
10381044 then true
10391045 else throw("Exchange result is fewer coins than expected")
1040- if ((gN == gN))
1046+ if ((gQ == gQ))
10411047 then {
1042- let gF = if ((gu == false))
1043- then [(toBigInt(bP(dl)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
1044- else [(toBigInt(bP(dl)) - gD), (toBigInt(bP(dm)) + toBigInt(gA))]
1045- let gG = cA(gF)
1046- let ea = if ((gG >= ev))
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))
10471053 then true
10481054 else throw("new D is fewer error")
1049- if ((ea == ea))
1050- then $Tuple2([ScriptTransfer(addressFromStringValue(gI), gE, be(gC))], gE)
1055+ if ((ed == ed))
1056+ then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bh(gF))], gH)
10511057 else throw("Strict value is not equal to itself.")
10521058 }
10531059 else throw("Strict value is not equal to itself.")
10571063
10581064
10591065
1060-@Callable(cR)
1066+@Callable(cU)
10611067 func constructor (Y) = {
1062- let ez = gs(cR)
1063- if ((ez == ez))
1068+ let eC = gv(cU)
1069+ if ((eC == eC))
10641070 then [StringEntry(Y(), Y)]
10651071 else throw("Strict value is not equal to itself.")
10661072 }
10671073
10681074
10691075
1070-@Callable(cR)
1071-func setManager (gO) = {
1072- let ez = gs(cR)
1073- if ((ez == ez))
1076+@Callable(cU)
1077+func setManager (gR) = {
1078+ let eC = gv(cU)
1079+ if ((eC == eC))
10741080 then {
1075- let gP = fromBase58String(gO)
1076- if ((gP == gP))
1077- then [StringEntry(aa(), gO)]
1081+ let gS = fromBase58String(gR)
1082+ if ((gS == gS))
1083+ then [StringEntry(aa(), gR)]
10781084 else throw("Strict value is not equal to itself.")
10791085 }
10801086 else throw("Strict value is not equal to itself.")
10821088
10831089
10841090
1085-@Callable(cR)
1091+@Callable(cU)
10861092 func confirmManager () = {
1087- let cw = go()
1088- let gQ = if (isDefined(cw))
1093+ let cz = gr()
1094+ let gT = if (isDefined(cz))
10891095 then true
10901096 else throw("No pending manager")
1091- if ((gQ == gQ))
1097+ if ((gT == gT))
10921098 then {
1093- let gR = if ((cR.callerPublicKey == value(cw)))
1099+ let gU = if ((cU.callerPublicKey == value(cz)))
10941100 then true
10951101 else throw("You are not pending manager")
1096- if ((gR == gR))
1097- then [StringEntry(Z(), toBase58String(value(cw))), DeleteEntry(aa())]
1102+ if ((gU == gU))
1103+ then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
10981104 else throw("Strict value is not equal to itself.")
10991105 }
11001106 else throw("Strict value is not equal to itself.")
11021108
11031109
11041110
1105-@Callable(cR)
1106-func put (gS,gT) = {
1107- let gU = bu()
1108- let gV = valueOrErrorMessage(addressFromString(gU[C]), "Wr st addr")
1109- let gW = valueOrErrorMessage(addressFromString(gU[E]), "Wr sl addr")
1110- if ((0 > gS))
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))
11111117 then throw("Wrong slippage")
1112- else if ((size(cR.payments) != 2))
1118+ else if ((size(cU.payments) != 2))
11131119 then throw("2 pmnts expd")
11141120 else {
1115- let gX = toBigInt(value(cR.payments[0]).amount)
1116- let gY = toBigInt(value(cR.payments[1]).amount)
1117- let eQ = (toBigInt(bP(bg(bo))) - gX)
1118- if ((eQ == eQ))
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))
11191125 then {
1120- let eR = (toBigInt(bP(bg(bp))) - gY)
1121- if ((eR == eR))
1126+ let eU = (toBigInt(bS(bj(bs))) - hb)
1127+ if ((eU == eU))
11221128 then {
1123- let eS = toBigInt(value(assetInfo(bn)).quantity)
1124- if ((eS == eS))
1129+ let eV = toBigInt(value(assetInfo(bq)).quantity)
1130+ if ((eV == eV))
11251131 then {
1126- let eT = eM(gX, gY, toBigInt(0))
1127- if ((eT == eT))
1132+ let eW = eP(ha, hb, toBigInt(0))
1133+ if ((eW == eW))
11281134 then {
1129- let gZ = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], gS, true, false, true, 0, "")
1130- let en = gZ._2
1131- let ha = gZ._7
1132- let dD = gZ._9
1133- let eo = gZ._10
1134- let ep = gZ._11
1135- let dl = gZ._12
1136- let dm = gZ._13
1137- let dZ = invoke(aS, "emit", [en], nil)
1138- if ((dZ == dZ))
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))
11391145 then {
1140- let hb = {
1141- let gn = dZ
1142- if ($isInstanceOf(gn, "Address"))
1146+ let he = {
1147+ let gq = ec
1148+ if ($isInstanceOf(gq, "Address"))
11431149 then {
1144- let hc = gn
1145- invoke(hc, "emit", [en], nil)
1150+ let hf = gq
1151+ invoke(hf, "emit", [eq], nil)
11461152 }
11471153 else unit
11481154 }
1149- if ((hb == hb))
1155+ if ((he == he))
11501156 then {
1151- let hd = if ((eo > 0))
1152- then invoke(gW, "put", nil, [AttachedPayment(dl, eo)])
1157+ let hg = if ((er > 0))
1158+ then invoke(gZ, "put", nil, [AttachedPayment(do, er)])
11531159 else nil
1154- if ((hd == hd))
1160+ if ((hg == hg))
11551161 then {
1156- let he = if ((ep > 0))
1157- then invoke(gW, "put", nil, [AttachedPayment(dm, ep)])
1162+ let hh = if ((es > 0))
1163+ then invoke(gZ, "put", nil, [AttachedPayment(dp, es)])
11581164 else nil
1159- if ((he == he))
1165+ if ((hh == hh))
11601166 then {
1161- let hf = if (gT)
1167+ let hi = if (gW)
11621168 then {
1163- let hg = invoke(gV, "stake", nil, [AttachedPayment(ha, en)])
1164- if ((hg == hg))
1169+ let hj = invoke(gY, "stake", nil, [AttachedPayment(hd, eq)])
1170+ if ((hj == hj))
11651171 then nil
11661172 else throw("Strict value is not equal to itself.")
11671173 }
1168- else [ScriptTransfer(cR.caller, en, ha)]
1169- let hh = eU(0, 0, 0)
1170- let gk = hh._1
1171- let eL = hh._2
1172- let hi = if ((eL >= eT))
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))
11731179 then true
1174- else aP(makeString(["updated DLp lower than current DLp", toString(eQ), toString(eR), toString(eS), toString(eT), toString(eL), toString(eo), toString(ep)], " "))
1175- if ((hi == hi))
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))
11761182 then {
1177- let hj = value(assetInfo(bn)).quantity
1178- if ((hj == hj))
1179- then ((dD ++ hf) ++ gk)
1183+ let hm = value(assetInfo(bq)).quantity
1184+ if ((hm == hm))
1185+ then ((dG ++ hi) ++ gn)
11801186 else throw("Strict value is not equal to itself.")
11811187 }
11821188 else throw("Strict value is not equal to itself.")
12011207
12021208
12031209
1204-@Callable(cR)
1205-func putOneTknV2 (fO,gT) = {
1206- let hk = {
1207- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1208- if ($isInstanceOf(aU, "Boolean"))
1209- then aU
1210- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
12111217 }
1212- let hl = if (if (if (aX())
1218+ let ho = if (if (if (ba())
12131219 then true
1214- else (bm == q))
1220+ else (bp == q))
12151221 then true
1216- else (bm == s))
1222+ else (bp == s))
12171223 then true
1218- else hk
1219- let gK = [if (if (!(hl))
1224+ else hn
1225+ let gN = [if (if (!(ho))
12201226 then true
1221- else gq(cR))
1227+ else gt(cU))
12221228 then true
1223- else aP("put operation is blocked by admin"), if ((size(cR.payments) == 1))
1229+ else aS("put operation is blocked by admin"), if ((size(cU.payments) == 1))
12241230 then true
1225- else aP("exactly 1 payment are expected")]
1226- if ((gK == gK))
1231+ else aS("exactly 1 payment are expected")]
1232+ if ((gN == gN))
12271233 then {
1228- let dl = toBase58String(value(bo))
1229- let dm = toBase58String(value(bp))
1230- let dk = bn
1231- let fS = bq
1232- let fT = br
1233- let dj = if ((cR.caller == this))
1234- then cR.originCaller
1235- else cR.caller
1236- let fm = value(cR.payments[0])
1237- let dh = toBase58String(value(fm.assetId))
1238- let dN = fm.amount
1239- let eT = if ((fm.assetId == bo))
1240- then eM(toBigInt(dN), toBigInt(0), toBigInt(0))
1241- else eM(toBigInt(0), toBigInt(dN), toBigInt(0))
1242- if ((eT == eT))
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))
12431249 then {
1244- let hm = fr(dN, dh, toString(dj), toBase58String(cR.transactionId), true)
1245- if ((hm == hm))
1250+ let hp = fu(dQ, dk, toString(dm), toBase58String(cU.transactionId), true)
1251+ if ((hp == hp))
12461252 then {
1247- let cz = hm._3
1248- let dD = hm._2
1249- let hn = hm._1
1250- let en = if (if ((fO > 0))
1251- then (fO > hn)
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)
12521258 else false)
1253- then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
1254- else hn
1255- let gZ = invoke(aS, "emit", [en], nil)
1256- if ((gZ == gZ))
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))
12571263 then {
1258- let hb = {
1259- let gn = gZ
1260- if ($isInstanceOf(gn, "Address"))
1264+ let he = {
1265+ let gq = hc
1266+ if ($isInstanceOf(gq, "Address"))
12611267 then {
1262- let hc = gn
1263- invoke(hc, "emit", [en], nil)
1268+ let hf = gq
1269+ invoke(hf, "emit", [eq], nil)
12641270 }
12651271 else unit
12661272 }
1267- if ((hb == hb))
1273+ if ((he == he))
12681274 then {
1269- let hf = if (gT)
1275+ let hi = if (gW)
12701276 then {
1271- let hg = invoke(bw, "stakeFor", [toString(cR.caller)], [AttachedPayment(dk, en)])
1272- if ((hg == hg))
1277+ let hj = invoke(bz, "stakeFor", [toString(cU.caller)], [AttachedPayment(dn, eq)])
1278+ if ((hj == hj))
12731279 then nil
12741280 else throw("Strict value is not equal to itself.")
12751281 }
1276- else [ScriptTransfer(cR.caller, en, dk)]
1277- let ge = if ((cz > 0))
1278- then [ScriptTransfer(aZ, cz, fromBase58String(dh))]
1282+ else [ScriptTransfer(cU.caller, eq, dn)]
1283+ let gh = if ((cC > 0))
1284+ then [ScriptTransfer(bc, cC, fromBase58String(dk))]
12791285 else nil
1280- let ho = if ((this == aZ))
1286+ let hr = if ((this == bc))
12811287 then $Tuple2(0, 0)
12821288 else {
1283- let hp = if ((fm.assetId == bo))
1289+ let hs = if ((fp.assetId == br))
12841290 then true
12851291 else false
1286- if (hp)
1287- then $Tuple2(-(cz), 0)
1288- else $Tuple2(0, -(cz))
1292+ if (hs)
1293+ then $Tuple2(-(cC), 0)
1294+ else $Tuple2(0, -(cC))
12891295 }
1290- let eV = ho._1
1291- let eW = ho._2
1292- let hq = eU(eV, eW, 0)
1293- let gk = hq._1
1294- let eL = hq._2
1295- let gl = eY(eT, eL)
1296- if ((gl == gl))
1297- then $Tuple2((((dD ++ hf) ++ ge) ++ gk), en)
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)
12981304 else throw("Strict value is not equal to itself.")
12991305 }
13001306 else throw("Strict value is not equal to itself.")
13101316
13111317
13121318
1313-@Callable(cR)
1314-func putForFree (hr) = if ((0 > hr))
1319+@Callable(cU)
1320+func putForFree (hu) = if ((0 > hu))
13151321 then throw("Wrong slpg")
1316- else if ((size(cR.payments) != 2))
1322+ else if ((size(cU.payments) != 2))
13171323 then throw("2 pmnts expd")
13181324 else {
1319- let hs = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], hr, false, false, true, 0, "")
1320- let dD = hs._9
1321- let gX = toBigInt(value(cR.payments[0]).amount)
1322- let gY = toBigInt(value(cR.payments[1]).amount)
1323- let eT = eM(gX, gY, toBigInt(0))
1324- if ((eT == eT))
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))
13251331 then {
1326- let ht = eU(0, 0, 0)
1327- let gk = ht._1
1328- let eL = ht._2
1329- let gl = eY(eT, eL)
1330- if ((gl == gl))
1331- then (dD ++ gk)
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)
13321338 else throw("Strict value is not equal to itself.")
13331339 }
13341340 else throw("Strict value is not equal to itself.")
13361342
13371343
13381344
1339-@Callable(cR)
1345+@Callable(cU)
13401346 func get () = {
1341- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1342- if ((eT == eT))
1347+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1348+ if ((eW == eW))
13431349 then {
1344- let dZ = fl(cR)
1345- let hu = dZ._1
1346- let dC = dZ._2
1347- let dN = dZ._3
1348- let dh = dZ._4
1349- let dD = dZ._5
1350- let eA = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
1351- if ((eA == eA))
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))
13521358 then {
1353- let hv = eU(-(hu), -(dC), 0)
1354- let gk = hv._1
1355- let eL = hv._2
1356- let gl = eY(eT, eL)
1357- if ((gl == gl))
1358- then (dD ++ gk)
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)
13591365 else throw("Strict value is not equal to itself.")
13601366 }
13611367 else throw("Strict value is not equal to itself.")
13651371
13661372
13671373
1368-@Callable(cR)
1369-func getOneTknV2 (fN,fO) = {
1370- let hk = {
1371- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1372- if ($isInstanceOf(aU, "Boolean"))
1373- then aU
1374- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
13751381 }
1376- let hw = if (if (aX())
1382+ let hz = if (if (ba())
13771383 then true
1378- else (bm == s))
1384+ else (bp == s))
13791385 then true
1380- else hk
1381- let gK = [if (if (!(hw))
1386+ else hn
1387+ let gN = [if (if (!(hz))
13821388 then true
1383- else gq(cR))
1389+ else gt(cU))
13841390 then true
1385- else aP("get operation is blocked by admin"), if ((size(cR.payments) == 1))
1391+ else aS("get operation is blocked by admin"), if ((size(cU.payments) == 1))
13861392 then true
1387- else aP("exactly 1 payment are expected")]
1388- if ((gK == gK))
1393+ else aS("exactly 1 payment are expected")]
1394+ if ((gN == gN))
13891395 then {
1390- let hx = fM(fN, fO, cR.payments, cR.caller, cR.originCaller, cR.transactionId)
1391- let dD = hx._1
1392- let fX = hx._2
1393- $Tuple2(dD, fX)
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)
13941400 }
13951401 else throw("Strict value is not equal to itself.")
13961402 }
13971403
13981404
13991405
1400-@Callable(cR)
1406+@Callable(cU)
14011407 func refreshDLp () = {
1402- let hy = valueOrElse(getInteger(aq), 0)
1403- let hz = if (((height - hy) >= at))
1408+ let hB = valueOrElse(getInteger(at), 0)
1409+ let hC = if (((height - hB) >= aw))
14041410 then unit
1405- else aP(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1406- if ((hz == hz))
1411+ else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1412+ if ((hC == hC))
14071413 then {
1408- let ff = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aR("invalid dLp"))
1409- let hA = eU(0, 0, 0)
1410- let hB = hA._1
1411- let eL = hA._2
1412- let eX = if ((ff != eL))
1413- then hB
1414- else aP("nothing to refresh")
1415- $Tuple2(eX, toString(eL))
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))
14161422 }
14171423 else throw("Strict value is not equal to itself.")
14181424 }
14191425
14201426
14211427
1422-@Callable(cR)
1423-func getOneTknV2READONLY (fN,hC) = {
1424- let dl = toBase58String(value(bo))
1425- let dm = toBase58String(value(bp))
1426- let dk = toBase58String(value(bn))
1427- let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
1428- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dk)), "invalid lp asset").quantity)
1429- let cd = cA(cB)
1430- let cc = (cd - fraction(toBigInt(hC), cd, eK))
1431- let hD = if ((fN == dl))
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))
14321438 then 0
1433- else if ((fN == dm))
1439+ else if ((fQ == dp))
14341440 then 1
14351441 else throw("invalid out asset id")
1436- let hE = eu(cB, hD, cc)
1437- let gD = (cB[hD] - hE)
1438- let gE = max([0, toInt((gD - f))])
1439- let hF = cx(gE, aV)
1440- let fW = hF._1
1441- let cz = hF._2
1442- $Tuple2(nil, $Tuple2(fW, cz))
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))
14431449 }
14441450
14451451
14461452
1447-@Callable(cR)
1448-func getOneTknV2WithBonusREADONLY (fN,hC) = {
1449- let dl = toBase58String(value(bo))
1450- let dm = toBase58String(value(bp))
1451- let dk = toBase58String(value(bn))
1452- let dr = bP(dl)
1453- let dt = bP(dm)
1454- let hG = {
1455- let aU = invoke(this, "getOneTknV2READONLY", [fN, hC], nil)
1456- if ($isInstanceOf(aU, "(Int, Int)"))
1457- then aU
1458- else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
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)"))
14591465 }
1460- let fW = hG._1
1461- let cz = hG._2
1462- let dZ = df("", dk, hC, this)
1463- let dB = dZ._1
1464- let dC = dZ._2
1465- let hH = (dB + dC)
1466- let fL = if ((hH == 0))
1467- then if ((fW == 0))
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))
14681474 then 0
14691475 else throw("bonus calculation error")
1470- else fraction((fW - hH), a, hH)
1471- $Tuple2(nil, $Tuple3(fW, cz, fL))
1476+ else fraction((fZ - hK), a, hK)
1477+ $Tuple2(nil, $Tuple3(fZ, cC, fO))
14721478 }
14731479
14741480
14751481
1476-@Callable(cR)
1477-func getNoLess (hI,hJ) = {
1478- let dZ = fl(cR)
1479- let dB = dZ._1
1480- let dC = dZ._2
1481- let dN = dZ._3
1482- let dh = dZ._4
1483- let dD = dZ._5
1484- if ((hI > dB))
1485- then throw(((("Failed: " + toString(dB)) + " < ") + toString(hI)))
1486- else if ((hJ > dC))
1487- then throw(((("Failed: " + toString(dC)) + " < ") + toString(hJ)))
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)))
14881494 else {
1489- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1490- if ((eT == eT))
1495+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1496+ if ((eW == eW))
14911497 then {
1492- let hK = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
1493- if ((hK == hK))
1498+ let hN = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1499+ if ((hN == hN))
14941500 then {
1495- let hL = eU(-(dB), -(dC), 0)
1496- let gk = hL._1
1497- let eL = hL._2
1498- let gl = eY(eT, eL)
1499- if ((gl == gl))
1500- then (dD ++ gk)
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)
15011507 else throw("Strict value is not equal to itself.")
15021508 }
15031509 else throw("Strict value is not equal to itself.")
15081514
15091515
15101516
1511-@Callable(cR)
1512-func unstakeAndGet (cy) = {
1513- let hM = if ((size(cR.payments) != 0))
1517+@Callable(cU)
1518+func unstakeAndGet (cB) = {
1519+ let hP = if ((size(cU.payments) != 0))
15141520 then throw("No pmnts expd")
15151521 else true
1516- if ((hM == hM))
1522+ if ((hP == hP))
15171523 then {
1518- let hN = bu()
1519- let ha = bn
1520- let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
1521- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1522- if ((eT == eT))
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))
15231529 then {
1524- let hP = invoke(hO, "unstake", [toBase58String(ha), cy], nil)
1525- if ((hP == hP))
1530+ let hS = invoke(hR, "unstake", [toBase58String(hd), cB], nil)
1531+ if ((hS == hS))
15261532 then {
1527- let dZ = df(toBase58String(cR.transactionId), toBase58String(ha), cy, cR.caller)
1528- let dB = dZ._1
1529- let dC = dZ._2
1530- let dp = parseIntValue(dZ._9)
1531- let dD = dZ._10
1532- let hQ = if (if (aX())
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())
15331539 then true
1534- else (dp == s))
1535- then throw(("Blocked: " + toString(dp)))
1540+ else (ds == s))
1541+ then throw(("Blocked: " + toString(ds)))
15361542 else true
1537- if ((hQ == hQ))
1543+ if ((hT == hT))
15381544 then {
1539- let hR = invoke(aS, "burn", [cy], [AttachedPayment(ha, cy)])
1540- if ((hR == hR))
1545+ let hU = invoke(aV, "burn", [cB], [AttachedPayment(hd, cB)])
1546+ if ((hU == hU))
15411547 then {
1542- let hS = eU(-(dB), -(dC), 0)
1543- let gk = hS._1
1544- let eL = hS._2
1545- let gl = eY(eT, eL)
1546- if ((gl == gl))
1547- then (dD ++ gk)
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)
15481554 else throw("Strict value is not equal to itself.")
15491555 }
15501556 else throw("Strict value is not equal to itself.")
15601566
15611567
15621568
1563-@Callable(cR)
1564-func unstakeAndGetNoLess (hT,hU,hJ) = {
1565- let hw = if (aX())
1569+@Callable(cU)
1570+func unstakeAndGetNoLess (hW,hX,hM) = {
1571+ let hz = if (ba())
15661572 then true
1567- else (bm == s)
1568- let gK = [if (!(hw))
1573+ else (bp == s)
1574+ let gN = [if (!(hz))
15691575 then true
1570- else throw("get operation is blocked by admin"), if ((size(cR.payments) == 0))
1576+ else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
15711577 then true
15721578 else throw("no payments are expected")]
1573- if ((gK == gK))
1579+ if ((gN == gN))
15741580 then {
1575- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1576- if ((eT == eT))
1581+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1582+ if ((eW == eW))
15771583 then {
1578- let hP = invoke(bw, "unstake", [toBase58String(bn), hT], nil)
1579- if ((hP == hP))
1584+ let hS = invoke(bz, "unstake", [toBase58String(bq), hW], nil)
1585+ if ((hS == hS))
15801586 then {
1581- let hV = df(toBase58String(cR.transactionId), toBase58String(bn), hT, cR.caller)
1582- let dB = hV._1
1583- let dC = hV._2
1584- let dD = hV._10
1585- let hW = [if ((dB >= hU))
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))
15861592 then true
1587- else throw(makeString(["amount asset amount to receive is less than ", toString(hU)], "")), if ((dC >= hJ))
1593+ else throw(makeString(["amount asset amount to receive is less than ", toString(hX)], "")), if ((dF >= hM))
15881594 then true
1589- else throw(makeString(["price asset amount to receive is less than ", toString(hJ)], ""))]
1590- if ((hW == hW))
1595+ else throw(makeString(["price asset amount to receive is less than ", toString(hM)], ""))]
1596+ if ((hZ == hZ))
15911597 then {
1592- let hK = invoke(aS, "burn", [hT], [AttachedPayment(bn, hT)])
1593- if ((hK == hK))
1598+ let hN = invoke(aV, "burn", [hW], [AttachedPayment(bq, hW)])
1599+ if ((hN == hN))
15941600 then {
1595- let hX = eU(-(dB), -(dC), 0)
1596- let gk = hX._1
1597- let eL = hX._2
1598- let gl = eY(eT, eL)
1599- if ((gl == gl))
1600- then (dD ++ gk)
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)
16011607 else throw("Strict value is not equal to itself.")
16021608 }
16031609 else throw("Strict value is not equal to itself.")
16131619
16141620
16151621
1616-@Callable(cR)
1617-func unstakeAndGetOneTknV2 (hT,fN,fO) = {
1618- let hk = {
1619- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1620- if ($isInstanceOf(aU, "Boolean"))
1621- then aU
1622- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
16231629 }
1624- let hw = if (if (aX())
1630+ let hz = if (if (ba())
16251631 then true
1626- else (bm == s))
1632+ else (bp == s))
16271633 then true
1628- else hk
1629- let gK = [if (if (!(hw))
1634+ else hn
1635+ let gN = [if (if (!(hz))
16301636 then true
1631- else gq(cR))
1637+ else gt(cU))
16321638 then true
1633- else aP("get operation is blocked by admin"), if ((size(cR.payments) == 0))
1639+ else aS("get operation is blocked by admin"), if ((size(cU.payments) == 0))
16341640 then true
1635- else aP("no payments are expected")]
1636- if ((gK == gK))
1641+ else aS("no payments are expected")]
1642+ if ((gN == gN))
16371643 then {
1638- let hN = bu()
1639- let ha = bn
1640- let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
1641- let dj = cR.caller
1642- let hY = this
1643- let hP = invoke(hO, "unstakeINTERNAL", [ha, hT, dj.bytes, hY.bytes], nil)
1644- if ((hP == hP))
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))
16451651 then {
1646- let hZ = fM(fN, fO, [AttachedPayment(ha, hT)], cR.caller, cR.originCaller, cR.transactionId)
1647- let dD = hZ._1
1648- let fX = hZ._2
1649- $Tuple2(dD, fX)
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)
16501656 }
16511657 else throw("Strict value is not equal to itself.")
16521658 }
16551661
16561662
16571663
1658-@Callable(cR)
1659-func putOneTknV2WithBonusREADONLY (ia,ib) = {
1660- let ic = fr(ia, ib, "", "", true)
1661- let fG = ic._1
1662- let dD = ic._2
1663- let cz = ic._3
1664- let fL = ic._4
1665- $Tuple2(nil, $Tuple3(fG, cz, fL))
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))
16661672 }
16671673
16681674
16691675
1670-@Callable(cR)
1671-func putOneTknV2WithoutTakeFeeREADONLY (ia,ib) = {
1672- let id = fr(ia, ib, "", "", false)
1673- let fG = id._1
1674- let dD = id._2
1675- let cz = id._3
1676- let fL = id._4
1677- $Tuple2(nil, $Tuple3(fG, cz, fL))
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))
16781684 }
16791685
16801686
16811687
1682-@Callable(cR)
1683-func activate (ie,if) = if ((toString(cR.caller) != toString(aS)))
1688+@Callable(cU)
1689+func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
16841690 then throw("denied")
1685- else $Tuple2([StringEntry(aj(), ie), StringEntry(ak(), if)], "success")
1691+ else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
16861692
16871693
16881694
1689-@Callable(cR)
1690-func setS (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
1691- then gp
1692- else [StringEntry(ig, hQ)]
1695+@Callable(cU)
1696+func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697+ then gs
1698+ else [StringEntry(ij, hT)]
16931699
16941700
16951701
1696-@Callable(cR)
1697-func setI (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
1698- then gp
1699- else [IntegerEntry(ig, hQ)]
1702+@Callable(cU)
1703+func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704+ then gs
1705+ else [IntegerEntry(ij, hT)]
17001706
17011707
17021708
1703-@Callable(cR)
1704-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1709+@Callable(cU)
1710+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
17051711
17061712
17071713
1708-@Callable(cR)
1709-func getAccBalanceWrapperREADONLY (bQ) = $Tuple2(nil, bP(bQ))
1714+@Callable(cU)
1715+func getAccBalanceWrapperREADONLY (bT) = $Tuple2(nil, bS(bT))
17101716
17111717
17121718
1713-@Callable(cR)
1714-func calcPricesWrapperREADONLY (cj,ck,co) = {
1715- let ih = cn(cj, ck, co)
1716- $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
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])])
17171723 }
17181724
17191725
17201726
1721-@Callable(cR)
1722-func fromX18WrapperREADONLY (M,ii) = $Tuple2(nil, L(parseBigIntValue(M), ii))
1727+@Callable(cU)
1728+func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
17231729
17241730
17251731
1726-@Callable(cR)
1732+@Callable(cU)
17271733 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17281734
17291735
17301736
1731-@Callable(cR)
1732-func calcPriceBigIntWrapperREADONLY (bS,bT) = $Tuple2(nil, toString(bR(parseBigIntValue(bS), parseBigIntValue(bT))))
1737+@Callable(cU)
1738+func calcPriceBigIntWrapperREADONLY (bV,bW) = $Tuple2(nil, toString(bU(parseBigIntValue(bV), parseBigIntValue(bW))))
17331739
17341740
17351741
1736-@Callable(cR)
1737-func estimatePutOperationWrapperREADONLY (dg,bY,dF,dG,dH,dI,ij,dJ,dK) = $Tuple2(nil, dE(dg, bY, dF, dG, dH, dI, ij, dJ, dK, true, false, 0, ""))
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, ""))
17381744
17391745
17401746
1741-@Callable(cR)
1742-func estimateGetOperationWrapperREADONLY (dg,ik,di,ij) = {
1743- let dZ = df(dg, ik, di, addressFromStringValue(ij))
1744- $Tuple2(nil, $Tuple10(dZ._1, dZ._2, dZ._3, dZ._4, dZ._5, dZ._6, dZ._7, toString(dZ._8), dZ._9, dZ._10))
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))
17451751 }
17461752
17471753
1748-@Verifier(il)
1749-func im () = {
1750- let in = {
1751- let gn = gm()
1752- if ($isInstanceOf(gn, "ByteVector"))
1754+
1755+@Callable(cU)
1756+func changeAmp () = {
1757+ let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758+ let ip = {
1759+ let gq = io
1760+ if ($isInstanceOf(gq, "List[Any]"))
17531761 then {
1754- let gr = gn
1755- gr
1762+ let iq = gq
1763+ $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"))
1768+ }, {
1769+ let aX = iq[1]
1770+ if ($isInstanceOf(aX, "Int"))
1771+ then aX
1772+ else throw(($getType(aX) + " couldn't be cast to Int"))
1773+ }, {
1774+ let aX = iq[2]
1775+ if ($isInstanceOf(aX, "Int"))
1776+ then aX
1777+ else throw(($getType(aX) + " couldn't be cast to Int"))
1778+ })
17561779 }
1757- else if ($isInstanceOf(gn, "Unit"))
1758- then il.senderPublicKey
1780+ else aS("invalid entry type")
1781+ }
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))
1797+ then true
1798+ else aS("try again in few blocks"), if ((iu != iw))
1799+ 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))]
1803+ else throw("Strict value is not equal to itself.")
1804+ }
1805+
1806+
1807+@Verifier(iz)
1808+func iA () = {
1809+ let iB = {
1810+ let gq = gp()
1811+ if ($isInstanceOf(gq, "ByteVector"))
1812+ then {
1813+ let gu = gq
1814+ gu
1815+ }
1816+ else if ($isInstanceOf(gq, "Unit"))
1817+ then iz.senderPublicKey
17591818 else throw("Match error")
17601819 }
1761- let gn = il
1762- if ($isInstanceOf(gn, "Order"))
1820+ let gq = iz
1821+ if ($isInstanceOf(gq, "Order"))
17631822 then {
1764- let fb = gn
1765- let io = aY()
1766- let ip = if (gy())
1823+ let fe = gq
1824+ let iC = bb()
1825+ let iD = if (gB())
17671826 then $Tuple2(true, "")
1768- else fa(fb)
1769- let aH = ip._1
1770- let aI = ip._2
1771- let aJ = sigVerify(fb.bodyBytes, fb.proofs[0], fb.senderPublicKey)
1772- let aK = sigVerify(fb.bodyBytes, fb.proofs[1], io)
1773- if (if (if (aH)
1774- then aJ
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)
1833+ then aM
17751834 else false)
1776- then aK
1835+ then aN
17771836 else false)
17781837 then true
1779- else aG(aH, aI, aJ, aK)
1838+ else aJ(aK, aL, aM, aN)
17801839 }
1781- else if ($isInstanceOf(gn, "SetScriptTransaction"))
1840+ else if ($isInstanceOf(gq, "SetScriptTransaction"))
17821841 then {
1783- let cE = gn
1784- if (sigVerify(il.bodyBytes, il.proofs[0], in))
1842+ let cH = gq
1843+ if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
17851844 then true
17861845 else {
1787- let iq = blake2b256(value(cE.script))
1788- let ir = fromBase64String(value(getString(aS, aC())))
1789- let is = scriptHash(this)
1790- if ((ir == iq))
1791- then (is != iq)
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)
17921851 else false
17931852 }
17941853 }
1795- else sigVerify(il.bodyBytes, il.proofs[0], in)
1854+ else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
17961855 }
17971856
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
107107 func aa () = "%s__pendingManagerPublicKey"
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
131-func am () = "%s__addonAddr"
131+func am (an) = ("%s%d__amp__" + toString(an))
132132
133133
134-let an = "%s__fee"
135-
136-let ao = valueOrElse(getInteger(this, an), G)
137-
138-let ap = makeString(["%s", "dLp"], n)
139-
140-let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141-
142-let ar = makeString(["%s", "refreshDLpDelay"], n)
143-
144-let as = 30
145-
146-let at = valueOrElse(getInteger(this, ar), as)
147-
148-func au () = "%s__factoryConfig"
134+func ao () = "%s__addonAddr"
149135
150136
151-func av () = "%s%s__matcher__publicKey"
137+func ap () = "%s__changeAmpLastCall"
152138
153139
154-func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
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"
155155
156156
157-func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
157+func ay () = "%s%s__matcher__publicKey"
158158
159159
160-func aB () = "%s__shutdown"
160+func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161161
162162
163-func aC () = "%s__allowedLpStableScriptHash"
163+func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164164
165165
166-func aD () = "%s__feeCollectorAddress"
166+func aE () = "%s__shutdown"
167167
168168
169-func aE (aF) = ("%s%s__skipOrderValidation__" + aF)
169+func aF () = "%s__allowedLpStableScriptHash"
170170
171171
172-func aG (aH,aI,aJ,aK) = throw((((((((("order validation failed: orderValid=" + toString(aH)) + " (") + aI) + ")") + " senderValid=") + toString(aJ)) + " matcherValid=") + toString(aK)))
172+func aG () = "%s__feeCollectorAddress"
173173
174174
175-func aL (aM,aN) = valueOrErrorMessage(getString(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
175+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
176176
177177
178-func aO (aM,aN) = valueOrErrorMessage(getInteger(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
178+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
179179
180180
181-func aP (aQ) = throw(makeString(["lp_stable.ride:", aQ], " "))
181+func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
182182
183183
184-func aR (aQ) = makeString(["lp_stable.ride:", aQ], " ")
184+func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
185185
186186
187-let aS = addressFromStringValue(aL(this, Y()))
187+func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
188188
189-let aT = {
190- let aU = invoke(aS, "getInFeeREADONLY", [toString(this)], nil)
191- if ($isInstanceOf(aU, "Int"))
192- then aU
193- else throw(($getType(aU) + " couldn't be cast to Int"))
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"))
194200 }
195201
196-let aV = {
197- let aU = invoke(aS, "getOutFeeREADONLY", [toString(this)], nil)
198- if ($isInstanceOf(aU, "Int"))
199- then aU
200- else throw(($getType(aU) + " couldn't be cast to Int"))
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"))
201207 }
202208
203-let aW = aL(this, al())
209+let aZ = aO(this, al())
204210
205-func aX () = valueOrElse(getBoolean(aS, aB()), false)
211+func ba () = valueOrElse(getBoolean(aV, aE()), false)
206212
207213
208-func aY () = fromBase58String(aL(aS, av()))
214+func bb () = fromBase58String(aO(aV, ay()))
209215
210216
211-let aZ = addressFromStringValue(aL(aS, aD()))
217+let bc = addressFromStringValue(aO(aV, aG()))
212218
213-func ba () = {
214- let bb = aL(this, aj())
215- let bc = aL(this, ak())
216- let bd = aO(aS, az(bc))
217- let ax = aO(aS, az(bb))
218- split(aL(aS, aw(toString(ax), toString(bd))), n)
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)
219225 }
220226
221227
222-func be (bf) = if ((bf == k))
228+func bh (bi) = if ((bi == k))
223229 then unit
224- else fromBase58String(bf)
230+ else fromBase58String(bi)
225231
226232
227-func bg (bf) = if ((bf == unit))
233+func bj (bi) = if ((bi == unit))
228234 then k
229- else toBase58String(value(bf))
235+ else toBase58String(value(bi))
230236
231237
232-func bh (bi) = $Tuple9(addressFromStringValue(bi[t]), parseIntValue(bi[u]), fromBase58String(bi[v]), be(bi[w]), be(bi[x]), parseIntValue(bi[y]), parseIntValue(bi[z]), fromBase58String(bi[A]), fromBase58String(bi[B]))
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]))
233239
234240
235-let bj = bh(ba())
241+let bm = bk(bd())
236242
237-let bk = bj
243+let bn = bm
238244
239-let bl = bk._1
245+let bo = bn._1
240246
241-let bm = bk._2
247+let bp = bn._2
242248
243-let bn = bk._3
249+let bq = bn._3
244250
245-let bo = bk._4
251+let br = bn._4
246252
247-let bp = bk._5
253+let bs = bn._5
248254
249-let bq = bk._6
255+let bt = bn._6
250256
251-let br = bk._7
257+let bu = bn._7
252258
253-let bs = bk._8
259+let bv = bn._8
254260
255-let bt = bk._9
261+let bw = bn._9
256262
257-func bu () = split(aL(aS, au()), n)
263+func bx () = split(aO(aV, ax()), n)
258264
259265
260-let bv = bu()
266+let by = bx()
261267
262-let bw = valueOrErrorMessage(addressFromString(bv[C]), "Invalid staking contract address")
268+let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
263269
264-let bx = valueOrErrorMessage(addressFromString(bv[E]), "Invalid slipage contract address")
270+let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
265271
266-let by = valueOrErrorMessage(addressFromString(bv[F]), "Invalid gwx contract address")
272+let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
267273
268-let bz = valueOrErrorMessage(addressFromString(bv[D]), "Invalid gwx contract address")
274+let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
269275
270-func bA (bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK)], n)
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)
271277
272278
273-func bL (bM,bN,bO,bE,bH,bI) = makeString(["%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bE), toString(bH), toString(bI)], n)
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)
274280
275281
276-func bP (bQ) = if ((bQ == "WAVES"))
282+func bS (bT) = if ((bT == "WAVES"))
277283 then wavesBalance(this).available
278- else assetBalance(this, fromBase58String(bQ))
284+ else assetBalance(this, fromBase58String(bT))
279285
280286
281-func bR (bS,bT) = fraction(bS, c, bT)
287+func bU (bV,bW) = fraction(bV, c, bW)
282288
283289
284-func bU (bS,bT,P) = fraction(bS, c, bT, P)
290+func bX (bV,bW,P) = fraction(bV, c, bW, P)
285291
286292
287-func bV (bW,bX,bY) = {
288- let bZ = fraction((bW - bX), b, bX)
289- let ca = ((bY - W(bZ)) > d)
290- if (!(ca))
291- then throw(("Big slpg: " + toString(bZ)))
292- else $Tuple2(ca, min([bW, bX]))
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]))
293299 }
294300
295301
296-func cb (cc,cd,ce) = {
297- let bZ = fraction(cd, b, cc)
298- let cf = (ce > bZ)
299- if (if (cf)
302+func ce (cf,cg,ch) = {
303+ let cc = fraction(cg, b, cf)
304+ let ci = (ch > cc)
305+ if (if (ci)
300306 then true
301- else (cd > cc))
302- then throw(((((((toString(cd) + " ") + toString(cc)) + " ") + toString(bZ)) + " ") + toString(ce)))
303- else cf
307+ else (cg > cf))
308+ then throw(((((((toString(cg) + " ") + toString(cf)) + " ") + toString(cc)) + " ") + toString(ch)))
309+ else ci
304310 }
305311
306312
307-func cg (ch,ci,cj,ck) = {
308- let cl = H(cj, ch)
309- let cm = H(ck, ci)
310- bR(cm, cl)
313+func cj (ck,cl,cm,cn) = {
314+ let co = H(cm, ck)
315+ let cp = H(cn, cl)
316+ bU(cp, co)
311317 }
312318
313319
314-func cn (cj,ck,co) = {
315- let cp = bq
316- let cq = br
317- let cr = cg(cp, cq, cj, ck)
318- let bT = H(cj, cp)
319- let bS = H(ck, cq)
320- let cs = H(co, a)
321- let ct = bR(bT, cs)
322- let cu = bR(bS, cs)
323-[cr, ct, cu]
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]
324330 }
325331
326332
327-func cv (cj,ck,co) = {
328- let cw = cn(cj, ck, co)
329-[L(cw[0], a), L(cw[1], a), L(cw[2], a)]
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)]
330336 }
331337
332338
333-func cx (cy,ao) = {
334- let cz = if ((ao == 0))
339+func cA (cB,ar) = {
340+ let cC = if ((ar == 0))
335341 then 0
336- else fraction(cy, ao, a)
337- $Tuple2((cy - cz), cz)
342+ else fraction(cB, ar, a)
343+ $Tuple2((cB - cC), cC)
338344 }
339345
340346
341-func cA (cB) = {
342- let cC = cB[0]
343- let cD = cB[1]
344- let cE = (cC + cD)
345- if ((cE == e))
347+func cD (cE) = {
348+ let cF = cE[0]
349+ let cG = cE[1]
350+ let cH = (cF + cG)
351+ if ((cH == e))
346352 then e
347353 else {
348- let cF = parseIntValue(aW)
349- let cG = (cF * 2)
350- let cw = fraction(cC, cD, f)
351- let cH = fraction(cw, i, f)
352- let cI = fraction(toBigInt(cG), cE, f)
353- let cJ = toBigInt((cG - 1))
354- func cK (cL) = {
355- let cM = fraction(cL, cL, f)
356- let cN = fraction(cM, cL, f)
357- let cO = fraction(cN, f, cH)
358- fraction((cI + fraction(cO, g, f)), cL, (fraction(cJ, cL, f) + fraction(h, cO, f)))
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)))
359365 }
360366
361- func cP (cQ,cR) = if (cQ._2)
362- then cQ
367+ func cS (cT,cU) = if (cT._2)
368+ then cT
363369 else {
364- let cL = cQ._1
365- let cS = cK(cL)
366- let cT = (cS - value(cL))
367- let cU = if ((e > cT))
368- then -(cT)
369- else cT
370- if ((f >= cU))
371- then $Tuple2(cS, true)
372- else $Tuple2(cS, false)
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)
373379 }
374380
375- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
376- let cW = {
377- let cX = cV
378- let cY = size(cX)
379- let cZ = $Tuple2(cE, false)
380- func da (db,dc) = if ((dc >= cY))
381- then db
382- else cP(db, cX[dc])
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])
383389
384- func dd (db,dc) = if ((dc >= cY))
385- then db
390+ func dg (de,df) = if ((df >= db))
391+ then de
386392 else throw("List size exceeds 17")
387393
388- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
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)
389395 }
390- let cL = cW._1
391- let de = cW._2
392- if (de)
393- then cL
394- else throw(("D calculation error, D = " + toString(cL)))
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)))
395401 }
396402 }
397403
398404
399-func df (dg,dh,di,dj) = {
400- let dk = bn
401- let dl = toBase58String(value(bo))
402- let dm = toBase58String(value(bp))
405+func di (dj,dk,dl,dm) = {
403406 let dn = bq
404- let do = br
405- let dp = toString(bm)
406- let dq = valueOrErrorMessage(assetInfo(dk), "Wrong LP id").quantity
407- if ((toBase58String(dk) != dh))
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))
408414 then throw("Wrong pmt asset")
409415 else {
410- let dr = bP(dl)
411- let ds = H(dr, dn)
412- let dt = bP(dm)
413- let du = H(dt, do)
414- let dv = bR(du, ds)
415- let dw = L(dv, a)
416- let dx = H(di, a)
417- let dy = H(dq, a)
418- let dz = fraction(ds, dx, dy)
419- let dA = fraction(du, dx, dy)
420- let dB = O(dz, dn, FLOOR)
421- let dC = O(dA, do, FLOOR)
422- let dD = if ((dg == ""))
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 == ""))
423429 then nil
424- else [ScriptTransfer(dj, dB, if ((dl == "WAVES"))
430+ else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
425431 then unit
426- else fromBase58String(dl)), ScriptTransfer(dj, dC, if ((dm == "WAVES"))
432+ else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
427433 then unit
428- else fromBase58String(dm)), StringEntry(ai(toString(dj), dg), bL(dB, dC, di, dw, height, lastBlock.timestamp)), IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw)]
429- $Tuple10(dB, dC, dl, dm, dr, dt, dq, dv, dp, dD)
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)
430436 }
431437 }
432438
433439
434-func dE (dg,bY,dF,dG,dH,dI,dj,dJ,dK,dL,dM,dN,dO) = {
435- let dk = bn
436- let dP = toBase58String(value(bo))
437- let dQ = toBase58String(value(bp))
438- let dR = bs
439- let dS = bt
440- let dT = bq
441- let dU = br
442- let dp = toString(bm)
443- let dV = valueOrErrorMessage(assetInfo(dk), "Wr lp as").quantity
444- let dr = if (dJ)
445- then bP(dP)
446- else if (if (dL)
447- then (dO == dP)
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)
448454 else false)
449- then (bP(dP) - dN)
450- else if (dL)
451- then bP(dP)
452- else (bP(dP) - dF)
453- let dt = if (dJ)
454- then bP(dQ)
455- else if (if (dL)
456- then (dO == dQ)
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)
457463 else false)
458- then (bP(dQ) - dN)
459- else if (dL)
460- then bP(dQ)
461- else (bP(dQ) - dH)
462- let dW = H(dF, dT)
463- let dX = H(dH, dU)
464- let dY = bR(dX, dW)
465- let ds = H(dr, dT)
466- let du = H(dt, dU)
467- let cd = cA([ds, du])
468- let dZ = if ((dV == 0))
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))
469475 then {
470- let cc = cA([(ds + dW), (du + dX)])
471- let ea = if ((cc > cd))
476+ let cf = cD([(dv + dZ), (dx + ea)])
477+ let ed = if ((cf > cg))
472478 then true
473479 else throw("D1 should be greater than D0")
474- if ((ea == ea))
480+ if ((ed == ed))
475481 then {
476- let dv = d
477- let eb = d
478- let cs = cc
479- $Tuple5(L(cs, a), L(dW, dT), L(dX, dU), bR((du + dX), (ds + dW)), eb)
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)
480486 }
481487 else throw("Strict value is not equal to itself.")
482488 }
483489 else {
484- let dv = bR(du, ds)
485- let ec = fraction(W((dv - dY)), c, dv)
486- let eb = H(bY, a)
487- if (if (if (dM)
488- then (dv != d)
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)
489495 else false)
490- then (ec > eb)
496+ then (ef > ee)
491497 else false)
492- then throw(((("Price slippage " + toString(ec)) + " > ") + toString(eb)))
498+ then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
493499 else {
494- let ed = H(dV, a)
495- let ee = fraction(dW, bU(du, ds, CEILING), c, CEILING)
496- let ef = fraction(dX, c, bU(du, ds, FLOOR), CEILING)
497- let eg = if ((ee > dX))
498- then $Tuple2(ef, dX)
499- else $Tuple2(dW, ee)
500- let eh = eg._1
501- let ei = eg._2
502- let cc = cA([(ds + eh), (du + ei)])
503- let ea = if ((cc > cd))
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))
504510 then true
505511 else throw("D1 should be greater than D0")
506- if ((ea == ea))
512+ if ((ed == ed))
507513 then {
508- let cs = fraction(ed, (cc - cd), cd)
509- $Tuple5(O(cs, a, FLOOR), O(eh, dT, CEILING), O(ei, dU, CEILING), dv, eb)
514+ let cv = fraction(eg, (cf - cg), cg)
515+ $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
510516 }
511517 else throw("Strict value is not equal to itself.")
512518 }
513519 }
514- let ej = dZ._1
515- let ek = dZ._2
516- let el = dZ._3
517- let dw = L(dZ._4, a)
518- let em = L(dZ._5, a)
519- if ((0 >= ej))
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))
520526 then throw("LP <= 0")
521527 else {
522- let en = if (!(dK))
528+ let eq = if (!(dN))
523529 then 0
524- else ej
525- let eo = (dF - ek)
526- let ep = (dH - el)
527- let eq = if (if (dL)
528- then (dO == dP)
530+ else em
531+ let er = (dI - en)
532+ let es = (dK - eo)
533+ let et = if (if (dO)
534+ then (dR == dS)
529535 else false)
530- then $Tuple2(dN, 0)
531- else if (if (dL)
532- then (dO == dQ)
536+ then $Tuple2(dQ, 0)
537+ else if (if (dO)
538+ then (dR == dT)
533539 else false)
534- then $Tuple2(0, dN)
535- else $Tuple2(ek, el)
536- let er = eq._1
537- let es = eq._2
538- let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, dg), bA(er, es, en, dw, bY, em, height, lastBlock.timestamp, eo, ep))]
539- $Tuple13(ej, en, dw, dr, dt, dV, dk, dp, et, eo, ep, dG, dI)
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)
540546 }
541547 }
542548
543549
544-func eu (cB,cR,ev) = {
545- let ew = g
546- let ex = cB[if ((cR == 0))
550+func ex (cE,cU,ey) = {
551+ let ez = g
552+ let eA = cE[if ((cU == 0))
547553 then 1
548554 else 0]
549- let ey = parseBigIntValue(l)
550- let cF = (parseBigIntValue(aW) * ey)
551- let cE = ex
552- let cG = (cF * ew)
553- let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
554- let eA = ((cE + ((ev * ey) / cG)) - ev)
555- func cP (cQ,eB) = {
556- let eC = cQ
557- let eD = eC._1
558- let de = eC._2
559- if ((de != unit))
560- then cQ
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
561567 else {
562- let eE = (((eD * eD) + ez) / ((g * eD) + eA))
563- let eF = X((eE - value(eD)))
564- if ((f >= eF))
565- then $Tuple2(eE, eB)
566- else $Tuple2(eE, unit)
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)
567573 }
568574 }
569575
570- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
571- let eG = {
572- let cX = cV
573- let cY = size(cX)
574- let cZ = $Tuple2(ev, unit)
575- func da (db,dc) = if ((dc >= cY))
576- then db
577- else cP(db, cX[dc])
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])
578584
579- func dd (db,dc) = if ((dc >= cY))
580- then db
585+ func dg (de,df) = if ((df >= db))
586+ then de
581587 else throw("List size exceeds 15")
582588
583- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
584590 }
585- let eD = eG._1
586- let de = eG._2
587- if ((de != unit))
588- then eD
589- else throw(("Y calculation error, Y = " + toString(eD)))
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)))
590596 }
591597
592598
593-func eH (eI,eJ,eK) = {
594- let eL = fraction(cA([K(eI, toBigInt(bq)), K(eJ, toBigInt(br))]), c, eK)
595- if ((eK == e))
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))
596602 then e
597- else eL
603+ else eO
598604 }
599605
600606
601-func eM (eN,eO,eP) = {
602- let eQ = (toBigInt(bP(bg(bo))) - eN)
603- let eR = (toBigInt(bP(bg(bp))) - eO)
604- let eS = (toBigInt(value(assetInfo(bn)).quantity) - eP)
605- let eT = eH(eQ, eR, eS)
606- eT
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
607613 }
608614
609615
610-func eU (eV,eW,eP) = {
611- let eQ = (bP(bg(bo)) + eV)
612- let eR = (bP(bg(bp)) + eW)
613- let eS = (value(assetInfo(bn)).quantity + eP)
614- let eL = eH(toBigInt(eQ), toBigInt(eR), toBigInt(eS))
615- let eX = [IntegerEntry(aq, height), StringEntry(ap, toString(eL))]
616- $Tuple2(eX, eL)
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)
617623 }
618624
619625
620-func eY (eZ,eL) = if ((eL >= eZ))
626+func fb (fc,eO) = if ((eO >= fc))
621627 then true
622- else aP("updated DLp lower than current DLp")
628+ else aS("updated DLp lower than current DLp")
623629
624630
625-func fa (fb) = {
626- let eQ = bP(bg(bo))
627- let eR = bP(bg(bp))
628- let fc = fb.amount
629- let fd = fraction(fb.amount, fb.price, a, FLOOR)
630- let fe = if ((fb.orderType == Buy))
631- then $Tuple2(fc, -(fd))
632- else $Tuple2(-(fc), fd)
633- let eV = fe._1
634- let eW = fe._2
635- if (if (if (aX())
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())
636642 then true
637- else (bm == r))
643+ else (bp == r))
638644 then true
639- else (bm == s))
645+ else (bp == s))
640646 then throw("Admin blocked")
641- else if (if ((fb.assetPair.amountAsset != bo))
647+ else if (if ((fe.assetPair.amountAsset != br))
642648 then true
643- else (fb.assetPair.priceAsset != bp))
649+ else (fe.assetPair.priceAsset != bs))
644650 then throw("Wr assets")
645651 else {
646- let ff = parseBigIntValue(valueOrElse(getString(this, ap), "0"))
647- let fg = eU(eV, eW, 0)
648- let fh = fg._1
649- let fi = fg._2
650- let fj = (fi >= ff)
651- let fk = makeString(["dLp=", toString(ff), " dLpNew=", toString(fi), " amountAssetBalance=", toString(eQ), " priceAssetBalance=", toString(eR), " amountAssetBalanceDelta=", toString(eV), " priceAssetBalanceDelta=", toString(eW), " height=", toString(height)], "")
652- $Tuple2(fj, fk)
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)
653659 }
654660 }
655661
656662
657-func fl (cR) = if ((size(cR.payments) != 1))
663+func fo (cU) = if ((size(cU.payments) != 1))
658664 then throw("1 pmnt exp")
659665 else {
660- let fm = value(cR.payments[0])
661- let dh = value(fm.assetId)
662- let dN = fm.amount
663- let dZ = df(toBase58String(cR.transactionId), toBase58String(dh), dN, cR.caller)
664- let dB = dZ._1
665- let dC = dZ._2
666- let dp = parseIntValue(dZ._9)
667- let dD = dZ._10
668- if (if (aX())
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())
669675 then true
670- else (dp == s))
671- then throw(("Admin blocked: " + toString(dp)))
672- else $Tuple5(dB, dC, dN, dh, dD)
676+ else (ds == s))
677+ then throw(("Admin blocked: " + toString(ds)))
678+ else $Tuple5(dE, dF, dQ, dk, dG)
673679 }
674680
675681
676-func fn (fo,ah,fp,fq,bY,dK,dL,dM,dN,dO) = {
677- let dZ = dE(ah, bY, value(fp).amount, value(fp).assetId, value(fq).amount, value(fq).assetId, fo, (ah == ""), dK, dL, dM, dN, dO)
678- let dp = parseIntValue(dZ._8)
679- if (if (if (aX())
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())
680686 then true
681- else (dp == q))
687+ else (ds == q))
682688 then true
683- else (dp == s))
684- then throw(("Blocked:" + toString(dp)))
685- else dZ
689+ else (ds == s))
690+ then throw(("Blocked:" + toString(ds)))
691+ else ec
686692 }
687693
688694
689-func fr (fs,dh,dj,ah,ft) = {
690- let dl = toBase58String(value(bo))
691- let dm = toBase58String(value(bp))
692- let dk = bn
693- let dT = bq
694- let dU = br
695- let eS = toBigInt(valueOrErrorMessage(assetInfo(dk), "invalid lp asset").quantity)
696- let fu = if ((eS > e))
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))
697703 then true
698704 else throw("initial deposit requires all coins")
699- if ((fu == fu))
705+ if ((fx == fx))
700706 then {
701- let dr = bP(dl)
702- let dt = bP(dm)
703- let fv = if ((ah == ""))
704- then $Tuple2(dr, dt)
705- else if ((dh == dl))
706- then if ((fs > dr))
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))
707713 then throw("invalid payment amount")
708- else $Tuple2((dr - fs), dt)
709- else if ((dh == dm))
710- then if ((fs > dt))
714+ else $Tuple2((du - fv), dw)
715+ else if ((dk == dp))
716+ then if ((fv > dw))
711717 then throw("invalid payment amount")
712- else $Tuple2(dr, (dt - fs))
718+ else $Tuple2(du, (dw - fv))
713719 else throw("wrong pmtAssetId")
714- let fw = fv._1
715- let fx = fv._2
716- let fy = if ((dh == dl))
717- then $Tuple2(fs, 0)
718- else if ((dh == dm))
719- then $Tuple2(0, fs)
720- else throw("invalid payment")
721720 let fz = fy._1
722721 let fA = fy._2
723- let fB = if (ft)
724- then $Tuple3(cx(fz, aT)._1, cx(fA, aT)._1, cx(fs, aT)._2)
725- else $Tuple3(fz, fA, 0)
722+ let fB = if ((dk == do))
723+ then $Tuple2(fv, 0)
724+ else if ((dk == dp))
725+ then $Tuple2(0, fv)
726+ else throw("invalid payment")
726727 let fC = fB._1
727728 let fD = fB._2
728- let cz = fB._3
729- let fE = (fw + fC)
730- let fF = (fx + fD)
731- let cd = cA([H(fw, bq), H(fx, br)])
732- let cc = cA([H(fE, bq), H(fF, br)])
733- let ea = if ((cc > cd))
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))
734740 then true
735741 else throw()
736- if ((ea == ea))
742+ if ((ed == ed))
737743 then {
738- let fG = fraction(eS, (cc - cd), cd, FLOOR)
739- let dw = L(bR(H(fF, dU), H(fE, dT)), a)
740- let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, ah), bA(fz, fA, toInt(fG), dw, 0, 0, height, lastBlock.timestamp, 0, 0))]
741- let fH = fraction(fx, a, fw)
742- let fI = fraction(fs, a, (fH + a))
743- let fJ = (fs - fI)
744- let fK = fraction(eS, toBigInt(fJ), toBigInt(fx))
745- let fL = toInt(fraction((fG - fK), b, fK))
746- $Tuple4(toInt(fG), et, cz, fL)
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)
747753 }
748754 else throw("Strict value is not equal to itself.")
749755 }
750756 else throw("Strict value is not equal to itself.")
751757 }
752758
753759
754-func fM (fN,fO,fP,fo,fQ,fR) = {
755- let dk = toBase58String(value(bn))
756- let dl = toBase58String(value(bo))
757- let dm = toBase58String(value(bp))
758- let fS = bq
759- let fT = br
760- let fU = bm
761- let dj = if ((fo == bz))
762- then fQ
763- else fo
764- let fm = value(fP[0])
765- let dh = value(fm.assetId)
766- let dN = fm.amount
767- let eT = eM(e, e, e)
768- if ((eT == eT))
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))
769775 then {
770- let dg = toBase58String(fR)
771- if ((dk != toBase58String(dh)))
776+ let dj = toBase58String(fU)
777+ if ((dn != toBase58String(dk)))
772778 then throw("Wrong LP")
773779 else {
774- let dr = bP(dl)
775- let dt = bP(dm)
776- let fV = {
777- let aU = invoke(this, "getOneTknV2READONLY", [fN, dN], nil)
778- if ($isInstanceOf(aU, "(Int, Int)"))
779- then aU
780- else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
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)"))
781787 }
782- if ((fV == fV))
788+ if ((fY == fY))
783789 then {
784- let cz = fV._2
785- let fW = fV._1
786- let fX = if (if ((fO > 0))
787- then (fO > fW)
790+ let cC = fY._2
791+ let fZ = fY._1
792+ let ga = if (if ((fR > 0))
793+ then (fR > fZ)
788794 else false)
789- then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
790- else fW
791- let fY = if ((fN == dl))
792- then $Tuple4(fX, 0, ((dr - fX) - cz), dt)
793- else if ((fN == dm))
794- then $Tuple4(0, fX, dr, ((dt - fX) - cz))
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))
795801 else throw("invalid out asset id")
796- let fZ = fY._1
797- let ga = fY._2
798- let fE = fY._3
799- let fF = fY._4
800- let gb = bR(H(fF, fT), H(fE, fS))
801- let gc = L(gb, a)
802- let gd = if ((fN == "WAVES"))
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"))
803809 then unit
804- else fromBase58String(fN)
805- let ge = if ((cz > 0))
806- then [ScriptTransfer(aZ, cz, gd)]
810+ else fromBase58String(fQ)
811+ let gh = if ((cC > 0))
812+ then [ScriptTransfer(bc, cC, gg)]
807813 else nil
808- let dD = ([ScriptTransfer(dj, fX, gd), StringEntry(ai(toString(dj), dg), bL(fZ, ga, dN, gc, height, lastBlock.timestamp)), IntegerEntry(ab(), gc), IntegerEntry(ac(height, lastBlock.timestamp), gc)] ++ ge)
809- if ((dD == dD))
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))
810816 then {
811- let gf = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
812- if ((gf == gf))
817+ let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
818+ if ((gi == gi))
813819 then {
814- let gg = {
815- let gh = if ((this == aZ))
820+ let gj = {
821+ let gk = if ((this == bc))
816822 then 0
817- else cz
818- let gi = if ((be(fN) == bo))
823+ else cC
824+ let gl = if ((bh(fQ) == br))
819825 then true
820826 else false
821- if (gi)
822- then $Tuple2(-((fW + gh)), 0)
823- else $Tuple2(0, -((fW + gh)))
827+ if (gl)
828+ then $Tuple2(-((fZ + gk)), 0)
829+ else $Tuple2(0, -((fZ + gk)))
824830 }
825- let eV = gg._1
826- let eW = gg._2
827- let gj = eU(eV, eW, 0)
828- let gk = gj._1
829- let eL = gj._2
830- let gl = eY(eT, eL)
831- if ((gl == gl))
832- then $Tuple2((dD ++ gk), fX)
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)
833839 else throw("Strict value is not equal to itself.")
834840 }
835841 else throw("Strict value is not equal to itself.")
836842 }
837843 else throw("Strict value is not equal to itself.")
838844 }
839845 else throw("Strict value is not equal to itself.")
840846 }
841847 }
842848 else throw("Strict value is not equal to itself.")
843849 }
844850
845851
846-func gm () = {
847- let gn = getString(Z())
848- if ($isInstanceOf(gn, "String"))
852+func gp () = {
853+ let gq = getString(Z())
854+ if ($isInstanceOf(gq, "String"))
849855 then {
850- let cE = gn
851- fromBase58String(cE)
856+ let cH = gq
857+ fromBase58String(cH)
852858 }
853- else if ($isInstanceOf(gn, "Unit"))
859+ else if ($isInstanceOf(gq, "Unit"))
854860 then unit
855861 else throw("Match error")
856862 }
857863
858864
859-func go () = {
860- let gn = getString(aa())
861- if ($isInstanceOf(gn, "String"))
865+func gr () = {
866+ let gq = getString(aa())
867+ if ($isInstanceOf(gq, "String"))
862868 then {
863- let cE = gn
864- fromBase58String(cE)
869+ let cH = gq
870+ fromBase58String(cH)
865871 }
866- else if ($isInstanceOf(gn, "Unit"))
872+ else if ($isInstanceOf(gq, "Unit"))
867873 then unit
868874 else throw("Match error")
869875 }
870876
871877
872-let gp = throw("Permission denied")
878+let gs = throw("Permission denied")
873879
874-func gq (cR) = {
875- let gn = gm()
876- if ($isInstanceOf(gn, "ByteVector"))
880+func gt (cU) = {
881+ let gq = gp()
882+ if ($isInstanceOf(gq, "ByteVector"))
877883 then {
878- let gr = gn
879- (cR.callerPublicKey == gr)
884+ let gu = gq
885+ (cU.callerPublicKey == gu)
880886 }
881- else if ($isInstanceOf(gn, "Unit"))
882- then (cR.caller == this)
887+ else if ($isInstanceOf(gq, "Unit"))
888+ then (cU.caller == this)
883889 else throw("Match error")
884890 }
885891
886892
887-func gs (cR) = {
888- let gn = gm()
889- if ($isInstanceOf(gn, "ByteVector"))
893+func gv (cU) = {
894+ let gq = gp()
895+ if ($isInstanceOf(gq, "ByteVector"))
890896 then {
891- let gr = gn
892- if ((cR.callerPublicKey == gr))
897+ let gu = gq
898+ if ((cU.callerPublicKey == gu))
893899 then true
894- else gp
900+ else gs
895901 }
896- else if ($isInstanceOf(gn, "Unit"))
897- then if ((cR.caller == this))
902+ else if ($isInstanceOf(gq, "Unit"))
903+ then if ((cU.caller == this))
898904 then true
899- else gp
905+ else gs
900906 else throw("Match error")
901907 }
902908
903909
904-func gt (gu,ev,gv) = {
905- let bi = ba()
906- let dl = bi[w]
907- let dm = bi[x]
908- let ew = g
909- let ey = parseBigIntValue(l)
910- let cF = (parseBigIntValue(aW) * ey)
911- let cB = if ((gu == false))
912- then [(toBigInt(bP(dl)) + gv), toBigInt(bP(dm))]
913- else [(toBigInt(bP(dm)) + gv), toBigInt(bP(dl))]
914- let ex = cB[0]
915- let cE = ex
916- let cG = (cF * ew)
917- let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
918- let eA = ((cE + ((ev * ey) / cG)) - ev)
919- func cP (cQ,eB) = {
920- let gw = cQ
921- let eD = gw._1
922- let de = gw._2
923- if ((de != unit))
924- then cQ
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
925931 else {
926- let eE = (((eD * eD) + ez) / ((g * eD) + eA))
927- let eF = X((eE - value(eD)))
928- if ((f >= eF))
929- then $Tuple2(eE, eB)
930- else $Tuple2(eE, unit)
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)
931937 }
932938 }
933939
934- let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
935- let gx = {
936- let cX = cV
937- let cY = size(cX)
938- let cZ = $Tuple2(ev, unit)
939- func da (db,dc) = if ((dc >= cY))
940- then db
941- else cP(db, cX[dc])
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])
942948
943- func dd (db,dc) = if ((dc >= cY))
944- then db
949+ func dg (de,df) = if ((df >= db))
950+ then de
945951 else throw("List size exceeds 15")
946952
947- dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
948954 }
949- let eD = gx._1
950- let de = gx._2
951- if ((de != unit))
952- then eD
953- else throw(("Y calculation error, Y = " + toString(eD)))
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)))
954960 }
955961
956962
957-func gy () = valueOrElse(getBoolean(aS, aE(toString(this))), false)
963+func gB () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
958964
959965
960-@Callable(cR)
961-func calculateAmountOutForSwapREADONLY (gz,gu,gA) = {
962- let gB = if ((gu == false))
966+@Callable(cU)
967+func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968+ let gE = if ((gx == false))
963969 then {
964- let gC = aL(this, ak())
965- let gv = (toBigInt(bP(aL(this, aj()))) + toBigInt(gz))
966- $Tuple2(gC, gv)
970+ let gF = aO(this, ak())
971+ let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
972+ $Tuple2(gF, gy)
967973 }
968974 else {
969- let gC = aL(this, aj())
970- let gv = (toBigInt(bP(aL(this, ak()))) + toBigInt(gz))
971- $Tuple2(gC, gv)
975+ let gF = aO(this, aj())
976+ let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
977+ $Tuple2(gF, gy)
972978 }
973- let gC = gB._1
974- let gv = gB._2
975- let bi = ba()
976- let dl = bi[w]
977- let dm = bi[x]
978- let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
979- let ev = cA(cB)
980- let eD = gt(gu, ev, toBigInt(gz))
981- let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
982- let gE = max([0, toInt(gD)])
983- let gF = if ((gu == false))
984- then [((toBigInt(bP(dl)) + toBigInt(gz)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
985- else [(toBigInt(bP(dl)) - gD), ((toBigInt(bP(dm)) + toBigInt(gz)) + toBigInt(gA))]
986- let gG = cA(gF)
987- let ea = if ((gG >= ev))
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))
988994 then true
989- else throw(makeString(["new D is fewer error", toString(ev), toString(gG)], "__"))
990- if ((ea == ea))
991- then $Tuple2(nil, gE)
995+ else throw(makeString(["new D is fewer error", toString(ey), toString(gJ)], "__"))
996+ if ((ed == ed))
997+ then $Tuple2(nil, gH)
992998 else throw("Strict value is not equal to itself.")
993999 }
9941000
9951001
9961002
997-@Callable(cR)
998-func calculateAmountOutForSwapAndSendTokens (gz,gu,gH,gI,gA) = {
999- let gJ = {
1000- let aU = invoke(aS, "getSwapContractREADONLY", nil, nil)
1001- if ($isInstanceOf(aU, "String"))
1002- then aU
1003- else throw(($getType(aU) + " couldn't be cast to String"))
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"))
10041010 }
1005- let gK = [if ((value(cR.payments[0]).amount >= gz))
1011+ let gN = [if ((value(cU.payments[0]).amount >= gC))
10061012 then true
1007- else aP("Wrong amount"), if ((cR.caller == addressFromStringValue(gJ)))
1013+ else aS("Wrong amount"), if ((cU.caller == addressFromStringValue(gM)))
10081014 then true
1009- else aP("Permission denied")]
1010- if ((gK == gK))
1015+ else aS("Permission denied")]
1016+ if ((gN == gN))
10111017 then {
1012- let fm = value(cR.payments[0])
1013- let gL = bg(fm.assetId)
1014- let gM = if ((gu == false))
1018+ let fp = value(cU.payments[0])
1019+ let gO = bj(fp.assetId)
1020+ let gP = if ((gx == false))
10151021 then {
1016- let gC = aL(this, ak())
1017- let gv = (bP(gL) - value(cR.payments[0]).amount)
1018- $Tuple2(gC, gv)
1022+ let gF = aO(this, ak())
1023+ let gy = (bS(gO) - value(cU.payments[0]).amount)
1024+ $Tuple2(gF, gy)
10191025 }
10201026 else {
1021- let gC = aL(this, aj())
1022- let gv = (bP(gL) - value(cR.payments[0]).amount)
1023- $Tuple2(gC, gv)
1027+ let gF = aO(this, aj())
1028+ let gy = (bS(gO) - value(cU.payments[0]).amount)
1029+ $Tuple2(gF, gy)
10241030 }
1025- let gC = gM._1
1026- let gv = gM._2
1027- let bi = ba()
1028- let dl = bi[w]
1029- let dm = bi[x]
1030- let cB = if ((gu == false))
1031- then [(toBigInt(bP(dl)) - toBigInt(value(cR.payments[0]).amount)), toBigInt(bP(dm))]
1032- else [toBigInt(bP(dl)), (toBigInt(bP(dm)) - toBigInt(value(cR.payments[0]).amount))]
1033- let ev = cA(cB)
1034- let eD = gt(gu, ev, toBigInt(0))
1035- let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
1036- let gE = max([0, toInt(gD)])
1037- let gN = if ((gE >= gH))
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))
10381044 then true
10391045 else throw("Exchange result is fewer coins than expected")
1040- if ((gN == gN))
1046+ if ((gQ == gQ))
10411047 then {
1042- let gF = if ((gu == false))
1043- then [(toBigInt(bP(dl)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
1044- else [(toBigInt(bP(dl)) - gD), (toBigInt(bP(dm)) + toBigInt(gA))]
1045- let gG = cA(gF)
1046- let ea = if ((gG >= ev))
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))
10471053 then true
10481054 else throw("new D is fewer error")
1049- if ((ea == ea))
1050- then $Tuple2([ScriptTransfer(addressFromStringValue(gI), gE, be(gC))], gE)
1055+ if ((ed == ed))
1056+ then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bh(gF))], gH)
10511057 else throw("Strict value is not equal to itself.")
10521058 }
10531059 else throw("Strict value is not equal to itself.")
10541060 }
10551061 else throw("Strict value is not equal to itself.")
10561062 }
10571063
10581064
10591065
1060-@Callable(cR)
1066+@Callable(cU)
10611067 func constructor (Y) = {
1062- let ez = gs(cR)
1063- if ((ez == ez))
1068+ let eC = gv(cU)
1069+ if ((eC == eC))
10641070 then [StringEntry(Y(), Y)]
10651071 else throw("Strict value is not equal to itself.")
10661072 }
10671073
10681074
10691075
1070-@Callable(cR)
1071-func setManager (gO) = {
1072- let ez = gs(cR)
1073- if ((ez == ez))
1076+@Callable(cU)
1077+func setManager (gR) = {
1078+ let eC = gv(cU)
1079+ if ((eC == eC))
10741080 then {
1075- let gP = fromBase58String(gO)
1076- if ((gP == gP))
1077- then [StringEntry(aa(), gO)]
1081+ let gS = fromBase58String(gR)
1082+ if ((gS == gS))
1083+ then [StringEntry(aa(), gR)]
10781084 else throw("Strict value is not equal to itself.")
10791085 }
10801086 else throw("Strict value is not equal to itself.")
10811087 }
10821088
10831089
10841090
1085-@Callable(cR)
1091+@Callable(cU)
10861092 func confirmManager () = {
1087- let cw = go()
1088- let gQ = if (isDefined(cw))
1093+ let cz = gr()
1094+ let gT = if (isDefined(cz))
10891095 then true
10901096 else throw("No pending manager")
1091- if ((gQ == gQ))
1097+ if ((gT == gT))
10921098 then {
1093- let gR = if ((cR.callerPublicKey == value(cw)))
1099+ let gU = if ((cU.callerPublicKey == value(cz)))
10941100 then true
10951101 else throw("You are not pending manager")
1096- if ((gR == gR))
1097- then [StringEntry(Z(), toBase58String(value(cw))), DeleteEntry(aa())]
1102+ if ((gU == gU))
1103+ then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
10981104 else throw("Strict value is not equal to itself.")
10991105 }
11001106 else throw("Strict value is not equal to itself.")
11011107 }
11021108
11031109
11041110
1105-@Callable(cR)
1106-func put (gS,gT) = {
1107- let gU = bu()
1108- let gV = valueOrErrorMessage(addressFromString(gU[C]), "Wr st addr")
1109- let gW = valueOrErrorMessage(addressFromString(gU[E]), "Wr sl addr")
1110- if ((0 > gS))
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))
11111117 then throw("Wrong slippage")
1112- else if ((size(cR.payments) != 2))
1118+ else if ((size(cU.payments) != 2))
11131119 then throw("2 pmnts expd")
11141120 else {
1115- let gX = toBigInt(value(cR.payments[0]).amount)
1116- let gY = toBigInt(value(cR.payments[1]).amount)
1117- let eQ = (toBigInt(bP(bg(bo))) - gX)
1118- if ((eQ == eQ))
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))
11191125 then {
1120- let eR = (toBigInt(bP(bg(bp))) - gY)
1121- if ((eR == eR))
1126+ let eU = (toBigInt(bS(bj(bs))) - hb)
1127+ if ((eU == eU))
11221128 then {
1123- let eS = toBigInt(value(assetInfo(bn)).quantity)
1124- if ((eS == eS))
1129+ let eV = toBigInt(value(assetInfo(bq)).quantity)
1130+ if ((eV == eV))
11251131 then {
1126- let eT = eM(gX, gY, toBigInt(0))
1127- if ((eT == eT))
1132+ let eW = eP(ha, hb, toBigInt(0))
1133+ if ((eW == eW))
11281134 then {
1129- let gZ = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], gS, true, false, true, 0, "")
1130- let en = gZ._2
1131- let ha = gZ._7
1132- let dD = gZ._9
1133- let eo = gZ._10
1134- let ep = gZ._11
1135- let dl = gZ._12
1136- let dm = gZ._13
1137- let dZ = invoke(aS, "emit", [en], nil)
1138- if ((dZ == dZ))
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))
11391145 then {
1140- let hb = {
1141- let gn = dZ
1142- if ($isInstanceOf(gn, "Address"))
1146+ let he = {
1147+ let gq = ec
1148+ if ($isInstanceOf(gq, "Address"))
11431149 then {
1144- let hc = gn
1145- invoke(hc, "emit", [en], nil)
1150+ let hf = gq
1151+ invoke(hf, "emit", [eq], nil)
11461152 }
11471153 else unit
11481154 }
1149- if ((hb == hb))
1155+ if ((he == he))
11501156 then {
1151- let hd = if ((eo > 0))
1152- then invoke(gW, "put", nil, [AttachedPayment(dl, eo)])
1157+ let hg = if ((er > 0))
1158+ then invoke(gZ, "put", nil, [AttachedPayment(do, er)])
11531159 else nil
1154- if ((hd == hd))
1160+ if ((hg == hg))
11551161 then {
1156- let he = if ((ep > 0))
1157- then invoke(gW, "put", nil, [AttachedPayment(dm, ep)])
1162+ let hh = if ((es > 0))
1163+ then invoke(gZ, "put", nil, [AttachedPayment(dp, es)])
11581164 else nil
1159- if ((he == he))
1165+ if ((hh == hh))
11601166 then {
1161- let hf = if (gT)
1167+ let hi = if (gW)
11621168 then {
1163- let hg = invoke(gV, "stake", nil, [AttachedPayment(ha, en)])
1164- if ((hg == hg))
1169+ let hj = invoke(gY, "stake", nil, [AttachedPayment(hd, eq)])
1170+ if ((hj == hj))
11651171 then nil
11661172 else throw("Strict value is not equal to itself.")
11671173 }
1168- else [ScriptTransfer(cR.caller, en, ha)]
1169- let hh = eU(0, 0, 0)
1170- let gk = hh._1
1171- let eL = hh._2
1172- let hi = if ((eL >= eT))
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))
11731179 then true
1174- else aP(makeString(["updated DLp lower than current DLp", toString(eQ), toString(eR), toString(eS), toString(eT), toString(eL), toString(eo), toString(ep)], " "))
1175- if ((hi == hi))
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))
11761182 then {
1177- let hj = value(assetInfo(bn)).quantity
1178- if ((hj == hj))
1179- then ((dD ++ hf) ++ gk)
1183+ let hm = value(assetInfo(bq)).quantity
1184+ if ((hm == hm))
1185+ then ((dG ++ hi) ++ gn)
11801186 else throw("Strict value is not equal to itself.")
11811187 }
11821188 else throw("Strict value is not equal to itself.")
11831189 }
11841190 else throw("Strict value is not equal to itself.")
11851191 }
11861192 else throw("Strict value is not equal to itself.")
11871193 }
11881194 else throw("Strict value is not equal to itself.")
11891195 }
11901196 else throw("Strict value is not equal to itself.")
11911197 }
11921198 else throw("Strict value is not equal to itself.")
11931199 }
11941200 else throw("Strict value is not equal to itself.")
11951201 }
11961202 else throw("Strict value is not equal to itself.")
11971203 }
11981204 else throw("Strict value is not equal to itself.")
11991205 }
12001206 }
12011207
12021208
12031209
1204-@Callable(cR)
1205-func putOneTknV2 (fO,gT) = {
1206- let hk = {
1207- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1208- if ($isInstanceOf(aU, "Boolean"))
1209- then aU
1210- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
12111217 }
1212- let hl = if (if (if (aX())
1218+ let ho = if (if (if (ba())
12131219 then true
1214- else (bm == q))
1220+ else (bp == q))
12151221 then true
1216- else (bm == s))
1222+ else (bp == s))
12171223 then true
1218- else hk
1219- let gK = [if (if (!(hl))
1224+ else hn
1225+ let gN = [if (if (!(ho))
12201226 then true
1221- else gq(cR))
1227+ else gt(cU))
12221228 then true
1223- else aP("put operation is blocked by admin"), if ((size(cR.payments) == 1))
1229+ else aS("put operation is blocked by admin"), if ((size(cU.payments) == 1))
12241230 then true
1225- else aP("exactly 1 payment are expected")]
1226- if ((gK == gK))
1231+ else aS("exactly 1 payment are expected")]
1232+ if ((gN == gN))
12271233 then {
1228- let dl = toBase58String(value(bo))
1229- let dm = toBase58String(value(bp))
1230- let dk = bn
1231- let fS = bq
1232- let fT = br
1233- let dj = if ((cR.caller == this))
1234- then cR.originCaller
1235- else cR.caller
1236- let fm = value(cR.payments[0])
1237- let dh = toBase58String(value(fm.assetId))
1238- let dN = fm.amount
1239- let eT = if ((fm.assetId == bo))
1240- then eM(toBigInt(dN), toBigInt(0), toBigInt(0))
1241- else eM(toBigInt(0), toBigInt(dN), toBigInt(0))
1242- if ((eT == eT))
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))
12431249 then {
1244- let hm = fr(dN, dh, toString(dj), toBase58String(cR.transactionId), true)
1245- if ((hm == hm))
1250+ let hp = fu(dQ, dk, toString(dm), toBase58String(cU.transactionId), true)
1251+ if ((hp == hp))
12461252 then {
1247- let cz = hm._3
1248- let dD = hm._2
1249- let hn = hm._1
1250- let en = if (if ((fO > 0))
1251- then (fO > hn)
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)
12521258 else false)
1253- then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
1254- else hn
1255- let gZ = invoke(aS, "emit", [en], nil)
1256- if ((gZ == gZ))
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))
12571263 then {
1258- let hb = {
1259- let gn = gZ
1260- if ($isInstanceOf(gn, "Address"))
1264+ let he = {
1265+ let gq = hc
1266+ if ($isInstanceOf(gq, "Address"))
12611267 then {
1262- let hc = gn
1263- invoke(hc, "emit", [en], nil)
1268+ let hf = gq
1269+ invoke(hf, "emit", [eq], nil)
12641270 }
12651271 else unit
12661272 }
1267- if ((hb == hb))
1273+ if ((he == he))
12681274 then {
1269- let hf = if (gT)
1275+ let hi = if (gW)
12701276 then {
1271- let hg = invoke(bw, "stakeFor", [toString(cR.caller)], [AttachedPayment(dk, en)])
1272- if ((hg == hg))
1277+ let hj = invoke(bz, "stakeFor", [toString(cU.caller)], [AttachedPayment(dn, eq)])
1278+ if ((hj == hj))
12731279 then nil
12741280 else throw("Strict value is not equal to itself.")
12751281 }
1276- else [ScriptTransfer(cR.caller, en, dk)]
1277- let ge = if ((cz > 0))
1278- then [ScriptTransfer(aZ, cz, fromBase58String(dh))]
1282+ else [ScriptTransfer(cU.caller, eq, dn)]
1283+ let gh = if ((cC > 0))
1284+ then [ScriptTransfer(bc, cC, fromBase58String(dk))]
12791285 else nil
1280- let ho = if ((this == aZ))
1286+ let hr = if ((this == bc))
12811287 then $Tuple2(0, 0)
12821288 else {
1283- let hp = if ((fm.assetId == bo))
1289+ let hs = if ((fp.assetId == br))
12841290 then true
12851291 else false
1286- if (hp)
1287- then $Tuple2(-(cz), 0)
1288- else $Tuple2(0, -(cz))
1292+ if (hs)
1293+ then $Tuple2(-(cC), 0)
1294+ else $Tuple2(0, -(cC))
12891295 }
1290- let eV = ho._1
1291- let eW = ho._2
1292- let hq = eU(eV, eW, 0)
1293- let gk = hq._1
1294- let eL = hq._2
1295- let gl = eY(eT, eL)
1296- if ((gl == gl))
1297- then $Tuple2((((dD ++ hf) ++ ge) ++ gk), en)
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)
12981304 else throw("Strict value is not equal to itself.")
12991305 }
13001306 else throw("Strict value is not equal to itself.")
13011307 }
13021308 else throw("Strict value is not equal to itself.")
13031309 }
13041310 else throw("Strict value is not equal to itself.")
13051311 }
13061312 else throw("Strict value is not equal to itself.")
13071313 }
13081314 else throw("Strict value is not equal to itself.")
13091315 }
13101316
13111317
13121318
1313-@Callable(cR)
1314-func putForFree (hr) = if ((0 > hr))
1319+@Callable(cU)
1320+func putForFree (hu) = if ((0 > hu))
13151321 then throw("Wrong slpg")
1316- else if ((size(cR.payments) != 2))
1322+ else if ((size(cU.payments) != 2))
13171323 then throw("2 pmnts expd")
13181324 else {
1319- let hs = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], hr, false, false, true, 0, "")
1320- let dD = hs._9
1321- let gX = toBigInt(value(cR.payments[0]).amount)
1322- let gY = toBigInt(value(cR.payments[1]).amount)
1323- let eT = eM(gX, gY, toBigInt(0))
1324- if ((eT == eT))
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))
13251331 then {
1326- let ht = eU(0, 0, 0)
1327- let gk = ht._1
1328- let eL = ht._2
1329- let gl = eY(eT, eL)
1330- if ((gl == gl))
1331- then (dD ++ gk)
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)
13321338 else throw("Strict value is not equal to itself.")
13331339 }
13341340 else throw("Strict value is not equal to itself.")
13351341 }
13361342
13371343
13381344
1339-@Callable(cR)
1345+@Callable(cU)
13401346 func get () = {
1341- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1342- if ((eT == eT))
1347+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1348+ if ((eW == eW))
13431349 then {
1344- let dZ = fl(cR)
1345- let hu = dZ._1
1346- let dC = dZ._2
1347- let dN = dZ._3
1348- let dh = dZ._4
1349- let dD = dZ._5
1350- let eA = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
1351- if ((eA == eA))
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))
13521358 then {
1353- let hv = eU(-(hu), -(dC), 0)
1354- let gk = hv._1
1355- let eL = hv._2
1356- let gl = eY(eT, eL)
1357- if ((gl == gl))
1358- then (dD ++ gk)
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)
13591365 else throw("Strict value is not equal to itself.")
13601366 }
13611367 else throw("Strict value is not equal to itself.")
13621368 }
13631369 else throw("Strict value is not equal to itself.")
13641370 }
13651371
13661372
13671373
1368-@Callable(cR)
1369-func getOneTknV2 (fN,fO) = {
1370- let hk = {
1371- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1372- if ($isInstanceOf(aU, "Boolean"))
1373- then aU
1374- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
13751381 }
1376- let hw = if (if (aX())
1382+ let hz = if (if (ba())
13771383 then true
1378- else (bm == s))
1384+ else (bp == s))
13791385 then true
1380- else hk
1381- let gK = [if (if (!(hw))
1386+ else hn
1387+ let gN = [if (if (!(hz))
13821388 then true
1383- else gq(cR))
1389+ else gt(cU))
13841390 then true
1385- else aP("get operation is blocked by admin"), if ((size(cR.payments) == 1))
1391+ else aS("get operation is blocked by admin"), if ((size(cU.payments) == 1))
13861392 then true
1387- else aP("exactly 1 payment are expected")]
1388- if ((gK == gK))
1393+ else aS("exactly 1 payment are expected")]
1394+ if ((gN == gN))
13891395 then {
1390- let hx = fM(fN, fO, cR.payments, cR.caller, cR.originCaller, cR.transactionId)
1391- let dD = hx._1
1392- let fX = hx._2
1393- $Tuple2(dD, fX)
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)
13941400 }
13951401 else throw("Strict value is not equal to itself.")
13961402 }
13971403
13981404
13991405
1400-@Callable(cR)
1406+@Callable(cU)
14011407 func refreshDLp () = {
1402- let hy = valueOrElse(getInteger(aq), 0)
1403- let hz = if (((height - hy) >= at))
1408+ let hB = valueOrElse(getInteger(at), 0)
1409+ let hC = if (((height - hB) >= aw))
14041410 then unit
1405- else aP(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1406- if ((hz == hz))
1411+ else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1412+ if ((hC == hC))
14071413 then {
1408- let ff = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aR("invalid dLp"))
1409- let hA = eU(0, 0, 0)
1410- let hB = hA._1
1411- let eL = hA._2
1412- let eX = if ((ff != eL))
1413- then hB
1414- else aP("nothing to refresh")
1415- $Tuple2(eX, toString(eL))
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))
14161422 }
14171423 else throw("Strict value is not equal to itself.")
14181424 }
14191425
14201426
14211427
1422-@Callable(cR)
1423-func getOneTknV2READONLY (fN,hC) = {
1424- let dl = toBase58String(value(bo))
1425- let dm = toBase58String(value(bp))
1426- let dk = toBase58String(value(bn))
1427- let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
1428- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dk)), "invalid lp asset").quantity)
1429- let cd = cA(cB)
1430- let cc = (cd - fraction(toBigInt(hC), cd, eK))
1431- let hD = if ((fN == dl))
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))
14321438 then 0
1433- else if ((fN == dm))
1439+ else if ((fQ == dp))
14341440 then 1
14351441 else throw("invalid out asset id")
1436- let hE = eu(cB, hD, cc)
1437- let gD = (cB[hD] - hE)
1438- let gE = max([0, toInt((gD - f))])
1439- let hF = cx(gE, aV)
1440- let fW = hF._1
1441- let cz = hF._2
1442- $Tuple2(nil, $Tuple2(fW, cz))
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))
14431449 }
14441450
14451451
14461452
1447-@Callable(cR)
1448-func getOneTknV2WithBonusREADONLY (fN,hC) = {
1449- let dl = toBase58String(value(bo))
1450- let dm = toBase58String(value(bp))
1451- let dk = toBase58String(value(bn))
1452- let dr = bP(dl)
1453- let dt = bP(dm)
1454- let hG = {
1455- let aU = invoke(this, "getOneTknV2READONLY", [fN, hC], nil)
1456- if ($isInstanceOf(aU, "(Int, Int)"))
1457- then aU
1458- else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
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)"))
14591465 }
1460- let fW = hG._1
1461- let cz = hG._2
1462- let dZ = df("", dk, hC, this)
1463- let dB = dZ._1
1464- let dC = dZ._2
1465- let hH = (dB + dC)
1466- let fL = if ((hH == 0))
1467- then if ((fW == 0))
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))
14681474 then 0
14691475 else throw("bonus calculation error")
1470- else fraction((fW - hH), a, hH)
1471- $Tuple2(nil, $Tuple3(fW, cz, fL))
1476+ else fraction((fZ - hK), a, hK)
1477+ $Tuple2(nil, $Tuple3(fZ, cC, fO))
14721478 }
14731479
14741480
14751481
1476-@Callable(cR)
1477-func getNoLess (hI,hJ) = {
1478- let dZ = fl(cR)
1479- let dB = dZ._1
1480- let dC = dZ._2
1481- let dN = dZ._3
1482- let dh = dZ._4
1483- let dD = dZ._5
1484- if ((hI > dB))
1485- then throw(((("Failed: " + toString(dB)) + " < ") + toString(hI)))
1486- else if ((hJ > dC))
1487- then throw(((("Failed: " + toString(dC)) + " < ") + toString(hJ)))
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)))
14881494 else {
1489- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1490- if ((eT == eT))
1495+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1496+ if ((eW == eW))
14911497 then {
1492- let hK = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
1493- if ((hK == hK))
1498+ let hN = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
1499+ if ((hN == hN))
14941500 then {
1495- let hL = eU(-(dB), -(dC), 0)
1496- let gk = hL._1
1497- let eL = hL._2
1498- let gl = eY(eT, eL)
1499- if ((gl == gl))
1500- then (dD ++ gk)
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)
15011507 else throw("Strict value is not equal to itself.")
15021508 }
15031509 else throw("Strict value is not equal to itself.")
15041510 }
15051511 else throw("Strict value is not equal to itself.")
15061512 }
15071513 }
15081514
15091515
15101516
1511-@Callable(cR)
1512-func unstakeAndGet (cy) = {
1513- let hM = if ((size(cR.payments) != 0))
1517+@Callable(cU)
1518+func unstakeAndGet (cB) = {
1519+ let hP = if ((size(cU.payments) != 0))
15141520 then throw("No pmnts expd")
15151521 else true
1516- if ((hM == hM))
1522+ if ((hP == hP))
15171523 then {
1518- let hN = bu()
1519- let ha = bn
1520- let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
1521- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1522- if ((eT == eT))
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))
15231529 then {
1524- let hP = invoke(hO, "unstake", [toBase58String(ha), cy], nil)
1525- if ((hP == hP))
1530+ let hS = invoke(hR, "unstake", [toBase58String(hd), cB], nil)
1531+ if ((hS == hS))
15261532 then {
1527- let dZ = df(toBase58String(cR.transactionId), toBase58String(ha), cy, cR.caller)
1528- let dB = dZ._1
1529- let dC = dZ._2
1530- let dp = parseIntValue(dZ._9)
1531- let dD = dZ._10
1532- let hQ = if (if (aX())
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())
15331539 then true
1534- else (dp == s))
1535- then throw(("Blocked: " + toString(dp)))
1540+ else (ds == s))
1541+ then throw(("Blocked: " + toString(ds)))
15361542 else true
1537- if ((hQ == hQ))
1543+ if ((hT == hT))
15381544 then {
1539- let hR = invoke(aS, "burn", [cy], [AttachedPayment(ha, cy)])
1540- if ((hR == hR))
1545+ let hU = invoke(aV, "burn", [cB], [AttachedPayment(hd, cB)])
1546+ if ((hU == hU))
15411547 then {
1542- let hS = eU(-(dB), -(dC), 0)
1543- let gk = hS._1
1544- let eL = hS._2
1545- let gl = eY(eT, eL)
1546- if ((gl == gl))
1547- then (dD ++ gk)
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)
15481554 else throw("Strict value is not equal to itself.")
15491555 }
15501556 else throw("Strict value is not equal to itself.")
15511557 }
15521558 else throw("Strict value is not equal to itself.")
15531559 }
15541560 else throw("Strict value is not equal to itself.")
15551561 }
15561562 else throw("Strict value is not equal to itself.")
15571563 }
15581564 else throw("Strict value is not equal to itself.")
15591565 }
15601566
15611567
15621568
1563-@Callable(cR)
1564-func unstakeAndGetNoLess (hT,hU,hJ) = {
1565- let hw = if (aX())
1569+@Callable(cU)
1570+func unstakeAndGetNoLess (hW,hX,hM) = {
1571+ let hz = if (ba())
15661572 then true
1567- else (bm == s)
1568- let gK = [if (!(hw))
1573+ else (bp == s)
1574+ let gN = [if (!(hz))
15691575 then true
1570- else throw("get operation is blocked by admin"), if ((size(cR.payments) == 0))
1576+ else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
15711577 then true
15721578 else throw("no payments are expected")]
1573- if ((gK == gK))
1579+ if ((gN == gN))
15741580 then {
1575- let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
1576- if ((eT == eT))
1581+ let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
1582+ if ((eW == eW))
15771583 then {
1578- let hP = invoke(bw, "unstake", [toBase58String(bn), hT], nil)
1579- if ((hP == hP))
1584+ let hS = invoke(bz, "unstake", [toBase58String(bq), hW], nil)
1585+ if ((hS == hS))
15801586 then {
1581- let hV = df(toBase58String(cR.transactionId), toBase58String(bn), hT, cR.caller)
1582- let dB = hV._1
1583- let dC = hV._2
1584- let dD = hV._10
1585- let hW = [if ((dB >= hU))
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))
15861592 then true
1587- else throw(makeString(["amount asset amount to receive is less than ", toString(hU)], "")), if ((dC >= hJ))
1593+ else throw(makeString(["amount asset amount to receive is less than ", toString(hX)], "")), if ((dF >= hM))
15881594 then true
1589- else throw(makeString(["price asset amount to receive is less than ", toString(hJ)], ""))]
1590- if ((hW == hW))
1595+ else throw(makeString(["price asset amount to receive is less than ", toString(hM)], ""))]
1596+ if ((hZ == hZ))
15911597 then {
1592- let hK = invoke(aS, "burn", [hT], [AttachedPayment(bn, hT)])
1593- if ((hK == hK))
1598+ let hN = invoke(aV, "burn", [hW], [AttachedPayment(bq, hW)])
1599+ if ((hN == hN))
15941600 then {
1595- let hX = eU(-(dB), -(dC), 0)
1596- let gk = hX._1
1597- let eL = hX._2
1598- let gl = eY(eT, eL)
1599- if ((gl == gl))
1600- then (dD ++ gk)
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)
16011607 else throw("Strict value is not equal to itself.")
16021608 }
16031609 else throw("Strict value is not equal to itself.")
16041610 }
16051611 else throw("Strict value is not equal to itself.")
16061612 }
16071613 else throw("Strict value is not equal to itself.")
16081614 }
16091615 else throw("Strict value is not equal to itself.")
16101616 }
16111617 else throw("Strict value is not equal to itself.")
16121618 }
16131619
16141620
16151621
1616-@Callable(cR)
1617-func unstakeAndGetOneTknV2 (hT,fN,fO) = {
1618- let hk = {
1619- let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1620- if ($isInstanceOf(aU, "Boolean"))
1621- then aU
1622- else throw(($getType(aU) + " couldn't be cast to Boolean"))
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"))
16231629 }
1624- let hw = if (if (aX())
1630+ let hz = if (if (ba())
16251631 then true
1626- else (bm == s))
1632+ else (bp == s))
16271633 then true
1628- else hk
1629- let gK = [if (if (!(hw))
1634+ else hn
1635+ let gN = [if (if (!(hz))
16301636 then true
1631- else gq(cR))
1637+ else gt(cU))
16321638 then true
1633- else aP("get operation is blocked by admin"), if ((size(cR.payments) == 0))
1639+ else aS("get operation is blocked by admin"), if ((size(cU.payments) == 0))
16341640 then true
1635- else aP("no payments are expected")]
1636- if ((gK == gK))
1641+ else aS("no payments are expected")]
1642+ if ((gN == gN))
16371643 then {
1638- let hN = bu()
1639- let ha = bn
1640- let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
1641- let dj = cR.caller
1642- let hY = this
1643- let hP = invoke(hO, "unstakeINTERNAL", [ha, hT, dj.bytes, hY.bytes], nil)
1644- if ((hP == hP))
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))
16451651 then {
1646- let hZ = fM(fN, fO, [AttachedPayment(ha, hT)], cR.caller, cR.originCaller, cR.transactionId)
1647- let dD = hZ._1
1648- let fX = hZ._2
1649- $Tuple2(dD, fX)
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)
16501656 }
16511657 else throw("Strict value is not equal to itself.")
16521658 }
16531659 else throw("Strict value is not equal to itself.")
16541660 }
16551661
16561662
16571663
1658-@Callable(cR)
1659-func putOneTknV2WithBonusREADONLY (ia,ib) = {
1660- let ic = fr(ia, ib, "", "", true)
1661- let fG = ic._1
1662- let dD = ic._2
1663- let cz = ic._3
1664- let fL = ic._4
1665- $Tuple2(nil, $Tuple3(fG, cz, fL))
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))
16661672 }
16671673
16681674
16691675
1670-@Callable(cR)
1671-func putOneTknV2WithoutTakeFeeREADONLY (ia,ib) = {
1672- let id = fr(ia, ib, "", "", false)
1673- let fG = id._1
1674- let dD = id._2
1675- let cz = id._3
1676- let fL = id._4
1677- $Tuple2(nil, $Tuple3(fG, cz, fL))
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))
16781684 }
16791685
16801686
16811687
1682-@Callable(cR)
1683-func activate (ie,if) = if ((toString(cR.caller) != toString(aS)))
1688+@Callable(cU)
1689+func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
16841690 then throw("denied")
1685- else $Tuple2([StringEntry(aj(), ie), StringEntry(ak(), if)], "success")
1691+ else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
16861692
16871693
16881694
1689-@Callable(cR)
1690-func setS (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
1691- then gp
1692- else [StringEntry(ig, hQ)]
1695+@Callable(cU)
1696+func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697+ then gs
1698+ else [StringEntry(ij, hT)]
16931699
16941700
16951701
1696-@Callable(cR)
1697-func setI (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
1698- then gp
1699- else [IntegerEntry(ig, hQ)]
1702+@Callable(cU)
1703+func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704+ then gs
1705+ else [IntegerEntry(ij, hT)]
17001706
17011707
17021708
1703-@Callable(cR)
1704-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1709+@Callable(cU)
1710+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
17051711
17061712
17071713
1708-@Callable(cR)
1709-func getAccBalanceWrapperREADONLY (bQ) = $Tuple2(nil, bP(bQ))
1714+@Callable(cU)
1715+func getAccBalanceWrapperREADONLY (bT) = $Tuple2(nil, bS(bT))
17101716
17111717
17121718
1713-@Callable(cR)
1714-func calcPricesWrapperREADONLY (cj,ck,co) = {
1715- let ih = cn(cj, ck, co)
1716- $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
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])])
17171723 }
17181724
17191725
17201726
1721-@Callable(cR)
1722-func fromX18WrapperREADONLY (M,ii) = $Tuple2(nil, L(parseBigIntValue(M), ii))
1727+@Callable(cU)
1728+func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
17231729
17241730
17251731
1726-@Callable(cR)
1732+@Callable(cU)
17271733 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17281734
17291735
17301736
1731-@Callable(cR)
1732-func calcPriceBigIntWrapperREADONLY (bS,bT) = $Tuple2(nil, toString(bR(parseBigIntValue(bS), parseBigIntValue(bT))))
1737+@Callable(cU)
1738+func calcPriceBigIntWrapperREADONLY (bV,bW) = $Tuple2(nil, toString(bU(parseBigIntValue(bV), parseBigIntValue(bW))))
17331739
17341740
17351741
1736-@Callable(cR)
1737-func estimatePutOperationWrapperREADONLY (dg,bY,dF,dG,dH,dI,ij,dJ,dK) = $Tuple2(nil, dE(dg, bY, dF, dG, dH, dI, ij, dJ, dK, true, false, 0, ""))
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, ""))
17381744
17391745
17401746
1741-@Callable(cR)
1742-func estimateGetOperationWrapperREADONLY (dg,ik,di,ij) = {
1743- let dZ = df(dg, ik, di, addressFromStringValue(ij))
1744- $Tuple2(nil, $Tuple10(dZ._1, dZ._2, dZ._3, dZ._4, dZ._5, dZ._6, dZ._7, toString(dZ._8), dZ._9, dZ._10))
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))
17451751 }
17461752
17471753
1748-@Verifier(il)
1749-func im () = {
1750- let in = {
1751- let gn = gm()
1752- if ($isInstanceOf(gn, "ByteVector"))
1754+
1755+@Callable(cU)
1756+func changeAmp () = {
1757+ let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758+ let ip = {
1759+ let gq = io
1760+ if ($isInstanceOf(gq, "List[Any]"))
17531761 then {
1754- let gr = gn
1755- gr
1762+ let iq = gq
1763+ $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"))
1768+ }, {
1769+ let aX = iq[1]
1770+ if ($isInstanceOf(aX, "Int"))
1771+ then aX
1772+ else throw(($getType(aX) + " couldn't be cast to Int"))
1773+ }, {
1774+ let aX = iq[2]
1775+ if ($isInstanceOf(aX, "Int"))
1776+ then aX
1777+ else throw(($getType(aX) + " couldn't be cast to Int"))
1778+ })
17561779 }
1757- else if ($isInstanceOf(gn, "Unit"))
1758- then il.senderPublicKey
1780+ else aS("invalid entry type")
1781+ }
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))
1797+ then true
1798+ else aS("try again in few blocks"), if ((iu != iw))
1799+ 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))]
1803+ else throw("Strict value is not equal to itself.")
1804+ }
1805+
1806+
1807+@Verifier(iz)
1808+func iA () = {
1809+ let iB = {
1810+ let gq = gp()
1811+ if ($isInstanceOf(gq, "ByteVector"))
1812+ then {
1813+ let gu = gq
1814+ gu
1815+ }
1816+ else if ($isInstanceOf(gq, "Unit"))
1817+ then iz.senderPublicKey
17591818 else throw("Match error")
17601819 }
1761- let gn = il
1762- if ($isInstanceOf(gn, "Order"))
1820+ let gq = iz
1821+ if ($isInstanceOf(gq, "Order"))
17631822 then {
1764- let fb = gn
1765- let io = aY()
1766- let ip = if (gy())
1823+ let fe = gq
1824+ let iC = bb()
1825+ let iD = if (gB())
17671826 then $Tuple2(true, "")
1768- else fa(fb)
1769- let aH = ip._1
1770- let aI = ip._2
1771- let aJ = sigVerify(fb.bodyBytes, fb.proofs[0], fb.senderPublicKey)
1772- let aK = sigVerify(fb.bodyBytes, fb.proofs[1], io)
1773- if (if (if (aH)
1774- then aJ
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)
1833+ then aM
17751834 else false)
1776- then aK
1835+ then aN
17771836 else false)
17781837 then true
1779- else aG(aH, aI, aJ, aK)
1838+ else aJ(aK, aL, aM, aN)
17801839 }
1781- else if ($isInstanceOf(gn, "SetScriptTransaction"))
1840+ else if ($isInstanceOf(gq, "SetScriptTransaction"))
17821841 then {
1783- let cE = gn
1784- if (sigVerify(il.bodyBytes, il.proofs[0], in))
1842+ let cH = gq
1843+ if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
17851844 then true
17861845 else {
1787- let iq = blake2b256(value(cE.script))
1788- let ir = fromBase64String(value(getString(aS, aC())))
1789- let is = scriptHash(this)
1790- if ((ir == iq))
1791- then (is != iq)
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)
17921851 else false
17931852 }
17941853 }
1795- else sigVerify(il.bodyBytes, il.proofs[0], in)
1854+ else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
17961855 }
17971856

github/deemru/w8io/6500d08 
705.69 ms