tx · FVjSRL7rA8gcrmNaJpvsGmU32Lbds9iiHbo9viX1yN9C

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03300000 Waves

2022.10.05 16:16 [2259075] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "FVjSRL7rA8gcrmNaJpvsGmU32Lbds9iiHbo9viX1yN9C", "fee": 3300000, "feeAssetId": null, "timestamp": 1664975765215, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5qmkiTgWLDVQaNL3tXGTbe6MzFciy1Q8bhzYPsDnJi6FmSFa5CFUwQPhkKm5QhCY81mGqXvENvFkjrPv8dN2GLLD" ], "script": "base64:BgLAIQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIAEgQKAggIEgQKAggIEgQKAggBEgASAwoBCBIFCgMBAQESBAoCCAESBAoCAQESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSACIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiCnNsaXBwYWdlNEQiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIGa2V5RmVlIgNmZWUiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIDZmNhIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNjMyNzE2NjcyIgp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IhNlc3RpbWF0ZVB1dE9uZVRrblYyIglwbXRBbXRSYXciCnBvb2xDb25maWciDSR0MDIxMDAzMjEwNDgiDSR0MDIxMDUyMjE1MTMiDGFtQmFsYW5jZU5vdyIMcHJCYWxhbmNlTm93Ig0kdDAyMTUxNzIxNjUxIhBhbUJhbGFuY2VGb3JDYWxjIhBwckJhbGFuY2VGb3JDYWxjIgp4UHJlY2lzaW9uIgZyZXN1bHQiAUAiDSR0MDIyMTIwMjIyMTYiC2FtQXNzZXRQYXJ0IgtwckFzc2V0UGFydCIGZXN0UHV0Igdlc3RpbUxQIglscEFzc2V0SWQiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMjM1NzEyMzY3OSIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAyMzg2NjIzOTUzIgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iBGdldEQiAnhwIgFuIgN4cDAiA3hwMSIKYVByZWNpc2lvbiIBYSIBcyIDYW5uIgRjYWxjIgNhY2MiA2N1ciINJHQwMjUxMTkyNTEzOSIBZCIFZm91bmQiAmRwIgVkTmV4dCIFZERpZmYiA2FyciINJHQwMjU1NjYyNTYxMiICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiAW0iAnBtIgJwZCICbW0iAnBrIgFjIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiBW91dExwIgdnd3hDbnRyIgdwb29sQ2ZnIgVhZGRvbiIQcGF5bWVudEFtb3VudFJhdyINJHQwMzAzMjIzMDM3NCINJHQwMzA1MzQzMTE1MCIMdmlydFN3YXBJbkFtIg12aXJ0U3dhcE91dFByIgx2aXJ0U3dhcEluUHIiDXZpcnRTd2FwT3V0QW0iBkQwdnNEMSIJbHBDYWxjUmVzIg1wYXltZW50QW1vdW50Ig5wYXltZW50QXNzZXRJZCIPbHBBc3NldEVtaXNzaW9uIg5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyIHbWF4U2xwZyIJb3V0QW10QW10IgFiIgpleGNoUmVzdWx0Igdub3RVc2VkIglvdXRBbW91bnQiCmVzdGltQW1BbXQiCmVzdGltUHJBbXQiDSR0MDM5NDA1Mzk4NjUiC3RvdGFsR2V0UmF3IghmaW5hbFJlcyINJHQwNDA2MTI0MDcxNiINJHQwNDE3NDE0MTg5NiINbHBBc3NldEFtb3VudCINJHQwNDI0MDY0MjcxNCIUYW1vdW50QmFsYW5jZUZvclN3YXAiE3ByaWNlQmFsYW5jZUZvclN3YXAiDGFtb3VudFRvU3dhcCILYW1vdW50VG9BZGQiCnlQcmVjaXNpb24iDSR0MDQzMjQyNDMyOTEiDSR0MDQzNjM1NDM3NTAiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ2MDU1NDYyNDMiB3BheW1lbnQiDHBheW1lbnRBc3NldCINJHQwNDY1NzI0NjYzMSINJHQwNDY2MzU0NjkwNSIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCmxwRW1pc3Npb24iCGxwQW1vdW50IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2haAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABaAIDMTAwAAFpAgExAAFqAgJfXwABawIAAAFsAAEAAW0AAgABbgADAAFvAAQAAXAAAQABcQACAAFyAAMAAXMABAABdAAFAAF1AAYAAXYABwABdwAIAAF4AAkAAXkAAQABegAHAAFBAAoAAUIJAGsDAAUFAWEAkE4BAUMCAUQBRQkAvAIDCQC2AgEFAUQFAWMJALYCAQUBRQEBRgIBRwFICQCgAwEJALwCAwUBRwkAtgIBBQFIBQFjAQFJAwFKAUsBTAkAawMFAUoFAUsFAUwBAU0BAUcDCQC/AgIFAWQFAUcJAL4CAQUBRwUBRwEBTgEBRwMJAL8CAgUBZAUBRwkAvgIBBQFHBQFHAQFPAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUAACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFRAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFSAAIRJXMlc19fcHJpY2VfX2xhc3QBAVMCAVQBVQkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVQJAMwIAgkApAMBBQFVBQNuaWwFAWoBAVYCAVcBWAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVcCAl9fBQFYAQFZAgFXAVgJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFXAgJfXwUBWAEBWgACDyVzX19hbW91bnRBc3NldAECYWEAAg4lc19fcHJpY2VBc3NldAECYWIAAgclc19fYW1wAQJhYwACDSVzX19hZGRvbkFkZHIAAmFkAgclc19fZmVlAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZAUBQgECYWYAAhElc19fZmFjdG9yeUNvbmZpZwECYWcAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFoAgJhaQJhagkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWkCAl9fBQJhagIIX19jb25maWcBAmFrAQJhbAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbAECYW0AAgwlc19fc2h1dGRvd24BAmFuAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFvAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFwAwJhcQJhcgJhcwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcQILIHNuZHJWYWxpZD0JAKUDAQUCYXICDCBtdGNoclZhbGlkPQkApQMBBQJhcwECYXQBAUcEAmF1BQFHAwkAAQIFAmF1AgZTdHJpbmcEAmF2BQJhdQUCYXYJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJhdwICYXgCYXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheAUCYXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXgJAMwIAgIBLgkAzAgCBQJheQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhegICYXgCYXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheAUCYXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXgJAMwIAgIBLgkAzAgCBQJheQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhQQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF3AgUEdGhpcwkBAU8AAAJhQgkBAmF3AgUEdGhpcwkBAmFiAAECYUMACQELdmFsdWVPckVsc2UCCQCbCAIFAmFBCQECYW0ABwECYUQACQDZBAEJAQJhdwIFAmFBCQECYWcAAAJhRQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF3AgUCYUEJAQJhbwABAmFGAAQCYUcJAQJhdwIFBHRoaXMJAQFaAAQCYUgJAQJhdwIFBHRoaXMJAQJhYQAEAmFJCQECYXoCBQJhQQkBAmFrAQUCYUgEAmFpCQECYXoCBQJhQQkBAmFrAQUCYUcJALUJAgkBAmF3AgUCYUEJAQJhaAIJAKQDAQUCYWkJAKQDAQUCYUkFAWoBAmFKAAkAtQkCCQECYXcCBQJhQQkBAmFmAAUBagACYUsJAQJhSgAAAmFMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSwUBeQIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmFNCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSwUBegIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmFOCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSwUBQQIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYU8KAmFQAmFRAmFSAmFTAmFUAmFVAmFWAmFXAmFYAmFZCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhUAkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVIJAMwIAgkApAMBBQJhUwkAzAgCCQCkAwEFAmFUCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXCQDMCAIJAKQDAQUCYVgJAMwIAgkApAMBBQJhWQUDbmlsBQFqAQJhWgYCYmECYmICYmMCYVMCYVYCYVcJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYQkAzAgCCQCkAwEFAmJiCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJhUwkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcFA25pbAUBagECYmQBAmJlAwkAAAIFAmJlAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiZQECYmYCAmJnAmJoCQC8AgMFAmJnBQFjBQJiaAECYmkDAmJqAmJrAmJsBAJibQkAvAIDCQC4AgIFAmJqBQJiawUBYgUCYmsEAmJuCQC/AgIJALgCAgUCYmwJAQFNAQUCYm0FAWQDCQEBIQEFAmJuCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJtCQCUCgIFAmJuCQCZAwEJAMwIAgUCYmoJAMwIAgUCYmsFA25pbAECYm8DAmJwAmJxAmJyBAJibQkAvAIDBQJicQUBYgUCYnAEAmJzCQC/AgIFAmJyBQJibQMDBQJicwYJAL8CAgUCYnEFAmJwCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJicQIBIAkApgMBBQJicAIBIAkApgMBBQJibQIBIAkApgMBBQJicgUCYnMBAmJ0BAJidQJidgJidwJieAQCYnkJAQFDAgUCYncFAmJ1BAJiegkBAUMCBQJieAUCYnYJAQJiZgIFAmJ6BQJieQECYkEDAmJ3AmJ4AmJCBAJiQwkBAmFGAAQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdQQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdgQCYkYJAQJidAQFAmJEBQJiRQUCYncFAmJ4BAJiaAkBAUMCBQJidwUCYkQEAmJnCQEBQwIFAmJ4BQJiRQQCYkcJAQFDAgUCYkIFAWEEAmJICQECYmYCBQJiaAUCYkcEAmJJCQECYmYCBQJiZwUCYkcJAMwIAgUCYkYJAMwIAgUCYkgJAMwIAgUCYkkFA25pbAECYkoDAmJ3AmJ4AmJCBAJiSwkBAmJBAwUCYncFAmJ4BQJiQgkAzAgCCQEBRgIJAJEDAgUCYksAAAUBYQkAzAgCCQEBRgIJAJEDAgUCYksAAQUBYQkAzAgCCQEBRgIJAJEDAgUCYksAAgUBYQUDbmlsAQJiTAECYk0EAmJOCQBrAwUCYk0FAmFlBQFhCQCUCgIJAGUCBQJiTQUCYk4FAmJOAQJiTwQCYlACYlECYlICYlMEAmJDCQECYUYABAJiVAkAkQMCBQJiQwUBcgQCYlUJAJEDAgUCYkMFAXMEAmJWCQCRAwIFAmJDBQF0BAJiVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF2BAJiWQkAkQMCBQJiQwUBcQQCYloICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJiVAUCYlEJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNhCQECYmQBBQJiVQQCY2IJAQFDAgUCY2EFAmJXBAJjYwkBAmJkAQUCYlYEAmNkCQEBQwIFAmNjBQJiWAQCY2UJAQJiZgIFAmNkBQJjYgQCY2YJAQFGAgUCY2UFAWEEAmNnCQEBQwIFAmJSBQFhBAJjaAkBAUMCBQJiWgUBYQQCY2kJALwCAwUCY2IFAmNnBQJjaAQCY2oJALwCAwUCY2QFAmNnBQJjaAQCY2sJAQFGAgUCY2kFAmJXBAJjbAkBAUYCBQJjagUCYlgEAmNtAwkAAAIFAmJQAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUwUCY2sDCQAAAgUCYlUCBVdBVkVTBQR1bml0CQDZBAEFAmJVCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJTBQJjbAMJAAACBQJiVgIFV0FWRVMFBHVuaXQJANkEAQUCYlYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCCQClCAEFAmJTBQJiUAkBAmFaBgUCY2sFAmNsBQJiUgUCY2YFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAAUCY2YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2YFA25pbAkAnAoKBQJjawUCY2wFAmJVBQJiVgUCY2EFAmNjBQJiWgUCY2UFAmJZBQJjbQECY24NAmJQAmJsAmNvAmNwAmNxAmNyAmJTAmNzAmN0AmN1AmN2AmN3AmN4BAJiQwkBAmFGAAQCYlQJANkEAQkAkQMCBQJiQwUBcgQCY3kJAJEDAgUCYkMFAXMEAmN6CQCRAwIFAmJDBQF0BAJjQQkAkQMCBQJiQwUBdwQCY0IJAJEDAgUCYkMFAXgEAmNDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXUEAmNECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXYEAmJZCQCRAwIFAmJDBQFxBAJjRQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiVAIIV3IgbHAgYXMIcXVhbnRpdHkEAmNhAwUCY3MJAQJiZAEFAmN5AwMFAmN1CQAAAgUCY3gFAmN5BwkAZQIJAQJiZAEFAmN5BQJjdwMFAmN1CQECYmQBBQJjeQkAZQIJAQJiZAEFAmN5BQJjbwQCY2MDBQJjcwkBAmJkAQUCY3oDAwUCY3UJAAACBQJjeAUCY3oHCQBlAgkBAmJkAQUCY3oFAmN3AwUCY3UJAQJiZAEFAmN6CQBlAgkBAmJkAQUCY3oFAmNxBAJjRgkBAUMCBQJjbwUCY0MEAmNHCQEBQwIFAmNxBQJjRAQCY0gJAQJiZgIFAmNHBQJjRgQCY2IJAQFDAgUCY2EFAmNDBAJjZAkBAUMCBQJjYwUCY0QEAmNJAwkAAAIFAmNFAAAEAmNlBQFkBAJjSgUBZAQCYkcJAHYGCQC5AgIFAmNGBQJjRwAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUYCBQJiRwUBYQkBAUYCBQJjRgUCY0MJAQFGAgUCY0cFAmNECQECYmYCCQC3AgIFAmNkBQJjRwkAtwICBQJjYgUCY0YFAmNKBAJjZQkBAmJmAgUCY2QFAmNiBAJjSwkAvAIDCQEBTQEJALgCAgUCY2UFAmNIBQFjBQJjZQQCY0oJAQFDAgUCYmwFAWEDAwMFAmN2CQECIT0CBQJjZQUBZAcJAL8CAgUCY0sFAmNKBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSwIDID4gCQCmAwEFAmNKBAJjTAkBAUMCBQJjRQUBYQQCY00JALwCAwUCY0YFAmNlBQFjBAJjTgkAvAIDBQJjRwUBYwUCY2UEAmNPAwkAvwICBQJjTQUCY0cJAJQKAgUCY04FAmNHCQCUCgIFAmNGBQJjTQQCY1AIBQJjTwJfMQQCY1EIBQJjTwJfMgQCYkcJALwCAwUCY0wFAmNRBQJjZAkAlwoFCQEBRgIFAmJHBQFhCQEBRgIFAmNQBQJjQwkBAUYCBQJjUQUCY0QFAmNlBQJjSgQCY1IIBQJjSQJfMQQCY1MIBQJjSQJfMgQCY1QIBQJjSQJfMwQCY2YJAQFGAggFAmNJAl80BQFhBAJjVQkBAUYCCAUCY0kCXzUFAWEDCQBnAgAABQJjUgkAAgECB0xQIDw9IDAEAmNWAwkBASEBBQJjdAAABQJjUgQCY1cJAGUCBQJjbwUCY1MEAmNYCQBlAgUCY3EFAmNUBAJjWQMDBQJjdQkAAAIFAmN4BQJjeQcJAJQKAgUCY3cAAAMDBQJjdQkAAAIFAmN4BQJjegcJAJQKAgAABQJjdwkAlAoCBQJjUwUCY1QEAmNaCAUCY1kCXzEEAmRhCAUCY1kCXzIEAmRiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgAFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAgUCYlMFAmJQCQECYU8KBQJjWgUCZGEFAmNWBQJjZgUCYmwFAmNVBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVwUCY1gFA25pbAkAnwoNBQJjUgUCY1YFAmNmBQJjYQUCY2MFAmNFBQJiVAUCYlkFAmRiBQJjVwUCY1gFAmNwBQJjcgECZGMBAmRkBAJiQwkBAmFGAAQCZGUJAJEDAgUCYkMFAXMEAmRmCQCRAwIFAmJDBQF0BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQFxBAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF1BAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF2BAJkZwkBAmJkAQUCZGUEAmRoCQECYmQBBQJkZgQCY2UDCQAAAggFAmRkCW9yZGVyVHlwZQUDQnV5CQECYnQEBQJiRAUCYkUJAGQCBQJkZwgFAmRkBmFtb3VudAUCZGgJAQJidAQFAmJEBQJiRQkAZQIFAmRnCAUCZGQGYW1vdW50BQJkaAQCY2YJAQFGAgUCY2UFAWEDAwMJAQJhQwAGCQAAAgUCYlkFAW4GCQAAAgUCYlkFAW8JAAIBAg1BZG1pbiBibG9ja2VkBAJkaQgIBQJkZAlhc3NldFBhaXILYW1vdW50QXNzZXQEAmRqAwkAAAIFAmRpBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkaQQCZGsICAUCZGQJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRsAwkAAAIFAmRrBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkawMDCQECIT0CBQJkagUCZGUGCQECIT0CBQJkbAUCZGYJAAIBAglXciBhc3NldHMEAmRtCAUCZGQFcHJpY2UEAmNECQBrAwUBYQUCYkUFAmJEBAJkbgkBAUkDBQJkbQUBYQUCY0QEAmRvAwkAAAIIBQJkZAlvcmRlclR5cGUFA0J1eQkAZwIFAmNmBQJkbgkAZwIFAmRuBQJjZgYBAmRwAQJkcQMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkcgkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAQCYlEJAQV2YWx1ZQEIBQJkcgdhc3NldElkBAJjdwgFAmRyBmFtb3VudAQCY0kJAQJiTwQJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQJANgEAQUCYlEFAmN3CAUCZHEGY2FsbGVyBAJjawgFAmNJAl8xBAJjbAgFAmNJAl8yBAJiWQkBDXBhcnNlSW50VmFsdWUBCAUCY0kCXzkEAmNtCAUCY0kDXzEwAwMJAQJhQwAGCQAAAgUCYlkFAW8JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJiWQkAlwoFBQJjawUCY2wFAmN3BQJiUQUCY20BAmRzCgJkdAFYAmR1AmR2AmJsAmN0AmN1AmN2AmN3AmN4BAJjSQkBAmNuDQUBWAUCYmwICQEFdmFsdWUBBQJkdQZhbW91bnQICQEFdmFsdWUBBQJkdQdhc3NldElkCAkBBXZhbHVlAQUCZHYGYW1vdW50CAkBBXZhbHVlAQUCZHYHYXNzZXRJZAUCZHQJAAACBQFYAgAFAmN0BQJjdQUCY3YFAmN3BQJjeAQCYlkJAQ1wYXJzZUludFZhbHVlAQgFAmNJAl84AwMDCQECYUMABgkAAAIFAmJZBQFtBgkAAAIFAmJZBQFvCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiWQUCY0kBAmR3BAJkeAJiUQJiUwFYBAJkeQkBAmFGAAQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJjYQkBAmJkAQUCYlUEAmNjCQECYmQBBQJiVgQCZHoJAQJiTAEFAmR4BAJjdwgFAmR6Al8xBAJiTggFAmR6Al8yBAJkQQMJAAACBQFYAgAJAJQKAgUCY2EFAmNjAwkAAAIFAmJRBQJiVQMJAGYCBQJkeAUCY2EJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjYQUCZHgFAmNjAwkAAAIFAmJRBQJiVgMJAGYCBQJkeAUCY2MJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNhCQBlAgUCY2MFAmR4CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZEIIBQJkQQJfMQQCZEMIBQJkQQJfMgQCZEQDCQAAAgUCYlEFAmJVCQCUCgIFAmRCBQJkQwkAlAoCBQJkQwUCZEIEAmRFCAUCZEQCXzEEAmRGCAUCZEQCXzIEAmRHAAEEAmRICgACZEkJAPwHBAUCYU4CDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCZEUJAMwIAgkApAMBBQJkRgkAzAgCAgAJAMwIAgUCYUIJAMwIAgUBaAkAzAgCCQCkAwEFAmRHCQDMCAIFAWkFA25pbAUDbmlsAwkAAQIFAmRJAgooSW50LCBJbnQpBQJkSQkAAgEJAKwCAgkAAwEFAmRJAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkSgMJAAACBQJiUQUCYlUFAmRICQCUCgIIBQJkSAJfMggFAmRIAl8xBAJkSwgFAmRKAl8xBAJkTAgFAmRKAl8yBAJkTQkBAmRzCgUCYlMFAVgJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJkSwkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlYFAmRMAAAGBgcFAmR4BQJiUQQCZE4IBQJkTQJfMgQCZE8IBQJkTQJfNwQCY20IBQJkTQJfOQQCY1cIBQJkTQNfMTAEAmNYCAUCZE0DXzExBQJkTQECZFAGAmRRAmRSAmRTAmR0AmRUAmRVAwkBAiE9AgkAkAMBBQJkUwABCQACAQILMSBwbW50IGV4cGQEAmR5CQECYUYABAJiVAkAkQMCBQJkeQUBcgQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJkVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR5BQF1BAJkVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR5BQF2BAJkWAkAkQMCBQJkeQUBcQQCYlMDCQAAAgUCZHQFBHRoaXMFAmRUBQJkdAQCZHIJAQV2YWx1ZQEJAJEDAgUCZFMAAAQCYlEJAQV2YWx1ZQEIBQJkcgdhc3NldElkBAJjdwgFAmRyBmFtb3VudAMJAGYCAICU69wDBQJjdwkAAgECDU1pbiBwbXQgMTAgTFAEAmJQCQDYBAEFAmRVAwkBAiE9AgUCYlQJANgEAQUCYlEJAAIBAghXcm9uZyBMUAQCY2EJAQJiZAEFAmJVBAJjYwkBAmJkAQUCYlYEAmRZCgACZEkJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkUQkAzAgCBQJjdwUDbmlsBQNuaWwDCQABAgUCZEkCCihJbnQsIEludCkFAmRJCQACAQkArAICCQADAQUCZEkCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmRaCAUCZFkCXzEEAmJOCAUCZFkCXzIEAmVhAwMJAGYCBQJkUgAACQBmAgUCZFIFAmRaBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFIFA25pbAIABQJkWgQCZWIDCQAAAgUCZFEFAmJVCQCUCgIFAmVhAAAJAJQKAgAABQJlYQQCZWMIBQJlYgJfMQQCZWQIBQJlYgJfMgQCZWUJAQJiZgIJAQFDAgUCY2MFAmRXCQEBQwIFAmNhBQJkVgQCZWYJAQFGAgUCZWUFAWEEAmVnAwkAAAIFAmRRAgVXQVZFUwUEdW5pdAkA2QQBBQJkUQQCZWgDCQBmAgUCYk4AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCYk4FAmVnBQNuaWwFA25pbAQCY20JAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUwUCZWEFAmVnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBBQJiUwUCYlAJAQJhWgYFAmVjBQJlZAUCY3cFAmVmBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgAFAmVmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVmBQNuaWwFAmVoAwkAAAIFAmNtBQJjbQQCZWkJAPwHBAUCYUECBGJ1cm4JAMwIAgUCY3cFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlEFAmN3BQNuaWwDCQAAAgUCZWkFAmVpCQCUCgIFAmNtBQJlYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWoBAmVrBAJlbAkAtgIBAAIEAmVtCQCRAwIFAmVrAAAEAmVuCQCRAwIFAmVrAAEEAmVvCQCnAwEFAWgEAmVwCQC5AgIJAKcDAQUCYUIFAmVvBAJlcQkAtwICBQJlbQUCZW4DCQAAAgUCZXEFAWUFAWUEAmVyCQC5AgIFAmVwBQJlbAoBAmVzAgJldAJldQQCZXYFAmV0BAJldwgFAmV2Al8xBAJleAgFAmV2Al8yAwkBAiE9AgUCZXgFBHVuaXQFAmV0BAJleQkAugICCQC5AgIJALkCAgUCZXcFAmV3BQJldwkAuQICCQC5AgIJALkCAgUCZW0FAmVuBQJlbAUCZWwEAmV6CQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZXIFAmVxBQJlbwkAuQICBQJleQUCZWwFAmV3CQC3AgIJALoCAgkAuQICCQC4AgIFAmVyBQJlbwUCZXcFAmVvCQC5AgIJALcCAgUCZWwJALYCAQABBQJleQQCZUEJAQFOAQkAuAICBQJlegkBBXZhbHVlAQUCZXcDCQDAAgIFAWYFAmVBCQCUCgIFAmV6BQJldQkAlAoCBQJlegUEdW5pdAQCZUIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwUDbmlsBAJlQwoAAmVEBQJlQgoAAmVFCQCQAwEFAmVECgACZUYJAJQKAgUCZXEFBHVuaXQKAQJlRwICZUgCZUkDCQBnAgUCZUkFAmVFBQJlSAkBAmVzAgUCZUgJAJEDAgUCZUQFAmVJCgECZUoCAmVIAmVJAwkAZwIFAmVJBQJlRQUCZUgJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQECZUoCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCBQJlRgAAAAEAAgADAAQABQAGAAcEAmV3CAUCZUMCXzEEAmV4CAUCZUMCXzIDCQECIT0CBQJleAUEdW5pdAUCZXcJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZXcBAmVLAAQCYXUJAKIIAQkBAVAAAwkAAQIFAmF1AgZTdHJpbmcEAmVxBQJhdQkA2QQBBQJlcQMJAAECBQJhdQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlTAAEAmF1CQCiCAEJAQFRAAMJAAECBQJhdQIGU3RyaW5nBAJlcQUCYXUJANkEAQUCZXEDCQABAgUCYXUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZU0JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZU4BAmRxBAJhdQkBAmVLAAMJAAECBQJhdQIKQnl0ZVZlY3RvcgQCZU8FAmF1AwkAAAIIBQJkcQ9jYWxsZXJQdWJsaWNLZXkFAmVPBgUCZU0DCQABAgUCYXUCBFVuaXQDCQAAAggFAmRxBmNhbGxlcgUEdGhpcwYFAmVNCQACAQILTWF0Y2ggZXJyb3IeAmRxAQtjb25zdHJ1Y3RvcgEBTwQCZVAJAQJlTgEFAmRxAwkAAAIFAmVQBQJlUAkAzAgCCQELU3RyaW5nRW50cnkCCQEBTwAFAU8FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQEKc2V0TWFuYWdlcgECZVEEAmVQCQECZU4BBQJkcQMJAAACBQJlUAUCZVAEAmVSCQDZBAEFAmVRAwkAAAIFAmVSBQJlUgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQAFAmVRBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBDmNvbmZpcm1NYW5hZ2VyAAQCYksJAQJlTAAEAmVTAwkBCWlzRGVmaW5lZAEFAmJLBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlUwUCZVMEAmVUAwkAAAIIBQJkcQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmJLBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlVAUCZVQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAACQDYBAEJAQV2YWx1ZQEFAmJLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFRAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxAQNwdXQCAmVVAmVWBAJlVwkBAmFKAAQCZVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmVXBQF5AgpXciBzdCBhZGRyBAJlWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZVcFAXoCCldyIHNsIGFkZHIDCQBmAgAABQJlVQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZHEIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZVoJAQJkcwoJAKUIAQgFAmRxBmNhbGxlcgkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHEIcGF5bWVudHMAAQUCZVUGBwYAAAIABAJjVggFAmVaAl8yBAJkTwgFAmVaAl83BAJjbQgFAmVaAl85BAJjVwgFAmVaA18xMAQCY1gIBQJlWgNfMTEEAmJVCAUCZVoDXzEyBAJiVggFAmVaA18xMwQCY0kJAPwHBAUCYUECBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsAwkAAAIFAmNJBQJjSQQCZmEEAmF1BQJjSQMJAAECBQJhdQIHQWRkcmVzcwQCZmIFAmF1CQD8BwQFAmZiAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmYQUCZmEEAmZjAwkAZgIFAmNXAAAJAPwHBAUCZVkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVQUCY1cFA25pbAUDbmlsAwkAAAIFAmZjBQJmYwQCZmQDCQBmAgUCY1gAAAkA/AcEBQJlWQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJWBQJjWAUDbmlsBQNuaWwDCQAAAgUCZmQFAmZkBAJmZQMFAmVWBAJmZgkA/AcEBQJlWAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmNWBQNuaWwDCQAAAgUCZmYFAmZmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRxBmNhbGxlcgUCY1YFAmRPBQNuaWwJAM4IAgUCY20FAmZlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxAQlwdXRPbmVUa24FAmRLAmRMAmZnAmJsAmVWBAJiQwkBAmFKAAQCZVgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJDBQF5AgpXciBzdCBhZGRyBAJlWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkMFAXoCCldyIHNsIGFkZHIEAmZoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQwUBQQILV3IgZ3d4IGFkZHIEAmZpCQECYUYABAJiVQkAkQMCBQJmaQUBcwQCYlYJAJEDAgUCZmkFAXQEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZmkFAXUEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZmkFAXYEAmZqCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYwACAAQCYlMDCQAAAgUCZmoJAKUIAQgFAmRxBmNhbGxlcggFAmRxDG9yaWdpbkNhbGxlcggFAmRxBmNhbGxlcgMDAwMJAGcCAAAFAmJsBgkAZwIAAAUCZEsGCQBnAgAABQJkTAYJAGcCAAAFAmZnCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUCZHEIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkcgkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAQCYlEJANgEAQkBBXZhbHVlAQgFAmRyB2Fzc2V0SWQEAmZrCAUCZHIGYW1vdW50BAJmbAkBAmJMAQUCZmsEAmN3CAUCZmwCXzEEAmJOCAUCZmwCXzIDCQBmAgCAreIEBQJmawkAAgECDVdyb25nIHBtdCBhbXQEAmNhCQECYmQBBQJiVQQCY2MJAQJiZAEFAmJWBAJmbQMJAAACBQJiUQUCYlUDAwkAZgIFAmZrBQJjYQYJAGYCBQJkSwUCY3cJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYJAGUCBQJjYQUCZmsFAmNjCQBlAgUCY3cFAmRLBQJkTAAAAAADCQAAAgUCYlEFAmJWAwMJAGYCBQJmawUCY2MGCQBmAgUCZEwFAmN3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQJjYQkAZQIFAmNjBQJmawAAAAAJAGUCBQJjdwUCZEwFAmRLCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZEIIBQJmbQJfMQQCZEMIBQJmbQJfMgQCZm4IBQJmbQJfMwQCZm8IBQJmbQJfNAQCZnAIBQJmbQJfNQQCZnEIBQJmbQJfNgQCYnEJAPwHBAUCZmgCBWNhbGNECQDMCAIJAKQDAQUCZEIJAMwIAgkApAMBBQJkQwkAzAgCBQJhQgkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJicAkA/AcEBQJmaAIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEIFAmZuBQJmcQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJkQwUCZnAFAmZvCQDMCAIFAmFCCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmZyCQECYm8DCQCnAwEJAQJhdAEFAmJwCQCnAwEJAQJhdAEFAmJxBQFnAwkAAAIFAmZyBQJmcgQCZE0JAQJkcwoJAKUIAQgFAmRxBmNhbGxlcgkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlUFAmRLCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCZEwFAmJsBgYGBQJjdwUCYlEEAmROCAUCZE0CXzIEAmRPCAUCZE0CXzcEAmNtCAUCZE0CXzkEAmNXCAUCZE0DXzEwBAJjWAgFAmRNA18xMQQCZnMJAQJiaQMJALYCAQUCZE4JALYCAQUCZmcJALYCAQUCYmwEAmNWCQCgAwEIBQJmcwJfMgQCZVoJAPwHBAUCYUECBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsAwkAAAIFAmVaBQJlWgQCZmEEAmF1BQJlWgMJAAECBQJhdQIHQWRkcmVzcwQCZmIFAmF1CQD8BwQFAmZiAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmYQUCZmEEAmZjAwkAZgIFAmNXAAAJAPwHBAUCZVkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmMFAmZjBAJmZAMJAGYCBQJjWAAACQD8BwQFAmVZAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZkBQJmZAQCZmUDBQJlVgQCZmYJAPwHBAUCZVgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJjVgUDbmlsAwkAAAIFAmZmBQJmZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcQZjYWxsZXIFAmNWBQJkTwUDbmlsBAJlaAMJAGYCBQJiTgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJiTgkA2QQBBQJiUQUDbmlsBQNuaWwJAM4IAgkAzggCBQJjbQUCZmUFAmVoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxAQtwdXRPbmVUa25WMgICZFICZVYDCQECIT0CCQCQAwEIBQJkcQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmR5CQECYUYABAJiVQkAkQMCBQJkeQUBcwQCYlYJAJEDAgUCZHkFAXQEAmRWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHkFAXUEAmRXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHkFAXYEAmJTAwkAAAIIBQJkcQZjYWxsZXIFBHRoaXMIBQJkcQxvcmlnaW5DYWxsZXIIBQJkcQZjYWxsZXIEAmRyCQEFdmFsdWUBCQCRAwIIBQJkcQhwYXltZW50cwAABAJiUQkA2AQBCQEFdmFsdWUBCAUCZHIHYXNzZXRJZAQCY3cIBQJkcgZhbW91bnQDCQBmAgCAreIEBQJjdwkAAgECDVdyb25nIHBtdCBhbXQEAmNJCQECZHcEBQJjdwUCYlEJAKUIAQUCYlMJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQEAmROCAUCY0kCXzIEAmRPCAUCY0kCXzcEAmNtCAUCY0kCXzkEAmNXCAUCY0kDXzEwBAJjWAgFAmNJA18xMQQCY1YDAwkAZgIFAmRSAAAJAGYCBQJkUgUCZE4HCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJkUgUDbmlsAgAFAmROBAJlWgkA/AcEBQJhQQIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZVoFAmVaBAJmYQQCYXUFAmVaAwkAAQIFAmF1AgdBZGRyZXNzBAJmYgUCYXUJAPwHBAUCZmICBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZhBQJmYQQCZmMDCQBmAgUCY1cAAAkA/AcEBQJhTQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlUFAmNXBQNuaWwFA25pbAMJAAACBQJmYwUCZmMEAmZkAwkAZgIFAmNYAAAJAPwHBAUCYU0CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJjWAUDbmlsBQNuaWwDCQAAAgUCZmQFAmZkBAJmZQMFAmVWBAJmZgkA/AcEBQJhTAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmNWBQNuaWwDCQAAAgUCZmYFAmZmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRxBmNhbGxlcgUCY1YFAmRPBQNuaWwEAmJOCAkBAmJMAQUCY3cCXzIEAmVoAwkAZgIFAmJOAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmJOCQDZBAEFAmJRBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY20FAmZlBQJlaAUCY1YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBE3B1dE9uZVRrblYyUkVBRE9OTFkCAmZ0AmZ1BAJjSQkBAmR3BAUCZnQFAmZ1AgACAAQCZE4IBQJjSQJfMgQCZE8IBQJjSQJfNwQCY20IBQJjSQJfOQQCY1cIBQJjSQNfMTAEAmNYCAUCY0kDXzExCQCUCgIFA25pbAUCZE4CZHEBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZ0AmZ1BAJkeQkBAmFGAAQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJjSQkBAmR3BAUCZnQFAmZ1AgACAAQCZE4IBQJjSQJfMgQCY2YIBQJjSQJfMwQCZnYIBQJjSQJfNgQCZE8IBQJjSQJfNwQCY2EJAQJiZAEFAmJVBAJjYwkBAmJkAQUCYlYEAmZ3CQBrAwUCY2MFAWEFAmNhBAJmeAkAawMFAmZ0BQFhCQBkAgUCZncFAWEEAmZ5CQBlAgUCZnQFAmZ4BAJmegkAawMFAmZ2BQJmeQUCY2MEAmZBCQBrAwkAZQIFAmROBQJmegUBYQUCZnoEAmJOCAkBAmJMAQUCZnQCXzIJAJQKAgUDbmlsCQCVCgMFAmROBQJiTgUCZkECZHEBCnB1dEZvckZyZWUBAmZCAwkAZgIAAAUCZkIJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZHEIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZE0JAQJkcwoJAKUIAQgFAmRxBmNhbGxlcgkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHEIcGF5bWVudHMAAQUCZkIHBwYAAAIACAUCZE0CXzkCZHEBA2dldAAEAmNJCQECZHABBQJkcQQCZkMIBQJjSQJfMQQCY2wIBQJjSQJfMgQCY3cIBQJjSQJfMwQCYlEIBQJjSQJfNAQCY20IBQJjSQJfNQQCZkQJAPwHBAUCYUECBGJ1cm4JAMwIAgUCY3cFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlEFAmN3BQNuaWwDCQAAAgUCZkQFAmZEBQJjbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQEJZ2V0T25lVGtuBQJmRQJmRgJmRwJkUQJibAMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCYkMJAQJhRgAEAmJUCQCRAwIFAmJDBQFyBAJiVQkAkQMCBQJiQwUBcwQCYlYJAJEDAgUCYkMFAXQEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXUEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXYEAmJZCQCRAwIFAmJDBQFxBAJlVwkBAmFKAAQCZmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmVXBQFBAgpXciBzbCBhZGRyBAJkcgkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAQCZmoJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFjAAIABAJiUwMJAAACBQJmagkApQgBCAUCZHEGY2FsbGVyCAUCZHEMb3JpZ2luQ2FsbGVyCAUCZHEGY2FsbGVyBAJiUAkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAQCYlEJAQV2YWx1ZQEIBQJkcgdhc3NldElkBAJjdwgFAmRyBmFtb3VudAMJAGYCAICU69wDBQJjdwkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFAmJsBgkAZgIAAAUCZkUGCQBmAgAABQJmRwkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFAmJUCQDYBAEFAmJRCQACAQIIV3JvbmcgTFAEAmNJCQECYk8ECQDYBAEIBQJkcQ10cmFuc2FjdGlvbklkCQDYBAEFAmJRBQJjdwgFAmRxBmNhbGxlcgQCZkgIBQJjSQJfMQQCZkkIBQJjSQJfMgQCY2EJAQJiZAEFAmJVBAJjYwkBAmJkAQUCYlYEAmZKAwkAAAIFAmRRBQJiVQkAmQoHCQBlAgUCY2EFAmZICQBlAgUCY2MFAmZJBQJmRQUCZkkAAAAACQBkAgUCZkgFAmZFAwkAAAIFAmRRBQJiVgkAmQoHCQBlAgUCY2EFAmZICQBlAgUCY2MFAmZJAAAAAAUCZkUFAmZICQBkAgUCZkkFAmZFCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZEIIBQJmSgJfMQQCZEMIBQJmSgJfMgQCZm4IBQJmSgJfMwQCZm8IBQJmSgJfNAQCZnAIBQJmSgJfNQQCZnEIBQJmSgJfNgQCZksIBQJmSgJfNwMDCQBmAgAABQJmbgYJAGYCAAAFAmZwCQACAQIKV3JvbmcgY2FsYwQCYnEJAPwHBAUCZmgCBWNhbGNECQDMCAIJAKQDAQUCZEIJAMwIAgkApAMBBQJkQwkAzAgCBQJhQgkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJicAkA/AcEBQJmaAIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFAmRCBQJmbgUCZnEJAMwIAgkApAMBCQBlAgkAZAIFAmRDBQJmbwUCZnAJAMwIAgUCYUIJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCZnIJAQJibwMJAKcDAQkBAmF0AQUCYnAJAKcDAQkBAmF0AQUCYnEFAWcDCQAAAgUCZnIFAmZyBAJkWggJAQJiTAEFAmZLAl8xBAJmTAkBAmJpAwkAtgIBBQJkWgkAtgIBBQJmRwkAtgIBBQJibAMJAAACBQJmTAUCZkwEAmZNAwkAAAIFAmRRBQJiVQkAlAoCCQCgAwEIBQJmTAJfMgAACQCUCgIAAAkAoAMBCAUCZkwCXzIEAmVjCAUCZk0CXzEEAmVkCAUCZk0CXzIEAmVhCQBkAgUCZWMFAmVkBAJiTgkAZQIFAmZLBQJkWgQCZWcDCQAAAgUCZFECBVdBVkVTBQR1bml0CQDZBAEFAmRRBAJlaAMJAGYCBQJiTgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJiTgUCZWcFA25pbAUDbmlsBAJlZQkBAmJmAgkBAUMCBQJjYwUCYlgJAQFDAgUCY2EFAmJXBAJlZgkBAUYCBQJlZQUBYQQCY20JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlMFAmVhBQJlZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIJAKUIAQUCYlMFAmJQCQECYVoGBQJlYwUCZWQFAmN3BQJlZgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVIABQJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZgUDbmlsAwkAAAIFAmNtBQJjbQQCZWkJAPwHBAUCYUECBGJ1cm4JAMwIAgUCY3cFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlEFAmN3BQNuaWwDCQAAAgUCZWkFAmVpCQDOCAIFAmNtBQJlaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQELZ2V0T25lVGtuVjICAmRRAmRSBAJmTgkBAmRQBgUCZFEFAmRSCAUCZHEIcGF5bWVudHMIBQJkcQZjYWxsZXIIBQJkcQxvcmlnaW5DYWxsZXIIBQJkcQ10cmFuc2FjdGlvbklkBAJjbQgFAmZOAl8xBAJlYQgFAmZOAl8yCQCUCgIFAmNtBQJlYQJkcQETZ2V0T25lVGtuVjJSRUFET05MWQICZFECZk8EAmR5CQECYUYABAJiVAkAkQMCBQJkeQUBcgQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJjSQkBAmJPBAIABQJiVAUCZk8FBHRoaXMEAmZICAUCY0kCXzEEAmZJCAUCY0kCXzIEAmNhCQECYmQBBQJiVQQCY2MJAQJiZAEFAmJWBAJkQgkAZQIFAmNhBQJmSAQCZEMJAGUCBQJjYwUCZkkEAmZQAwkAAAIFAmRRBQJiVQkAlgoEBQJkQwUCZEIFAmZJBQJmSAMJAAACBQJkUQUCYlYJAJYKBAUCZEIFAmRDBQJmSAUCZkkJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJmUQgFAmZQAl8xBAJmUggFAmZQAl8yBAJmUwgFAmZQAl8zBAJmVAgFAmZQAl80BAJmVQABBAJmRQoAAmRJCQD8BwQFAmFOAgxjYWxjU3dhcFhUb1kJAMwIAgkApAMBBQJmUwkAzAgCCQCkAwEFAmZRCQDMCAIJAKQDAQUCZlIJAMwIAgIACQDMCAIFAmFCCQDMCAIFAWgJAMwIAgkApAMBBQJmVQkAzAgCBQFpBQNuaWwFA25pbAMJAAECBQJkSQIDSW50BQJkSQkAAgEJAKwCAgkAAwEFAmRJAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmZLCQBkAgUCZkUFAmZUBAJmVgkBAmJMAQUCZksEAmRaCAUCZlYCXzEEAmJOCAUCZlYCXzIJAJQKAgUDbmlsCQCUCgIFAmRaBQJiTgJkcQEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZFECZk8EAmR5CQECYUYABAJiVQkAkQMCBQJkeQUBcwQCYlYJAJEDAgUCZHkFAXQEAmJUCQCRAwIFAmR5BQFyBAJjYQkBAmJkAQUCYlUEAmNjCQECYmQBBQJiVgQCZlcKAAJkSQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRRCQDMCAIFAmZPBQNuaWwFA25pbAMJAAECBQJkSQIKKEludCwgSW50KQUCZEkJAAIBCQCsAgIJAAMBBQJkSQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFoIBQJmVwJfMQQCYk4IBQJmVwJfMgQCY0kJAQJiTwQCAAUCYlQFAmZPBQR0aGlzBAJjawgFAmNJAl8xBAJjbAgFAmNJAl8yBAJmWAkAZAIFAmNrBQJjbAQCZkEJAGsDCQBlAgUCZFoFAmZYBQFhBQJmWAkAlAoCBQNuaWwJAJUKAwUCZFoFAmJOBQJmQQJkcQEJZ2V0Tm9MZXNzAgJmWQJmWgQCY0kJAQJkcAEFAmRxBAJjawgFAmNJAl8xBAJjbAgFAmNJAl8yBAJjdwgFAmNJAl8zBAJiUQgFAmNJAl80BAJjbQgFAmNJAl81AwkAZgIFAmZZBQJjawkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjawIDIDwgCQCkAwEFAmZZAwkAZgIFAmZaBQJjbAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNsAgMgPCAJAKQDAQUCZloEAmdhCQD8BwQFAmFBAgRidXJuCQDMCAIFAmN3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJRBQJjdwUDbmlsAwkAAAIFAmdhBQJnYQUCY20JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBDXVuc3Rha2VBbmRHZXQBAmJNBAJnYgMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJnYgUCZ2IEAmJDCQECYUYABAJnYwkBAmFKAAQCZE8JANkEAQkAkQMCBQJiQwUBcgQCZ2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdjBQF5AgpXciBzdCBhZGRyBAJnZQkA/AcEBQJnZAIHdW5zdGFrZQkAzAgCCQDYBAEFAmRPCQDMCAIFAmJNBQNuaWwFA25pbAMJAAACBQJnZQUCZ2UEAmNJCQECYk8ECQDYBAEIBQJkcQ10cmFuc2FjdGlvbklkCQDYBAEFAmRPBQJiTQgFAmRxBmNhbGxlcgQCYlkJAQ1wYXJzZUludFZhbHVlAQgFAmNJAl85BAJjbQgFAmNJA18xMAQCZ2YDAwkBAmFDAAYJAAACBQJiWQUBbwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmJZBgMJAAACBQJnZgUCZ2YEAmdnCQD8BwQFAmFBAgRidXJuCQDMCAIFAmJNBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJiTQUDbmlsAwkAAAIFAmdnBQJnZwUCY20JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmdoAmRRAmRSBAJnYgMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJnYgUCZ2IEAmJDCQECYUYABAJnYwkBAmFKAAQCZE8JANkEAQkAkQMCBQJiQwUBcgQCZ2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdjBQF5AgpXciBzdCBhZGRyBAJnZQkA/AcEBQJnZAIHdW5zdGFrZQkAzAgCCQDYBAEFAmRPCQDMCAIFAmdoBQNuaWwFA25pbAMJAAACBQJnZQUCZ2UEAmdpCQECZFAGBQJkUQUCZFIJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJnaAUDbmlsCAUCZHEGY2FsbGVyCAUCZHEMb3JpZ2luQ2FsbGVyCAUCZHENdHJhbnNhY3Rpb25JZAQCY20IBQJnaQJfMQQCZWEIBQJnaQJfMgkAlAoCBQJjbQUCZWEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBC3B1dE9uZVRrblYzAAQCZHkJAQJhRgAEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCYlQJAJEDAgUCZHkFAXIEAmdqCQCRAwIIBQJkcQhwYXltZW50cwAABAJnawkA2AQBCQEFdmFsdWUBCAUCZ2oHYXNzZXRJZAQCZmsIBQJnagZhbW91bnQEAmdsCQECYkwBBQJmawQCZnQIBQJnbAJfMQQCYk4IBQJnbAJfMgQCZ20DCQAAAgkAkAMBCAUCZHEIcGF5bWVudHMAAQMJAAACBQJnawUCYlUJAJQKAgUCZnQAAAMJAAACBQJnawUCYlYJAJQKAgAABQJmdAkAAgECD2ludmFsaWQgcGF5bWVudAkAAgECFWludmFsaWQgcGF5bWVudHMgc2l6ZQQCZ24IBQJnbQJfMQQCZ28IBQJnbQJfMgQCZ3AJAQJiZAEFAmJVBAJncQkBAmJkAQUCYlYEAmdyCQBlAgUCZ3AFAmduBAJncwkAZQIFAmdxBQJnbwQCYnEJAQJlagEJAMwIAgkAtgIBBQJncgkAzAgCCQC2AgEFAmdzBQNuaWwEAmJwCQECZWoBCQDMCAIJALYCAQUCZ3AJAMwIAgkAtgIBBQJncQUDbmlsBAJndAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlQCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmd1CQC6AgIJALkCAgUCZ3QJALgCAgUCYnAFAmJxBQJicQkAlAoCBQNuaWwJAKADAQUCZ3UCZHEBCGFjdGl2YXRlAgJndgJndwMJAQIhPQIJAKUIAQgFAmRxBmNhbGxlcgkApQgBBQJhQQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAUCZ3YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZ3cFA25pbAIHc3VjY2VzcwJkcQEEc2V0UwICZ3gCZ2YDCQECIT0CCQClCAEIBQJkcQZjYWxsZXIJAQJhdwIFBHRoaXMJAQJhYwAFAmVNCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmd4BQJnZgUDbmlsAmRxAQRzZXRJAgJneAJnZgMJAQIhPQIJAKUIAQgFAmRxBmNhbGxlcgkBAmF3AgUEdGhpcwkBAmFjAAUCZU0JAMwIAgkBDEludGVnZXJFbnRyeQIFAmd4BQJnZgUDbmlsAmRxARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRgACZHEBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJlCQCUCgIFA25pbAkBAmJkAQUCYmUCZHEBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ3AmJ4AmJCBAJneQkBAmJBAwUCYncFAmJ4BQJiQgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmd5AAAJAMwIAgkApgMBCQCRAwIFAmd5AAEJAMwIAgkApgMBCQCRAwIFAmd5AAIFA25pbAJkcQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBRwJnegkAlAoCBQNuaWwJAQFGAgkApwMBBQFHBQJnegJkcQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUQBRQkAlAoCBQNuaWwJAKYDAQkBAUMCBQFEBQFFAmRxAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJnAmJoCQCUCgIFA25pbAkApgMBCQECYmYCCQCnAwEFAmJnCQCnAwEFAmJoAmRxASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYlACYmwCY28CY3ACY3ECY3ICZ0ECY3MCY3QJAJQKAgUDbmlsCQECY24NBQJiUAUCYmwFAmNvBQJjcAUCY3EFAmNyBQJnQQUCY3MFAmN0BgcAAAIAAmRxASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlACZ0ICYlICZ0EEAmNJCQECYk8EBQJiUAUCZ0IFAmJSCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnQQkAlAoCBQNuaWwJAJwKCggFAmNJAl8xCAUCY0kCXzIIBQJjSQJfMwgFAmNJAl80CAUCY0kCXzUIBQJjSQJfNggFAmNJAl83CQCmAwEIBQJjSQJfOAgFAmNJAl85CAUCY0kDXzEwAmRxAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhZQECZ0MBAmdEAAQCZ0UEAmF1CQECZUsAAwkAAQIFAmF1AgpCeXRlVmVjdG9yBAJlTwUCYXUFAmVPAwkAAQIFAmF1AgRVbml0CAUCZ0MPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmF1BQJnQwMJAAECBQJhdQIFT3JkZXIEAmRkBQJhdQQCZ0YJAQJhRAAEAmdHCQECZGMBBQJkZAQCZ0gJAPQDAwgFAmRkCWJvZHlCeXRlcwkAkQMCCAUCZGQGcHJvb2ZzAAAIBQJkZA9zZW5kZXJQdWJsaWNLZXkEAmdJCQD0AwMIBQJkZAlib2R5Qnl0ZXMJAJEDAggFAmRkBnByb29mcwABBQJnRgMDAwUCZ0cFAmdIBwUCZ0kHBgkBAmFwAwUCZ0cFAmdIBQJnSQMJAAECBQJhdQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVxBQJhdQQCZ0oJAPYDAQkBBXZhbHVlAQgFAmVxBnNjcmlwdAQCZ0sJANsEAQkBBXZhbHVlAQkAnQgCBQJhQQkBAmFuAAQCZ0wJAPEHAQUEdGhpcwMDCQAAAgUCZ0sFAmdKCQECIT0CBQJnTAUCZ0oHBgkA9AMDCAUCZ0MJYm9keUJ5dGVzCQCRAwIIBQJnQwZwcm9vZnMAAAUCZ0UJAPQDAwgFAmdDCWJvZHlCeXRlcwkAkQMCCAUCZ0MGcHJvb2ZzAAAFAmdFRnrPfg==", "chainId": 84, "height": 2259075, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7AXMWTy9PurFxB3pFmgAeEGHP4dBteqUgKnMMW3qkBDU Next: 4q8pTyDckPs1X3iVKwwS2ECzoKgc8c7qPxB7KFkEFUi9 Diff:
OldNewDifferences
99
1010 let d = toBigInt(0)
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = fraction(5, a, 10000)
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = fraction(5, a, 10000)
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((d > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N (G) = if ((d > G))
75+ then -(G)
76+ else G
7377
7478
75-func N () = "%s__managerPublicKey"
79+func O () = "%s__factoryContract"
7680
7781
78-func O () = "%s__pendingManagerPublicKey"
82+func P () = "%s__managerPublicKey"
7983
8084
81-func P () = "%s%s__price__last"
85+func Q () = "%s__pendingManagerPublicKey"
8286
8387
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
88+func R () = "%s%s__price__last"
8589
8690
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
91+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
8892
8993
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
94+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9195
9296
93-func X () = "%s__amountAsset"
97+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9498
9599
96-func Y () = "%s__priceAsset"
100+func Z () = "%s__amountAsset"
97101
98102
99-func Z () = "%s__amp"
103+func aa () = "%s__priceAsset"
100104
101105
102-func aa () = "%s__addonAddr"
106+func ab () = "%s__amp"
103107
104108
105-let ab = "%s__fee"
106-
107-let ac = valueOrElse(getInteger(this, ab), A)
108-
109-func ad () = "%s__factoryConfig"
109+func ac () = "%s__addonAddr"
110110
111111
112-func ae () = "%s%s__matcher__publicKey"
112+let ad = "%s__fee"
113+
114+let ae = valueOrElse(getInteger(this, ad), B)
115+
116+func af () = "%s__factoryConfig"
113117
114118
115-func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
119+func ag () = "%s%s__matcher__publicKey"
116120
117121
118-func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
122+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
119123
120124
121-func ak () = "%s__shutdown"
125+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
122126
123127
124-func al () = "%s__allowedLpStableScriptHash"
128+func am () = "%s__shutdown"
125129
126130
127-func am () = "%s__feeCollectorAddress"
131+func an () = "%s__allowedLpStableScriptHash"
128132
129133
130-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
134+func ao () = "%s__feeCollectorAddress"
131135
132136
133-func ar (F) = {
134- let as = F
135- if ($isInstanceOf(as, "String"))
137+func ap (aq,ar,as) = throw(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
138+
139+
140+func at (G) = {
141+ let au = G
142+ if ($isInstanceOf(au, "String"))
136143 then {
137- let at = as
138- at
144+ let av = au
145+ av
139146 }
140147 else throw("fail cast to String")
141148 }
142149
143150
144-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
151+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
145152
146153
147-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
154+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
148155
149156
150-let ay = addressFromStringValue(au(this, M()))
157+let aA = addressFromStringValue(aw(this, O()))
151158
152-let az = au(this, Z())
159+let aB = aw(this, ab())
153160
154-func aA () = valueOrElse(getBoolean(ay, ak()), false)
161+func aC () = valueOrElse(getBoolean(aA, am()), false)
155162
156163
157-func aB () = fromBase58String(au(ay, ae()))
164+func aD () = fromBase58String(aw(aA, ag()))
158165
159166
160-let aC = addressFromStringValue(au(ay, am()))
167+let aE = addressFromStringValue(aw(aA, ao()))
161168
162-func aD () = {
163- let aE = au(this, X())
164- let aF = au(this, Y())
165- let aG = ax(ay, ai(aF))
166- let ag = ax(ay, ai(aE))
167- split(au(ay, af(toString(ag), toString(aG))), i)
169+func aF () = {
170+ let aG = aw(this, Z())
171+ let aH = aw(this, aa())
172+ let aI = az(aA, ak(aH))
173+ let ai = az(aA, ak(aG))
174+ split(aw(aA, ah(toString(ai), toString(aI))), j)
168175 }
169176
170177
171-func aH () = split(au(ay, ad()), i)
178+func aJ () = split(aw(aA, af()), j)
172179
173180
174-let aI = aH()
181+let aK = aJ()
175182
176-let aJ = valueOrErrorMessage(addressFromString(aI[x]), "Invalid staking contract address")
183+let aL = valueOrErrorMessage(addressFromString(aK[y]), "Invalid staking contract address")
177184
178-let aK = valueOrErrorMessage(addressFromString(aI[y]), "Invalid slipage contract address")
185+let aM = valueOrErrorMessage(addressFromString(aK[z]), "Invalid slipage contract address")
179186
180-let aL = valueOrErrorMessage(addressFromString(aI[z]), "Invalid gwx contract address")
187+let aN = valueOrErrorMessage(addressFromString(aK[A]), "Invalid gwx contract address")
181188
182-func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], i)
189+func aO (aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY)], j)
183190
184191
185-func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], i)
192+func aZ (ba,bb,bc,aS,aV,aW) = makeString(["%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(aS), toString(aV), toString(aW)], j)
186193
187194
188-func bb (bc) = if ((bc == "WAVES"))
195+func bd (be) = if ((be == "WAVES"))
189196 then wavesBalance(this).available
190- else assetBalance(this, fromBase58String(bc))
197+ else assetBalance(this, fromBase58String(be))
191198
192199
193-func bd (be,bf) = fraction(be, c, bf)
200+func bf (bg,bh) = fraction(bg, c, bh)
194201
195202
196-func bg (bh,bi,bj) = {
197- let bk = fraction((bh - bi), b, bi)
198- let bl = ((bj - L(bk)) > d)
199- if (!(bl))
200- then throw(("Big slpg: " + toString(bk)))
201- else $Tuple2(bl, min([bh, bi]))
203+func bi (bj,bk,bl) = {
204+ let bm = fraction((bj - bk), b, bk)
205+ let bn = ((bl - M(bm)) > d)
206+ if (!(bn))
207+ then throw(("Big slpg: " + toString(bm)))
208+ else $Tuple2(bn, min([bj, bk]))
202209 }
203210
204211
205-func bm (bn,bo,bp) = {
206- let bk = fraction(bo, b, bn)
207- let bq = (bp > bk)
208- if (if (bq)
212+func bo (bp,bq,br) = {
213+ let bm = fraction(bq, b, bp)
214+ let bs = (br > bm)
215+ if (if (bs)
209216 then true
210- else (bo > bn))
211- then throw(((((((toString(bo) + " ") + toString(bn)) + " ") + toString(bk)) + " ") + toString(bp)))
212- else bq
217+ else (bq > bp))
218+ then throw(((((((toString(bq) + " ") + toString(bp)) + " ") + toString(bm)) + " ") + toString(br)))
219+ else bs
213220 }
214221
215222
216-func br (bs,bt,bu,bv) = {
217- let bw = B(bu, bs)
218- let bx = B(bv, bt)
219- bd(bx, bw)
223+func bt (bu,bv,bw,bx) = {
224+ let by = C(bw, bu)
225+ let bz = C(bx, bv)
226+ bf(bz, by)
220227 }
221228
222229
223-func by (bu,bv,bz) = {
224- let bA = aD()
225- let bB = parseIntValue(bA[t])
226- let bC = parseIntValue(bA[u])
227- let bD = br(bB, bC, bu, bv)
228- let bf = B(bu, bB)
229- let be = B(bv, bC)
230- let bE = B(bz, a)
231- let bF = bd(bf, bE)
232- let bG = bd(be, bE)
233-[bD, bF, bG]
230+func bA (bw,bx,bB) = {
231+ let bC = aF()
232+ let bD = parseIntValue(bC[u])
233+ let bE = parseIntValue(bC[v])
234+ let bF = bt(bD, bE, bw, bx)
235+ let bh = C(bw, bD)
236+ let bg = C(bx, bE)
237+ let bG = C(bB, a)
238+ let bH = bf(bh, bG)
239+ let bI = bf(bg, bG)
240+[bF, bH, bI]
234241 }
235242
236243
237-func bH (bu,bv,bz) = {
238- let bI = by(bu, bv, bz)
239-[E(bI[0], a), E(bI[1], a), E(bI[2], a)]
244+func bJ (bw,bx,bB) = {
245+ let bK = bA(bw, bx, bB)
246+[F(bK[0], a), F(bK[1], a), F(bK[2], a)]
240247 }
241248
242249
243-func bJ (bK) = {
244- let bL = fraction(bK, ac, a)
245- $Tuple2((bK - bL), bL)
250+func bL (bM) = {
251+ let bN = fraction(bM, ae, a)
252+ $Tuple2((bM - bN), bN)
246253 }
247254
248255
249-func bM (bN,bO,bP,bQ) = {
250- let bA = aD()
251- let bR = bA[q]
252- let bS = bA[r]
253- let bT = bA[s]
254- let bU = parseIntValue(bA[t])
255- let bV = parseIntValue(bA[u])
256- let bW = bA[p]
257- let bX = valueOrErrorMessage(assetInfo(fromBase58String(bR)), "Wrong LP id").quantity
258- if ((bR != bO))
256+func bO (bP,bQ,bR,bS) = {
257+ let bC = aF()
258+ let bT = bC[r]
259+ let bU = bC[s]
260+ let bV = bC[t]
261+ let bW = parseIntValue(bC[u])
262+ let bX = parseIntValue(bC[v])
263+ let bY = bC[q]
264+ let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bT)), "Wrong LP id").quantity
265+ if ((bT != bQ))
259266 then throw("Wrong pmt asset")
260267 else {
261- let bY = bb(bS)
262- let bZ = B(bY, bU)
263- let ca = bb(bT)
264- let cb = B(ca, bV)
265- let cc = bd(cb, bZ)
266- let cd = E(cc, a)
267- let ce = B(bP, a)
268- let cf = B(bX, a)
269- let cg = fraction(bZ, ce, cf)
270- let ch = fraction(cb, ce, cf)
271- let ci = E(cg, bU)
272- let cj = E(ch, bV)
273- let ck = if ((bN == ""))
268+ let ca = bd(bU)
269+ let cb = C(ca, bW)
270+ let cc = bd(bV)
271+ let cd = C(cc, bX)
272+ let ce = bf(cd, cb)
273+ let cf = F(ce, a)
274+ let cg = C(bR, a)
275+ let ch = C(bZ, a)
276+ let ci = fraction(cb, cg, ch)
277+ let cj = fraction(cd, cg, ch)
278+ let ck = F(ci, bW)
279+ let cl = F(cj, bX)
280+ let cm = if ((bP == ""))
274281 then nil
275- else [ScriptTransfer(bQ, ci, if ((bS == "WAVES"))
282+ else [ScriptTransfer(bS, ck, if ((bU == "WAVES"))
276283 then unit
277- else fromBase58String(bS)), ScriptTransfer(bQ, cj, if ((bT == "WAVES"))
284+ else fromBase58String(bU)), ScriptTransfer(bS, cl, if ((bV == "WAVES"))
278285 then unit
279- else fromBase58String(bT)), StringEntry(W(toString(bQ), bN), aX(ci, cj, bP, cd, height, lastBlock.timestamp)), IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd)]
280- $Tuple10(ci, cj, bS, bT, bY, ca, bX, cc, bW, ck)
286+ else fromBase58String(bV)), StringEntry(Y(toString(bS), bP), aZ(ck, cl, bR, cf, height, lastBlock.timestamp)), IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf)]
287+ $Tuple10(ck, cl, bU, bV, ca, cc, bZ, ce, bY, cm)
281288 }
282289 }
283290
284291
285-func cl (bN,bj,cm,cn,co,cp,bQ,cq,cr,cs,ct,cu,cv) = {
286- let bA = aD()
287- let bR = fromBase58String(bA[q])
288- let cw = bA[r]
289- let cx = bA[s]
290- let cy = bA[v]
291- let cz = bA[w]
292- let cA = parseIntValue(bA[t])
293- let cB = parseIntValue(bA[u])
294- let bW = bA[p]
295- let cC = valueOrErrorMessage(assetInfo(bR), "Wr lp as").quantity
296- let bY = if (cq)
297- then bb(cw)
298- else if (if (cs)
299- then (cv == cw)
292+func cn (bP,bl,co,cp,cq,cr,bS,cs,ct,cu,cv,cw,cx) = {
293+ let bC = aF()
294+ let bT = fromBase58String(bC[r])
295+ let cy = bC[s]
296+ let cz = bC[t]
297+ let cA = bC[w]
298+ let cB = bC[x]
299+ let cC = parseIntValue(bC[u])
300+ let cD = parseIntValue(bC[v])
301+ let bY = bC[q]
302+ let cE = valueOrErrorMessage(assetInfo(bT), "Wr lp as").quantity
303+ let ca = if (cs)
304+ then bd(cy)
305+ else if (if (cu)
306+ then (cx == cy)
300307 else false)
301- then (bb(cw) - cu)
302- else if (cs)
303- then bb(cw)
304- else (bb(cw) - cm)
305- let ca = if (cq)
306- then bb(cx)
307- else if (if (cs)
308- then (cv == cx)
308+ then (bd(cy) - cw)
309+ else if (cu)
310+ then bd(cy)
311+ else (bd(cy) - co)
312+ let cc = if (cs)
313+ then bd(cz)
314+ else if (if (cu)
315+ then (cx == cz)
309316 else false)
310- then (bb(cx) - cu)
311- else if (cs)
312- then bb(cx)
313- else (bb(cx) - co)
314- let cD = B(cm, cA)
315- let cE = B(co, cB)
316- let cF = bd(cE, cD)
317- let bZ = B(bY, cA)
318- let cb = B(ca, cB)
319- let cG = if ((cC == 0))
317+ then (bd(cz) - cw)
318+ else if (cu)
319+ then bd(cz)
320+ else (bd(cz) - cq)
321+ let cF = C(co, cC)
322+ let cG = C(cq, cD)
323+ let cH = bf(cG, cF)
324+ let cb = C(ca, cC)
325+ let cd = C(cc, cD)
326+ let cI = if ((cE == 0))
320327 then {
321- let cc = d
322- let cH = d
323- let bE = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
324- $Tuple5(E(bE, a), E(cD, cA), E(cE, cB), bd((cb + cE), (bZ + cD)), cH)
328+ let ce = d
329+ let cJ = d
330+ let bG = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
331+ $Tuple5(F(bG, a), F(cF, cC), F(cG, cD), bf((cd + cG), (cb + cF)), cJ)
325332 }
326333 else {
327- let cc = bd(cb, bZ)
328- let cI = fraction(L((cc - cF)), c, cc)
329- let cH = B(bj, a)
330- if (if (if (ct)
331- then (cc != d)
334+ let ce = bf(cd, cb)
335+ let cK = fraction(M((ce - cH)), c, ce)
336+ let cJ = C(bl, a)
337+ if (if (if (cv)
338+ then (ce != d)
332339 else false)
333- then (cI > cH)
340+ then (cK > cJ)
334341 else false)
335- then throw(((("Price slippage " + toString(cI)) + " > ") + toString(cH)))
342+ then throw(((("Price slippage " + toString(cK)) + " > ") + toString(cJ)))
336343 else {
337- let cJ = B(cC, a)
338- let cK = fraction(cD, cc, c)
339- let cL = fraction(cE, c, cc)
340- let cM = if ((cK > cE))
341- then $Tuple2(cL, cE)
342- else $Tuple2(cD, cK)
343- let cN = cM._1
344- let cO = cM._2
345- let bE = fraction(cJ, cO, cb)
346- $Tuple5(E(bE, a), E(cN, cA), E(cO, cB), cc, cH)
344+ let cL = C(cE, a)
345+ let cM = fraction(cF, ce, c)
346+ let cN = fraction(cG, c, ce)
347+ let cO = if ((cM > cG))
348+ then $Tuple2(cN, cG)
349+ else $Tuple2(cF, cM)
350+ let cP = cO._1
351+ let cQ = cO._2
352+ let bG = fraction(cL, cQ, cd)
353+ $Tuple5(F(bG, a), F(cP, cC), F(cQ, cD), ce, cJ)
347354 }
348355 }
349- let cP = cG._1
350- let cQ = cG._2
351- let cR = cG._3
352- let cd = E(cG._4, a)
353- let cS = E(cG._5, a)
354- if ((0 >= cP))
356+ let cR = cI._1
357+ let cS = cI._2
358+ let cT = cI._3
359+ let cf = F(cI._4, a)
360+ let cU = F(cI._5, a)
361+ if ((0 >= cR))
355362 then throw("LP <= 0")
356363 else {
357- let cT = if (!(cr))
364+ let cV = if (!(ct))
358365 then 0
359- else cP
360- let cU = (cm - cQ)
361- let cV = (co - cR)
362- let cW = if (if (cs)
363- then (cv == cw)
366+ else cR
367+ let cW = (co - cS)
368+ let cX = (cq - cT)
369+ let cY = if (if (cu)
370+ then (cx == cy)
364371 else false)
365- then $Tuple2(cu, 0)
366- else if (if (cs)
367- then (cv == cx)
372+ then $Tuple2(cw, 0)
373+ else if (if (cu)
374+ then (cx == cz)
368375 else false)
369- then $Tuple2(0, cu)
370- else $Tuple2(cQ, cR)
371- let cX = cW._1
372- let cY = cW._2
373- let cZ = [IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd), StringEntry(T(bQ, bN), aM(cX, cY, cT, cd, bj, cS, height, lastBlock.timestamp, cU, cV))]
374- $Tuple13(cP, cT, cd, bY, ca, cC, bR, bW, cZ, cU, cV, cn, cp)
376+ then $Tuple2(0, cw)
377+ else $Tuple2(cS, cT)
378+ let cZ = cY._1
379+ let da = cY._2
380+ let db = [IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf), StringEntry(V(bS, bP), aO(cZ, da, cV, cf, bl, cU, height, lastBlock.timestamp, cW, cX))]
381+ $Tuple13(cR, cV, cf, ca, cc, cE, bT, bY, db, cW, cX, cp, cr)
375382 }
376383 }
377384
378385
379-func da (db) = {
380- let bA = aD()
381- let dc = bA[r]
382- let dd = bA[s]
383- let bW = parseIntValue(bA[p])
384- let bB = parseIntValue(bA[t])
385- let bC = parseIntValue(bA[u])
386- let de = bb(dc)
387- let df = bb(dd)
388- let cc = if ((db.orderType == Buy))
389- then br(bB, bC, (de + db.amount), df)
390- else br(bB, bC, (de - db.amount), df)
391- let cd = E(cc, a)
392- if (if (if (aA())
386+func dc (dd) = {
387+ let bC = aF()
388+ let de = bC[s]
389+ let df = bC[t]
390+ let bY = parseIntValue(bC[q])
391+ let bD = parseIntValue(bC[u])
392+ let bE = parseIntValue(bC[v])
393+ let dg = bd(de)
394+ let dh = bd(df)
395+ let ce = if ((dd.orderType == Buy))
396+ then bt(bD, bE, (dg + dd.amount), dh)
397+ else bt(bD, bE, (dg - dd.amount), dh)
398+ let cf = F(ce, a)
399+ if (if (if (aC())
393400 then true
394- else (bW == m))
401+ else (bY == n))
395402 then true
396- else (bW == n))
403+ else (bY == o))
397404 then throw("Admin blocked")
398405 else {
399- let dg = db.assetPair.amountAsset
400- let dh = if ((dg == unit))
401- then "WAVES"
402- else toBase58String(value(dg))
403- let di = db.assetPair.priceAsset
406+ let di = dd.assetPair.amountAsset
404407 let dj = if ((di == unit))
405408 then "WAVES"
406409 else toBase58String(value(di))
407- if (if ((dh != dc))
410+ let dk = dd.assetPair.priceAsset
411+ let dl = if ((dk == unit))
412+ then "WAVES"
413+ else toBase58String(value(dk))
414+ if (if ((dj != de))
408415 then true
409- else (dj != dd))
416+ else (dl != df))
410417 then throw("Wr assets")
411418 else {
412- let dk = db.price
413- let cB = fraction(a, bC, bB)
414- let dl = H(dk, a, cB)
415- let dm = if ((db.orderType == Buy))
416- then (cd >= dl)
417- else (dl >= cd)
419+ let dm = dd.price
420+ let cD = fraction(a, bE, bD)
421+ let dn = I(dm, a, cD)
422+ let do = if ((dd.orderType == Buy))
423+ then (cf >= dn)
424+ else (dn >= cf)
418425 true
419426 }
420427 }
421428 }
422429
423430
424-func dn (do) = if ((size(do.payments) != 1))
431+func dp (dq) = if ((size(dq.payments) != 1))
425432 then throw("1 pmnt exp")
426433 else {
427- let dp = value(do.payments[0])
428- let bO = value(dp.assetId)
429- let cu = dp.amount
430- let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
431- let ci = cG._1
432- let cj = cG._2
433- let bW = parseIntValue(cG._9)
434- let ck = cG._10
435- if (if (aA())
434+ let dr = value(dq.payments[0])
435+ let bQ = value(dr.assetId)
436+ let cw = dr.amount
437+ let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
438+ let ck = cI._1
439+ let cl = cI._2
440+ let bY = parseIntValue(cI._9)
441+ let cm = cI._10
442+ if (if (aC())
436443 then true
437- else (bW == n))
438- then throw(("Admin blocked: " + toString(bW)))
439- else $Tuple5(ci, cj, cu, bO, ck)
444+ else (bY == o))
445+ then throw(("Admin blocked: " + toString(bY)))
446+ else $Tuple5(ck, cl, cw, bQ, cm)
440447 }
441448
442449
443-func dq (dr,V,ds,dt,bj,cr,cs,ct,cu,cv) = {
444- let cG = cl(V, bj, value(ds).amount, value(ds).assetId, value(dt).amount, value(dt).assetId, dr, (V == ""), cr, cs, ct, cu, cv)
445- let bW = parseIntValue(cG._8)
446- if (if (if (aA())
450+func ds (dt,X,du,dv,bl,ct,cu,cv,cw,cx) = {
451+ let cI = cn(X, bl, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, (X == ""), ct, cu, cv, cw, cx)
452+ let bY = parseIntValue(cI._8)
453+ if (if (if (aC())
447454 then true
448- else (bW == l))
455+ else (bY == m))
449456 then true
450- else (bW == n))
451- then throw(("Blocked:" + toString(bW)))
452- else cG
457+ else (bY == o))
458+ then throw(("Blocked:" + toString(bY)))
459+ else cI
453460 }
454461
455462
456-func du (dv,bO,bQ,V) = {
457- let dw = aD()
458- let bS = dw[r]
459- let bT = dw[s]
460- let bY = bb(bS)
461- let ca = bb(bT)
462- let dx = bJ(dv)
463- let cu = dx._1
464- let bL = dx._2
465- let dy = if ((V == ""))
466- then $Tuple2(bY, ca)
467- else if ((bO == bS))
468- then if ((dv > bY))
463+func dw (dx,bQ,bS,X) = {
464+ let dy = aF()
465+ let bU = dy[s]
466+ let bV = dy[t]
467+ let ca = bd(bU)
468+ let cc = bd(bV)
469+ let dz = bL(dx)
470+ let cw = dz._1
471+ let bN = dz._2
472+ let dA = if ((X == ""))
473+ then $Tuple2(ca, cc)
474+ else if ((bQ == bU))
475+ then if ((dx > ca))
469476 then throw("invalid payment amount")
470- else $Tuple2((bY - dv), ca)
471- else if ((bO == bT))
472- then if ((dv > ca))
477+ else $Tuple2((ca - dx), cc)
478+ else if ((bQ == bV))
479+ then if ((dx > cc))
473480 then throw("invalid payment amount")
474- else $Tuple2(bY, (ca - dv))
481+ else $Tuple2(ca, (cc - dx))
475482 else throw("wrong pmtAssetId")
476- let dz = dy._1
477- let dA = dy._2
478- let dB = if ((bO == bS))
479- then $Tuple2(dz, dA)
480- else $Tuple2(dA, dz)
481- let dC = dB._1
482- let dD = dB._2
483- let dE = 1
484- let dF = {
485- let dG = invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)
486- if ($isInstanceOf(dG, "(Int, Int)"))
487- then dG
488- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
483+ let dB = dA._1
484+ let dC = dA._2
485+ let dD = if ((bQ == bU))
486+ then $Tuple2(dB, dC)
487+ else $Tuple2(dC, dB)
488+ let dE = dD._1
489+ let dF = dD._2
490+ let dG = 1
491+ let dH = {
492+ let dI = invoke(aN, "calcPutXOnly", [toString(cw), toString(dE), toString(dF), "", aB, h, toString(dG), i], nil)
493+ if ($isInstanceOf(dI, "(Int, Int)"))
494+ then dI
495+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
489496 }
490- let dH = if ((bO == bS))
491- then dF
492- else $Tuple2(dF._2, dF._1)
493- let dI = dH._1
494- let dJ = dH._2
495- let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496- let dL = dK._2
497- let dM = dK._7
498- let ck = dK._9
499- let cU = dK._10
500- let cV = dK._11
501- dK
497+ let dJ = if ((bQ == bU))
498+ then dH
499+ else $Tuple2(dH._2, dH._1)
500+ let dK = dJ._1
501+ let dL = dJ._2
502+ let dM = ds(bS, X, AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), 0, true, true, false, dx, bQ)
503+ let dN = dM._2
504+ let dO = dM._7
505+ let cm = dM._9
506+ let cW = dM._10
507+ let cX = dM._11
508+ dM
502509 }
503510
504511
505-func dN (dO,dP,dQ,dr,dR,dS) = if ((size(dQ) != 1))
512+func dP (dQ,dR,dS,dt,dT,dU) = if ((size(dS) != 1))
506513 then throw("1 pmnt expd")
507514 else {
508- let dw = aD()
509- let bR = dw[q]
510- let bS = dw[r]
511- let bT = dw[s]
512- let dT = parseIntValue(dw[t])
513- let dU = parseIntValue(dw[u])
514- let dV = dw[p]
515- let bQ = if ((dr == this))
516- then dR
517- else dr
518- let dp = value(dQ[0])
519- let bO = value(dp.assetId)
520- let cu = dp.amount
521- if ((1000000000 > cu))
515+ let dy = aF()
516+ let bT = dy[r]
517+ let bU = dy[s]
518+ let bV = dy[t]
519+ let dV = parseIntValue(dy[u])
520+ let dW = parseIntValue(dy[v])
521+ let dX = dy[q]
522+ let bS = if ((dt == this))
523+ then dT
524+ else dt
525+ let dr = value(dS[0])
526+ let bQ = value(dr.assetId)
527+ let cw = dr.amount
528+ if ((1000000000 > cw))
522529 then throw("Min pmt 10 LP")
523530 else {
524- let bN = toBase58String(dS)
525- if ((bR != toBase58String(bO)))
531+ let bP = toBase58String(dU)
532+ if ((bT != toBase58String(bQ)))
526533 then throw("Wrong LP")
527534 else {
528- let bY = bb(bS)
529- let ca = bb(bT)
530- let dW = {
531- let dG = invoke(this, "getOneTknV2READONLY", [dO, cu], nil)
532- if ($isInstanceOf(dG, "(Int, Int)"))
533- then dG
534- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
535+ let ca = bd(bU)
536+ let cc = bd(bV)
537+ let dY = {
538+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, cw], nil)
539+ if ($isInstanceOf(dI, "(Int, Int)"))
540+ then dI
541+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
535542 }
536- let dX = dW._1
537- let bL = dW._2
538- let dY = if (if ((dP > 0))
539- then (dP > dX)
543+ let dZ = dY._1
544+ let bN = dY._2
545+ let ea = if (if ((dR > 0))
546+ then (dR > dZ)
540547 else false)
541- then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
542- else dX
543- let dZ = if ((dO == bS))
544- then $Tuple2(dY, 0)
545- else $Tuple2(0, dY)
546- let ea = dZ._1
547- let eb = dZ._2
548- let ec = bd(B(ca, dU), B(bY, dT))
549- let ed = E(ec, a)
550- let ee = if ((dO == "WAVES"))
548+ then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
549+ else dZ
550+ let eb = if ((dQ == bU))
551+ then $Tuple2(ea, 0)
552+ else $Tuple2(0, ea)
553+ let ec = eb._1
554+ let ed = eb._2
555+ let ee = bf(C(cc, dW), C(ca, dV))
556+ let ef = F(ee, a)
557+ let eg = if ((dQ == "WAVES"))
551558 then unit
552- else fromBase58String(dO)
553- let ef = if ((bL > 0))
554- then [ScriptTransfer(aC, bL, ee)]
559+ else fromBase58String(dQ)
560+ let eh = if ((bN > 0))
561+ then [ScriptTransfer(aE, bN, eg)]
555562 else nil
556- let ck = ([ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)] ++ ef)
557- if ((ck == ck))
563+ let cm = ([ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)] ++ eh)
564+ if ((cm == cm))
558565 then {
559- let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
560- if ((eg == eg))
561- then $Tuple2(ck, dY)
566+ let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
567+ if ((ei == ei))
568+ then $Tuple2(cm, ea)
562569 else throw("Strict value is not equal to itself.")
563570 }
564571 else throw("Strict value is not equal to itself.")
567574 }
568575
569576
570-func eh () = {
571- let as = getString(N())
572- if ($isInstanceOf(as, "String"))
577+func ej (ek) = {
578+ let el = toBigInt(2)
579+ let em = ek[0]
580+ let en = ek[1]
581+ let eo = parseBigIntValue(h)
582+ let ep = (parseBigIntValue(aB) * eo)
583+ let eq = (em + en)
584+ if ((eq == e))
585+ then e
586+ else {
587+ let er = (ep * el)
588+ func es (et,eu) = {
589+ let ev = et
590+ let ew = ev._1
591+ let ex = ev._2
592+ if ((ex != unit))
593+ then et
594+ else {
595+ let ey = (((ew * ew) * ew) / (((em * en) * el) * el))
596+ let ez = (((((er * eq) / eo) + (ey * el)) * ew) / ((((er - eo) * ew) / eo) + ((el + toBigInt(1)) * ey)))
597+ let eA = N((ez - value(ew)))
598+ if ((f >= eA))
599+ then $Tuple2(ez, eu)
600+ else $Tuple2(ez, unit)
601+ }
602+ }
603+
604+ let eB = [0, 1, 2, 3, 4, 5, 6, 7]
605+ let eC = {
606+ let eD = eB
607+ let eE = size(eD)
608+ let eF = $Tuple2(eq, unit)
609+ func eG (eH,eI) = if ((eI >= eE))
610+ then eH
611+ else es(eH, eD[eI])
612+
613+ func eJ (eH,eI) = if ((eI >= eE))
614+ then eH
615+ else throw("List size exceeds 7")
616+
617+ eJ(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7)
618+ }
619+ let ew = eC._1
620+ let ex = eC._2
621+ if ((ex != unit))
622+ then ew
623+ else throw(("D calculation error, D = " + toString(ew)))
624+ }
625+ }
626+
627+
628+func eK () = {
629+ let au = getString(P())
630+ if ($isInstanceOf(au, "String"))
573631 then {
574- let ei = as
575- fromBase58String(ei)
632+ let eq = au
633+ fromBase58String(eq)
576634 }
577- else if ($isInstanceOf(as, "Unit"))
635+ else if ($isInstanceOf(au, "Unit"))
578636 then unit
579637 else throw("Match error")
580638 }
581639
582640
583-func ej () = {
584- let as = getString(O())
585- if ($isInstanceOf(as, "String"))
641+func eL () = {
642+ let au = getString(Q())
643+ if ($isInstanceOf(au, "String"))
586644 then {
587- let ei = as
588- fromBase58String(ei)
645+ let eq = au
646+ fromBase58String(eq)
589647 }
590- else if ($isInstanceOf(as, "Unit"))
648+ else if ($isInstanceOf(au, "Unit"))
591649 then unit
592650 else throw("Match error")
593651 }
594652
595653
596-let ek = throw("Permission denied")
654+let eM = throw("Permission denied")
597655
598-func el (do) = {
599- let as = eh()
600- if ($isInstanceOf(as, "ByteVector"))
656+func eN (dq) = {
657+ let au = eK()
658+ if ($isInstanceOf(au, "ByteVector"))
601659 then {
602- let em = as
603- if ((do.callerPublicKey == em))
660+ let eO = au
661+ if ((dq.callerPublicKey == eO))
604662 then true
605- else ek
663+ else eM
606664 }
607- else if ($isInstanceOf(as, "Unit"))
608- then if ((do.caller == this))
665+ else if ($isInstanceOf(au, "Unit"))
666+ then if ((dq.caller == this))
609667 then true
610- else ek
668+ else eM
611669 else throw("Match error")
612670 }
613671
614672
615-@Callable(do)
616-func constructor (M) = {
617- let en = el(do)
618- if ((en == en))
619- then [StringEntry(M(), M)]
673+@Callable(dq)
674+func constructor (O) = {
675+ let eP = eN(dq)
676+ if ((eP == eP))
677+ then [StringEntry(O(), O)]
620678 else throw("Strict value is not equal to itself.")
621679 }
622680
623681
624682
625-@Callable(do)
626-func setManager (eo) = {
627- let en = el(do)
628- if ((en == en))
683+@Callable(dq)
684+func setManager (eQ) = {
685+ let eP = eN(dq)
686+ if ((eP == eP))
629687 then {
630- let ep = fromBase58String(eo)
631- if ((ep == ep))
632- then [StringEntry(O(), eo)]
688+ let eR = fromBase58String(eQ)
689+ if ((eR == eR))
690+ then [StringEntry(Q(), eQ)]
633691 else throw("Strict value is not equal to itself.")
634692 }
635693 else throw("Strict value is not equal to itself.")
637695
638696
639697
640-@Callable(do)
698+@Callable(dq)
641699 func confirmManager () = {
642- let bI = ej()
643- let eq = if (isDefined(bI))
700+ let bK = eL()
701+ let eS = if (isDefined(bK))
644702 then true
645703 else throw("No pending manager")
646- if ((eq == eq))
704+ if ((eS == eS))
647705 then {
648- let er = if ((do.callerPublicKey == value(bI)))
706+ let eT = if ((dq.callerPublicKey == value(bK)))
649707 then true
650708 else throw("You are not pending manager")
651- if ((er == er))
652- then [StringEntry(N(), toBase58String(value(bI))), DeleteEntry(O())]
709+ if ((eT == eT))
710+ then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
653711 else throw("Strict value is not equal to itself.")
654712 }
655713 else throw("Strict value is not equal to itself.")
657715
658716
659717
660-@Callable(do)
661-func put (es,et) = {
662- let eu = aH()
663- let ev = valueOrErrorMessage(addressFromString(eu[x]), "Wr st addr")
664- let ew = valueOrErrorMessage(addressFromString(eu[y]), "Wr sl addr")
665- if ((0 > es))
718+@Callable(dq)
719+func put (eU,eV) = {
720+ let eW = aJ()
721+ let eX = valueOrErrorMessage(addressFromString(eW[y]), "Wr st addr")
722+ let eY = valueOrErrorMessage(addressFromString(eW[z]), "Wr sl addr")
723+ if ((0 > eU))
666724 then throw("Wrong slippage")
667- else if ((size(do.payments) != 2))
725+ else if ((size(dq.payments) != 2))
668726 then throw("2 pmnts expd")
669727 else {
670- let ex = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], es, true, false, true, 0, "")
671- let cT = ex._2
672- let dM = ex._7
673- let ck = ex._9
674- let cU = ex._10
675- let cV = ex._11
676- let bS = ex._12
677- let bT = ex._13
678- let cG = invoke(ay, "emit", [cT], nil)
679- if ((cG == cG))
728+ let eZ = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], eU, true, false, true, 0, "")
729+ let cV = eZ._2
730+ let dO = eZ._7
731+ let cm = eZ._9
732+ let cW = eZ._10
733+ let cX = eZ._11
734+ let bU = eZ._12
735+ let bV = eZ._13
736+ let cI = invoke(aA, "emit", [cV], nil)
737+ if ((cI == cI))
680738 then {
681- let ey = {
682- let as = cG
683- if ($isInstanceOf(as, "Address"))
739+ let fa = {
740+ let au = cI
741+ if ($isInstanceOf(au, "Address"))
684742 then {
685- let ez = as
686- invoke(ez, "emit", [cT], nil)
743+ let fb = au
744+ invoke(fb, "emit", [cV], nil)
687745 }
688746 else unit
689747 }
690- if ((ey == ey))
748+ if ((fa == fa))
691749 then {
692- let eA = if ((cU > 0))
693- then invoke(ew, "put", nil, [AttachedPayment(bS, cU)])
750+ let fc = if ((cW > 0))
751+ then invoke(eY, "put", nil, [AttachedPayment(bU, cW)])
694752 else nil
695- if ((eA == eA))
753+ if ((fc == fc))
696754 then {
697- let eB = if ((cV > 0))
698- then invoke(ew, "put", nil, [AttachedPayment(bT, cV)])
755+ let fd = if ((cX > 0))
756+ then invoke(eY, "put", nil, [AttachedPayment(bV, cX)])
699757 else nil
700- if ((eB == eB))
758+ if ((fd == fd))
701759 then {
702- let eC = if (et)
760+ let fe = if (eV)
703761 then {
704- let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
705- if ((eD == eD))
762+ let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
763+ if ((ff == ff))
706764 then nil
707765 else throw("Strict value is not equal to itself.")
708766 }
709- else [ScriptTransfer(do.caller, cT, dM)]
710- (ck ++ eC)
767+ else [ScriptTransfer(dq.caller, cV, dO)]
768+ (cm ++ fe)
711769 }
712770 else throw("Strict value is not equal to itself.")
713771 }
721779
722780
723781
724-@Callable(do)
725-func putOneTkn (dI,dJ,eE,bj,et) = {
726- let bA = aH()
727- let ev = valueOrErrorMessage(addressFromString(bA[x]), "Wr st addr")
728- let ew = valueOrErrorMessage(addressFromString(bA[y]), "Wr sl addr")
729- let eF = valueOrErrorMessage(addressFromString(bA[z]), "Wr gwx addr")
730- let eG = aD()
731- let bS = eG[r]
732- let bT = eG[s]
733- let bU = parseIntValue(eG[t])
734- let bV = parseIntValue(eG[u])
735- let eH = valueOrElse(getString(this, aa()), "")
736- let bQ = if ((eH == toString(do.caller)))
737- then do.originCaller
738- else do.caller
739- if (if (if (if ((0 >= bj))
782+@Callable(dq)
783+func putOneTkn (dK,dL,fg,bl,eV) = {
784+ let bC = aJ()
785+ let eX = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
786+ let eY = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
787+ let fh = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
788+ let fi = aF()
789+ let bU = fi[s]
790+ let bV = fi[t]
791+ let bW = parseIntValue(fi[u])
792+ let bX = parseIntValue(fi[v])
793+ let fj = valueOrElse(getString(this, ac()), "")
794+ let bS = if ((fj == toString(dq.caller)))
795+ then dq.originCaller
796+ else dq.caller
797+ if (if (if (if ((0 >= bl))
740798 then true
741- else (0 >= dI))
799+ else (0 >= dK))
742800 then true
743- else (0 >= dJ))
801+ else (0 >= dL))
744802 then true
745- else (0 >= eE))
803+ else (0 >= fg))
746804 then throw("Wrong params")
747- else if ((size(do.payments) != 1))
805+ else if ((size(dq.payments) != 1))
748806 then throw("1 pmnt expd")
749807 else {
750- let dp = value(do.payments[0])
751- let bO = toBase58String(value(dp.assetId))
752- let eI = dp.amount
753- let eJ = bJ(eI)
754- let cu = eJ._1
755- let bL = eJ._2
756- if ((10000000 > eI))
808+ let dr = value(dq.payments[0])
809+ let bQ = toBase58String(value(dr.assetId))
810+ let fk = dr.amount
811+ let fl = bL(fk)
812+ let cw = fl._1
813+ let bN = fl._2
814+ if ((10000000 > fk))
757815 then throw("Wrong pmt amt")
758816 else {
759- let bY = bb(bS)
760- let ca = bb(bT)
761- let eK = if ((bO == bS))
762- then if (if ((eI > bY))
817+ let ca = bd(bU)
818+ let cc = bd(bV)
819+ let fm = if ((bQ == bU))
820+ then if (if ((fk > ca))
763821 then true
764- else (dI > cu))
822+ else (dK > cw))
765823 then throw("invalid payment amount")
766- else $Tuple6((bY - eI), ca, (cu - dI), dJ, 0, 0)
767- else if ((bO == bT))
768- then if (if ((eI > ca))
824+ else $Tuple6((ca - fk), cc, (cw - dK), dL, 0, 0)
825+ else if ((bQ == bV))
826+ then if (if ((fk > cc))
769827 then true
770- else (dJ > cu))
828+ else (dL > cw))
771829 then throw("invalid payment amount")
772- else $Tuple6(bY, (ca - eI), 0, 0, (cu - dJ), dI)
830+ else $Tuple6(ca, (cc - fk), 0, 0, (cw - dL), dK)
773831 else throw("wrong pmtAssetId")
774- let dz = eK._1
775- let dA = eK._2
776- let eL = eK._3
777- let eM = eK._4
778- let eN = eK._5
779- let eO = eK._6
780- let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
781- let bn = invoke(eF, "calcD", [toString(toBigInt(((dz + eL) - eO))), toString(toBigInt(((dA + eN) - eM))), az, g, h], nil)
782- let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
783- if ((eP == eP))
832+ let dB = fm._1
833+ let dC = fm._2
834+ let fn = fm._3
835+ let fo = fm._4
836+ let fp = fm._5
837+ let fq = fm._6
838+ let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
839+ let bp = invoke(fh, "calcD", [toString(toBigInt(((dB + fn) - fq))), toString(toBigInt(((dC + fp) - fo))), aB, h, i], nil)
840+ let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
841+ if ((fr == fr))
784842 then {
785- let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), bj, true, true, true, cu, bO)
786- let dL = dK._2
787- let dM = dK._7
788- let ck = dK._9
789- let cU = dK._10
790- let cV = dK._11
791- let eQ = bg(toBigInt(dL), toBigInt(eE), toBigInt(bj))
792- let cT = toInt(eQ._2)
793- let ex = invoke(ay, "emit", [cT], nil)
794- if ((ex == ex))
843+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
844+ let dN = dM._2
845+ let dO = dM._7
846+ let cm = dM._9
847+ let cW = dM._10
848+ let cX = dM._11
849+ let fs = bi(toBigInt(dN), toBigInt(fg), toBigInt(bl))
850+ let cV = toInt(fs._2)
851+ let eZ = invoke(aA, "emit", [cV], nil)
852+ if ((eZ == eZ))
795853 then {
796- let ey = {
797- let as = ex
798- if ($isInstanceOf(as, "Address"))
854+ let fa = {
855+ let au = eZ
856+ if ($isInstanceOf(au, "Address"))
799857 then {
800- let ez = as
801- invoke(ez, "emit", [cT], nil)
858+ let fb = au
859+ invoke(fb, "emit", [cV], nil)
802860 }
803861 else unit
804862 }
805- if ((ey == ey))
863+ if ((fa == fa))
806864 then {
807- let eA = if ((cU > 0))
808- then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
865+ let fc = if ((cW > 0))
866+ then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
809867 else nil
810- if ((eA == eA))
868+ if ((fc == fc))
811869 then {
812- let eB = if ((cV > 0))
813- then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
870+ let fd = if ((cX > 0))
871+ then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
814872 else nil
815- if ((eB == eB))
873+ if ((fd == fd))
816874 then {
817- let eC = if (et)
875+ let fe = if (eV)
818876 then {
819- let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
820- if ((eD == eD))
877+ let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
878+ if ((ff == ff))
821879 then nil
822880 else throw("Strict value is not equal to itself.")
823881 }
824- else [ScriptTransfer(do.caller, cT, dM)]
825- let ef = if ((bL > 0))
826- then [ScriptTransfer(aC, bL, fromBase58String(bO))]
882+ else [ScriptTransfer(dq.caller, cV, dO)]
883+ let eh = if ((bN > 0))
884+ then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
827885 else nil
828- ((ck ++ eC) ++ ef)
886+ ((cm ++ fe) ++ eh)
829887 }
830888 else throw("Strict value is not equal to itself.")
831889 }
842900
843901
844902
845-@Callable(do)
846-func putOneTknV2 (dP,et) = if ((size(do.payments) != 1))
903+@Callable(dq)
904+func putOneTknV2 (dR,eV) = if ((size(dq.payments) != 1))
847905 then throw("1 pmnt expd")
848906 else {
849- let dw = aD()
850- let bS = dw[r]
851- let bT = dw[s]
852- let dT = parseIntValue(dw[t])
853- let dU = parseIntValue(dw[u])
854- let bQ = if ((do.caller == this))
855- then do.originCaller
856- else do.caller
857- let dp = value(do.payments[0])
858- let bO = toBase58String(value(dp.assetId))
859- let cu = dp.amount
860- if ((10000000 > cu))
907+ let dy = aF()
908+ let bU = dy[s]
909+ let bV = dy[t]
910+ let dV = parseIntValue(dy[u])
911+ let dW = parseIntValue(dy[v])
912+ let bS = if ((dq.caller == this))
913+ then dq.originCaller
914+ else dq.caller
915+ let dr = value(dq.payments[0])
916+ let bQ = toBase58String(value(dr.assetId))
917+ let cw = dr.amount
918+ if ((10000000 > cw))
861919 then throw("Wrong pmt amt")
862920 else {
863- let cG = du(cu, bO, toString(bQ), toBase58String(do.transactionId))
864- let dL = cG._2
865- let dM = cG._7
866- let ck = cG._9
867- let cU = cG._10
868- let cV = cG._11
869- let cT = if (if ((dP > 0))
870- then (dP > dL)
921+ let cI = dw(cw, bQ, toString(bS), toBase58String(dq.transactionId))
922+ let dN = cI._2
923+ let dO = cI._7
924+ let cm = cI._9
925+ let cW = cI._10
926+ let cX = cI._11
927+ let cV = if (if ((dR > 0))
928+ then (dR > dN)
871929 else false)
872- then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
873- else dL
874- let ex = invoke(ay, "emit", [cT], nil)
875- if ((ex == ex))
930+ then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
931+ else dN
932+ let eZ = invoke(aA, "emit", [cV], nil)
933+ if ((eZ == eZ))
876934 then {
877- let ey = {
878- let as = ex
879- if ($isInstanceOf(as, "Address"))
935+ let fa = {
936+ let au = eZ
937+ if ($isInstanceOf(au, "Address"))
880938 then {
881- let ez = as
882- invoke(ez, "emit", [cT], nil)
939+ let fb = au
940+ invoke(fb, "emit", [cV], nil)
883941 }
884942 else unit
885943 }
886- if ((ey == ey))
944+ if ((fa == fa))
887945 then {
888- let eA = if ((cU > 0))
889- then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
946+ let fc = if ((cW > 0))
947+ then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
890948 else nil
891- if ((eA == eA))
949+ if ((fc == fc))
892950 then {
893- let eB = if ((cV > 0))
894- then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
951+ let fd = if ((cX > 0))
952+ then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
895953 else nil
896- if ((eB == eB))
954+ if ((fd == fd))
897955 then {
898- let eC = if (et)
956+ let fe = if (eV)
899957 then {
900- let eD = invoke(aJ, "stake", nil, [AttachedPayment(dM, cT)])
901- if ((eD == eD))
958+ let ff = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
959+ if ((ff == ff))
902960 then nil
903961 else throw("Strict value is not equal to itself.")
904962 }
905- else [ScriptTransfer(do.caller, cT, dM)]
906- let bL = bJ(cu)._2
907- let ef = if ((bL > 0))
908- then [ScriptTransfer(aC, bL, fromBase58String(bO))]
963+ else [ScriptTransfer(dq.caller, cV, dO)]
964+ let bN = bL(cw)._2
965+ let eh = if ((bN > 0))
966+ then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
909967 else nil
910- $Tuple2(((ck ++ eC) ++ ef), cT)
968+ $Tuple2(((cm ++ fe) ++ eh), cV)
911969 }
912970 else throw("Strict value is not equal to itself.")
913971 }
921979
922980
923981
924-@Callable(do)
925-func putOneTknV2READONLY (eR,eS) = {
926- let cG = du(eR, eS, "", "")
927- let dL = cG._2
928- let dM = cG._7
929- let ck = cG._9
930- let cU = cG._10
931- let cV = cG._11
932- $Tuple2(nil, dL)
982+@Callable(dq)
983+func putOneTknV2READONLY (ft,fu) = {
984+ let cI = dw(ft, fu, "", "")
985+ let dN = cI._2
986+ let dO = cI._7
987+ let cm = cI._9
988+ let cW = cI._10
989+ let cX = cI._11
990+ $Tuple2(nil, dN)
933991 }
934992
935993
936994
937-@Callable(do)
938-func putOneTknV2WithBonusREADONLY (eR,eS) = {
939- let dw = aD()
940- let bS = dw[r]
941- let bT = dw[s]
942- let cG = du(eR, eS, "", "")
943- let dL = cG._2
944- let cd = cG._3
945- let eT = cG._6
946- let dM = cG._7
947- let bY = bb(bS)
948- let ca = bb(bT)
949- let eU = fraction(ca, a, bY)
950- let eV = fraction(eR, a, (eU + a))
951- let eW = (eR - eV)
952- let eX = fraction(eT, eW, ca)
953- let eY = fraction((dL - eX), a, eX)
954- let bL = bJ(eR)._2
955- $Tuple2(nil, $Tuple3(dL, bL, eY))
995+@Callable(dq)
996+func putOneTknV2WithBonusREADONLY (ft,fu) = {
997+ let dy = aF()
998+ let bU = dy[s]
999+ let bV = dy[t]
1000+ let cI = dw(ft, fu, "", "")
1001+ let dN = cI._2
1002+ let cf = cI._3
1003+ let fv = cI._6
1004+ let dO = cI._7
1005+ let ca = bd(bU)
1006+ let cc = bd(bV)
1007+ let fw = fraction(cc, a, ca)
1008+ let fx = fraction(ft, a, (fw + a))
1009+ let fy = (ft - fx)
1010+ let fz = fraction(fv, fy, cc)
1011+ let fA = fraction((dN - fz), a, fz)
1012+ let bN = bL(ft)._2
1013+ $Tuple2(nil, $Tuple3(dN, bN, fA))
9561014 }
9571015
9581016
9591017
960-@Callable(do)
961-func putForFree (eZ) = if ((0 > eZ))
1018+@Callable(dq)
1019+func putForFree (fB) = if ((0 > fB))
9621020 then throw("Wrong slpg")
963- else if ((size(do.payments) != 2))
1021+ else if ((size(dq.payments) != 2))
9641022 then throw("2 pmnts expd")
9651023 else {
966- let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], eZ, false, false, true, 0, "")
967- dK._9
1024+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fB, false, false, true, 0, "")
1025+ dM._9
9681026 }
9691027
9701028
9711029
972-@Callable(do)
1030+@Callable(dq)
9731031 func get () = {
974- let cG = dn(do)
975- let fa = cG._1
976- let cj = cG._2
977- let cu = cG._3
978- let bO = cG._4
979- let ck = cG._5
980- let fb = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
981- if ((fb == fb))
982- then ck
1032+ let cI = dp(dq)
1033+ let fC = cI._1
1034+ let cl = cI._2
1035+ let cw = cI._3
1036+ let bQ = cI._4
1037+ let cm = cI._5
1038+ let fD = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1039+ if ((fD == fD))
1040+ then cm
9831041 else throw("Strict value is not equal to itself.")
9841042 }
9851043
9861044
9871045
988-@Callable(do)
989-func getOneTkn (fc,fd,fe,dO,bj) = if ((size(do.payments) != 1))
1046+@Callable(dq)
1047+func getOneTkn (fE,fF,fG,dQ,bl) = if ((size(dq.payments) != 1))
9901048 then throw("1 pmnt expd")
9911049 else {
992- let bA = aD()
993- let bR = bA[q]
994- let bS = bA[r]
995- let bT = bA[s]
996- let bU = parseIntValue(bA[t])
997- let bV = parseIntValue(bA[u])
998- let bW = bA[p]
999- let eu = aH()
1000- let eF = valueOrErrorMessage(addressFromString(eu[z]), "Wr sl addr")
1001- let dp = value(do.payments[0])
1002- let eH = valueOrElse(getString(this, aa()), "")
1003- let bQ = if ((eH == toString(do.caller)))
1004- then do.originCaller
1005- else do.caller
1006- let bN = toBase58String(do.transactionId)
1007- let bO = value(dp.assetId)
1008- let cu = dp.amount
1009- if ((1000000000 > cu))
1050+ let bC = aF()
1051+ let bT = bC[r]
1052+ let bU = bC[s]
1053+ let bV = bC[t]
1054+ let bW = parseIntValue(bC[u])
1055+ let bX = parseIntValue(bC[v])
1056+ let bY = bC[q]
1057+ let eW = aJ()
1058+ let fh = valueOrErrorMessage(addressFromString(eW[A]), "Wr sl addr")
1059+ let dr = value(dq.payments[0])
1060+ let fj = valueOrElse(getString(this, ac()), "")
1061+ let bS = if ((fj == toString(dq.caller)))
1062+ then dq.originCaller
1063+ else dq.caller
1064+ let bP = toBase58String(dq.transactionId)
1065+ let bQ = value(dr.assetId)
1066+ let cw = dr.amount
1067+ if ((1000000000 > cw))
10101068 then throw("Min pmt 10 LP")
1011- else if (if (if ((0 > bj))
1069+ else if (if (if ((0 > bl))
10121070 then true
1013- else (0 > fc))
1071+ else (0 > fE))
10141072 then true
1015- else (0 > fe))
1073+ else (0 > fG))
10161074 then throw("Wrong params")
1017- else if ((bR != toBase58String(bO)))
1075+ else if ((bT != toBase58String(bQ)))
10181076 then throw("Wrong LP")
10191077 else {
1020- let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
1021- let ff = cG._1
1022- let fg = cG._2
1023- let bY = bb(bS)
1024- let ca = bb(bT)
1025- let fh = if ((dO == bS))
1026- then $Tuple7((bY - ff), (ca - fg), fc, fg, 0, 0, (ff + fc))
1027- else if ((dO == bT))
1028- then $Tuple7((bY - ff), (ca - fg), 0, 0, fc, ff, (fg + fc))
1078+ let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1079+ let fH = cI._1
1080+ let fI = cI._2
1081+ let ca = bd(bU)
1082+ let cc = bd(bV)
1083+ let fJ = if ((dQ == bU))
1084+ then $Tuple7((ca - fH), (cc - fI), fE, fI, 0, 0, (fH + fE))
1085+ else if ((dQ == bV))
1086+ then $Tuple7((ca - fH), (cc - fI), 0, 0, fE, fH, (fI + fE))
10291087 else throw("wrong outAssetId")
1030- let dz = fh._1
1031- let dA = fh._2
1032- let eL = fh._3
1033- let eM = fh._4
1034- let eN = fh._5
1035- let eO = fh._6
1036- let fi = fh._7
1037- if (if ((0 > eL))
1088+ let dB = fJ._1
1089+ let dC = fJ._2
1090+ let fn = fJ._3
1091+ let fo = fJ._4
1092+ let fp = fJ._5
1093+ let fq = fJ._6
1094+ let fK = fJ._7
1095+ if (if ((0 > fn))
10381096 then true
1039- else (0 > eN))
1097+ else (0 > fp))
10401098 then throw("Wrong calc")
10411099 else {
1042- let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
1043- let bn = invoke(eF, "calcD", [toString(((dz - eL) + eO)), toString(((dA + eM) - eN)), az, g, h], nil)
1044- let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
1045- if ((eP == eP))
1100+ let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1101+ let bp = invoke(fh, "calcD", [toString(((dB - fn) + fq)), toString(((dC + fo) - fp)), aB, h, i], nil)
1102+ let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1103+ if ((fr == fr))
10461104 then {
1047- let dX = bJ(fi)._1
1048- let fj = bg(toBigInt(dX), toBigInt(fe), toBigInt(bj))
1049- if ((fj == fj))
1105+ let dZ = bL(fK)._1
1106+ let fL = bi(toBigInt(dZ), toBigInt(fG), toBigInt(bl))
1107+ if ((fL == fL))
10501108 then {
1051- let fk = if ((dO == bS))
1052- then $Tuple2(toInt(fj._2), 0)
1053- else $Tuple2(0, toInt(fj._2))
1054- let ea = fk._1
1055- let eb = fk._2
1056- let dY = (ea + eb)
1057- let bL = (fi - dX)
1058- let ee = if ((dO == "WAVES"))
1109+ let fM = if ((dQ == bU))
1110+ then $Tuple2(toInt(fL._2), 0)
1111+ else $Tuple2(0, toInt(fL._2))
1112+ let ec = fM._1
1113+ let ed = fM._2
1114+ let ea = (ec + ed)
1115+ let bN = (fK - dZ)
1116+ let eg = if ((dQ == "WAVES"))
10591117 then unit
1060- else fromBase58String(dO)
1061- let ef = if ((bL > 0))
1062- then [ScriptTransfer(aC, bL, ee)]
1118+ else fromBase58String(dQ)
1119+ let eh = if ((bN > 0))
1120+ then [ScriptTransfer(aE, bN, eg)]
10631121 else nil
1064- let ec = bd(B(ca, bV), B(bY, bU))
1065- let ed = E(ec, a)
1066- let ck = [ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
1067- if ((ck == ck))
1122+ let ee = bf(C(cc, bX), C(ca, bW))
1123+ let ef = F(ee, a)
1124+ let cm = [ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)]
1125+ if ((cm == cm))
10681126 then {
1069- let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
1070- if ((eg == eg))
1071- then (ck ++ ef)
1127+ let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1128+ if ((ei == ei))
1129+ then (cm ++ eh)
10721130 else throw("Strict value is not equal to itself.")
10731131 }
10741132 else throw("Strict value is not equal to itself.")
10821140
10831141
10841142
1085-@Callable(do)
1086-func getOneTknV2 (dO,dP) = {
1087- let fl = dN(dO, dP, do.payments, do.caller, do.originCaller, do.transactionId)
1088- let ck = fl._1
1089- let dY = fl._2
1090- $Tuple2(ck, dY)
1143+@Callable(dq)
1144+func getOneTknV2 (dQ,dR) = {
1145+ let fN = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1146+ let cm = fN._1
1147+ let ea = fN._2
1148+ $Tuple2(cm, ea)
10911149 }
10921150
10931151
10941152
1095-@Callable(do)
1096-func getOneTknV2READONLY (dO,fm) = {
1097- let dw = aD()
1098- let bR = dw[q]
1099- let bS = dw[r]
1100- let bT = dw[s]
1101- let cG = bM("", bR, fm, this)
1102- let ff = cG._1
1103- let fg = cG._2
1104- let bY = bb(bS)
1105- let ca = bb(bT)
1106- let dz = (bY - ff)
1107- let dA = (ca - fg)
1108- let fn = if ((dO == bS))
1109- then $Tuple4(dA, dz, fg, ff)
1110- else if ((dO == bT))
1111- then $Tuple4(dz, dA, ff, fg)
1153+@Callable(dq)
1154+func getOneTknV2READONLY (dQ,fO) = {
1155+ let dy = aF()
1156+ let bT = dy[r]
1157+ let bU = dy[s]
1158+ let bV = dy[t]
1159+ let cI = bO("", bT, fO, this)
1160+ let fH = cI._1
1161+ let fI = cI._2
1162+ let ca = bd(bU)
1163+ let cc = bd(bV)
1164+ let dB = (ca - fH)
1165+ let dC = (cc - fI)
1166+ let fP = if ((dQ == bU))
1167+ then $Tuple4(dC, dB, fI, fH)
1168+ else if ((dQ == bV))
1169+ then $Tuple4(dB, dC, fH, fI)
11121170 else throw("wrong outAssetId")
1113- let fo = fn._1
1114- let fp = fn._2
1115- let fq = fn._3
1116- let fr = fn._4
1117- let fs = 1
1118- let fc = {
1119- let dG = invoke(aL, "calcSwapXToY", [toString(fq), toString(fo), toString(fp), "", az, g, toString(fs), h], nil)
1120- if ($isInstanceOf(dG, "Int"))
1121- then dG
1122- else throw(($getType(dG) + " couldn't be cast to Int"))
1171+ let fQ = fP._1
1172+ let fR = fP._2
1173+ let fS = fP._3
1174+ let fT = fP._4
1175+ let fU = 1
1176+ let fE = {
1177+ let dI = invoke(aN, "calcSwapXToY", [toString(fS), toString(fQ), toString(fR), "", aB, h, toString(fU), i], nil)
1178+ if ($isInstanceOf(dI, "Int"))
1179+ then dI
1180+ else throw(($getType(dI) + " couldn't be cast to Int"))
11231181 }
1124- let fi = (fc + fr)
1125- let ft = bJ(fi)
1126- let dX = ft._1
1127- let bL = ft._2
1128- $Tuple2(nil, $Tuple2(dX, bL))
1182+ let fK = (fE + fT)
1183+ let fV = bL(fK)
1184+ let dZ = fV._1
1185+ let bN = fV._2
1186+ $Tuple2(nil, $Tuple2(dZ, bN))
11291187 }
11301188
11311189
11321190
1133-@Callable(do)
1134-func getOneTknV2WithBonusREADONLY (dO,fm) = {
1135- let dw = aD()
1136- let bS = dw[r]
1137- let bT = dw[s]
1138- let bR = dw[q]
1139- let bY = bb(bS)
1140- let ca = bb(bT)
1141- let fu = {
1142- let dG = invoke(this, "getOneTknV2READONLY", [dO, fm], nil)
1143- if ($isInstanceOf(dG, "(Int, Int)"))
1144- then dG
1145- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
1191+@Callable(dq)
1192+func getOneTknV2WithBonusREADONLY (dQ,fO) = {
1193+ let dy = aF()
1194+ let bU = dy[s]
1195+ let bV = dy[t]
1196+ let bT = dy[r]
1197+ let ca = bd(bU)
1198+ let cc = bd(bV)
1199+ let fW = {
1200+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, fO], nil)
1201+ if ($isInstanceOf(dI, "(Int, Int)"))
1202+ then dI
1203+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
11461204 }
1147- let dX = fu._1
1148- let bL = fu._2
1149- let cG = bM("", bR, fm, this)
1150- let ci = cG._1
1151- let cj = cG._2
1152- let fv = (ci + cj)
1153- let eY = fraction((dX - fv), a, fv)
1154- $Tuple2(nil, $Tuple3(dX, bL, eY))
1205+ let dZ = fW._1
1206+ let bN = fW._2
1207+ let cI = bO("", bT, fO, this)
1208+ let ck = cI._1
1209+ let cl = cI._2
1210+ let fX = (ck + cl)
1211+ let fA = fraction((dZ - fX), a, fX)
1212+ $Tuple2(nil, $Tuple3(dZ, bN, fA))
11551213 }
11561214
11571215
11581216
1159-@Callable(do)
1160-func getNoLess (fw,fx) = {
1161- let cG = dn(do)
1162- let ci = cG._1
1163- let cj = cG._2
1164- let cu = cG._3
1165- let bO = cG._4
1166- let ck = cG._5
1167- if ((fw > ci))
1168- then throw(((("Failed: " + toString(ci)) + " < ") + toString(fw)))
1169- else if ((fx > cj))
1170- then throw(((("Failed: " + toString(cj)) + " < ") + toString(fx)))
1217+@Callable(dq)
1218+func getNoLess (fY,fZ) = {
1219+ let cI = dp(dq)
1220+ let ck = cI._1
1221+ let cl = cI._2
1222+ let cw = cI._3
1223+ let bQ = cI._4
1224+ let cm = cI._5
1225+ if ((fY > ck))
1226+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(fY)))
1227+ else if ((fZ > cl))
1228+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(fZ)))
11711229 else {
1172- let fy = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
1173- if ((fy == fy))
1174- then ck
1230+ let ga = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1231+ if ((ga == ga))
1232+ then cm
11751233 else throw("Strict value is not equal to itself.")
11761234 }
11771235 }
11781236
11791237
11801238
1181-@Callable(do)
1182-func unstakeAndGet (bK) = {
1183- let fz = if ((size(do.payments) != 0))
1239+@Callable(dq)
1240+func unstakeAndGet (bM) = {
1241+ let gb = if ((size(dq.payments) != 0))
11841242 then throw("No pmnts expd")
11851243 else true
1186- if ((fz == fz))
1244+ if ((gb == gb))
11871245 then {
1188- let bA = aD()
1189- let fA = aH()
1190- let dM = fromBase58String(bA[q])
1191- let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
1192- let fC = invoke(fB, "unstake", [toBase58String(dM), bK], nil)
1193- if ((fC == fC))
1246+ let bC = aF()
1247+ let gc = aJ()
1248+ let dO = fromBase58String(bC[r])
1249+ let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1250+ let ge = invoke(gd, "unstake", [toBase58String(dO), bM], nil)
1251+ if ((ge == ge))
11941252 then {
1195- let cG = bM(toBase58String(do.transactionId), toBase58String(dM), bK, do.caller)
1196- let bW = parseIntValue(cG._9)
1197- let ck = cG._10
1198- let fD = if (if (aA())
1253+ let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
1254+ let bY = parseIntValue(cI._9)
1255+ let cm = cI._10
1256+ let gf = if (if (aC())
11991257 then true
1200- else (bW == n))
1201- then throw(("Blocked: " + toString(bW)))
1258+ else (bY == o))
1259+ then throw(("Blocked: " + toString(bY)))
12021260 else true
1203- if ((fD == fD))
1261+ if ((gf == gf))
12041262 then {
1205- let fE = invoke(ay, "burn", [bK], [AttachedPayment(dM, bK)])
1206- if ((fE == fE))
1207- then ck
1263+ let gg = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1264+ if ((gg == gg))
1265+ then cm
12081266 else throw("Strict value is not equal to itself.")
12091267 }
12101268 else throw("Strict value is not equal to itself.")
12161274
12171275
12181276
1219-@Callable(do)
1220-func unstakeAndGetOneTkn (fF,dO,dP) = {
1221- let fz = if ((size(do.payments) != 0))
1277+@Callable(dq)
1278+func unstakeAndGetOneTkn (gh,dQ,dR) = {
1279+ let gb = if ((size(dq.payments) != 0))
12221280 then throw("No pmnts expd")
12231281 else true
1224- if ((fz == fz))
1282+ if ((gb == gb))
12251283 then {
1226- let bA = aD()
1227- let fA = aH()
1228- let dM = fromBase58String(bA[q])
1229- let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
1230- let fC = invoke(fB, "unstake", [toBase58String(dM), fF], nil)
1231- if ((fC == fC))
1284+ let bC = aF()
1285+ let gc = aJ()
1286+ let dO = fromBase58String(bC[r])
1287+ let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1288+ let ge = invoke(gd, "unstake", [toBase58String(dO), gh], nil)
1289+ if ((ge == ge))
12321290 then {
1233- let fG = dN(dO, dP, [AttachedPayment(dM, fF)], do.caller, do.originCaller, do.transactionId)
1234- let ck = fG._1
1235- let dY = fG._2
1236- $Tuple2(ck, dY)
1291+ let gi = dP(dQ, dR, [AttachedPayment(dO, gh)], dq.caller, dq.originCaller, dq.transactionId)
1292+ let cm = gi._1
1293+ let ea = gi._2
1294+ $Tuple2(cm, ea)
12371295 }
12381296 else throw("Strict value is not equal to itself.")
12391297 }
12421300
12431301
12441302
1245-@Callable(do)
1246-func activate (fH,fI) = if ((toString(do.caller) != toString(ay)))
1247- then throw("denied")
1248- else $Tuple2([StringEntry(X(), fH), StringEntry(Y(), fI)], "success")
1249-
1250-
1251-
1252-@Callable(do)
1253-func setS (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
1254- then ek
1255- else [StringEntry(fJ, fD)]
1256-
1257-
1258-
1259-@Callable(do)
1260-func setI (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
1261- then ek
1262- else [IntegerEntry(fJ, fD)]
1263-
1264-
1265-
1266-@Callable(do)
1267-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
1268-
1269-
1270-
1271-@Callable(do)
1272-func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
1273-
1274-
1275-
1276-@Callable(do)
1277-func calcPricesWrapperREADONLY (bu,bv,bz) = {
1278- let fK = by(bu, bv, bz)
1279- $Tuple2(nil, [toString(fK[0]), toString(fK[1]), toString(fK[2])])
1303+@Callable(dq)
1304+func putOneTknV3 () = {
1305+ let dy = aF()
1306+ let bU = dy[s]
1307+ let bV = dy[t]
1308+ let bT = dy[r]
1309+ let gj = dq.payments[0]
1310+ let gk = toBase58String(value(gj.assetId))
1311+ let fk = gj.amount
1312+ let gl = bL(fk)
1313+ let ft = gl._1
1314+ let bN = gl._2
1315+ let gm = if ((size(dq.payments) == 1))
1316+ then if ((gk == bU))
1317+ then $Tuple2(ft, 0)
1318+ else if ((gk == bV))
1319+ then $Tuple2(0, ft)
1320+ else throw("invalid payment")
1321+ else throw("invalid payments size")
1322+ let gn = gm._1
1323+ let go = gm._2
1324+ let gp = bd(bU)
1325+ let gq = bd(bV)
1326+ let gr = (gp - gn)
1327+ let gs = (gq - go)
1328+ let bq = ej([toBigInt(gr), toBigInt(gs)])
1329+ let bp = ej([toBigInt(gp), toBigInt(gq)])
1330+ let gt = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1331+ let gu = ((gt * (bp - bq)) / bq)
1332+ $Tuple2(nil, toInt(gu))
12801333 }
12811334
12821335
12831336
1284-@Callable(do)
1285-func fromX18WrapperREADONLY (F,fL) = $Tuple2(nil, E(parseBigIntValue(F), fL))
1337+@Callable(dq)
1338+func activate (gv,gw) = if ((toString(dq.caller) != toString(aA)))
1339+ then throw("denied")
1340+ else $Tuple2([StringEntry(Z(), gv), StringEntry(aa(), gw)], "success")
12861341
12871342
12881343
1289-@Callable(do)
1290-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
1344+@Callable(dq)
1345+func setS (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1346+ then eM
1347+ else [StringEntry(gx, gf)]
12911348
12921349
12931350
1294-@Callable(do)
1295-func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
1351+@Callable(dq)
1352+func setI (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1353+ then eM
1354+ else [IntegerEntry(gx, gf)]
12961355
12971356
12981357
1299-@Callable(do)
1300-func estimatePutOperationWrapperREADONLY (bN,bj,cm,cn,co,cp,fM,cq,cr) = $Tuple2(nil, cl(bN, bj, cm, cn, co, cp, fM, cq, cr, true, false, 0, ""))
1358+@Callable(dq)
1359+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
13011360
13021361
13031362
1304-@Callable(do)
1305-func estimateGetOperationWrapperREADONLY (bN,fN,bP,fM) = {
1306- let cG = bM(bN, fN, bP, addressFromStringValue(fM))
1307- $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
1363+@Callable(dq)
1364+func getAccBalanceWrapperREADONLY (be) = $Tuple2(nil, bd(be))
1365+
1366+
1367+
1368+@Callable(dq)
1369+func calcPricesWrapperREADONLY (bw,bx,bB) = {
1370+ let gy = bA(bw, bx, bB)
1371+ $Tuple2(nil, [toString(gy[0]), toString(gy[1]), toString(gy[2])])
13081372 }
13091373
13101374
13111375
1312-@Callable(do)
1313-func getFeeREADONLY () = $Tuple2(nil, ac)
1376+@Callable(dq)
1377+func fromX18WrapperREADONLY (G,gz) = $Tuple2(nil, F(parseBigIntValue(G), gz))
13141378
13151379
1316-@Verifier(fO)
1317-func fP () = {
1318- let fQ = {
1319- let as = eh()
1320- if ($isInstanceOf(as, "ByteVector"))
1380+
1381+@Callable(dq)
1382+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1383+
1384+
1385+
1386+@Callable(dq)
1387+func calcPriceBigIntWrapperREADONLY (bg,bh) = $Tuple2(nil, toString(bf(parseBigIntValue(bg), parseBigIntValue(bh))))
1388+
1389+
1390+
1391+@Callable(dq)
1392+func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gA,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gA, cs, ct, true, false, 0, ""))
1393+
1394+
1395+
1396+@Callable(dq)
1397+func estimateGetOperationWrapperREADONLY (bP,gB,bR,gA) = {
1398+ let cI = bO(bP, gB, bR, addressFromStringValue(gA))
1399+ $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1400+ }
1401+
1402+
1403+
1404+@Callable(dq)
1405+func getFeeREADONLY () = $Tuple2(nil, ae)
1406+
1407+
1408+@Verifier(gC)
1409+func gD () = {
1410+ let gE = {
1411+ let au = eK()
1412+ if ($isInstanceOf(au, "ByteVector"))
13211413 then {
1322- let em = as
1323- em
1414+ let eO = au
1415+ eO
13241416 }
1325- else if ($isInstanceOf(as, "Unit"))
1326- then fO.senderPublicKey
1417+ else if ($isInstanceOf(au, "Unit"))
1418+ then gC.senderPublicKey
13271419 else throw("Match error")
13281420 }
1329- let as = fO
1330- if ($isInstanceOf(as, "Order"))
1421+ let au = gC
1422+ if ($isInstanceOf(au, "Order"))
13311423 then {
1332- let db = as
1333- let fR = aB()
1334- let fS = da(db)
1335- let fT = sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey)
1336- let fU = sigVerify(db.bodyBytes, db.proofs[1], fR)
1337- if (if (if (fS)
1338- then fT
1424+ let dd = au
1425+ let gF = aD()
1426+ let gG = dc(dd)
1427+ let gH = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1428+ let gI = sigVerify(dd.bodyBytes, dd.proofs[1], gF)
1429+ if (if (if (gG)
1430+ then gH
13391431 else false)
1340- then fU
1432+ then gI
13411433 else false)
13421434 then true
1343- else an(fS, fT, fU)
1435+ else ap(gG, gH, gI)
13441436 }
1345- else if ($isInstanceOf(as, "SetScriptTransaction"))
1437+ else if ($isInstanceOf(au, "SetScriptTransaction"))
13461438 then {
1347- let ei = as
1348- let fV = blake2b256(value(ei.script))
1349- let fW = fromBase64String(value(getString(ay, al())))
1350- let fX = scriptHash(this)
1351- if (if ((fW == fV))
1352- then (fX != fV)
1439+ let eq = au
1440+ let gJ = blake2b256(value(eq.script))
1441+ let gK = fromBase64String(value(getString(aA, an())))
1442+ let gL = scriptHash(this)
1443+ if (if ((gK == gJ))
1444+ then (gL != gJ)
13531445 else false)
13541446 then true
1355- else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
1447+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
13561448 }
1357- else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
1449+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
13581450 }
13591451
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
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = fraction(5, a, 10000)
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = fraction(5, a, 10000)
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((d > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N (G) = if ((d > G))
75+ then -(G)
76+ else G
7377
7478
75-func N () = "%s__managerPublicKey"
79+func O () = "%s__factoryContract"
7680
7781
78-func O () = "%s__pendingManagerPublicKey"
82+func P () = "%s__managerPublicKey"
7983
8084
81-func P () = "%s%s__price__last"
85+func Q () = "%s__pendingManagerPublicKey"
8286
8387
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
88+func R () = "%s%s__price__last"
8589
8690
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
91+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
8892
8993
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
94+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9195
9296
93-func X () = "%s__amountAsset"
97+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9498
9599
96-func Y () = "%s__priceAsset"
100+func Z () = "%s__amountAsset"
97101
98102
99-func Z () = "%s__amp"
103+func aa () = "%s__priceAsset"
100104
101105
102-func aa () = "%s__addonAddr"
106+func ab () = "%s__amp"
103107
104108
105-let ab = "%s__fee"
106-
107-let ac = valueOrElse(getInteger(this, ab), A)
108-
109-func ad () = "%s__factoryConfig"
109+func ac () = "%s__addonAddr"
110110
111111
112-func ae () = "%s%s__matcher__publicKey"
112+let ad = "%s__fee"
113+
114+let ae = valueOrElse(getInteger(this, ad), B)
115+
116+func af () = "%s__factoryConfig"
113117
114118
115-func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
119+func ag () = "%s%s__matcher__publicKey"
116120
117121
118-func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
122+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
119123
120124
121-func ak () = "%s__shutdown"
125+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
122126
123127
124-func al () = "%s__allowedLpStableScriptHash"
128+func am () = "%s__shutdown"
125129
126130
127-func am () = "%s__feeCollectorAddress"
131+func an () = "%s__allowedLpStableScriptHash"
128132
129133
130-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
134+func ao () = "%s__feeCollectorAddress"
131135
132136
133-func ar (F) = {
134- let as = F
135- if ($isInstanceOf(as, "String"))
137+func ap (aq,ar,as) = throw(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
138+
139+
140+func at (G) = {
141+ let au = G
142+ if ($isInstanceOf(au, "String"))
136143 then {
137- let at = as
138- at
144+ let av = au
145+ av
139146 }
140147 else throw("fail cast to String")
141148 }
142149
143150
144-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
151+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
145152
146153
147-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
154+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
148155
149156
150-let ay = addressFromStringValue(au(this, M()))
157+let aA = addressFromStringValue(aw(this, O()))
151158
152-let az = au(this, Z())
159+let aB = aw(this, ab())
153160
154-func aA () = valueOrElse(getBoolean(ay, ak()), false)
161+func aC () = valueOrElse(getBoolean(aA, am()), false)
155162
156163
157-func aB () = fromBase58String(au(ay, ae()))
164+func aD () = fromBase58String(aw(aA, ag()))
158165
159166
160-let aC = addressFromStringValue(au(ay, am()))
167+let aE = addressFromStringValue(aw(aA, ao()))
161168
162-func aD () = {
163- let aE = au(this, X())
164- let aF = au(this, Y())
165- let aG = ax(ay, ai(aF))
166- let ag = ax(ay, ai(aE))
167- split(au(ay, af(toString(ag), toString(aG))), i)
169+func aF () = {
170+ let aG = aw(this, Z())
171+ let aH = aw(this, aa())
172+ let aI = az(aA, ak(aH))
173+ let ai = az(aA, ak(aG))
174+ split(aw(aA, ah(toString(ai), toString(aI))), j)
168175 }
169176
170177
171-func aH () = split(au(ay, ad()), i)
178+func aJ () = split(aw(aA, af()), j)
172179
173180
174-let aI = aH()
181+let aK = aJ()
175182
176-let aJ = valueOrErrorMessage(addressFromString(aI[x]), "Invalid staking contract address")
183+let aL = valueOrErrorMessage(addressFromString(aK[y]), "Invalid staking contract address")
177184
178-let aK = valueOrErrorMessage(addressFromString(aI[y]), "Invalid slipage contract address")
185+let aM = valueOrErrorMessage(addressFromString(aK[z]), "Invalid slipage contract address")
179186
180-let aL = valueOrErrorMessage(addressFromString(aI[z]), "Invalid gwx contract address")
187+let aN = valueOrErrorMessage(addressFromString(aK[A]), "Invalid gwx contract address")
181188
182-func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], i)
189+func aO (aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY)], j)
183190
184191
185-func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], i)
192+func aZ (ba,bb,bc,aS,aV,aW) = makeString(["%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(aS), toString(aV), toString(aW)], j)
186193
187194
188-func bb (bc) = if ((bc == "WAVES"))
195+func bd (be) = if ((be == "WAVES"))
189196 then wavesBalance(this).available
190- else assetBalance(this, fromBase58String(bc))
197+ else assetBalance(this, fromBase58String(be))
191198
192199
193-func bd (be,bf) = fraction(be, c, bf)
200+func bf (bg,bh) = fraction(bg, c, bh)
194201
195202
196-func bg (bh,bi,bj) = {
197- let bk = fraction((bh - bi), b, bi)
198- let bl = ((bj - L(bk)) > d)
199- if (!(bl))
200- then throw(("Big slpg: " + toString(bk)))
201- else $Tuple2(bl, min([bh, bi]))
203+func bi (bj,bk,bl) = {
204+ let bm = fraction((bj - bk), b, bk)
205+ let bn = ((bl - M(bm)) > d)
206+ if (!(bn))
207+ then throw(("Big slpg: " + toString(bm)))
208+ else $Tuple2(bn, min([bj, bk]))
202209 }
203210
204211
205-func bm (bn,bo,bp) = {
206- let bk = fraction(bo, b, bn)
207- let bq = (bp > bk)
208- if (if (bq)
212+func bo (bp,bq,br) = {
213+ let bm = fraction(bq, b, bp)
214+ let bs = (br > bm)
215+ if (if (bs)
209216 then true
210- else (bo > bn))
211- then throw(((((((toString(bo) + " ") + toString(bn)) + " ") + toString(bk)) + " ") + toString(bp)))
212- else bq
217+ else (bq > bp))
218+ then throw(((((((toString(bq) + " ") + toString(bp)) + " ") + toString(bm)) + " ") + toString(br)))
219+ else bs
213220 }
214221
215222
216-func br (bs,bt,bu,bv) = {
217- let bw = B(bu, bs)
218- let bx = B(bv, bt)
219- bd(bx, bw)
223+func bt (bu,bv,bw,bx) = {
224+ let by = C(bw, bu)
225+ let bz = C(bx, bv)
226+ bf(bz, by)
220227 }
221228
222229
223-func by (bu,bv,bz) = {
224- let bA = aD()
225- let bB = parseIntValue(bA[t])
226- let bC = parseIntValue(bA[u])
227- let bD = br(bB, bC, bu, bv)
228- let bf = B(bu, bB)
229- let be = B(bv, bC)
230- let bE = B(bz, a)
231- let bF = bd(bf, bE)
232- let bG = bd(be, bE)
233-[bD, bF, bG]
230+func bA (bw,bx,bB) = {
231+ let bC = aF()
232+ let bD = parseIntValue(bC[u])
233+ let bE = parseIntValue(bC[v])
234+ let bF = bt(bD, bE, bw, bx)
235+ let bh = C(bw, bD)
236+ let bg = C(bx, bE)
237+ let bG = C(bB, a)
238+ let bH = bf(bh, bG)
239+ let bI = bf(bg, bG)
240+[bF, bH, bI]
234241 }
235242
236243
237-func bH (bu,bv,bz) = {
238- let bI = by(bu, bv, bz)
239-[E(bI[0], a), E(bI[1], a), E(bI[2], a)]
244+func bJ (bw,bx,bB) = {
245+ let bK = bA(bw, bx, bB)
246+[F(bK[0], a), F(bK[1], a), F(bK[2], a)]
240247 }
241248
242249
243-func bJ (bK) = {
244- let bL = fraction(bK, ac, a)
245- $Tuple2((bK - bL), bL)
250+func bL (bM) = {
251+ let bN = fraction(bM, ae, a)
252+ $Tuple2((bM - bN), bN)
246253 }
247254
248255
249-func bM (bN,bO,bP,bQ) = {
250- let bA = aD()
251- let bR = bA[q]
252- let bS = bA[r]
253- let bT = bA[s]
254- let bU = parseIntValue(bA[t])
255- let bV = parseIntValue(bA[u])
256- let bW = bA[p]
257- let bX = valueOrErrorMessage(assetInfo(fromBase58String(bR)), "Wrong LP id").quantity
258- if ((bR != bO))
256+func bO (bP,bQ,bR,bS) = {
257+ let bC = aF()
258+ let bT = bC[r]
259+ let bU = bC[s]
260+ let bV = bC[t]
261+ let bW = parseIntValue(bC[u])
262+ let bX = parseIntValue(bC[v])
263+ let bY = bC[q]
264+ let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bT)), "Wrong LP id").quantity
265+ if ((bT != bQ))
259266 then throw("Wrong pmt asset")
260267 else {
261- let bY = bb(bS)
262- let bZ = B(bY, bU)
263- let ca = bb(bT)
264- let cb = B(ca, bV)
265- let cc = bd(cb, bZ)
266- let cd = E(cc, a)
267- let ce = B(bP, a)
268- let cf = B(bX, a)
269- let cg = fraction(bZ, ce, cf)
270- let ch = fraction(cb, ce, cf)
271- let ci = E(cg, bU)
272- let cj = E(ch, bV)
273- let ck = if ((bN == ""))
268+ let ca = bd(bU)
269+ let cb = C(ca, bW)
270+ let cc = bd(bV)
271+ let cd = C(cc, bX)
272+ let ce = bf(cd, cb)
273+ let cf = F(ce, a)
274+ let cg = C(bR, a)
275+ let ch = C(bZ, a)
276+ let ci = fraction(cb, cg, ch)
277+ let cj = fraction(cd, cg, ch)
278+ let ck = F(ci, bW)
279+ let cl = F(cj, bX)
280+ let cm = if ((bP == ""))
274281 then nil
275- else [ScriptTransfer(bQ, ci, if ((bS == "WAVES"))
282+ else [ScriptTransfer(bS, ck, if ((bU == "WAVES"))
276283 then unit
277- else fromBase58String(bS)), ScriptTransfer(bQ, cj, if ((bT == "WAVES"))
284+ else fromBase58String(bU)), ScriptTransfer(bS, cl, if ((bV == "WAVES"))
278285 then unit
279- else fromBase58String(bT)), StringEntry(W(toString(bQ), bN), aX(ci, cj, bP, cd, height, lastBlock.timestamp)), IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd)]
280- $Tuple10(ci, cj, bS, bT, bY, ca, bX, cc, bW, ck)
286+ else fromBase58String(bV)), StringEntry(Y(toString(bS), bP), aZ(ck, cl, bR, cf, height, lastBlock.timestamp)), IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf)]
287+ $Tuple10(ck, cl, bU, bV, ca, cc, bZ, ce, bY, cm)
281288 }
282289 }
283290
284291
285-func cl (bN,bj,cm,cn,co,cp,bQ,cq,cr,cs,ct,cu,cv) = {
286- let bA = aD()
287- let bR = fromBase58String(bA[q])
288- let cw = bA[r]
289- let cx = bA[s]
290- let cy = bA[v]
291- let cz = bA[w]
292- let cA = parseIntValue(bA[t])
293- let cB = parseIntValue(bA[u])
294- let bW = bA[p]
295- let cC = valueOrErrorMessage(assetInfo(bR), "Wr lp as").quantity
296- let bY = if (cq)
297- then bb(cw)
298- else if (if (cs)
299- then (cv == cw)
292+func cn (bP,bl,co,cp,cq,cr,bS,cs,ct,cu,cv,cw,cx) = {
293+ let bC = aF()
294+ let bT = fromBase58String(bC[r])
295+ let cy = bC[s]
296+ let cz = bC[t]
297+ let cA = bC[w]
298+ let cB = bC[x]
299+ let cC = parseIntValue(bC[u])
300+ let cD = parseIntValue(bC[v])
301+ let bY = bC[q]
302+ let cE = valueOrErrorMessage(assetInfo(bT), "Wr lp as").quantity
303+ let ca = if (cs)
304+ then bd(cy)
305+ else if (if (cu)
306+ then (cx == cy)
300307 else false)
301- then (bb(cw) - cu)
302- else if (cs)
303- then bb(cw)
304- else (bb(cw) - cm)
305- let ca = if (cq)
306- then bb(cx)
307- else if (if (cs)
308- then (cv == cx)
308+ then (bd(cy) - cw)
309+ else if (cu)
310+ then bd(cy)
311+ else (bd(cy) - co)
312+ let cc = if (cs)
313+ then bd(cz)
314+ else if (if (cu)
315+ then (cx == cz)
309316 else false)
310- then (bb(cx) - cu)
311- else if (cs)
312- then bb(cx)
313- else (bb(cx) - co)
314- let cD = B(cm, cA)
315- let cE = B(co, cB)
316- let cF = bd(cE, cD)
317- let bZ = B(bY, cA)
318- let cb = B(ca, cB)
319- let cG = if ((cC == 0))
317+ then (bd(cz) - cw)
318+ else if (cu)
319+ then bd(cz)
320+ else (bd(cz) - cq)
321+ let cF = C(co, cC)
322+ let cG = C(cq, cD)
323+ let cH = bf(cG, cF)
324+ let cb = C(ca, cC)
325+ let cd = C(cc, cD)
326+ let cI = if ((cE == 0))
320327 then {
321- let cc = d
322- let cH = d
323- let bE = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
324- $Tuple5(E(bE, a), E(cD, cA), E(cE, cB), bd((cb + cE), (bZ + cD)), cH)
328+ let ce = d
329+ let cJ = d
330+ let bG = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
331+ $Tuple5(F(bG, a), F(cF, cC), F(cG, cD), bf((cd + cG), (cb + cF)), cJ)
325332 }
326333 else {
327- let cc = bd(cb, bZ)
328- let cI = fraction(L((cc - cF)), c, cc)
329- let cH = B(bj, a)
330- if (if (if (ct)
331- then (cc != d)
334+ let ce = bf(cd, cb)
335+ let cK = fraction(M((ce - cH)), c, ce)
336+ let cJ = C(bl, a)
337+ if (if (if (cv)
338+ then (ce != d)
332339 else false)
333- then (cI > cH)
340+ then (cK > cJ)
334341 else false)
335- then throw(((("Price slippage " + toString(cI)) + " > ") + toString(cH)))
342+ then throw(((("Price slippage " + toString(cK)) + " > ") + toString(cJ)))
336343 else {
337- let cJ = B(cC, a)
338- let cK = fraction(cD, cc, c)
339- let cL = fraction(cE, c, cc)
340- let cM = if ((cK > cE))
341- then $Tuple2(cL, cE)
342- else $Tuple2(cD, cK)
343- let cN = cM._1
344- let cO = cM._2
345- let bE = fraction(cJ, cO, cb)
346- $Tuple5(E(bE, a), E(cN, cA), E(cO, cB), cc, cH)
344+ let cL = C(cE, a)
345+ let cM = fraction(cF, ce, c)
346+ let cN = fraction(cG, c, ce)
347+ let cO = if ((cM > cG))
348+ then $Tuple2(cN, cG)
349+ else $Tuple2(cF, cM)
350+ let cP = cO._1
351+ let cQ = cO._2
352+ let bG = fraction(cL, cQ, cd)
353+ $Tuple5(F(bG, a), F(cP, cC), F(cQ, cD), ce, cJ)
347354 }
348355 }
349- let cP = cG._1
350- let cQ = cG._2
351- let cR = cG._3
352- let cd = E(cG._4, a)
353- let cS = E(cG._5, a)
354- if ((0 >= cP))
356+ let cR = cI._1
357+ let cS = cI._2
358+ let cT = cI._3
359+ let cf = F(cI._4, a)
360+ let cU = F(cI._5, a)
361+ if ((0 >= cR))
355362 then throw("LP <= 0")
356363 else {
357- let cT = if (!(cr))
364+ let cV = if (!(ct))
358365 then 0
359- else cP
360- let cU = (cm - cQ)
361- let cV = (co - cR)
362- let cW = if (if (cs)
363- then (cv == cw)
366+ else cR
367+ let cW = (co - cS)
368+ let cX = (cq - cT)
369+ let cY = if (if (cu)
370+ then (cx == cy)
364371 else false)
365- then $Tuple2(cu, 0)
366- else if (if (cs)
367- then (cv == cx)
372+ then $Tuple2(cw, 0)
373+ else if (if (cu)
374+ then (cx == cz)
368375 else false)
369- then $Tuple2(0, cu)
370- else $Tuple2(cQ, cR)
371- let cX = cW._1
372- let cY = cW._2
373- let cZ = [IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd), StringEntry(T(bQ, bN), aM(cX, cY, cT, cd, bj, cS, height, lastBlock.timestamp, cU, cV))]
374- $Tuple13(cP, cT, cd, bY, ca, cC, bR, bW, cZ, cU, cV, cn, cp)
376+ then $Tuple2(0, cw)
377+ else $Tuple2(cS, cT)
378+ let cZ = cY._1
379+ let da = cY._2
380+ let db = [IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf), StringEntry(V(bS, bP), aO(cZ, da, cV, cf, bl, cU, height, lastBlock.timestamp, cW, cX))]
381+ $Tuple13(cR, cV, cf, ca, cc, cE, bT, bY, db, cW, cX, cp, cr)
375382 }
376383 }
377384
378385
379-func da (db) = {
380- let bA = aD()
381- let dc = bA[r]
382- let dd = bA[s]
383- let bW = parseIntValue(bA[p])
384- let bB = parseIntValue(bA[t])
385- let bC = parseIntValue(bA[u])
386- let de = bb(dc)
387- let df = bb(dd)
388- let cc = if ((db.orderType == Buy))
389- then br(bB, bC, (de + db.amount), df)
390- else br(bB, bC, (de - db.amount), df)
391- let cd = E(cc, a)
392- if (if (if (aA())
386+func dc (dd) = {
387+ let bC = aF()
388+ let de = bC[s]
389+ let df = bC[t]
390+ let bY = parseIntValue(bC[q])
391+ let bD = parseIntValue(bC[u])
392+ let bE = parseIntValue(bC[v])
393+ let dg = bd(de)
394+ let dh = bd(df)
395+ let ce = if ((dd.orderType == Buy))
396+ then bt(bD, bE, (dg + dd.amount), dh)
397+ else bt(bD, bE, (dg - dd.amount), dh)
398+ let cf = F(ce, a)
399+ if (if (if (aC())
393400 then true
394- else (bW == m))
401+ else (bY == n))
395402 then true
396- else (bW == n))
403+ else (bY == o))
397404 then throw("Admin blocked")
398405 else {
399- let dg = db.assetPair.amountAsset
400- let dh = if ((dg == unit))
401- then "WAVES"
402- else toBase58String(value(dg))
403- let di = db.assetPair.priceAsset
406+ let di = dd.assetPair.amountAsset
404407 let dj = if ((di == unit))
405408 then "WAVES"
406409 else toBase58String(value(di))
407- if (if ((dh != dc))
410+ let dk = dd.assetPair.priceAsset
411+ let dl = if ((dk == unit))
412+ then "WAVES"
413+ else toBase58String(value(dk))
414+ if (if ((dj != de))
408415 then true
409- else (dj != dd))
416+ else (dl != df))
410417 then throw("Wr assets")
411418 else {
412- let dk = db.price
413- let cB = fraction(a, bC, bB)
414- let dl = H(dk, a, cB)
415- let dm = if ((db.orderType == Buy))
416- then (cd >= dl)
417- else (dl >= cd)
419+ let dm = dd.price
420+ let cD = fraction(a, bE, bD)
421+ let dn = I(dm, a, cD)
422+ let do = if ((dd.orderType == Buy))
423+ then (cf >= dn)
424+ else (dn >= cf)
418425 true
419426 }
420427 }
421428 }
422429
423430
424-func dn (do) = if ((size(do.payments) != 1))
431+func dp (dq) = if ((size(dq.payments) != 1))
425432 then throw("1 pmnt exp")
426433 else {
427- let dp = value(do.payments[0])
428- let bO = value(dp.assetId)
429- let cu = dp.amount
430- let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
431- let ci = cG._1
432- let cj = cG._2
433- let bW = parseIntValue(cG._9)
434- let ck = cG._10
435- if (if (aA())
434+ let dr = value(dq.payments[0])
435+ let bQ = value(dr.assetId)
436+ let cw = dr.amount
437+ let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
438+ let ck = cI._1
439+ let cl = cI._2
440+ let bY = parseIntValue(cI._9)
441+ let cm = cI._10
442+ if (if (aC())
436443 then true
437- else (bW == n))
438- then throw(("Admin blocked: " + toString(bW)))
439- else $Tuple5(ci, cj, cu, bO, ck)
444+ else (bY == o))
445+ then throw(("Admin blocked: " + toString(bY)))
446+ else $Tuple5(ck, cl, cw, bQ, cm)
440447 }
441448
442449
443-func dq (dr,V,ds,dt,bj,cr,cs,ct,cu,cv) = {
444- let cG = cl(V, bj, value(ds).amount, value(ds).assetId, value(dt).amount, value(dt).assetId, dr, (V == ""), cr, cs, ct, cu, cv)
445- let bW = parseIntValue(cG._8)
446- if (if (if (aA())
450+func ds (dt,X,du,dv,bl,ct,cu,cv,cw,cx) = {
451+ let cI = cn(X, bl, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, (X == ""), ct, cu, cv, cw, cx)
452+ let bY = parseIntValue(cI._8)
453+ if (if (if (aC())
447454 then true
448- else (bW == l))
455+ else (bY == m))
449456 then true
450- else (bW == n))
451- then throw(("Blocked:" + toString(bW)))
452- else cG
457+ else (bY == o))
458+ then throw(("Blocked:" + toString(bY)))
459+ else cI
453460 }
454461
455462
456-func du (dv,bO,bQ,V) = {
457- let dw = aD()
458- let bS = dw[r]
459- let bT = dw[s]
460- let bY = bb(bS)
461- let ca = bb(bT)
462- let dx = bJ(dv)
463- let cu = dx._1
464- let bL = dx._2
465- let dy = if ((V == ""))
466- then $Tuple2(bY, ca)
467- else if ((bO == bS))
468- then if ((dv > bY))
463+func dw (dx,bQ,bS,X) = {
464+ let dy = aF()
465+ let bU = dy[s]
466+ let bV = dy[t]
467+ let ca = bd(bU)
468+ let cc = bd(bV)
469+ let dz = bL(dx)
470+ let cw = dz._1
471+ let bN = dz._2
472+ let dA = if ((X == ""))
473+ then $Tuple2(ca, cc)
474+ else if ((bQ == bU))
475+ then if ((dx > ca))
469476 then throw("invalid payment amount")
470- else $Tuple2((bY - dv), ca)
471- else if ((bO == bT))
472- then if ((dv > ca))
477+ else $Tuple2((ca - dx), cc)
478+ else if ((bQ == bV))
479+ then if ((dx > cc))
473480 then throw("invalid payment amount")
474- else $Tuple2(bY, (ca - dv))
481+ else $Tuple2(ca, (cc - dx))
475482 else throw("wrong pmtAssetId")
476- let dz = dy._1
477- let dA = dy._2
478- let dB = if ((bO == bS))
479- then $Tuple2(dz, dA)
480- else $Tuple2(dA, dz)
481- let dC = dB._1
482- let dD = dB._2
483- let dE = 1
484- let dF = {
485- let dG = invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)
486- if ($isInstanceOf(dG, "(Int, Int)"))
487- then dG
488- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
483+ let dB = dA._1
484+ let dC = dA._2
485+ let dD = if ((bQ == bU))
486+ then $Tuple2(dB, dC)
487+ else $Tuple2(dC, dB)
488+ let dE = dD._1
489+ let dF = dD._2
490+ let dG = 1
491+ let dH = {
492+ let dI = invoke(aN, "calcPutXOnly", [toString(cw), toString(dE), toString(dF), "", aB, h, toString(dG), i], nil)
493+ if ($isInstanceOf(dI, "(Int, Int)"))
494+ then dI
495+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
489496 }
490- let dH = if ((bO == bS))
491- then dF
492- else $Tuple2(dF._2, dF._1)
493- let dI = dH._1
494- let dJ = dH._2
495- let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496- let dL = dK._2
497- let dM = dK._7
498- let ck = dK._9
499- let cU = dK._10
500- let cV = dK._11
501- dK
497+ let dJ = if ((bQ == bU))
498+ then dH
499+ else $Tuple2(dH._2, dH._1)
500+ let dK = dJ._1
501+ let dL = dJ._2
502+ let dM = ds(bS, X, AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), 0, true, true, false, dx, bQ)
503+ let dN = dM._2
504+ let dO = dM._7
505+ let cm = dM._9
506+ let cW = dM._10
507+ let cX = dM._11
508+ dM
502509 }
503510
504511
505-func dN (dO,dP,dQ,dr,dR,dS) = if ((size(dQ) != 1))
512+func dP (dQ,dR,dS,dt,dT,dU) = if ((size(dS) != 1))
506513 then throw("1 pmnt expd")
507514 else {
508- let dw = aD()
509- let bR = dw[q]
510- let bS = dw[r]
511- let bT = dw[s]
512- let dT = parseIntValue(dw[t])
513- let dU = parseIntValue(dw[u])
514- let dV = dw[p]
515- let bQ = if ((dr == this))
516- then dR
517- else dr
518- let dp = value(dQ[0])
519- let bO = value(dp.assetId)
520- let cu = dp.amount
521- if ((1000000000 > cu))
515+ let dy = aF()
516+ let bT = dy[r]
517+ let bU = dy[s]
518+ let bV = dy[t]
519+ let dV = parseIntValue(dy[u])
520+ let dW = parseIntValue(dy[v])
521+ let dX = dy[q]
522+ let bS = if ((dt == this))
523+ then dT
524+ else dt
525+ let dr = value(dS[0])
526+ let bQ = value(dr.assetId)
527+ let cw = dr.amount
528+ if ((1000000000 > cw))
522529 then throw("Min pmt 10 LP")
523530 else {
524- let bN = toBase58String(dS)
525- if ((bR != toBase58String(bO)))
531+ let bP = toBase58String(dU)
532+ if ((bT != toBase58String(bQ)))
526533 then throw("Wrong LP")
527534 else {
528- let bY = bb(bS)
529- let ca = bb(bT)
530- let dW = {
531- let dG = invoke(this, "getOneTknV2READONLY", [dO, cu], nil)
532- if ($isInstanceOf(dG, "(Int, Int)"))
533- then dG
534- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
535+ let ca = bd(bU)
536+ let cc = bd(bV)
537+ let dY = {
538+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, cw], nil)
539+ if ($isInstanceOf(dI, "(Int, Int)"))
540+ then dI
541+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
535542 }
536- let dX = dW._1
537- let bL = dW._2
538- let dY = if (if ((dP > 0))
539- then (dP > dX)
543+ let dZ = dY._1
544+ let bN = dY._2
545+ let ea = if (if ((dR > 0))
546+ then (dR > dZ)
540547 else false)
541- then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
542- else dX
543- let dZ = if ((dO == bS))
544- then $Tuple2(dY, 0)
545- else $Tuple2(0, dY)
546- let ea = dZ._1
547- let eb = dZ._2
548- let ec = bd(B(ca, dU), B(bY, dT))
549- let ed = E(ec, a)
550- let ee = if ((dO == "WAVES"))
548+ then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
549+ else dZ
550+ let eb = if ((dQ == bU))
551+ then $Tuple2(ea, 0)
552+ else $Tuple2(0, ea)
553+ let ec = eb._1
554+ let ed = eb._2
555+ let ee = bf(C(cc, dW), C(ca, dV))
556+ let ef = F(ee, a)
557+ let eg = if ((dQ == "WAVES"))
551558 then unit
552- else fromBase58String(dO)
553- let ef = if ((bL > 0))
554- then [ScriptTransfer(aC, bL, ee)]
559+ else fromBase58String(dQ)
560+ let eh = if ((bN > 0))
561+ then [ScriptTransfer(aE, bN, eg)]
555562 else nil
556- let ck = ([ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)] ++ ef)
557- if ((ck == ck))
563+ let cm = ([ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)] ++ eh)
564+ if ((cm == cm))
558565 then {
559- let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
560- if ((eg == eg))
561- then $Tuple2(ck, dY)
566+ let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
567+ if ((ei == ei))
568+ then $Tuple2(cm, ea)
562569 else throw("Strict value is not equal to itself.")
563570 }
564571 else throw("Strict value is not equal to itself.")
565572 }
566573 }
567574 }
568575
569576
570-func eh () = {
571- let as = getString(N())
572- if ($isInstanceOf(as, "String"))
577+func ej (ek) = {
578+ let el = toBigInt(2)
579+ let em = ek[0]
580+ let en = ek[1]
581+ let eo = parseBigIntValue(h)
582+ let ep = (parseBigIntValue(aB) * eo)
583+ let eq = (em + en)
584+ if ((eq == e))
585+ then e
586+ else {
587+ let er = (ep * el)
588+ func es (et,eu) = {
589+ let ev = et
590+ let ew = ev._1
591+ let ex = ev._2
592+ if ((ex != unit))
593+ then et
594+ else {
595+ let ey = (((ew * ew) * ew) / (((em * en) * el) * el))
596+ let ez = (((((er * eq) / eo) + (ey * el)) * ew) / ((((er - eo) * ew) / eo) + ((el + toBigInt(1)) * ey)))
597+ let eA = N((ez - value(ew)))
598+ if ((f >= eA))
599+ then $Tuple2(ez, eu)
600+ else $Tuple2(ez, unit)
601+ }
602+ }
603+
604+ let eB = [0, 1, 2, 3, 4, 5, 6, 7]
605+ let eC = {
606+ let eD = eB
607+ let eE = size(eD)
608+ let eF = $Tuple2(eq, unit)
609+ func eG (eH,eI) = if ((eI >= eE))
610+ then eH
611+ else es(eH, eD[eI])
612+
613+ func eJ (eH,eI) = if ((eI >= eE))
614+ then eH
615+ else throw("List size exceeds 7")
616+
617+ eJ(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7)
618+ }
619+ let ew = eC._1
620+ let ex = eC._2
621+ if ((ex != unit))
622+ then ew
623+ else throw(("D calculation error, D = " + toString(ew)))
624+ }
625+ }
626+
627+
628+func eK () = {
629+ let au = getString(P())
630+ if ($isInstanceOf(au, "String"))
573631 then {
574- let ei = as
575- fromBase58String(ei)
632+ let eq = au
633+ fromBase58String(eq)
576634 }
577- else if ($isInstanceOf(as, "Unit"))
635+ else if ($isInstanceOf(au, "Unit"))
578636 then unit
579637 else throw("Match error")
580638 }
581639
582640
583-func ej () = {
584- let as = getString(O())
585- if ($isInstanceOf(as, "String"))
641+func eL () = {
642+ let au = getString(Q())
643+ if ($isInstanceOf(au, "String"))
586644 then {
587- let ei = as
588- fromBase58String(ei)
645+ let eq = au
646+ fromBase58String(eq)
589647 }
590- else if ($isInstanceOf(as, "Unit"))
648+ else if ($isInstanceOf(au, "Unit"))
591649 then unit
592650 else throw("Match error")
593651 }
594652
595653
596-let ek = throw("Permission denied")
654+let eM = throw("Permission denied")
597655
598-func el (do) = {
599- let as = eh()
600- if ($isInstanceOf(as, "ByteVector"))
656+func eN (dq) = {
657+ let au = eK()
658+ if ($isInstanceOf(au, "ByteVector"))
601659 then {
602- let em = as
603- if ((do.callerPublicKey == em))
660+ let eO = au
661+ if ((dq.callerPublicKey == eO))
604662 then true
605- else ek
663+ else eM
606664 }
607- else if ($isInstanceOf(as, "Unit"))
608- then if ((do.caller == this))
665+ else if ($isInstanceOf(au, "Unit"))
666+ then if ((dq.caller == this))
609667 then true
610- else ek
668+ else eM
611669 else throw("Match error")
612670 }
613671
614672
615-@Callable(do)
616-func constructor (M) = {
617- let en = el(do)
618- if ((en == en))
619- then [StringEntry(M(), M)]
673+@Callable(dq)
674+func constructor (O) = {
675+ let eP = eN(dq)
676+ if ((eP == eP))
677+ then [StringEntry(O(), O)]
620678 else throw("Strict value is not equal to itself.")
621679 }
622680
623681
624682
625-@Callable(do)
626-func setManager (eo) = {
627- let en = el(do)
628- if ((en == en))
683+@Callable(dq)
684+func setManager (eQ) = {
685+ let eP = eN(dq)
686+ if ((eP == eP))
629687 then {
630- let ep = fromBase58String(eo)
631- if ((ep == ep))
632- then [StringEntry(O(), eo)]
688+ let eR = fromBase58String(eQ)
689+ if ((eR == eR))
690+ then [StringEntry(Q(), eQ)]
633691 else throw("Strict value is not equal to itself.")
634692 }
635693 else throw("Strict value is not equal to itself.")
636694 }
637695
638696
639697
640-@Callable(do)
698+@Callable(dq)
641699 func confirmManager () = {
642- let bI = ej()
643- let eq = if (isDefined(bI))
700+ let bK = eL()
701+ let eS = if (isDefined(bK))
644702 then true
645703 else throw("No pending manager")
646- if ((eq == eq))
704+ if ((eS == eS))
647705 then {
648- let er = if ((do.callerPublicKey == value(bI)))
706+ let eT = if ((dq.callerPublicKey == value(bK)))
649707 then true
650708 else throw("You are not pending manager")
651- if ((er == er))
652- then [StringEntry(N(), toBase58String(value(bI))), DeleteEntry(O())]
709+ if ((eT == eT))
710+ then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
653711 else throw("Strict value is not equal to itself.")
654712 }
655713 else throw("Strict value is not equal to itself.")
656714 }
657715
658716
659717
660-@Callable(do)
661-func put (es,et) = {
662- let eu = aH()
663- let ev = valueOrErrorMessage(addressFromString(eu[x]), "Wr st addr")
664- let ew = valueOrErrorMessage(addressFromString(eu[y]), "Wr sl addr")
665- if ((0 > es))
718+@Callable(dq)
719+func put (eU,eV) = {
720+ let eW = aJ()
721+ let eX = valueOrErrorMessage(addressFromString(eW[y]), "Wr st addr")
722+ let eY = valueOrErrorMessage(addressFromString(eW[z]), "Wr sl addr")
723+ if ((0 > eU))
666724 then throw("Wrong slippage")
667- else if ((size(do.payments) != 2))
725+ else if ((size(dq.payments) != 2))
668726 then throw("2 pmnts expd")
669727 else {
670- let ex = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], es, true, false, true, 0, "")
671- let cT = ex._2
672- let dM = ex._7
673- let ck = ex._9
674- let cU = ex._10
675- let cV = ex._11
676- let bS = ex._12
677- let bT = ex._13
678- let cG = invoke(ay, "emit", [cT], nil)
679- if ((cG == cG))
728+ let eZ = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], eU, true, false, true, 0, "")
729+ let cV = eZ._2
730+ let dO = eZ._7
731+ let cm = eZ._9
732+ let cW = eZ._10
733+ let cX = eZ._11
734+ let bU = eZ._12
735+ let bV = eZ._13
736+ let cI = invoke(aA, "emit", [cV], nil)
737+ if ((cI == cI))
680738 then {
681- let ey = {
682- let as = cG
683- if ($isInstanceOf(as, "Address"))
739+ let fa = {
740+ let au = cI
741+ if ($isInstanceOf(au, "Address"))
684742 then {
685- let ez = as
686- invoke(ez, "emit", [cT], nil)
743+ let fb = au
744+ invoke(fb, "emit", [cV], nil)
687745 }
688746 else unit
689747 }
690- if ((ey == ey))
748+ if ((fa == fa))
691749 then {
692- let eA = if ((cU > 0))
693- then invoke(ew, "put", nil, [AttachedPayment(bS, cU)])
750+ let fc = if ((cW > 0))
751+ then invoke(eY, "put", nil, [AttachedPayment(bU, cW)])
694752 else nil
695- if ((eA == eA))
753+ if ((fc == fc))
696754 then {
697- let eB = if ((cV > 0))
698- then invoke(ew, "put", nil, [AttachedPayment(bT, cV)])
755+ let fd = if ((cX > 0))
756+ then invoke(eY, "put", nil, [AttachedPayment(bV, cX)])
699757 else nil
700- if ((eB == eB))
758+ if ((fd == fd))
701759 then {
702- let eC = if (et)
760+ let fe = if (eV)
703761 then {
704- let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
705- if ((eD == eD))
762+ let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
763+ if ((ff == ff))
706764 then nil
707765 else throw("Strict value is not equal to itself.")
708766 }
709- else [ScriptTransfer(do.caller, cT, dM)]
710- (ck ++ eC)
767+ else [ScriptTransfer(dq.caller, cV, dO)]
768+ (cm ++ fe)
711769 }
712770 else throw("Strict value is not equal to itself.")
713771 }
714772 else throw("Strict value is not equal to itself.")
715773 }
716774 else throw("Strict value is not equal to itself.")
717775 }
718776 else throw("Strict value is not equal to itself.")
719777 }
720778 }
721779
722780
723781
724-@Callable(do)
725-func putOneTkn (dI,dJ,eE,bj,et) = {
726- let bA = aH()
727- let ev = valueOrErrorMessage(addressFromString(bA[x]), "Wr st addr")
728- let ew = valueOrErrorMessage(addressFromString(bA[y]), "Wr sl addr")
729- let eF = valueOrErrorMessage(addressFromString(bA[z]), "Wr gwx addr")
730- let eG = aD()
731- let bS = eG[r]
732- let bT = eG[s]
733- let bU = parseIntValue(eG[t])
734- let bV = parseIntValue(eG[u])
735- let eH = valueOrElse(getString(this, aa()), "")
736- let bQ = if ((eH == toString(do.caller)))
737- then do.originCaller
738- else do.caller
739- if (if (if (if ((0 >= bj))
782+@Callable(dq)
783+func putOneTkn (dK,dL,fg,bl,eV) = {
784+ let bC = aJ()
785+ let eX = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
786+ let eY = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
787+ let fh = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
788+ let fi = aF()
789+ let bU = fi[s]
790+ let bV = fi[t]
791+ let bW = parseIntValue(fi[u])
792+ let bX = parseIntValue(fi[v])
793+ let fj = valueOrElse(getString(this, ac()), "")
794+ let bS = if ((fj == toString(dq.caller)))
795+ then dq.originCaller
796+ else dq.caller
797+ if (if (if (if ((0 >= bl))
740798 then true
741- else (0 >= dI))
799+ else (0 >= dK))
742800 then true
743- else (0 >= dJ))
801+ else (0 >= dL))
744802 then true
745- else (0 >= eE))
803+ else (0 >= fg))
746804 then throw("Wrong params")
747- else if ((size(do.payments) != 1))
805+ else if ((size(dq.payments) != 1))
748806 then throw("1 pmnt expd")
749807 else {
750- let dp = value(do.payments[0])
751- let bO = toBase58String(value(dp.assetId))
752- let eI = dp.amount
753- let eJ = bJ(eI)
754- let cu = eJ._1
755- let bL = eJ._2
756- if ((10000000 > eI))
808+ let dr = value(dq.payments[0])
809+ let bQ = toBase58String(value(dr.assetId))
810+ let fk = dr.amount
811+ let fl = bL(fk)
812+ let cw = fl._1
813+ let bN = fl._2
814+ if ((10000000 > fk))
757815 then throw("Wrong pmt amt")
758816 else {
759- let bY = bb(bS)
760- let ca = bb(bT)
761- let eK = if ((bO == bS))
762- then if (if ((eI > bY))
817+ let ca = bd(bU)
818+ let cc = bd(bV)
819+ let fm = if ((bQ == bU))
820+ then if (if ((fk > ca))
763821 then true
764- else (dI > cu))
822+ else (dK > cw))
765823 then throw("invalid payment amount")
766- else $Tuple6((bY - eI), ca, (cu - dI), dJ, 0, 0)
767- else if ((bO == bT))
768- then if (if ((eI > ca))
824+ else $Tuple6((ca - fk), cc, (cw - dK), dL, 0, 0)
825+ else if ((bQ == bV))
826+ then if (if ((fk > cc))
769827 then true
770- else (dJ > cu))
828+ else (dL > cw))
771829 then throw("invalid payment amount")
772- else $Tuple6(bY, (ca - eI), 0, 0, (cu - dJ), dI)
830+ else $Tuple6(ca, (cc - fk), 0, 0, (cw - dL), dK)
773831 else throw("wrong pmtAssetId")
774- let dz = eK._1
775- let dA = eK._2
776- let eL = eK._3
777- let eM = eK._4
778- let eN = eK._5
779- let eO = eK._6
780- let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
781- let bn = invoke(eF, "calcD", [toString(toBigInt(((dz + eL) - eO))), toString(toBigInt(((dA + eN) - eM))), az, g, h], nil)
782- let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
783- if ((eP == eP))
832+ let dB = fm._1
833+ let dC = fm._2
834+ let fn = fm._3
835+ let fo = fm._4
836+ let fp = fm._5
837+ let fq = fm._6
838+ let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
839+ let bp = invoke(fh, "calcD", [toString(toBigInt(((dB + fn) - fq))), toString(toBigInt(((dC + fp) - fo))), aB, h, i], nil)
840+ let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
841+ if ((fr == fr))
784842 then {
785- let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), bj, true, true, true, cu, bO)
786- let dL = dK._2
787- let dM = dK._7
788- let ck = dK._9
789- let cU = dK._10
790- let cV = dK._11
791- let eQ = bg(toBigInt(dL), toBigInt(eE), toBigInt(bj))
792- let cT = toInt(eQ._2)
793- let ex = invoke(ay, "emit", [cT], nil)
794- if ((ex == ex))
843+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
844+ let dN = dM._2
845+ let dO = dM._7
846+ let cm = dM._9
847+ let cW = dM._10
848+ let cX = dM._11
849+ let fs = bi(toBigInt(dN), toBigInt(fg), toBigInt(bl))
850+ let cV = toInt(fs._2)
851+ let eZ = invoke(aA, "emit", [cV], nil)
852+ if ((eZ == eZ))
795853 then {
796- let ey = {
797- let as = ex
798- if ($isInstanceOf(as, "Address"))
854+ let fa = {
855+ let au = eZ
856+ if ($isInstanceOf(au, "Address"))
799857 then {
800- let ez = as
801- invoke(ez, "emit", [cT], nil)
858+ let fb = au
859+ invoke(fb, "emit", [cV], nil)
802860 }
803861 else unit
804862 }
805- if ((ey == ey))
863+ if ((fa == fa))
806864 then {
807- let eA = if ((cU > 0))
808- then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
865+ let fc = if ((cW > 0))
866+ then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
809867 else nil
810- if ((eA == eA))
868+ if ((fc == fc))
811869 then {
812- let eB = if ((cV > 0))
813- then invoke(ew, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
870+ let fd = if ((cX > 0))
871+ then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
814872 else nil
815- if ((eB == eB))
873+ if ((fd == fd))
816874 then {
817- let eC = if (et)
875+ let fe = if (eV)
818876 then {
819- let eD = invoke(ev, "stake", nil, [AttachedPayment(dM, cT)])
820- if ((eD == eD))
877+ let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
878+ if ((ff == ff))
821879 then nil
822880 else throw("Strict value is not equal to itself.")
823881 }
824- else [ScriptTransfer(do.caller, cT, dM)]
825- let ef = if ((bL > 0))
826- then [ScriptTransfer(aC, bL, fromBase58String(bO))]
882+ else [ScriptTransfer(dq.caller, cV, dO)]
883+ let eh = if ((bN > 0))
884+ then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
827885 else nil
828- ((ck ++ eC) ++ ef)
886+ ((cm ++ fe) ++ eh)
829887 }
830888 else throw("Strict value is not equal to itself.")
831889 }
832890 else throw("Strict value is not equal to itself.")
833891 }
834892 else throw("Strict value is not equal to itself.")
835893 }
836894 else throw("Strict value is not equal to itself.")
837895 }
838896 else throw("Strict value is not equal to itself.")
839897 }
840898 }
841899 }
842900
843901
844902
845-@Callable(do)
846-func putOneTknV2 (dP,et) = if ((size(do.payments) != 1))
903+@Callable(dq)
904+func putOneTknV2 (dR,eV) = if ((size(dq.payments) != 1))
847905 then throw("1 pmnt expd")
848906 else {
849- let dw = aD()
850- let bS = dw[r]
851- let bT = dw[s]
852- let dT = parseIntValue(dw[t])
853- let dU = parseIntValue(dw[u])
854- let bQ = if ((do.caller == this))
855- then do.originCaller
856- else do.caller
857- let dp = value(do.payments[0])
858- let bO = toBase58String(value(dp.assetId))
859- let cu = dp.amount
860- if ((10000000 > cu))
907+ let dy = aF()
908+ let bU = dy[s]
909+ let bV = dy[t]
910+ let dV = parseIntValue(dy[u])
911+ let dW = parseIntValue(dy[v])
912+ let bS = if ((dq.caller == this))
913+ then dq.originCaller
914+ else dq.caller
915+ let dr = value(dq.payments[0])
916+ let bQ = toBase58String(value(dr.assetId))
917+ let cw = dr.amount
918+ if ((10000000 > cw))
861919 then throw("Wrong pmt amt")
862920 else {
863- let cG = du(cu, bO, toString(bQ), toBase58String(do.transactionId))
864- let dL = cG._2
865- let dM = cG._7
866- let ck = cG._9
867- let cU = cG._10
868- let cV = cG._11
869- let cT = if (if ((dP > 0))
870- then (dP > dL)
921+ let cI = dw(cw, bQ, toString(bS), toBase58String(dq.transactionId))
922+ let dN = cI._2
923+ let dO = cI._7
924+ let cm = cI._9
925+ let cW = cI._10
926+ let cX = cI._11
927+ let cV = if (if ((dR > 0))
928+ then (dR > dN)
871929 else false)
872- then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
873- else dL
874- let ex = invoke(ay, "emit", [cT], nil)
875- if ((ex == ex))
930+ then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
931+ else dN
932+ let eZ = invoke(aA, "emit", [cV], nil)
933+ if ((eZ == eZ))
876934 then {
877- let ey = {
878- let as = ex
879- if ($isInstanceOf(as, "Address"))
935+ let fa = {
936+ let au = eZ
937+ if ($isInstanceOf(au, "Address"))
880938 then {
881- let ez = as
882- invoke(ez, "emit", [cT], nil)
939+ let fb = au
940+ invoke(fb, "emit", [cV], nil)
883941 }
884942 else unit
885943 }
886- if ((ey == ey))
944+ if ((fa == fa))
887945 then {
888- let eA = if ((cU > 0))
889- then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
946+ let fc = if ((cW > 0))
947+ then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
890948 else nil
891- if ((eA == eA))
949+ if ((fc == fc))
892950 then {
893- let eB = if ((cV > 0))
894- then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
951+ let fd = if ((cX > 0))
952+ then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
895953 else nil
896- if ((eB == eB))
954+ if ((fd == fd))
897955 then {
898- let eC = if (et)
956+ let fe = if (eV)
899957 then {
900- let eD = invoke(aJ, "stake", nil, [AttachedPayment(dM, cT)])
901- if ((eD == eD))
958+ let ff = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
959+ if ((ff == ff))
902960 then nil
903961 else throw("Strict value is not equal to itself.")
904962 }
905- else [ScriptTransfer(do.caller, cT, dM)]
906- let bL = bJ(cu)._2
907- let ef = if ((bL > 0))
908- then [ScriptTransfer(aC, bL, fromBase58String(bO))]
963+ else [ScriptTransfer(dq.caller, cV, dO)]
964+ let bN = bL(cw)._2
965+ let eh = if ((bN > 0))
966+ then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
909967 else nil
910- $Tuple2(((ck ++ eC) ++ ef), cT)
968+ $Tuple2(((cm ++ fe) ++ eh), cV)
911969 }
912970 else throw("Strict value is not equal to itself.")
913971 }
914972 else throw("Strict value is not equal to itself.")
915973 }
916974 else throw("Strict value is not equal to itself.")
917975 }
918976 else throw("Strict value is not equal to itself.")
919977 }
920978 }
921979
922980
923981
924-@Callable(do)
925-func putOneTknV2READONLY (eR,eS) = {
926- let cG = du(eR, eS, "", "")
927- let dL = cG._2
928- let dM = cG._7
929- let ck = cG._9
930- let cU = cG._10
931- let cV = cG._11
932- $Tuple2(nil, dL)
982+@Callable(dq)
983+func putOneTknV2READONLY (ft,fu) = {
984+ let cI = dw(ft, fu, "", "")
985+ let dN = cI._2
986+ let dO = cI._7
987+ let cm = cI._9
988+ let cW = cI._10
989+ let cX = cI._11
990+ $Tuple2(nil, dN)
933991 }
934992
935993
936994
937-@Callable(do)
938-func putOneTknV2WithBonusREADONLY (eR,eS) = {
939- let dw = aD()
940- let bS = dw[r]
941- let bT = dw[s]
942- let cG = du(eR, eS, "", "")
943- let dL = cG._2
944- let cd = cG._3
945- let eT = cG._6
946- let dM = cG._7
947- let bY = bb(bS)
948- let ca = bb(bT)
949- let eU = fraction(ca, a, bY)
950- let eV = fraction(eR, a, (eU + a))
951- let eW = (eR - eV)
952- let eX = fraction(eT, eW, ca)
953- let eY = fraction((dL - eX), a, eX)
954- let bL = bJ(eR)._2
955- $Tuple2(nil, $Tuple3(dL, bL, eY))
995+@Callable(dq)
996+func putOneTknV2WithBonusREADONLY (ft,fu) = {
997+ let dy = aF()
998+ let bU = dy[s]
999+ let bV = dy[t]
1000+ let cI = dw(ft, fu, "", "")
1001+ let dN = cI._2
1002+ let cf = cI._3
1003+ let fv = cI._6
1004+ let dO = cI._7
1005+ let ca = bd(bU)
1006+ let cc = bd(bV)
1007+ let fw = fraction(cc, a, ca)
1008+ let fx = fraction(ft, a, (fw + a))
1009+ let fy = (ft - fx)
1010+ let fz = fraction(fv, fy, cc)
1011+ let fA = fraction((dN - fz), a, fz)
1012+ let bN = bL(ft)._2
1013+ $Tuple2(nil, $Tuple3(dN, bN, fA))
9561014 }
9571015
9581016
9591017
960-@Callable(do)
961-func putForFree (eZ) = if ((0 > eZ))
1018+@Callable(dq)
1019+func putForFree (fB) = if ((0 > fB))
9621020 then throw("Wrong slpg")
963- else if ((size(do.payments) != 2))
1021+ else if ((size(dq.payments) != 2))
9641022 then throw("2 pmnts expd")
9651023 else {
966- let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], eZ, false, false, true, 0, "")
967- dK._9
1024+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fB, false, false, true, 0, "")
1025+ dM._9
9681026 }
9691027
9701028
9711029
972-@Callable(do)
1030+@Callable(dq)
9731031 func get () = {
974- let cG = dn(do)
975- let fa = cG._1
976- let cj = cG._2
977- let cu = cG._3
978- let bO = cG._4
979- let ck = cG._5
980- let fb = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
981- if ((fb == fb))
982- then ck
1032+ let cI = dp(dq)
1033+ let fC = cI._1
1034+ let cl = cI._2
1035+ let cw = cI._3
1036+ let bQ = cI._4
1037+ let cm = cI._5
1038+ let fD = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1039+ if ((fD == fD))
1040+ then cm
9831041 else throw("Strict value is not equal to itself.")
9841042 }
9851043
9861044
9871045
988-@Callable(do)
989-func getOneTkn (fc,fd,fe,dO,bj) = if ((size(do.payments) != 1))
1046+@Callable(dq)
1047+func getOneTkn (fE,fF,fG,dQ,bl) = if ((size(dq.payments) != 1))
9901048 then throw("1 pmnt expd")
9911049 else {
992- let bA = aD()
993- let bR = bA[q]
994- let bS = bA[r]
995- let bT = bA[s]
996- let bU = parseIntValue(bA[t])
997- let bV = parseIntValue(bA[u])
998- let bW = bA[p]
999- let eu = aH()
1000- let eF = valueOrErrorMessage(addressFromString(eu[z]), "Wr sl addr")
1001- let dp = value(do.payments[0])
1002- let eH = valueOrElse(getString(this, aa()), "")
1003- let bQ = if ((eH == toString(do.caller)))
1004- then do.originCaller
1005- else do.caller
1006- let bN = toBase58String(do.transactionId)
1007- let bO = value(dp.assetId)
1008- let cu = dp.amount
1009- if ((1000000000 > cu))
1050+ let bC = aF()
1051+ let bT = bC[r]
1052+ let bU = bC[s]
1053+ let bV = bC[t]
1054+ let bW = parseIntValue(bC[u])
1055+ let bX = parseIntValue(bC[v])
1056+ let bY = bC[q]
1057+ let eW = aJ()
1058+ let fh = valueOrErrorMessage(addressFromString(eW[A]), "Wr sl addr")
1059+ let dr = value(dq.payments[0])
1060+ let fj = valueOrElse(getString(this, ac()), "")
1061+ let bS = if ((fj == toString(dq.caller)))
1062+ then dq.originCaller
1063+ else dq.caller
1064+ let bP = toBase58String(dq.transactionId)
1065+ let bQ = value(dr.assetId)
1066+ let cw = dr.amount
1067+ if ((1000000000 > cw))
10101068 then throw("Min pmt 10 LP")
1011- else if (if (if ((0 > bj))
1069+ else if (if (if ((0 > bl))
10121070 then true
1013- else (0 > fc))
1071+ else (0 > fE))
10141072 then true
1015- else (0 > fe))
1073+ else (0 > fG))
10161074 then throw("Wrong params")
1017- else if ((bR != toBase58String(bO)))
1075+ else if ((bT != toBase58String(bQ)))
10181076 then throw("Wrong LP")
10191077 else {
1020- let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
1021- let ff = cG._1
1022- let fg = cG._2
1023- let bY = bb(bS)
1024- let ca = bb(bT)
1025- let fh = if ((dO == bS))
1026- then $Tuple7((bY - ff), (ca - fg), fc, fg, 0, 0, (ff + fc))
1027- else if ((dO == bT))
1028- then $Tuple7((bY - ff), (ca - fg), 0, 0, fc, ff, (fg + fc))
1078+ let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1079+ let fH = cI._1
1080+ let fI = cI._2
1081+ let ca = bd(bU)
1082+ let cc = bd(bV)
1083+ let fJ = if ((dQ == bU))
1084+ then $Tuple7((ca - fH), (cc - fI), fE, fI, 0, 0, (fH + fE))
1085+ else if ((dQ == bV))
1086+ then $Tuple7((ca - fH), (cc - fI), 0, 0, fE, fH, (fI + fE))
10291087 else throw("wrong outAssetId")
1030- let dz = fh._1
1031- let dA = fh._2
1032- let eL = fh._3
1033- let eM = fh._4
1034- let eN = fh._5
1035- let eO = fh._6
1036- let fi = fh._7
1037- if (if ((0 > eL))
1088+ let dB = fJ._1
1089+ let dC = fJ._2
1090+ let fn = fJ._3
1091+ let fo = fJ._4
1092+ let fp = fJ._5
1093+ let fq = fJ._6
1094+ let fK = fJ._7
1095+ if (if ((0 > fn))
10381096 then true
1039- else (0 > eN))
1097+ else (0 > fp))
10401098 then throw("Wrong calc")
10411099 else {
1042- let bo = invoke(eF, "calcD", [toString(dz), toString(dA), az, g, h], nil)
1043- let bn = invoke(eF, "calcD", [toString(((dz - eL) + eO)), toString(((dA + eM) - eN)), az, g, h], nil)
1044- let eP = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
1045- if ((eP == eP))
1100+ let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1101+ let bp = invoke(fh, "calcD", [toString(((dB - fn) + fq)), toString(((dC + fo) - fp)), aB, h, i], nil)
1102+ let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1103+ if ((fr == fr))
10461104 then {
1047- let dX = bJ(fi)._1
1048- let fj = bg(toBigInt(dX), toBigInt(fe), toBigInt(bj))
1049- if ((fj == fj))
1105+ let dZ = bL(fK)._1
1106+ let fL = bi(toBigInt(dZ), toBigInt(fG), toBigInt(bl))
1107+ if ((fL == fL))
10501108 then {
1051- let fk = if ((dO == bS))
1052- then $Tuple2(toInt(fj._2), 0)
1053- else $Tuple2(0, toInt(fj._2))
1054- let ea = fk._1
1055- let eb = fk._2
1056- let dY = (ea + eb)
1057- let bL = (fi - dX)
1058- let ee = if ((dO == "WAVES"))
1109+ let fM = if ((dQ == bU))
1110+ then $Tuple2(toInt(fL._2), 0)
1111+ else $Tuple2(0, toInt(fL._2))
1112+ let ec = fM._1
1113+ let ed = fM._2
1114+ let ea = (ec + ed)
1115+ let bN = (fK - dZ)
1116+ let eg = if ((dQ == "WAVES"))
10591117 then unit
1060- else fromBase58String(dO)
1061- let ef = if ((bL > 0))
1062- then [ScriptTransfer(aC, bL, ee)]
1118+ else fromBase58String(dQ)
1119+ let eh = if ((bN > 0))
1120+ then [ScriptTransfer(aE, bN, eg)]
10631121 else nil
1064- let ec = bd(B(ca, bV), B(bY, bU))
1065- let ed = E(ec, a)
1066- let ck = [ScriptTransfer(bQ, dY, ee), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
1067- if ((ck == ck))
1122+ let ee = bf(C(cc, bX), C(ca, bW))
1123+ let ef = F(ee, a)
1124+ let cm = [ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)]
1125+ if ((cm == cm))
10681126 then {
1069- let eg = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
1070- if ((eg == eg))
1071- then (ck ++ ef)
1127+ let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1128+ if ((ei == ei))
1129+ then (cm ++ eh)
10721130 else throw("Strict value is not equal to itself.")
10731131 }
10741132 else throw("Strict value is not equal to itself.")
10751133 }
10761134 else throw("Strict value is not equal to itself.")
10771135 }
10781136 else throw("Strict value is not equal to itself.")
10791137 }
10801138 }
10811139 }
10821140
10831141
10841142
1085-@Callable(do)
1086-func getOneTknV2 (dO,dP) = {
1087- let fl = dN(dO, dP, do.payments, do.caller, do.originCaller, do.transactionId)
1088- let ck = fl._1
1089- let dY = fl._2
1090- $Tuple2(ck, dY)
1143+@Callable(dq)
1144+func getOneTknV2 (dQ,dR) = {
1145+ let fN = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1146+ let cm = fN._1
1147+ let ea = fN._2
1148+ $Tuple2(cm, ea)
10911149 }
10921150
10931151
10941152
1095-@Callable(do)
1096-func getOneTknV2READONLY (dO,fm) = {
1097- let dw = aD()
1098- let bR = dw[q]
1099- let bS = dw[r]
1100- let bT = dw[s]
1101- let cG = bM("", bR, fm, this)
1102- let ff = cG._1
1103- let fg = cG._2
1104- let bY = bb(bS)
1105- let ca = bb(bT)
1106- let dz = (bY - ff)
1107- let dA = (ca - fg)
1108- let fn = if ((dO == bS))
1109- then $Tuple4(dA, dz, fg, ff)
1110- else if ((dO == bT))
1111- then $Tuple4(dz, dA, ff, fg)
1153+@Callable(dq)
1154+func getOneTknV2READONLY (dQ,fO) = {
1155+ let dy = aF()
1156+ let bT = dy[r]
1157+ let bU = dy[s]
1158+ let bV = dy[t]
1159+ let cI = bO("", bT, fO, this)
1160+ let fH = cI._1
1161+ let fI = cI._2
1162+ let ca = bd(bU)
1163+ let cc = bd(bV)
1164+ let dB = (ca - fH)
1165+ let dC = (cc - fI)
1166+ let fP = if ((dQ == bU))
1167+ then $Tuple4(dC, dB, fI, fH)
1168+ else if ((dQ == bV))
1169+ then $Tuple4(dB, dC, fH, fI)
11121170 else throw("wrong outAssetId")
1113- let fo = fn._1
1114- let fp = fn._2
1115- let fq = fn._3
1116- let fr = fn._4
1117- let fs = 1
1118- let fc = {
1119- let dG = invoke(aL, "calcSwapXToY", [toString(fq), toString(fo), toString(fp), "", az, g, toString(fs), h], nil)
1120- if ($isInstanceOf(dG, "Int"))
1121- then dG
1122- else throw(($getType(dG) + " couldn't be cast to Int"))
1171+ let fQ = fP._1
1172+ let fR = fP._2
1173+ let fS = fP._3
1174+ let fT = fP._4
1175+ let fU = 1
1176+ let fE = {
1177+ let dI = invoke(aN, "calcSwapXToY", [toString(fS), toString(fQ), toString(fR), "", aB, h, toString(fU), i], nil)
1178+ if ($isInstanceOf(dI, "Int"))
1179+ then dI
1180+ else throw(($getType(dI) + " couldn't be cast to Int"))
11231181 }
1124- let fi = (fc + fr)
1125- let ft = bJ(fi)
1126- let dX = ft._1
1127- let bL = ft._2
1128- $Tuple2(nil, $Tuple2(dX, bL))
1182+ let fK = (fE + fT)
1183+ let fV = bL(fK)
1184+ let dZ = fV._1
1185+ let bN = fV._2
1186+ $Tuple2(nil, $Tuple2(dZ, bN))
11291187 }
11301188
11311189
11321190
1133-@Callable(do)
1134-func getOneTknV2WithBonusREADONLY (dO,fm) = {
1135- let dw = aD()
1136- let bS = dw[r]
1137- let bT = dw[s]
1138- let bR = dw[q]
1139- let bY = bb(bS)
1140- let ca = bb(bT)
1141- let fu = {
1142- let dG = invoke(this, "getOneTknV2READONLY", [dO, fm], nil)
1143- if ($isInstanceOf(dG, "(Int, Int)"))
1144- then dG
1145- else throw(($getType(dG) + " couldn't be cast to (Int, Int)"))
1191+@Callable(dq)
1192+func getOneTknV2WithBonusREADONLY (dQ,fO) = {
1193+ let dy = aF()
1194+ let bU = dy[s]
1195+ let bV = dy[t]
1196+ let bT = dy[r]
1197+ let ca = bd(bU)
1198+ let cc = bd(bV)
1199+ let fW = {
1200+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, fO], nil)
1201+ if ($isInstanceOf(dI, "(Int, Int)"))
1202+ then dI
1203+ else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
11461204 }
1147- let dX = fu._1
1148- let bL = fu._2
1149- let cG = bM("", bR, fm, this)
1150- let ci = cG._1
1151- let cj = cG._2
1152- let fv = (ci + cj)
1153- let eY = fraction((dX - fv), a, fv)
1154- $Tuple2(nil, $Tuple3(dX, bL, eY))
1205+ let dZ = fW._1
1206+ let bN = fW._2
1207+ let cI = bO("", bT, fO, this)
1208+ let ck = cI._1
1209+ let cl = cI._2
1210+ let fX = (ck + cl)
1211+ let fA = fraction((dZ - fX), a, fX)
1212+ $Tuple2(nil, $Tuple3(dZ, bN, fA))
11551213 }
11561214
11571215
11581216
1159-@Callable(do)
1160-func getNoLess (fw,fx) = {
1161- let cG = dn(do)
1162- let ci = cG._1
1163- let cj = cG._2
1164- let cu = cG._3
1165- let bO = cG._4
1166- let ck = cG._5
1167- if ((fw > ci))
1168- then throw(((("Failed: " + toString(ci)) + " < ") + toString(fw)))
1169- else if ((fx > cj))
1170- then throw(((("Failed: " + toString(cj)) + " < ") + toString(fx)))
1217+@Callable(dq)
1218+func getNoLess (fY,fZ) = {
1219+ let cI = dp(dq)
1220+ let ck = cI._1
1221+ let cl = cI._2
1222+ let cw = cI._3
1223+ let bQ = cI._4
1224+ let cm = cI._5
1225+ if ((fY > ck))
1226+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(fY)))
1227+ else if ((fZ > cl))
1228+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(fZ)))
11711229 else {
1172- let fy = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
1173- if ((fy == fy))
1174- then ck
1230+ let ga = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1231+ if ((ga == ga))
1232+ then cm
11751233 else throw("Strict value is not equal to itself.")
11761234 }
11771235 }
11781236
11791237
11801238
1181-@Callable(do)
1182-func unstakeAndGet (bK) = {
1183- let fz = if ((size(do.payments) != 0))
1239+@Callable(dq)
1240+func unstakeAndGet (bM) = {
1241+ let gb = if ((size(dq.payments) != 0))
11841242 then throw("No pmnts expd")
11851243 else true
1186- if ((fz == fz))
1244+ if ((gb == gb))
11871245 then {
1188- let bA = aD()
1189- let fA = aH()
1190- let dM = fromBase58String(bA[q])
1191- let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
1192- let fC = invoke(fB, "unstake", [toBase58String(dM), bK], nil)
1193- if ((fC == fC))
1246+ let bC = aF()
1247+ let gc = aJ()
1248+ let dO = fromBase58String(bC[r])
1249+ let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1250+ let ge = invoke(gd, "unstake", [toBase58String(dO), bM], nil)
1251+ if ((ge == ge))
11941252 then {
1195- let cG = bM(toBase58String(do.transactionId), toBase58String(dM), bK, do.caller)
1196- let bW = parseIntValue(cG._9)
1197- let ck = cG._10
1198- let fD = if (if (aA())
1253+ let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
1254+ let bY = parseIntValue(cI._9)
1255+ let cm = cI._10
1256+ let gf = if (if (aC())
11991257 then true
1200- else (bW == n))
1201- then throw(("Blocked: " + toString(bW)))
1258+ else (bY == o))
1259+ then throw(("Blocked: " + toString(bY)))
12021260 else true
1203- if ((fD == fD))
1261+ if ((gf == gf))
12041262 then {
1205- let fE = invoke(ay, "burn", [bK], [AttachedPayment(dM, bK)])
1206- if ((fE == fE))
1207- then ck
1263+ let gg = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1264+ if ((gg == gg))
1265+ then cm
12081266 else throw("Strict value is not equal to itself.")
12091267 }
12101268 else throw("Strict value is not equal to itself.")
12111269 }
12121270 else throw("Strict value is not equal to itself.")
12131271 }
12141272 else throw("Strict value is not equal to itself.")
12151273 }
12161274
12171275
12181276
1219-@Callable(do)
1220-func unstakeAndGetOneTkn (fF,dO,dP) = {
1221- let fz = if ((size(do.payments) != 0))
1277+@Callable(dq)
1278+func unstakeAndGetOneTkn (gh,dQ,dR) = {
1279+ let gb = if ((size(dq.payments) != 0))
12221280 then throw("No pmnts expd")
12231281 else true
1224- if ((fz == fz))
1282+ if ((gb == gb))
12251283 then {
1226- let bA = aD()
1227- let fA = aH()
1228- let dM = fromBase58String(bA[q])
1229- let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
1230- let fC = invoke(fB, "unstake", [toBase58String(dM), fF], nil)
1231- if ((fC == fC))
1284+ let bC = aF()
1285+ let gc = aJ()
1286+ let dO = fromBase58String(bC[r])
1287+ let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1288+ let ge = invoke(gd, "unstake", [toBase58String(dO), gh], nil)
1289+ if ((ge == ge))
12321290 then {
1233- let fG = dN(dO, dP, [AttachedPayment(dM, fF)], do.caller, do.originCaller, do.transactionId)
1234- let ck = fG._1
1235- let dY = fG._2
1236- $Tuple2(ck, dY)
1291+ let gi = dP(dQ, dR, [AttachedPayment(dO, gh)], dq.caller, dq.originCaller, dq.transactionId)
1292+ let cm = gi._1
1293+ let ea = gi._2
1294+ $Tuple2(cm, ea)
12371295 }
12381296 else throw("Strict value is not equal to itself.")
12391297 }
12401298 else throw("Strict value is not equal to itself.")
12411299 }
12421300
12431301
12441302
1245-@Callable(do)
1246-func activate (fH,fI) = if ((toString(do.caller) != toString(ay)))
1247- then throw("denied")
1248- else $Tuple2([StringEntry(X(), fH), StringEntry(Y(), fI)], "success")
1249-
1250-
1251-
1252-@Callable(do)
1253-func setS (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
1254- then ek
1255- else [StringEntry(fJ, fD)]
1256-
1257-
1258-
1259-@Callable(do)
1260-func setI (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
1261- then ek
1262- else [IntegerEntry(fJ, fD)]
1263-
1264-
1265-
1266-@Callable(do)
1267-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
1268-
1269-
1270-
1271-@Callable(do)
1272-func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
1273-
1274-
1275-
1276-@Callable(do)
1277-func calcPricesWrapperREADONLY (bu,bv,bz) = {
1278- let fK = by(bu, bv, bz)
1279- $Tuple2(nil, [toString(fK[0]), toString(fK[1]), toString(fK[2])])
1303+@Callable(dq)
1304+func putOneTknV3 () = {
1305+ let dy = aF()
1306+ let bU = dy[s]
1307+ let bV = dy[t]
1308+ let bT = dy[r]
1309+ let gj = dq.payments[0]
1310+ let gk = toBase58String(value(gj.assetId))
1311+ let fk = gj.amount
1312+ let gl = bL(fk)
1313+ let ft = gl._1
1314+ let bN = gl._2
1315+ let gm = if ((size(dq.payments) == 1))
1316+ then if ((gk == bU))
1317+ then $Tuple2(ft, 0)
1318+ else if ((gk == bV))
1319+ then $Tuple2(0, ft)
1320+ else throw("invalid payment")
1321+ else throw("invalid payments size")
1322+ let gn = gm._1
1323+ let go = gm._2
1324+ let gp = bd(bU)
1325+ let gq = bd(bV)
1326+ let gr = (gp - gn)
1327+ let gs = (gq - go)
1328+ let bq = ej([toBigInt(gr), toBigInt(gs)])
1329+ let bp = ej([toBigInt(gp), toBigInt(gq)])
1330+ let gt = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1331+ let gu = ((gt * (bp - bq)) / bq)
1332+ $Tuple2(nil, toInt(gu))
12801333 }
12811334
12821335
12831336
1284-@Callable(do)
1285-func fromX18WrapperREADONLY (F,fL) = $Tuple2(nil, E(parseBigIntValue(F), fL))
1337+@Callable(dq)
1338+func activate (gv,gw) = if ((toString(dq.caller) != toString(aA)))
1339+ then throw("denied")
1340+ else $Tuple2([StringEntry(Z(), gv), StringEntry(aa(), gw)], "success")
12861341
12871342
12881343
1289-@Callable(do)
1290-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
1344+@Callable(dq)
1345+func setS (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1346+ then eM
1347+ else [StringEntry(gx, gf)]
12911348
12921349
12931350
1294-@Callable(do)
1295-func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
1351+@Callable(dq)
1352+func setI (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1353+ then eM
1354+ else [IntegerEntry(gx, gf)]
12961355
12971356
12981357
1299-@Callable(do)
1300-func estimatePutOperationWrapperREADONLY (bN,bj,cm,cn,co,cp,fM,cq,cr) = $Tuple2(nil, cl(bN, bj, cm, cn, co, cp, fM, cq, cr, true, false, 0, ""))
1358+@Callable(dq)
1359+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
13011360
13021361
13031362
1304-@Callable(do)
1305-func estimateGetOperationWrapperREADONLY (bN,fN,bP,fM) = {
1306- let cG = bM(bN, fN, bP, addressFromStringValue(fM))
1307- $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
1363+@Callable(dq)
1364+func getAccBalanceWrapperREADONLY (be) = $Tuple2(nil, bd(be))
1365+
1366+
1367+
1368+@Callable(dq)
1369+func calcPricesWrapperREADONLY (bw,bx,bB) = {
1370+ let gy = bA(bw, bx, bB)
1371+ $Tuple2(nil, [toString(gy[0]), toString(gy[1]), toString(gy[2])])
13081372 }
13091373
13101374
13111375
1312-@Callable(do)
1313-func getFeeREADONLY () = $Tuple2(nil, ac)
1376+@Callable(dq)
1377+func fromX18WrapperREADONLY (G,gz) = $Tuple2(nil, F(parseBigIntValue(G), gz))
13141378
13151379
1316-@Verifier(fO)
1317-func fP () = {
1318- let fQ = {
1319- let as = eh()
1320- if ($isInstanceOf(as, "ByteVector"))
1380+
1381+@Callable(dq)
1382+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1383+
1384+
1385+
1386+@Callable(dq)
1387+func calcPriceBigIntWrapperREADONLY (bg,bh) = $Tuple2(nil, toString(bf(parseBigIntValue(bg), parseBigIntValue(bh))))
1388+
1389+
1390+
1391+@Callable(dq)
1392+func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gA,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gA, cs, ct, true, false, 0, ""))
1393+
1394+
1395+
1396+@Callable(dq)
1397+func estimateGetOperationWrapperREADONLY (bP,gB,bR,gA) = {
1398+ let cI = bO(bP, gB, bR, addressFromStringValue(gA))
1399+ $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1400+ }
1401+
1402+
1403+
1404+@Callable(dq)
1405+func getFeeREADONLY () = $Tuple2(nil, ae)
1406+
1407+
1408+@Verifier(gC)
1409+func gD () = {
1410+ let gE = {
1411+ let au = eK()
1412+ if ($isInstanceOf(au, "ByteVector"))
13211413 then {
1322- let em = as
1323- em
1414+ let eO = au
1415+ eO
13241416 }
1325- else if ($isInstanceOf(as, "Unit"))
1326- then fO.senderPublicKey
1417+ else if ($isInstanceOf(au, "Unit"))
1418+ then gC.senderPublicKey
13271419 else throw("Match error")
13281420 }
1329- let as = fO
1330- if ($isInstanceOf(as, "Order"))
1421+ let au = gC
1422+ if ($isInstanceOf(au, "Order"))
13311423 then {
1332- let db = as
1333- let fR = aB()
1334- let fS = da(db)
1335- let fT = sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey)
1336- let fU = sigVerify(db.bodyBytes, db.proofs[1], fR)
1337- if (if (if (fS)
1338- then fT
1424+ let dd = au
1425+ let gF = aD()
1426+ let gG = dc(dd)
1427+ let gH = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1428+ let gI = sigVerify(dd.bodyBytes, dd.proofs[1], gF)
1429+ if (if (if (gG)
1430+ then gH
13391431 else false)
1340- then fU
1432+ then gI
13411433 else false)
13421434 then true
1343- else an(fS, fT, fU)
1435+ else ap(gG, gH, gI)
13441436 }
1345- else if ($isInstanceOf(as, "SetScriptTransaction"))
1437+ else if ($isInstanceOf(au, "SetScriptTransaction"))
13461438 then {
1347- let ei = as
1348- let fV = blake2b256(value(ei.script))
1349- let fW = fromBase64String(value(getString(ay, al())))
1350- let fX = scriptHash(this)
1351- if (if ((fW == fV))
1352- then (fX != fV)
1439+ let eq = au
1440+ let gJ = blake2b256(value(eq.script))
1441+ let gK = fromBase64String(value(getString(aA, an())))
1442+ let gL = scriptHash(this)
1443+ if (if ((gK == gJ))
1444+ then (gL != gJ)
13531445 else false)
13541446 then true
1355- else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
1447+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
13561448 }
1357- else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
1449+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
13581450 }
13591451

github/deemru/w8io/c3f4982 
510.37 ms