tx · 7ymmJqfFf6Vy2Tc9PWgqt9cdCvHguMpcxbkUEkNNqrqF

3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV:  -0.03600000 Waves

2023.01.19 12:39 [2411639] smart account 3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV > SELF 0.00000000 Waves

{ "type": 13, "id": "7ymmJqfFf6Vy2Tc9PWgqt9cdCvHguMpcxbkUEkNNqrqF", "fee": 3600000, "feeAssetId": null, "timestamp": 1674121213206, "version": 1, "sender": "3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV", "senderPublicKey": "9QeKzbcXevL66Vm5v2GCmySfZ86o8jcD5y7pPmfRcRYE", "proofs": [ "2oE6WKMGMuXhwyHdcvH7chvUTZEkfq8pZi9v89MZxeETSgkhwDtcDEAqkYUaBMXuPzwjaHvC5vaAaD8ypUjsVm9G" ], "script": "base64:BgKsLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgyNDM4NDA5Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA5ODYyMTE5OCIDa0xwIg0kdDAyMTY2OTIxNzY5Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQ0OTAyNDc4MyIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDc4NzI0OTM2IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjUwNjgyNTEzMiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjY4MTMyNjk4MCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjkwNTgyOTExNCILdG90YWxBbW91bnQiDSR0MDI5MTE4MjkzNDQiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzODcyMzQzMzQiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0ODk2MzQ5NjEiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzYxNDkzNjMwMSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjg4NzM3MDg0Ig0kdDAzNzA4NzM3MTk1Ig0kdDAzNzUwMTM3NjU4Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzODU0MzM4Njk2Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM5MTk2Mzk0NDMiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM5NDQ2Mzk1NTQiDSR0MDM5ODExMzk5NjciDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwODcyNDEwMjMiDSR0MDQxNTE4NDE3NjUiDSR0MDQxNzY4NDE4NzYiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyODIyNDI5MDQiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzODUzNDM5MzQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDUwNjA0NTE0MSIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ2NDM2NDY1MTciC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzcwNDQ3NzY4IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNocQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZhbGlkPQkApQMBBQJhQwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUQBAmFFAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFIAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFJAQJhSgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAQJhSwECYUoJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAAJhTAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUEdGhpcwkBAVIAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUCYUwFAmF6AAJhTgoAAmFPCQD8BwQFAmFMAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CA0ludAUCYU8JAAIBCQCsAgIJAAMBBQJhTwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhUAoAAmFPCQD8BwQFAmFMAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgNJbnQFAmFPCQACAQkArAICCQADAQUCYU8CGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVEACQELdmFsdWVPckVsc2UCCQCbCAIFAmFMCQECYXYABwECYVIACQDZBAEJAQJhRQIFAmFMCQECYW4AAQJhUwAEAmFUCQECYUUCBQR0aGlzCQECYWMABAJhVQkBAmFFAgUEdGhpcwkBAmFkAAQCYXMJAQJhSAIFAmFMCQECYXQBBQJhVQQCYXIJAQJhSAIFAmFMCQECYXQBBQJhVAkAtQkCCQECYUUCBQJhTAkBAmFxAgkApAMBBQJhcgkApAMBBQJhcwUBagECYVYBAmFXAwkAAAIFAmFXBQFpBQR1bml0CQDZBAEFAmFXAQJhWAECYVcDCQAAAgUCYVcFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVcBAmFZAQJhWgkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFaBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVoFAXAJANkEAQkAkQMCBQJhWgUBcQkBAmFWAQkAkQMCBQJhWgUBcgkBAmFWAQkAkQMCBQJhWgUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFaBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVoFAXUAAmJhCQECYVkBCQECYVMAAAJiYgUCYmEAAmJjCAUCYmICXzEAAmJkCAUCYmICXzIAAmJlCAUCYmICXzMAAmJmCAUCYmICXzQAAmJnCAUCYmICXzUAAmJoCAUCYmICXzYAAmJpCAUCYmICXzcBAmJqAAkAtQkCCQECYUUCBQJhTAkBAmFtAAUBagACYmsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiagAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmoABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJibQoCYm4CYm8CYnACYnECYnICYnMCYnQCYnUCYnYCYncJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIJAMwIAgkApAMBBQJicwkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3BQNuaWwFAWoBAmJ4BgJieQJiegJiQQJicQJidAJidQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQUDbmlsBQFqAQJiQgECYkMDCQAAAgUCYkMCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJDAQJiRAICYkUCYkYJALwCAwUCYkUFAWQFAmJGAQJiRwMCYkUCYkYBSwkAvQIEBQJiRQUBZAUCYkYFAUsBAmJIBAJiSQJiSgJiSwJiTAQCYk0JAQFEAgUCYksFAmJJBAJiTgkBAUQCBQJiTAUCYkoJAQJiRAIFAmJOBQJiTQECYk8DAmJLAmJMAmJQBAJiUQkBAmFTAAQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCYlQJAQJiSAQFAmJSBQJiUwUCYksFAmJMBAJiRgkBAUQCBQJiSwUCYlIEAmJFCQEBRAIFAmJMBQJiUwQCYlUJAQFEAgUCYlAFAWIEAmJWCQECYkQCBQJiRgUCYlUEAmJXCQECYkQCBQJiRQUCYlUJAMwIAgUCYlQJAMwIAgUCYlYJAMwIAgUCYlcFA25pbAECYlgDAmJLAmJMAmJQBAJiWQkBAmJPAwUCYksFAmJMBQJiUAkAzAgCCQEBRwIJAJEDAgUCYlkAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlkAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlkAAgUBYgUDbmlsAQJiWgQCY2ECY2ICY2MBWgQCYlEJAQJhUwAEAmNkCQCRAwIFAmJRBQFxBAJjZQkAkQMCBQJiUQUBcgQCY2YJAJEDAgUCYlEFAXMEAmJJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmNnCQCRAwIFAmJRBQFwBAJjaAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgBQJjZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZAUCY2IJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNpCQECYkIBBQJjZQQCY2oJAQFEAgUCY2kFAmJJBAJjawkBAmJCAQUCY2YEAmNsCQEBRAIFAmNrBQJiSgQCY20JAQJiRAIFAmNsBQJjagQCY24JAQFHAgUCY20FAWIEAmNvCQEBRAIFAmNjBQFiBAJjcAkBAUQCBQJjaAUBYgQCY3EJALwCAwUCY2oFAmNvBQJjcAQCY3IJALwCAwUCY2wFAmNvBQJjcAQCY3MJAQFKAwUCY3EFAmJJBQVGTE9PUgQCY3QJAQFKAwUCY3IFAmJKBQVGTE9PUgQCY3UDCQAAAgUCY2ECAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNzAwkAAAIFAmNlAgVXQVZFUwUEdW5pdAkA2QQBBQJjZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjdAMJAAACBQJjZgIFV0FWRVMFBHVuaXQJANkEAQUCY2YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQFaBQJjYQkBAmJ4BgUCY3MFAmN0BQJjYwUCY24FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY24FA25pbAkAnAoKBQJjcwUCY3QFAmNlBQJjZgUCY2kFAmNrBQJjaAUCY20FAmNnBQJjdQECY3YJAmNhAmN3AmN4AmN5AmN6AmNBAVoCY0ICY0MEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY0UJAJEDAgUCYlEFAXMEAmNGCQCRAwIFAmJRBQF2BAJjRwkAkQMCBQJiUQUBdwQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmNoCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0gJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3kJANkEAQIFV0FWRVMEAmNJCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNBCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNEBQJjSAYJAQIhPQIFAmNFBQJjSQkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNpAwUCY0IJAQJiQgEFAmNECQBlAgkBAmJCAQUCY0QFAmN4BAJjawMFAmNCCQECYkIBBQJjRQkAZQIJAQJiQgEFAmNFBQJjegQCY0oJAQFEAgUCY3gFAmJSBAJjSwkBAUQCBQJjegUCYlMEAmNMCQECYkQCBQJjSwUCY0oEAmNqCQEBRAIFAmNpBQJiUgQCY2wJAQFEAgUCY2sFAmJTBAJjTQMJAAACBQJjaAAABAJjbQUBZQQCY04FAWUEAmJVCQB2BgkAuQICBQJjSgUCY0sAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYlUFAWIJAQFHAgUCY0oFAmJSCQEBRwIFAmNLBQJiUwkBAmJEAgkAtwICBQJjbAUCY0sJALcCAgUCY2oFAmNKBQJjTgQCY20JAQJiRAIFAmNsBQJjagQCY04JALwCAwkBAVEBCQC4AgIFAmNtBQJjTAUBZAUCY20EAmNPCQEBRAIFAmN3BQFiAwMJAQIhPQIFAmNtBQFlCQC/AgIFAmNOBQJjTwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY04CHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjTwQCY3AJAQFEAgUCY2gFAWIEAmNQCQC9AgQFAmNKCQECYkcDBQJjbAUCY2oFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmNRCQC9AgQFAmNLBQFkCQECYkcDBQJjbAUCY2oFBUZMT09SBQdDRUlMSU5HBAJjUgMJAL8CAgUCY1AFAmNLCQCUCgIFAmNRBQJjSwkAlAoCBQJjSgUCY1AEAmNTCAUCY1ICXzEEAmNUCAUCY1ICXzIEAmJVCQC9AgQFAmNwBQJjVAUCY2wFBUZMT09SCQCXCgUJAQFKAwUCYlUFAWIFBUZMT09SCQEBSgMFAmNTBQJiUgUHQ0VJTElORwkBAUoDBQJjVAUCYlMFB0NFSUxJTkcFAmNtBQJjTgQCY1UIBQJjTQJfMQQCY1YIBQJjTQJfMgQCY1cIBQJjTQJfMwQCY24JAQFHAggFAmNNAl80BQFiBAJjWAkBAUcCCAUCY00CXzUFAWIDCQBnAgAABQJjVQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1kDCQEBIQEFAmNDAAAFAmNVBAJjWgkAZQIFAmN4BQJjVgQCZGEJAGUCBQJjegUCY1cEAmRiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUBWgUCY2EJAQJibQoFAmNWBQJjVwUCY1kFAmNuBQJjdwUCY1gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNaBQJkYQUDbmlsCQCfCg0FAmNVBQJjWQUCY24FAmNpBQJjawUCY2gFAmNkBQJjZwUCZGIFAmNaBQJkYQUCY3kFAmNBAQJkYwMCZGQCZGUCY2gEAmRmCQC8AgMJAHYGCQC5AgIFAmRkBQJkZQAACQC2AgEABQABABIFBERPV04FAWcFAmNoAwkAAAIFAmNoBQFmBQFmBQJkZgECZGcDAmRoAmRpAmRqBAJkawkAuAICCQC2AgEJAQJiQgEJAQJhWAEFAmJmBQJkaAQCZGwJALgCAgkAtgIBCQECYkIBCQECYVgBBQJiZwUCZGkEAmRtCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmUIcXVhbnRpdHkFAmRqBAJkbgkBAmRjAwUCZGsFAmRsBQJkbQUCZG4BAmRvAwJkcAJkcQJkagQCZGsJAGQCCQECYkIBCQECYVgBBQJiZgUCZHAEAmRsCQBkAgkBAmJCAQkBAmFYAQUCYmcFAmRxBAJkbQkAZAIICQEFdmFsdWUBCQDsBwEFAmJlCHF1YW50aXR5BQJkagQCZGYJAQJkYwMJALYCAQUCZGsJALYCAQUCZGwJALYCAQUCZG0EAmRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhaQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFoCQCmAwEFAmRmBQNuaWwJAJQKAgUCZHIFAmRmAQJkcwICZHQCZGYDCQDAAgIFAmRmBQJkdAYJAQJhSQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZHQJAMwIAgkApgMBBQJkZgUDbmlsAgEgAQJkdQECZHYEAmR3CAUCZHYGYW1vdW50BAJkeAkAbgQIBQJkdgZhbW91bnQIBQJkdgVwcmljZQUBYgUFRkxPT1IEAmR5AwkAAAIIBQJkdglvcmRlclR5cGUFA0J1eQkAlAoCBQJkdwkBAS0BBQJkeAkAlAoCCQEBLQEFAmR3BQJkeAQCZHAIBQJkeQJfMQQCZHEIBQJkeQJfMgMDAwkBAmFRAAYJAAACBQJiZAUBbQYJAAACBQJiZAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkdglhc3NldFBhaXILYW1vdW50QXNzZXQFAmJmBgkBAiE9AggIBQJkdglhc3NldFBhaXIKcHJpY2VBc3NldAUCYmcJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhaAkBAmFLAQIPa0xwIGlzIHJlcXVpcmVkCQECYUsBAgtpbnZhbGlkIGtMcAQCZEEJAQJkbwMFAmRwBQJkcQAABAJkQggFAmRBAl8xBAJkQwgFAmRBAl8yBAJkRAkAwAICBQJkQwUCZHoFAmREAQJkRQECZEYDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRHCQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwAABAJjYgkBBXZhbHVlAQgFAmRHB2Fzc2V0SWQEAmRICAUCZEcGYW1vdW50BAJjTQkBAmJaBAkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYgUCZEgIBQJkRgZjYWxsZXIEAmNzCAUCY00CXzEEAmN0CAUCY00CXzIEAmNnCQENcGFyc2VJbnRWYWx1ZQEIBQJjTQJfOQQCY3UIBQJjTQNfMTADAwkBAmFRAAYJAAACBQJjZwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2cJAJcKBQUCY3MFAmN0BQJkSAUCY2IFAmN1AQJkSQMCZEYCY3cCY0MDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZEoJAQV2YWx1ZQEJAJEDAggFAmRGCHBheW1lbnRzAAAEAmRLCQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwABBAJkTAkBAmN2CQkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAUCY3cIBQJkSgZhbW91bnQIBQJkSgdhc3NldElkCAUCZEsGYW1vdW50CAUCZEsHYXNzZXRJZAkApQgBCAUCZEYGY2FsbGVyBwUCY0MEAmNnCQENcGFyc2VJbnRWYWx1ZQEIBQJkTAJfOAMDAwkBAmFRAAYJAAACBQJjZwUBbAYJAAACBQJjZwUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2cFAmRMAQJkTQECZE4EAmRPCQD8BwQFAmFMAgRlbWl0CQDMCAIFAmROBQNuaWwFA25pbAMJAAACBQJkTwUCZE8EAmRQBAJkUQUCZE8DCQABAgUCZFECB0FkZHJlc3MEAmRSBQJkUQkA/AcEBQJkUgIEZW1pdAkAzAgCBQJkTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZFAFAmRQBQJkTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZFMCAmROAmFnBAJkVAMJAAACBQJhZwAAAAAJAGsDBQJkTgUCYWcFAWIJAJQKAgkAZQIFAmROBQJkVAUCZFQBAmRVBAJkVgJkVwFaAmFhBAJkWAkAAAIFAmFhBQR1bml0BAJkWQkBAmJCAQkBAmFYAQUCYmYEAmRaCQECYkIBCQECYVgBBQJiZwQCZWEDCQAAAgUCZFcFAmJmBgMJAAACBQJkVwUCYmcHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlYgMFAmRYCQCUCgIFAmRZBQJkWgMFAmVhCQCUCgIJAGUCBQJkWQUCZFYFAmRaCQCUCgIFAmRZCQBlAgUCZFoFAmRWBAJlYwgFAmViAl8xBAJlZAgFAmViAl8yBAJlZQMFAmVhCQCUCgIFAmRWAAAJAJQKAgAABQJkVgQCZWYIBQJlZQJfMQQCZWcIBQJlZQJfMgQCZHcICQECZFMCBQJlZgUCYU4CXzEEAmR4CAkBAmRTAgUCZWcFAmFOAl8xBAJlaAkBAmRTAgUCZFYFAmFOBAJlaQgFAmVoAl8xBAJkVAgFAmVoAl8yBAJlagkAZAIFAmVjBQJkdwQCZWsJAGQCBQJlZAUCZHgEAmVsCQECYkQCCQEBRAIFAmVrBQJiaQkBAUQCBQJlagUCYmgEAmVtCQEBRwIFAmVsBQFiBAJlbgMFAmVhBQJlYwUCZWQEAmVvCQC2AgEFAmVuBAJlcAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJlCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJlAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZXEDCQC/AgIFAmVwBQFmBgkBAmFJAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlcQUCZXEEAmVyCQC2AgEFAmVpBAJlcwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlcAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVyBQFkBQJlbwASABIFBERPV04FAWQFAWQFA25pbAQCZGIDBQJkWAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYm0KBQJlZgUCZWcFAmVzBQJlbQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV0CQECYkQCCQEBRAIFAmVkBQJiaQkBAUQCBQJlYwUCYmgEAmV1CQEBRwIFAmV0BQFiBAJldgQCZXcDBQJlYQkAlAoCBQJlZgUCZWMJAJQKAgUCZWcFAmVkBAJkTggFAmV3Al8xBAJleAgFAmV3Al8yBAJleQkAoAMBCQC8AgMFAmVwCQC2AgEJAGkCBQJkTgACCQC2AgEFAmV4CQBrAwkAZQIFAmVzBQJleQUBYgUCZXkJAJcKBQUCZXMFAmRiBQJkVAUCZXYFAmVhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlegUCZUECZWkCZFcBWgJhYQQCZFgJAAACBQJhYQUEdW5pdAQCYlEJAQJhUwAEAmJSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmVCCQDMCAIDCQAAAgUCZFcFAmJlBgkBAmFJAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDCQAAAgUCZUEFAmJmBgMJAAACBQJlQQUCYmcHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlRAMFAmVDCQC2AgEJAQJiQgEJAQJhWAEFAmJmCQC2AgEJAQJiQgEJAQJhWAEFAmJnBAJlRQMFAmVDBQJiUgUCYlMEAmVGCQECYkIBCQECYVgBBQJiZgQCZUcJAQJiQgEJAQJhWAEFAmJnBAJlSAMFAmVDBQJlRgUCZUcEAmVJCQC2AgEFAmVIBAJlcAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJlCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJlAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUoJALYCAQUCZWkEAmVLCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVECQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlSgUBZAUCZXAAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUwJAQJkUwIFAmVLBQJhUAQCZU0IBQJlTAJfMQQCZFQIBQJlTAJfMgQCZU4DBQJlQwkAlgoEBQJlTQAACQBlAgUCZUYFAmVLBQJlRwkAlgoEAAAFAmVNBQJlRgkAZQIFAmVHBQJlSwQCZU8IBQJlTgJfMQQCZVAIBQJlTgJfMgQCZVEIBQJlTgJfMwQCZVIIBQJlTgJfNAQCZWwJAQJiRAIJAQFEAgUCZVIFAmJpCQEBRAIFAmVRBQJiaAQCZW0JAQFHAgUCZWwFAWIEAmRiAwUCZFgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEJAQV2YWx1ZQEFAVoJANgEAQkBBXZhbHVlAQUCYWEJAQJieAYFAmVPBQJlUAUCZWkFAmVtBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVtBQNuaWwEAmV0CQECYkQCCQEBRAIFAmVHBQJiaQkBAUQCBQJlRgUCYmgEAmV1CQEBRwIFAmV0BQFiBAJldgQCZVMJAGgCCQCgAwEJALwCAwUCZUQFAmVKBQJlcAACCQBrAwkAZQIFAmVNBQJlUwUBYgUCZVMJAJcKBQUCZU0FAmRiBQJkVAUCZXYFAmVDCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlVAAEAmRRCQCiCAEJAQFTAAMJAAECBQJkUQIGU3RyaW5nBAJlVQUCZFEJANkEAQUCZVUDCQABAgUCZFECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVYABAJkUQkAoggBCQEBVAADCQABAgUCZFECBlN0cmluZwQCZVUFAmRRCQDZBAEFAmVVAwkAAQIFAmRRAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVXAQJkRgQCZFEJAQJlVAADCQABAgUCZFECCkJ5dGVWZWN0b3IEAmVYBQJkUQkAAAIIBQJkRg9jYWxsZXJQdWJsaWNLZXkFAmVYAwkAAQIFAmRRAgRVbml0CQAAAggFAmRGBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlWQECZEYEAmVaCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRRCQECZVQAAwkAAQIFAmRRAgpCeXRlVmVjdG9yBAJlWAUCZFEDCQAAAggFAmRGD2NhbGxlclB1YmxpY0tleQUCZVgGBQJlWgMJAAECBQJkUQIEVW5pdAMJAAACCAUCZEYGY2FsbGVyBQR0aGlzBgUCZVoJAAIBAgtNYXRjaCBlcnJvchsCZEYBCnNldE1hbmFnZXIBAmZhBAJmYgkBAmVZAQUCZEYDCQAAAgUCZmIFAmZiBAJmYwkA2QQBBQJmYQMJAAACBQJmYwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQ5jb25maXJtTWFuYWdlcgAEAmZkCQECZVYABAJmZQMJAQlpc0RlZmluZWQBBQJmZAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmUFAmZlBAJmZgMJAAACCAUCZEYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmZAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmYFAmZmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJmZAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgEDcHV0AgJjdwJmZwMJAGYCAAAFAmN3CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRMCQECZEkDBQJkRgUCY3cGBAJjWQgFAmRMAl8yBAJjZAgFAmRMAl83BAJjdQgFAmRMAl85BAJjWggFAmRMA18xMAQCZGEIBQJkTANfMTEEAmZoCAUCZEwDXzEyBAJmaQgFAmRMA18xMwQCZEoJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRGCHBheW1lbnRzAAAGYW1vdW50BAJkSwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEYIcGF5bWVudHMAAQZhbW91bnQEAmRuCQECZGcDBQJkSgUCZEsJALYCAQAAAwkAAAIFAmRuBQJkbgQCZE8JAPwHBAUCYUwCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsAwkAAAIFAmRPBQJkTwQCZFAEAmRRBQJkTwMJAAECBQJkUQIHQWRkcmVzcwQCZFIFAmRRCQD8BwQFAmRSAgRlbWl0CQDMCAIFAmNZBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkUAUCZFAEAmZqAwkAZgIFAmNaAAAJAPwHBAUCYmwCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmaAUCY1oFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsDCQBmAgUCZGEAAAkA/AcEBQJibAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZpBQJkYQUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJmbAMFAmZnBAJmbQkA/AcEBQJiawIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2QFAmNZBQNuaWwDCQAAAgUCZm0FAmZtBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRGBmNhbGxlcgUCY1kFAmNkBQNuaWwEAmZuCQECZG8DAAAAAAAAAwkAAAIFAmZuBQJmbgQCZGYIBQJmbgJfMgQCZm8IBQJmbgJfMQQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgkAzggCBQJjdQUCZmwFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQpwdXRGb3JGcmVlAQJmcQMJAGYCAAAFAmZxCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRMCQECZEkDBQJkRgUCZnEHBAJjdQgFAmRMAl85BAJkSgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEYIcGF5bWVudHMAAAZhbW91bnQEAmRLCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwABBmFtb3VudAQCZG4JAQJkZwMFAmRKBQJkSwkAtgIBAAADCQAAAgUCZG4FAmRuBAJmcgkBAmRvAwAAAAAAAAQCZm8IBQJmcgJfMQQCZGYIBQJmcgJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQlwdXRPbmVUa24CAmZzAmZ0BAJmdQoAAmFPCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CB0Jvb2xlYW4FAmFPCQACAQkArAICCQADAQUCYU8CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZ2AwMDCQECYVEABgkAAAIFAmJkBQFsBgkAAAIFAmJkBQFuBgUCZnUEAmVCCQDMCAIDAwkBASEBBQJmdgYJAQJlVwEFAmRGBgkBAmFJAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVCBQJlQgQCZncJAJEDAggFAmRGCHBheW1lbnRzAAAEAmRXCAUCZncHYXNzZXRJZAQCZFYIBQJmdwZhbW91bnQEAmRuAwkAAAIFAmRXBQJiZgkBAmRnAwkAtgIBBQJkVgkAtgIBAAAJALYCAQAAAwkAAAIFAmRXBQJiZwkBAmRnAwkAtgIBAAAJALYCAQUCZFYJALYCAQAACQECYUkBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZG4FAmRuBAFaCAUCZEYGY2FsbGVyBAJhYQgFAmRGDXRyYW5zYWN0aW9uSWQEAmZ4CQECZFUEBQJkVgUCZFcFAVoFAmFhAwkAAAIFAmZ4BQJmeAQCZWEIBQJmeAJfNQQCZnkIBQJmeAJfNAQCZFQIBQJmeAJfMwQCZGIIBQJmeAJfMgQCZnoIBQJmeAJfMQQCZkEDAwkAZgIFAmZzAAAJAGYCBQJmcwUCZnoHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAUCZnoEAmRPCQECZE0BBQJmQQMJAAACBQJkTwUCZE8EAmZsAwUCZnQEAmZCCQD8BwQFAmJrAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCZkEFA25pbAMJAAACBQJmQgUCZkIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEYGY2FsbGVyBQJmQQUCYmUFA25pbAQCZkMDCQBmAgUCZFQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFQFAmRXBQNuaWwFA25pbAQCZkQDCQAAAgUEdGhpcwUCYU0JAJQKAgAAAAADBQJlYQkAlAoCCQEBLQEFAmRUAAAJAJQKAgAACQEBLQEFAmRUBAJkcAgFAmZEAl8xBAJkcQgFAmZEAl8yBAJmRQkBAmRvAwUCZHAFAmRxAAAEAmZvCAUCZkUCXzEEAmRmCAUCZkUCXzIEAmR6CQEFdmFsdWUBCQCiCAEFAmFoBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZmwFAmZDBQJmbwUCZkEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBEXB1dE9uZVRrblJFQURPTkxZAgJkVwJkVgQCZkYJAQJkVQQFAmRWCQECYVYBBQJkVwUEdW5pdAUEdW5pdAQCZnoIBQJmRgJfMQQCZGIIBQJmRgJfMgQCZFQIBQJmRgJfMwQCZnkIBQJmRgJfNAQCZWEIBQJmRgJfNQkAlAoCBQNuaWwJAJUKAwUCZnoFAmRUBQJmeQJkRgEJZ2V0T25lVGtuAgJmRwJmcwQCZnUKAAJhTwkA/AcEBQJhTAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgdCb29sZWFuBQJhTwkAAgEJAKwCAgkAAwEFAmFPAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmSAMDCQECYVEABgkAAAIFAmJkBQFuBgUCZnUEAmVCCQDMCAIDAwkBASEBBQJmSAYJAQJlVwEFAmRGBgkBAmFJAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVCBQJlQgQCZUEJAQJhVgEFAmZHBAJmdwkAkQMCCAUCZEYIcGF5bWVudHMAAAQCZFcIBQJmdwdhc3NldElkBAJlaQgFAmZ3BmFtb3VudAQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAFaCAUCZEYGY2FsbGVyBAJhYQgFAmRGDXRyYW5zYWN0aW9uSWQEAmZJCQECZXoFBQJlQQUCZWkFAmRXBQFaBQJhYQMJAAACBQJmSQUCZkkEAmVDCAUCZkkCXzUEAmZ5CAUCZkkCXzQEAmRUCAUCZkkCXzMEAmRiCAUCZkkCXzIEAmZKCAUCZkkCXzEEAmROAwMJAGYCBQJmcwAACQBmAgUCZnMFAmZKBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcwUDbmlsAgAFAmZKBAJmSwkA/AcEBQJhTAIEYnVybgkAzAgCBQJlaQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkVwUCZWkFA25pbAMJAAACBQJmSwUCZksEAmZMCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmROBQJlQQUDbmlsBAJmQwMJAGYCBQJkVAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkVAUCZUEFA25pbAUDbmlsBAJmTQQCZk4DCQAAAgUEdGhpcwUCYU0AAAUCZFQDBQJlQwkAlAoCCQEBLQEJAGQCBQJkTgUCZk4AAAkAlAoCAAAJAQEtAQkAZAIFAmROBQJmTgQCZHAIBQJmTQJfMQQCZHEIBQJmTQJfMgQCZk8JAQJkbwMFAmRwBQJkcQAABAJmbwgFAmZPAl8xBAJkZggFAmZPAl8yBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZkwFAmZDBQJmbwUCZE4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBEWdldE9uZVRrblJFQURPTkxZAgJlQQJlaQQCZlAJAQJlegUJAQJhVgEFAmVBBQJlaQUCYmUFBHVuaXQFBHVuaXQEAmZKCAUCZlACXzEEAmRiCAUCZlACXzIEAmRUCAUCZlACXzMEAmZ5CAUCZlACXzQEAmVDCAUCZlACXzUJAJQKAgUDbmlsCQCVCgMFAmZKBQJkVAUCZnkCZEYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZRAmZHAmZzBAJmdQoAAmFPCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CB0Jvb2xlYW4FAmFPCQACAQkArAICCQADAQUCYU8CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZIAwMJAQJhUQAGCQAAAgUCYmQFAW4GBQJmdQQCZUIJAMwIAgMDCQEBIQEFAmZIBgkBAmVXAQUCZEYGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkRghwYXltZW50cwAABgkBAmFJAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUIFAmVCBAJlQQkBAmFWAQUCZkcEAVoIBQJkRgZjYWxsZXIEAmFhCAUCZEYNdHJhbnNhY3Rpb25JZAQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAJmUgkA/AcEBQJiawIHdW5zdGFrZQkAzAgCCQDYBAEFAmJlCQDMCAIFAmZRBQNuaWwFA25pbAMJAAACBQJmUgUCZlIEAmZTCQECZXoFBQJlQQUCZlEFAmJlBQFaBQJhYQMJAAACBQJmUwUCZlMEAmVDCAUCZlMCXzUEAmZ5CAUCZlMCXzQEAmRUCAUCZlMCXzMEAmRiCAUCZlMCXzIEAmZKCAUCZlMCXzEEAmROAwMJAGYCBQJmcwAACQBmAgUCZnMFAmZKBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcwUDbmlsAgAFAmZKBAJmSwkA/AcEBQJhTAIEYnVybgkAzAgCBQJmUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCZlEFA25pbAMJAAACBQJmSwUCZksEAmZMCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkRgZjYWxsZXIFAmROBQJlQQUDbmlsBAJmQwMJAGYCBQJkVAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkVAUCZUEFA25pbAUDbmlsBAJmVAQCZk4DCQAAAgUEdGhpcwUCYU0AAAUCZFQDBQJlQwkAlAoCCQEBLQEJAGQCBQJkTgUCZk4AAAkAlAoCAAAJAQEtAQkAZAIFAmROBQJmTgQCZHAIBQJmVAJfMQQCZHEIBQJmVAJfMgQCZlUJAQJkbwMFAmRwBQJkcQAABAJmbwgFAmZVAl8xBAJkZggFAmZVAl8yBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZkwFAmZDBQJmbwUCZE4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBA2dldAAEAmNNCQECZEUBBQJkRgQCZlYIBQJjTQJfMQQCY3QIBQJjTQJfMgQCZEgIBQJjTQJfMwQCY2IIBQJjTQJfNAQCY3UIBQJjTQJfNQQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAJmVwkA/AcEBQJhTAIEYnVybgkAzAgCBQJkSAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYgUCZEgFA25pbAMJAAACBQJmVwUCZlcEAmZYCQECZG8DCQEBLQEFAmZWCQEBLQEFAmN0AAAEAmZvCAUCZlgCXzEEAmRmCAUCZlgCXzIEAmZwCQECZHMCBQJkbgUCZGYDCQAAAgUCZnAFAmZwCQDOCAIFAmN1BQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgEJZ2V0Tm9MZXNzAgJmWQJmWgQCY00JAQJkRQEFAmRGBAJjcwgFAmNNAl8xBAJjdAgFAmNNAl8yBAJkSAgFAmNNAl8zBAJjYggFAmNNAl80BAJjdQgFAmNNAl81AwkAZgIFAmZZBQJjcwkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3MCAyA8IAkApAMBBQJmWQMJAGYCBQJmWgUCY3QJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjdAIDIDwgCQCkAwEFAmZaBAJkbgkBAmRnAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkbgUCZG4EAmZXCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRIBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNiBQJkSAUDbmlsAwkAAAIFAmZXBQJmVwQCZ2EJAQJkbwMJAQEtAQUCY3MJAQEtAQUCY3QAAAQCZm8IBQJnYQJfMQQCZGYIBQJnYQJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQ11bnN0YWtlQW5kR2V0AQJkTgQCZ2IDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJnYgUCZ2IEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJkbgkBAmRnAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkbgUCZG4EAmZSCQD8BwQFAmJrAgd1bnN0YWtlCQDMCAIJANgEAQUCY2QJAMwIAgUCZE4FA25pbAUDbmlsAwkAAAIFAmZSBQJmUgQCY00JAQJiWgQJANgEAQgFAmRGDXRyYW5zYWN0aW9uSWQJANgEAQUCY2QFAmROCAUCZEYGY2FsbGVyBAJjcwgFAmNNAl8xBAJjdAgFAmNNAl8yBAJjZwkBDXBhcnNlSW50VmFsdWUBCAUCY00CXzkEAmN1CAUCY00DXzEwBAJnYwMDCQECYVEABgkAAAIFAmNnBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZwYDCQAAAgUCZ2MFAmdjBAJmVwkA/AcEBQJhTAIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZAUCZE4FA25pbAMJAAACBQJmVwUCZlcEAmdkCQECZG8DCQEBLQEFAmNzCQEBLQEFAmN0AAAEAmZvCAUCZ2QCXzEEAmRmCAUCZ2QCXzIEAmZwCQECZHMCBQJkbgUCZGYDCQAAAgUCZnAFAmZwCQDOCAIFAmN1BQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgETdW5zdGFrZUFuZEdldE5vTGVzcwMCZlECZ2UCZloEAmZIAwkBAmFRAAYJAAACBQJiZAUBbgQCZUIJAMwIAgMJAQEhAQUCZkgGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlQgUCZUIEAmRuCQECZGcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRuBQJkbgQCZlIJAPwHBAUCYmsCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZQkAzAgCBQJmUQUDbmlsBQNuaWwDCQAAAgUCZlIFAmZSBAJjTQkBAmJaBAkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZQUCZlEIBQJkRgZjYWxsZXIEAmNzCAUCY00CXzEEAmN0CAUCY00CXzIEAmN1CAUCY00DXzEwBAJnZgkAzAgCAwkAZwIFAmNzBQJnZQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnZQUDbmlsAgAJAMwIAgMJAGcCBQJjdAUCZloGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmWgUDbmlsAgAFA25pbAMJAAACBQJnZgUCZ2YEAmZXCQD8BwQFAmFMAgRidXJuCQDMCAIFAmZRBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJlBQJmUQUDbmlsAwkAAAIFAmZXBQJmVwQCZ2cJAQJkbwMJAQEtAQUCY3MJAQEtAQUCY3QAAAQCZm8IBQJnZwJfMQQCZGYIBQJnZwJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQhhY3RpdmF0ZQICZ2gCZ2kDCQECIT0CCQClCAEIBQJkRgZjYWxsZXIJAKUIAQUCYUwJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnaAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnaQUDbmlsAgdzdWNjZXNzAmRGAQpyZWZyZXNoS0xwAAQCZ2oJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWkAAAQCZ2sDCQBnAgkAZQIFBmhlaWdodAUCZ2oFAmFsBQR1bml0CQECYUkBCQC5CQIJAMwIAgkApAMBBQJhbAkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2sFAmdrBAJkegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWgCATAJAQJhSwECC2ludmFsaWQga0xwBAJnbAkBAmRvAwAAAAAAAAQCZ20IBQJnbAJfMQQCZGYIBQJnbAJfMgQCZHIDCQECIT0CBQJkegUCZGYFAmdtCQECYUkBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZHIJAKYDAQUCZGYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFTAAJkRgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkMJAJQKAgUDbmlsCQECYkIBBQJiQwJkRgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYksCYkwCYlAEAmJZCQECYk8DBQJiSwUCYkwFAmJQCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYlkAAAkAzAgCCQCmAwEJAJEDAgUCYlkAAQkAzAgCCQCmAwEJAJEDAgUCYlkAAgUDbmlsAmRGARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZEYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgBSQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQFJAmRGAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJFAmJGCQCUCgIFA25pbAkApgMBCQECYkQCCQCnAwEFAmJFCQCnAwEFAmJGAmRGASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY2ECY3cCY3gCY3kCY3oCY0EBWgJjQgJjQwkAlAoCBQNuaWwJAQJjdgkFAmNhBQJjdwUCY3gFAmN5BQJjegUCY0EFAVoFAmNCBQJjQwJkRgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNhAmNiAmNjAVoEAmNNCQECYloEBQJjYQUCY2IFAmNjCQERQGV4dHJOYXRpdmUoMTA2MikBBQFaCQCUCgIFA25pbAkAnAoKCAUCY00CXzEIBQJjTQJfMggFAmNNAl8zCAUCY00CXzQIBQJjTQJfNQgFAmNNAl82CAUCY00CXzcJAKYDAQgFAmNNAl84CAUCY00CXzkIBQJjTQNfMTACZEYBDXN0YXRzUkVBRE9OTFkABAJiUQkBAmFTAAQCY2QJANkEAQkAkQMCBQJiUQUBcQQCZ24JAJEDAgUCYlEFAXIEAmdvCQCRAwIFAmJRBQFzBAJjRgkAkQMCBQJiUQUBdgQCY0cJAJEDAgUCYlEFAXcEAmJSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3EJAQJiQgEFAmduBAJncgkBAmJCAQUCZ28EAmdzAwkAAAIFAmdwAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJPAwUCZ3EFAmdyBQJncAQCY24AAAQCZ3QJAQFHAgkAkQMCBQJncwABBQFiBAJndQkBAUcCCQCRAwIFAmdzAAIFAWIEAmd2CQEFdmFsdWUBCQCaCAIFAmFMCQECYXcBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJncQkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3AJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmd0CQDMCAIJAKQDAQUCZ3UJAMwIAgkApAMBBQJndgUDbmlsBQFqAmRGASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY3gEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY2UJANkEAQUCY0QEAmNFCQCRAwIFAmJRBQFzBAJjZgkA2QQBBQJjRQQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3EJAQJiQgEFAmNEBAJncgkBAmJCAQUCY0UEAmJNCQEBRAIFAmdxBQJiUgQCYk4JAQFEAgUCZ3IFAmJTBAJjbQMJAAACBQJncAAABQFlCQECYkQCBQJiTgUCYk0EAmNKCQEBRAIFAmN4BQJiUgQCY0sJALwCAwUCY0oFAmNtBQFkBAJjegkBAUcCBQJjSwUCYlMEAmRMCQECY3YJAgAAoMIeBQJjeAUCY2UFAmN6BQJjZgIABgcEAmNVCAUCZEwCXzEEAmd3CAUCZEwCXzMEAmNpCAUCZEwCXzQEAmNrCAUCZEwCXzUEAmNoCAUCZEwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQkBAUcCBQJjbQUBYgkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCBQJjZwkAzAgCCQCkAwEFAmN4CQDMCAIJAKQDAQUCY3oFA25pbAUBagJkRgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY3oEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY2UJANkEAQUCY0QEAmNFCQCRAwIFAmJRBQFzBAJjZgkA2QQBBQJjRQQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3gJAQJiQgEFAmNEBAJneQkBAmJCAQUCY0UEAmd6CQEBRAIFAmd4BQJiUgQCZ0EJAQFEAgUCZ3kFAmJTBAJjbQMJAAACBQJncAAABQFlCQECYkQCBQJnQQUCZ3oEAmNLCQEBRAIFAmN6BQJiUwQCY0oJALwCAwUCY0sFAWQFAmNtBAJjeAkBAUcCBQJjSgUCYlIEAmRMCQECY3YJAgAAoMIeBQJjeAUCY2UFAmN6BQJjZgIABgcEAmNVCAUCZEwCXzEEAmd3CAUCZEwCXzMEAmNpCAUCZEwCXzQEAmNrCAUCZEwCXzUEAmNoCAUCZEwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQkBAUcCBQJjbQUBYgkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCBQJjZwkAzAgCCQCkAwEFAmN4CQDMCAIJAKQDAQUCY3oFA25pbAUBagJkRgETZXZhbHVhdGVHZXRSRUFET05MWQICZ0ICZ0MEAmNNCQECYloEAgAFAmdCBQJnQwUEdGhpcwQCY3MIBQJjTQJfMQQCY3QIBQJjTQJfMgQCY2kIBQJjTQJfNQQCY2sIBQJjTQJfNgQCY2gIBQJjTQJfNwQCY24IBQJjTQJfOAQCY2cJAQ1wYXJzZUludFZhbHVlAQgFAmNNAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY3MJAMwIAgkApAMBBQJjdAkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCCQCmAwEFAmNuCQDMCAIJAKQDAQUCY2cFA25pbAUBagECZ0QBAmdFAAQCZ0YEAmRRCQECZVQAAwkAAQIFAmRRAgpCeXRlVmVjdG9yBAJlWAUCZFEFAmVYAwkAAQIFAmRRAgRVbml0CAUCZ0QPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmRRBQJnRAMJAAECBQJkUQIFT3JkZXIEAmR2BQJkUQQCZ0cJAQJhUgAEAmFCCQECZHUBBQJkdgQCYUMJAPQDAwgFAmR2CWJvZHlCeXRlcwkAkQMCCAUCZHYGcHJvb2ZzAAAIBQJkdg9zZW5kZXJQdWJsaWNLZXkEAmFECQD0AwMIBQJkdglib2R5Qnl0ZXMJAJEDAggFAmR2BnByb29mcwABBQJnRwMDAwUCYUIFAmFDBwUCYUQHBgkBAmFBAwUCYUIFAmFDBQJhRAMJAAECBQJkUQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVVBQJkUQQCZ0gJAPYDAQkBBXZhbHVlAQgFAmVVBnNjcmlwdAQCZ0kJANsEAQkBBXZhbHVlAQkAnQgCBQJhTAkBAmF5AAQCZ0oJAPEHAQUEdGhpcwMDCQAAAgUCZ0kFAmdICQECIT0CBQJnSgUCZ0gHBgkA9AMDCAUCZ0QJYm9keUJ5dGVzCQCRAwIIBQJnRAZwcm9vZnMAAAUCZ0YJAPQDAwgFAmdECWJvZHlCeXRlcwkAkQMCCAUCZ0QGcHJvb2ZzAAAFAmdGigMyEw==", "chainId": 84, "height": 2411639, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 58XC9tnhE4fqpkNC4guvxVksjPNzhS8MxNsGStbALr9j Next: 3e4DQENkGGqk4nhaYGwbFJ8TwWiyxBGi5ntJojAQj12z Diff:
OldNewDifferences
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-func ac () = "%s__factoryConfig"
111+let ae = "%s__fee"
112+
113+let af = fraction(10, b, 10000)
114+
115+let ag = valueOrElse(getInteger(this, ae), af)
116+
117+let ah = makeString(["%s", "kLp"], j)
118+
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120+
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
122+
123+let ak = 30
124+
125+let al = valueOrElse(getInteger(this, aj), ak)
126+
127+func am () = "%s__factoryConfig"
109128
110129
111-func ad () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
112131
113132
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
115134
116135
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
118137
119138
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
121140
122141
123-func al () = "%s__shutdown"
142+func av () = "%s__shutdown"
124143
125144
126-func am (an) = ("%s%s__poolWeight__" + an)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
127146
128147
129-func ao () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
130149
131150
132-let ap = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
133152
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
135154
136155
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
138157
139158
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
141160
142161
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
144163
145164
146-let aA = addressFromStringValue(au(this, P()))
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
147166
148-let aB = addressFromStringValue(au(aA, ap))
149167
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
168+let aL = addressFromStringValue(aE(this, R()))
169+
170+let aM = addressFromStringValue(aE(aL, az))
171+
172+let aN = {
173+ let aO = invoke(aL, "getInFeeREADONLY", [toString(this)], nil)
174+ if ($isInstanceOf(aO, "Int"))
175+ then aO
176+ else throw(($getType(aO) + " couldn't be cast to Int"))
155177 }
156178
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
179+let aP = {
180+ let aO = invoke(aL, "getOutFeeREADONLY", [toString(this)], nil)
181+ if ($isInstanceOf(aO, "Int"))
182+ then aO
183+ else throw(($getType(aO) + " couldn't be cast to Int"))
162184 }
163185
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
186+func aQ () = valueOrElse(getBoolean(aL, av()), false)
165187
166188
167-func aG () = fromBase58String(au(aA, ad()))
189+func aR () = fromBase58String(aE(aL, an()))
168190
169191
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
192+func aS () = {
193+ let aT = aE(this, ac())
194+ let aU = aE(this, ad())
195+ let as = aH(aL, at(aU))
196+ let ar = aH(aL, at(aT))
197+ split(aE(aL, aq(toString(ar), toString(as))), j)
176198 }
177199
178200
179-func aK (aL) = if ((aL == i))
201+func aV (aW) = if ((aW == i))
180202 then unit
181- else fromBase58String(aL)
203+ else fromBase58String(aW)
182204
183205
184-func aM (aL) = if ((aL == unit))
206+func aX (aW) = if ((aW == unit))
185207 then i
186- else toBase58String(value(aL))
208+ else toBase58String(value(aW))
187209
188210
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
211+func aY (aZ) = $Tuple7(addressFromStringValue(aZ[o]), parseIntValue(aZ[p]), fromBase58String(aZ[q]), aV(aZ[r]), aV(aZ[s]), parseIntValue(aZ[t]), parseIntValue(aZ[u]))
190212
191213
192-let aP = aN(aH())
214+let ba = aY(aS())
193215
194-let aQ = aP
216+let bb = ba
195217
196-let aR = aQ._1
218+let bc = bb._1
197219
198-let aS = aQ._2
220+let bd = bb._2
199221
200-let aT = aQ._3
222+let be = bb._3
201223
202-let aU = aQ._4
224+let bf = bb._4
203225
204-let aV = aQ._5
226+let bg = bb._5
205227
206-let aW = aQ._6
228+let bh = bb._6
207229
208-let aX = aQ._7
230+let bi = bb._7
209231
210-func aY () = split(au(aA, ac()), j)
232+func bj () = split(aE(aL, am()), j)
211233
212234
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
235+let bk = valueOrErrorMessage(addressFromString(bj()[B]), "incorrect staking address")
214236
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
237+let bl = valueOrErrorMessage(addressFromString(bj()[C]), "incorrect staking address")
216238
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
239+func bm (bn,bo,bp,bq,br,bs,bt,bu,bv,bw) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw)], j)
218240
219241
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
242+func bx (by,bz,bA,bq,bt,bu) = makeString(["%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bq), toString(bt), toString(bu)], j)
221243
222244
223-func bq (br) = if ((br == "WAVES"))
245+func bB (bC) = if ((bC == "WAVES"))
224246 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
247+ else assetBalance(this, fromBase58String(bC))
226248
227249
228-func bs (bt,bu) = fraction(bt, d, bu)
250+func bD (bE,bF) = fraction(bE, d, bF)
229251
230252
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
253+func bG (bE,bF,K) = fraction(bE, d, bF, K)
254+
255+
256+func bH (bI,bJ,bK,bL) = {
257+ let bM = D(bK, bI)
258+ let bN = D(bL, bJ)
259+ bD(bN, bM)
235260 }
236261
237262
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
263+func bO (bK,bL,bP) = {
264+ let bQ = aS()
265+ let bR = parseIntValue(bQ[t])
266+ let bS = parseIntValue(bQ[u])
267+ let bT = bH(bR, bS, bK, bL)
268+ let bF = D(bK, bR)
269+ let bE = D(bL, bS)
270+ let bU = D(bP, b)
271+ let bV = bD(bF, bU)
272+ let bW = bD(bE, bU)
273+[bT, bV, bW]
249274 }
250275
251276
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
277+func bX (bK,bL,bP) = {
278+ let bY = bO(bK, bL, bP)
279+[G(bY[0], b), G(bY[1], b), G(bY[2], b)]
255280 }
256281
257282
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
283+func bZ (ca,cb,cc,Z) = {
284+ let bQ = aS()
285+ let cd = bQ[q]
286+ let ce = bQ[r]
287+ let cf = bQ[s]
288+ let bI = parseIntValue(bQ[t])
289+ let bJ = parseIntValue(bQ[u])
290+ let cg = bQ[p]
291+ let ch = valueOrErrorMessage(assetInfo(fromBase58String(cd)), (("Asset " + cd) + " doesn't exist")).quantity
292+ if ((cd != cb))
268293 then throw("Invalid asset passed.")
269294 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
295+ let ci = bB(ce)
296+ let cj = D(ci, bI)
297+ let ck = bB(cf)
298+ let cl = D(ck, bJ)
299+ let cm = bD(cl, cj)
300+ let cn = G(cm, b)
301+ let co = D(cc, b)
302+ let cp = D(ch, b)
303+ let cq = fraction(cj, co, cp)
304+ let cr = fraction(cl, co, cp)
305+ let cs = J(cq, bI, FLOOR)
306+ let ct = J(cr, bJ, FLOOR)
307+ let cu = if ((ca == ""))
283308 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
309+ else [ScriptTransfer(Z, cs, if ((ce == "WAVES"))
285310 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
311+ else fromBase58String(ce)), ScriptTransfer(Z, ct, if ((cf == "WAVES"))
287312 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
313+ else fromBase58String(cf)), StringEntry(ab(toString(Z), ca), bx(cs, ct, cc, cn, height, lastBlock.timestamp)), IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn)]
314+ $Tuple10(cs, ct, ce, cf, ci, ck, ch, cm, cg, cu)
290315 }
291316 }
292317
293318
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
319+func cv (ca,cw,cx,cy,cz,cA,Z,cB,cC) = {
320+ let bQ = aS()
321+ let cd = fromBase58String(bQ[q])
322+ let cD = bQ[r]
323+ let cE = bQ[s]
324+ let cF = bQ[v]
325+ let cG = bQ[w]
326+ let bR = parseIntValue(bQ[t])
327+ let bS = parseIntValue(bQ[u])
328+ let cg = bQ[p]
329+ let ch = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
330+ let cH = toBase58String(valueOrElse(cy, fromBase58String("WAVES")))
331+ let cI = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
332+ if (if ((cD != cH))
308333 then true
309- else (cs != cw))
334+ else (cE != cI))
310335 then throw("Invalid amt or price asset passed.")
311336 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
337+ let ci = if (cB)
338+ then bB(cD)
339+ else (bB(cD) - cx)
340+ let ck = if (cB)
341+ then bB(cE)
342+ else (bB(cE) - cz)
343+ let cJ = D(cx, bR)
344+ let cK = D(cz, bS)
345+ let cL = bD(cK, cJ)
346+ let cj = D(ci, bR)
347+ let cl = D(ck, bS)
348+ let cM = if ((ch == 0))
324349 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
350+ let cm = e
351+ let cN = e
352+ let bU = pow((cJ * cK), 0, toBigInt(5), 1, 0, DOWN)
353+ $Tuple5(G(bU, b), G(cJ, bR), G(cK, bS), bD((cl + cK), (cj + cJ)), cN)
329354 }
330355 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
356+ let cm = bD(cl, cj)
357+ let cN = fraction(Q((cm - cL)), d, cm)
358+ let cO = D(cw, b)
359+ if (if ((cm != e))
360+ then (cN > cO)
336361 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
362+ then throw(((("Price slippage " + toString(cN)) + " exceeded the passed limit of ") + toString(cO)))
338363 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
364+ let cp = D(ch, b)
365+ let cP = fraction(cJ, bG(cl, cj, CEILING), d, CEILING)
366+ let cQ = fraction(cK, d, bG(cl, cj, FLOOR), CEILING)
367+ let cR = if ((cP > cK))
368+ then $Tuple2(cQ, cK)
369+ else $Tuple2(cJ, cP)
370+ let cS = cR._1
371+ let cT = cR._2
372+ let bU = fraction(cp, cT, cl, FLOOR)
373+ $Tuple5(J(bU, b, FLOOR), J(cS, bR, CEILING), J(cT, bS, CEILING), cm, cN)
349374 }
350375 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
376+ let cU = cM._1
377+ let cV = cM._2
378+ let cW = cM._3
379+ let cn = G(cM._4, b)
380+ let cX = G(cM._5, b)
381+ if ((0 >= cU))
357382 then throw("Invalid calculations. LP calculated is less than zero.")
358383 else {
359- let cM = if (!(cq))
384+ let cY = if (!(cC))
360385 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
386+ else cU
387+ let cZ = (cx - cV)
388+ let da = (cz - cW)
389+ let db = [IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn), StringEntry(Y(Z, ca), bm(cV, cW, cY, cn, cw, cX, height, lastBlock.timestamp, cZ, da))]
390+ $Tuple13(cU, cY, cn, ci, ck, ch, cd, cg, db, cZ, da, cy, cA)
366391 }
367392 }
368393 }
369394
370395
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
396+func dc (dd,de,ch) = {
397+ let df = fraction(pow((dd * de), 0, toBigInt(5), 1, 18, DOWN), g, ch)
398+ if ((ch == f))
399+ then f
400+ else df
413401 }
414402
415403
416-func de (df) = if ((size(df.payments) != 1))
404+func dg (dh,di,dj) = {
405+ let dk = (toBigInt(bB(aX(bf))) - dh)
406+ let dl = (toBigInt(bB(aX(bg))) - di)
407+ let dm = (toBigInt(value(assetInfo(be)).quantity) - dj)
408+ let dn = dc(dk, dl, dm)
409+ dn
410+ }
411+
412+
413+func do (dp,dq,dj) = {
414+ let dk = (bB(aX(bf)) + dp)
415+ let dl = (bB(aX(bg)) + dq)
416+ let dm = (value(assetInfo(be)).quantity + dj)
417+ let df = dc(toBigInt(dk), toBigInt(dl), toBigInt(dm))
418+ let dr = [IntegerEntry(ai, height), StringEntry(ah, toString(df))]
419+ $Tuple2(dr, df)
420+ }
421+
422+
423+func ds (dt,df) = if ((df >= dt))
424+ then true
425+ else aI(makeString(["updated KLp lower than current KLp", toString(dt), toString(df)], " "))
426+
427+
428+func du (dv) = {
429+ let dw = dv.amount
430+ let dx = fraction(dv.amount, dv.price, b, FLOOR)
431+ let dy = if ((dv.orderType == Buy))
432+ then $Tuple2(dw, -(dx))
433+ else $Tuple2(-(dw), dx)
434+ let dp = dy._1
435+ let dq = dy._2
436+ if (if (if (aQ())
437+ then true
438+ else (bd == m))
439+ then true
440+ else (bd == n))
441+ then throw("Exchange operations disabled")
442+ else if (if ((dv.assetPair.amountAsset != bf))
443+ then true
444+ else (dv.assetPair.priceAsset != bg))
445+ then throw("Wrong order assets.")
446+ else {
447+ let dz = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
448+ let dA = do(dp, dq, 0)
449+ let dB = dA._1
450+ let dC = dA._2
451+ let dD = (dC >= dz)
452+ dD
453+ }
454+ }
455+
456+
457+func dE (dF) = if ((size(dF.payments) != 1))
417458 then throw("exactly 1 payment is expected")
418459 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
460+ let dG = value(dF.payments[0])
461+ let cb = value(dG.assetId)
462+ let dH = dG.amount
463+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(cb), dH, dF.caller)
464+ let cs = cM._1
465+ let ct = cM._2
466+ let cg = parseIntValue(cM._9)
467+ let cu = cM._10
468+ if (if (aQ())
428469 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
470+ else (cg == n))
471+ then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
472+ else $Tuple5(cs, ct, dH, cb, cu)
432473 }
433474
434475
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
476+func dI (dF,cw,cC) = if ((size(dF.payments) != 2))
436477 then throw("exactly 2 payments are expected")
437478 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
479+ let dJ = value(dF.payments[0])
480+ let dK = value(dF.payments[1])
481+ let dL = cv(toBase58String(dF.transactionId), cw, dJ.amount, dJ.assetId, dK.amount, dK.assetId, toString(dF.caller), false, cC)
482+ let cg = parseIntValue(dL._8)
483+ if (if (if (aQ())
443484 then true
444- else (bU == l))
485+ else (cg == l))
445486 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
487+ else (cg == n))
488+ then throw(("Put operation is blocked by admin. Status = " + toString(cg)))
489+ else dL
449490 }
450491
451492
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
493+func dM (dN) = {
494+ let dO = invoke(aL, "emit", [dN], nil)
495+ if ((dO == dO))
455496 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
497+ let dP = {
498+ let dQ = dO
499+ if ($isInstanceOf(dQ, "Address"))
459500 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
501+ let dR = dQ
502+ invoke(dR, "emit", [dN], nil)
462503 }
463504 else unit
464505 }
465- if ((dp == dp))
466- then dn
506+ if ((dP == dP))
507+ then dN
467508 else throw("Strict value is not equal to itself.")
468509 }
469510 else throw("Strict value is not equal to itself.")
470511 }
471512
472513
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
514+func dS (dN,ag) = {
515+ let dT = if ((ag == 0))
475516 then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
517+ else fraction(dN, ag, b)
518+ $Tuple2((dN - dT), dT)
478519 }
479520
480521
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
522+func dU (dV,dW,Z,aa) = {
523+ let dX = (aa == unit)
524+ let dY = bB(aX(bf))
525+ let dZ = bB(aX(bg))
526+ let ea = if ((dW == bf))
486527 then true
487- else if ((dx == aV))
528+ else if ((dW == bg))
488529 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
530+ else aI("invalid asset")
531+ let eb = if (dX)
532+ then $Tuple2(dY, dZ)
533+ else if (ea)
534+ then $Tuple2((dY - dV), dZ)
535+ else $Tuple2(dY, (dZ - dV))
536+ let ec = eb._1
537+ let ed = eb._2
538+ let ee = if (ea)
539+ then $Tuple2(dV, 0)
540+ else $Tuple2(0, dV)
541+ let ef = ee._1
542+ let eg = ee._2
543+ let dw = dS(ef, aN)._1
544+ let dx = dS(eg, aN)._1
545+ let eh = dS(dV, aN)
546+ let ei = eh._1
547+ let dT = eh._2
548+ let ej = (ec + dw)
549+ let ek = (ed + dx)
550+ let el = bD(D(ek, bi), D(ej, bh))
551+ let em = G(el, b)
552+ let en = if (ea)
553+ then ec
554+ else ed
555+ let eo = toBigInt(en)
556+ let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
557+ let eq = if ((ep > f))
517558 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
559+ else aI("initial deposit requires all coins")
560+ if ((eq == eq))
520561 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
562+ let er = toBigInt(ei)
563+ let es = max([0, toInt(((ep * (sqrtBigInt((d + ((er * d) / eo)), 18, 18, DOWN) - d)) / d))])
564+ let db = if (dX)
524565 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
566+ else [IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bm(ef, eg, es, em, 0, 0, height, lastBlock.timestamp, 0, 0))]
567+ let et = bD(D(ed, bi), D(ec, bh))
568+ let eu = G(et, b)
569+ let ev = {
570+ let ew = if (ea)
571+ then $Tuple2(ef, ec)
572+ else $Tuple2(eg, ed)
573+ let dN = ew._1
574+ let ex = ew._2
575+ let ey = toInt(fraction(ep, toBigInt((dN / 2)), toBigInt(ex)))
576+ fraction((es - ey), b, ey)
536577 }
537- $Tuple4(dV, cP, du, dY)
578+ $Tuple5(es, db, dT, ev, ea)
538579 }
539580 else throw("Strict value is not equal to itself.")
540581 }
541582
542583
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
584+func ez (eA,ei,dW,Z,aa) = {
585+ let dX = (aa == unit)
586+ let bQ = aS()
587+ let bR = parseIntValue(bQ[t])
588+ let bS = parseIntValue(bQ[u])
589+ let eB = [if ((dW == be))
546590 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
591+ else aI("invalid lp asset")]
592+ if ((eB == eB))
549593 then {
550- let ef = if ((ed == aU))
594+ let eC = if ((eA == bf))
551595 then true
552- else if ((ed == aV))
596+ else if ((eA == bg))
553597 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
598+ else aI("invalid asset")
599+ let eD = if (eC)
600+ then toBigInt(bB(aX(bf)))
601+ else toBigInt(bB(aX(bg)))
602+ let eE = if (eC)
603+ then bR
604+ else bS
605+ let eF = bB(aX(bf))
606+ let eG = bB(aX(bg))
607+ let eH = if (eC)
608+ then eF
609+ else eG
610+ let eI = toBigInt(eH)
611+ let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
612+ let eJ = toBigInt(ei)
613+ let eK = max([0, toInt(((eD * (d - pow((d - ((eJ * d) / ep)), 18, h, 0, 18, DOWN))) / d))])
614+ let eL = dS(eK, aP)
615+ let eM = eL._1
616+ let dT = eL._2
617+ let eN = if (eC)
618+ then $Tuple4(eM, 0, (eF - eK), eG)
619+ else $Tuple4(0, eM, eF, (eG - eK))
620+ let eO = eN._1
621+ let eP = eN._2
622+ let eQ = eN._3
623+ let eR = eN._4
624+ let el = bD(D(eR, bi), D(eQ, bh))
625+ let em = G(el, b)
626+ let db = if (dX)
580627 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
628+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bx(eO, eP, ei, em, height, lastBlock.timestamp)), IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em)]
629+ let et = bD(D(eG, bi), D(eF, bh))
630+ let eu = G(et, b)
631+ let ev = {
632+ let eS = (toInt(fraction(eD, eJ, ep)) * 2)
633+ fraction((eM - eS), b, eS)
587634 }
588- $Tuple4(eo, cP, du, dY)
635+ $Tuple5(eM, db, dT, ev, eC)
589636 }
590637 else throw("Strict value is not equal to itself.")
591638 }
592639
593640
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
641+func eT () = {
642+ let dQ = getString(S())
643+ if ($isInstanceOf(dQ, "String"))
597644 then {
598- let ew = dq
599- fromBase58String(ew)
645+ let eU = dQ
646+ fromBase58String(eU)
600647 }
601- else if ($isInstanceOf(dq, "Unit"))
648+ else if ($isInstanceOf(dQ, "Unit"))
602649 then unit
603650 else throw("Match error")
604651 }
605652
606653
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
654+func eV () = {
655+ let dQ = getString(T())
656+ if ($isInstanceOf(dQ, "String"))
610657 then {
611- let ew = dq
612- fromBase58String(ew)
658+ let eU = dQ
659+ fromBase58String(eU)
613660 }
614- else if ($isInstanceOf(dq, "Unit"))
661+ else if ($isInstanceOf(dQ, "Unit"))
615662 then unit
616663 else throw("Match error")
617664 }
618665
619666
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
667+func eW (dF) = {
668+ let dQ = eT()
669+ if ($isInstanceOf(dQ, "ByteVector"))
623670 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
671+ let eX = dQ
672+ (dF.callerPublicKey == eX)
626673 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
674+ else if ($isInstanceOf(dQ, "Unit"))
675+ then (dF.caller == this)
629676 else throw("Match error")
630677 }
631678
632679
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
680+func eY (dF) = {
681+ let eZ = throw("Permission denied")
682+ let dQ = eT()
683+ if ($isInstanceOf(dQ, "ByteVector"))
637684 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
685+ let eX = dQ
686+ if ((dF.callerPublicKey == eX))
640687 then true
641- else eB
688+ else eZ
642689 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
690+ else if ($isInstanceOf(dQ, "Unit"))
691+ then if ((dF.caller == this))
645692 then true
646- else eB
693+ else eZ
647694 else throw("Match error")
648695 }
649696
650697
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
698+@Callable(dF)
699+func setManager (fa) = {
700+ let fb = eY(dF)
701+ if ((fb == fb))
655702 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
703+ let fc = fromBase58String(fa)
704+ if ((fc == fc))
705+ then [StringEntry(T(), fa)]
659706 else throw("Strict value is not equal to itself.")
660707 }
661708 else throw("Strict value is not equal to itself.")
663710
664711
665712
666-@Callable(df)
713+@Callable(dF)
667714 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
715+ let fd = eV()
716+ let fe = if (isDefined(fd))
670717 then true
671718 else throw("No pending manager")
672- if ((eG == eG))
719+ if ((fe == fe))
673720 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
721+ let ff = if ((dF.callerPublicKey == value(fd)))
675722 then true
676723 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
724+ if ((ff == ff))
725+ then [StringEntry(S(), toBase58String(value(fd))), DeleteEntry(T())]
679726 else throw("Strict value is not equal to itself.")
680727 }
681728 else throw("Strict value is not equal to itself.")
683730
684731
685732
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
733+@Callable(dF)
734+func put (cw,fg) = if ((0 > cw))
688735 then throw("Invalid slippageTolerance passed")
689736 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
737+ let dL = dI(dF, cw, true)
738+ let cY = dL._2
739+ let cd = dL._7
740+ let cu = dL._9
741+ let cZ = dL._10
742+ let da = dL._11
743+ let fh = dL._12
744+ let fi = dL._13
745+ let dJ = toBigInt(value(dF.payments[0]).amount)
746+ let dK = toBigInt(value(dF.payments[1]).amount)
747+ let dn = dg(dJ, dK, toBigInt(0))
748+ if ((dn == dn))
700749 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
750+ let dO = invoke(aL, "emit", [cY], nil)
751+ if ((dO == dO))
752+ then {
753+ let dP = {
754+ let dQ = dO
755+ if ($isInstanceOf(dQ, "Address"))
756+ then {
757+ let dR = dQ
758+ invoke(dR, "emit", [cY], nil)
759+ }
760+ else unit
707761 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
762+ if ((dP == dP))
716763 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
764+ let fj = if ((cZ > 0))
765+ then invoke(bl, "put", nil, [AttachedPayment(fh, cZ)])
719766 else nil
720- if ((eM == eM))
767+ if ((fj == fj))
721768 then {
722- let eN = if (eI)
769+ let fk = if ((da > 0))
770+ then invoke(bl, "put", nil, [AttachedPayment(fi, da)])
771+ else nil
772+ if ((fk == fk))
723773 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
774+ let fl = if (fg)
775+ then {
776+ let fm = invoke(bk, "stake", nil, [AttachedPayment(cd, cY)])
777+ if ((fm == fm))
778+ then nil
779+ else throw("Strict value is not equal to itself.")
780+ }
781+ else [ScriptTransfer(dF.caller, cY, cd)]
782+ let fn = do(0, 0, 0)
783+ if ((fn == fn))
784+ then {
785+ let df = fn._2
786+ let fo = fn._1
787+ let fp = ds(dn, df)
788+ if ((fp == fp))
789+ then ((cu ++ fl) ++ fo)
790+ else throw("Strict value is not equal to itself.")
791+ }
727792 else throw("Strict value is not equal to itself.")
728793 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
794+ else throw("Strict value is not equal to itself.")
731795 }
732796 else throw("Strict value is not equal to itself.")
733797 }
740804
741805
742806
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
807+@Callable(dF)
808+func putForFree (fq) = if ((0 > fq))
745809 then throw("Invalid value passed")
746810 else {
747- let dl = di(df, eP, false)
748- dl._9
811+ let dL = dI(dF, fq, false)
812+ let cu = dL._9
813+ let dJ = toBigInt(value(dF.payments[0]).amount)
814+ let dK = toBigInt(value(dF.payments[1]).amount)
815+ let dn = dg(dJ, dK, toBigInt(0))
816+ if ((dn == dn))
817+ then {
818+ let fr = do(0, 0, 0)
819+ let fo = fr._1
820+ let df = fr._2
821+ let fp = ds(dn, df)
822+ if ((fp == fp))
823+ then (cu ++ fo)
824+ else throw("Strict value is not equal to itself.")
825+ }
826+ else throw("Strict value is not equal to itself.")
749827 }
750828
751829
752830
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
831+@Callable(dF)
832+func putOneTkn (fs,ft) = {
833+ let fu = {
834+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aO, "Boolean"))
836+ then aO
837+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
760838 }
761- let eT = if (if (if (aF())
839+ let fv = if (if (if (aQ())
762840 then true
763- else (aS == l))
841+ else (bd == l))
764842 then true
765- else (aS == n))
843+ else (bd == n))
766844 then true
767- else eS
768- let ee = [if (if (!(eT))
845+ else fu
846+ let eB = [if (if (!(fv))
769847 then true
770- else ey(df))
848+ else eW(dF))
771849 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
850+ else aI("put operation is blocked by admin"), if ((size(dF.payments) == 1))
773851 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
852+ else aI("exactly 1 payment are expected")]
853+ if ((eB == eB))
776854 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
855+ let fw = dF.payments[0]
856+ let dW = fw.assetId
857+ let dV = fw.amount
858+ let dn = if ((dW == bf))
859+ then dg(toBigInt(dV), toBigInt(0), toBigInt(0))
860+ else if ((dW == bg))
861+ then dg(toBigInt(0), toBigInt(dV), toBigInt(0))
862+ else aI("payment asset is not supported")
863+ if ((dn == dn))
784864 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
791- else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
865+ let Z = dF.caller
866+ let aa = dF.transactionId
867+ let fx = dU(dV, dW, Z, aa)
868+ if ((fx == fx))
796869 then {
797- let eN = if (eR)
870+ let ea = fx._5
871+ let fy = fx._4
872+ let dT = fx._3
873+ let db = fx._2
874+ let fz = fx._1
875+ let fA = if (if ((fs > 0))
876+ then (fs > fz)
877+ else false)
878+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
879+ else fz
880+ let dO = dM(fA)
881+ if ((dO == dO))
798882 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
801- then nil
883+ let fl = if (ft)
884+ then {
885+ let fB = invoke(bk, "stake", nil, [AttachedPayment(be, fA)])
886+ if ((fB == fB))
887+ then nil
888+ else throw("Strict value is not equal to itself.")
889+ }
890+ else [ScriptTransfer(dF.caller, fA, be)]
891+ let fC = if ((dT > 0))
892+ then [ScriptTransfer(aM, dT, dW)]
893+ else nil
894+ let fD = if ((this == aM))
895+ then $Tuple2(0, 0)
896+ else if (ea)
897+ then $Tuple2(-(dT), 0)
898+ else $Tuple2(0, -(dT))
899+ let dp = fD._1
900+ let dq = fD._2
901+ let fE = do(dp, dq, 0)
902+ let fo = fE._1
903+ let df = fE._2
904+ let dz = value(getString(ah))
905+ let fp = ds(dn, df)
906+ if ((fp == fp))
907+ then $Tuple2((((db ++ fl) ++ fC) ++ fo), fA)
802908 else throw("Strict value is not equal to itself.")
803- }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
807- else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
809- }
810- else throw("Strict value is not equal to itself.")
811- }
812- else throw("Strict value is not equal to itself.")
813- }
814- else throw("Strict value is not equal to itself.")
815- }
816-
817-
818-
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
827- }
828-
829-
830-
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
838- }
839- let fd = if (if (aF())
840- then true
841- else (aS == n))
842- then true
843- else eS
844- let ee = [if (if (!(fd))
845- then true
846- else ey(df))
847- then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849- then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
852- then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
861- then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
868- else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
873- then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
877- else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
879- }
880- else throw("Strict value is not equal to itself.")
881- }
882- else throw("Strict value is not equal to itself.")
883- }
884- else throw("Strict value is not equal to itself.")
885- }
886-
887-
888-
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
897- }
898-
899-
900-
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
908- }
909- let fd = if (if (aF())
910- then true
911- else (aS == n))
912- then true
913- else eS
914- let ee = [if (if (!(fd))
915- then true
916- else ey(df))
917- then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919- then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
922- then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
928- then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
931- then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
938- else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
943- then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
947- else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
949909 }
950910 else throw("Strict value is not equal to itself.")
951911 }
958918
959919
960920
961-@Callable(df)
962-func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
972- else throw("Strict value is not equal to itself.")
921+@Callable(dF)
922+func putOneTknREADONLY (dW,dV) = {
923+ let fF = dU(dV, aV(dW), unit, unit)
924+ let fz = fF._1
925+ let db = fF._2
926+ let dT = fF._3
927+ let fy = fF._4
928+ let ea = fF._5
929+ $Tuple2(nil, $Tuple3(fz, dT, fy))
973930 }
974931
975932
976933
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989- else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
993- else throw("Strict value is not equal to itself.")
994- }
995- }
996-
997-
998-
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1002- then throw("No payments are expected")
1003- else true
1004- if ((fq == fq))
934+@Callable(dF)
935+func getOneTkn (fG,fs) = {
936+ let fu = {
937+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
938+ if ($isInstanceOf(aO, "Boolean"))
939+ then aO
940+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
941+ }
942+ let fH = if (if (aQ())
943+ then true
944+ else (bd == n))
945+ then true
946+ else fu
947+ let eB = [if (if (!(fH))
948+ then true
949+ else eW(dF))
950+ then true
951+ else aI("get operation is blocked by admin"), if ((size(dF.payments) == 1))
952+ then true
953+ else aI("exactly 1 payment are expected")]
954+ if ((eB == eB))
1005955 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
956+ let eA = aV(fG)
957+ let fw = dF.payments[0]
958+ let dW = fw.assetId
959+ let ei = fw.amount
960+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
961+ if ((dn == dn))
1010962 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1015- then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018- else true
1019- if ((fr == fr))
963+ let Z = dF.caller
964+ let aa = dF.transactionId
965+ let fI = ez(eA, ei, dW, Z, aa)
966+ if ((fI == fI))
1020967 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
968+ let eC = fI._5
969+ let fy = fI._4
970+ let dT = fI._3
971+ let db = fI._2
972+ let fJ = fI._1
973+ let dN = if (if ((fs > 0))
974+ then (fs > fJ)
975+ else false)
976+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
977+ else fJ
978+ let fK = invoke(aL, "burn", [ei], [AttachedPayment(dW, ei)])
979+ if ((fK == fK))
980+ then {
981+ let fL = [ScriptTransfer(Z, dN, eA)]
982+ let fC = if ((dT > 0))
983+ then [ScriptTransfer(aM, dT, eA)]
984+ else nil
985+ let fM = {
986+ let fN = if ((this == aM))
987+ then 0
988+ else dT
989+ if (eC)
990+ then $Tuple2(-((dN + fN)), 0)
991+ else $Tuple2(0, -((dN + fN)))
992+ }
993+ let dp = fM._1
994+ let dq = fM._2
995+ let fO = do(dp, dq, 0)
996+ let fo = fO._1
997+ let df = fO._2
998+ let fp = ds(dn, df)
999+ if ((fp == fp))
1000+ then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1001+ else throw("Strict value is not equal to itself.")
1002+ }
10241003 else throw("Strict value is not equal to itself.")
10251004 }
10261005 else throw("Strict value is not equal to itself.")
10321011
10331012
10341013
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1014+@Callable(dF)
1015+func getOneTknREADONLY (eA,ei) = {
1016+ let fP = ez(aV(eA), ei, be, unit, unit)
1017+ let fJ = fP._1
1018+ let db = fP._2
1019+ let dT = fP._3
1020+ let fy = fP._4
1021+ let eC = fP._5
1022+ $Tuple2(nil, $Tuple3(fJ, dT, fy))
1023+ }
1024+
1025+
1026+
1027+@Callable(dF)
1028+func unstakeAndGetOneTkn (fQ,fG,fs) = {
1029+ let fu = {
1030+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1031+ if ($isInstanceOf(aO, "Boolean"))
1032+ then aO
1033+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
1034+ }
1035+ let fH = if (if (aQ())
10381036 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1037+ else (bd == n))
10411038 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1039+ else fu
1040+ let eB = [if (if (!(fH))
10431041 then true
1044- else throw("no payments are expected")]
1045- if ((ee == ee))
1042+ else eW(dF))
1043+ then true
1044+ else aI("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1045+ then true
1046+ else aI("no payments are expected")]
1047+ if ((eB == eB))
10461048 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1049+ let eA = aV(fG)
1050+ let Z = dF.caller
1051+ let aa = dF.transactionId
1052+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1053+ if ((dn == dn))
10491054 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1055- then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057- then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1055+ let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1056+ if ((fR == fR))
10601057 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1058+ let fS = ez(eA, fQ, be, Z, aa)
1059+ if ((fS == fS))
1060+ then {
1061+ let eC = fS._5
1062+ let fy = fS._4
1063+ let dT = fS._3
1064+ let db = fS._2
1065+ let fJ = fS._1
1066+ let dN = if (if ((fs > 0))
1067+ then (fs > fJ)
1068+ else false)
1069+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
1070+ else fJ
1071+ let fK = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1072+ if ((fK == fK))
1073+ then {
1074+ let fL = [ScriptTransfer(dF.caller, dN, eA)]
1075+ let fC = if ((dT > 0))
1076+ then [ScriptTransfer(aM, dT, eA)]
1077+ else nil
1078+ let fT = {
1079+ let fN = if ((this == aM))
1080+ then 0
1081+ else dT
1082+ if (eC)
1083+ then $Tuple2(-((dN + fN)), 0)
1084+ else $Tuple2(0, -((dN + fN)))
1085+ }
1086+ let dp = fT._1
1087+ let dq = fT._2
1088+ let fU = do(dp, dq, 0)
1089+ let fo = fU._1
1090+ let df = fU._2
1091+ let fp = ds(dn, df)
1092+ if ((fp == fp))
1093+ then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1094+ else throw("Strict value is not equal to itself.")
1095+ }
1096+ else throw("Strict value is not equal to itself.")
1097+ }
10641098 else throw("Strict value is not equal to itself.")
10651099 }
10661100 else throw("Strict value is not equal to itself.")
10721106
10731107
10741108
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077- then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079-
1080-
1081-
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1109+@Callable(dF)
1110+func get () = {
1111+ let cM = dE(dF)
1112+ let fV = cM._1
1113+ let ct = cM._2
1114+ let dH = cM._3
1115+ let cb = cM._4
1116+ let cu = cM._5
1117+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1118+ if ((dn == dn))
1119+ then {
1120+ let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1121+ if ((fW == fW))
1122+ then {
1123+ let fX = do(-(fV), -(ct), 0)
1124+ let fo = fX._1
1125+ let df = fX._2
1126+ let fp = ds(dn, df)
1127+ if ((fp == fp))
1128+ then (cu ++ fo)
1129+ else throw("Strict value is not equal to itself.")
1130+ }
1131+ else throw("Strict value is not equal to itself.")
1132+ }
1133+ else throw("Strict value is not equal to itself.")
10961134 }
10971135
10981136
10991137
1100-@Callable(df)
1138+@Callable(dF)
1139+func getNoLess (fY,fZ) = {
1140+ let cM = dE(dF)
1141+ let cs = cM._1
1142+ let ct = cM._2
1143+ let dH = cM._3
1144+ let cb = cM._4
1145+ let cu = cM._5
1146+ if ((fY > cs))
1147+ then throw(((("noLessThenAmtAsset failed: " + toString(cs)) + " < ") + toString(fY)))
1148+ else if ((fZ > ct))
1149+ then throw(((("noLessThenPriceAsset failed: " + toString(ct)) + " < ") + toString(fZ)))
1150+ else {
1151+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1152+ if ((dn == dn))
1153+ then {
1154+ let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1155+ if ((fW == fW))
1156+ then {
1157+ let ga = do(-(cs), -(ct), 0)
1158+ let fo = ga._1
1159+ let df = ga._2
1160+ let fp = ds(dn, df)
1161+ if ((fp == fp))
1162+ then (cu ++ fo)
1163+ else throw("Strict value is not equal to itself.")
1164+ }
1165+ else throw("Strict value is not equal to itself.")
1166+ }
1167+ else throw("Strict value is not equal to itself.")
1168+ }
1169+ }
1170+
1171+
1172+
1173+@Callable(dF)
1174+func unstakeAndGet (dN) = {
1175+ let gb = if ((size(dF.payments) != 0))
1176+ then throw("No payments are expected")
1177+ else true
1178+ if ((gb == gb))
1179+ then {
1180+ let bQ = aS()
1181+ let cd = fromBase58String(bQ[q])
1182+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1183+ if ((dn == dn))
1184+ then {
1185+ let fR = invoke(bk, "unstake", [toBase58String(cd), dN], nil)
1186+ if ((fR == fR))
1187+ then {
1188+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(cd), dN, dF.caller)
1189+ let cs = cM._1
1190+ let ct = cM._2
1191+ let cg = parseIntValue(cM._9)
1192+ let cu = cM._10
1193+ let gc = if (if (aQ())
1194+ then true
1195+ else (cg == n))
1196+ then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
1197+ else true
1198+ if ((gc == gc))
1199+ then {
1200+ let fW = invoke(aL, "burn", [dN], [AttachedPayment(cd, dN)])
1201+ if ((fW == fW))
1202+ then {
1203+ let gd = do(-(cs), -(ct), 0)
1204+ let fo = gd._1
1205+ let df = gd._2
1206+ let fp = ds(dn, df)
1207+ if ((fp == fp))
1208+ then (cu ++ fo)
1209+ else throw("Strict value is not equal to itself.")
1210+ }
1211+ else throw("Strict value is not equal to itself.")
1212+ }
1213+ else throw("Strict value is not equal to itself.")
1214+ }
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
1221+
1222+
1223+
1224+@Callable(dF)
1225+func unstakeAndGetNoLess (fQ,ge,fZ) = {
1226+ let fH = if (aQ())
1227+ then true
1228+ else (bd == n)
1229+ let eB = [if (!(fH))
1230+ then true
1231+ else throw("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1232+ then true
1233+ else throw("no payments are expected")]
1234+ if ((eB == eB))
1235+ then {
1236+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((dn == dn))
1238+ then {
1239+ let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1240+ if ((fR == fR))
1241+ then {
1242+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(be), fQ, dF.caller)
1243+ let cs = cM._1
1244+ let ct = cM._2
1245+ let cu = cM._10
1246+ let gf = [if ((cs >= ge))
1247+ then true
1248+ else throw(makeString(["amount asset amount to receive is less than ", toString(ge)], "")), if ((ct >= fZ))
1249+ then true
1250+ else throw(makeString(["price asset amount to receive is less than ", toString(fZ)], ""))]
1251+ if ((gf == gf))
1252+ then {
1253+ let fW = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1254+ if ((fW == fW))
1255+ then {
1256+ let gg = do(-(cs), -(ct), 0)
1257+ let fo = gg._1
1258+ let df = gg._2
1259+ let fp = ds(dn, df)
1260+ if ((fp == fp))
1261+ then (cu ++ fo)
1262+ else throw("Strict value is not equal to itself.")
1263+ }
1264+ else throw("Strict value is not equal to itself.")
1265+ }
1266+ else throw("Strict value is not equal to itself.")
1267+ }
1268+ else throw("Strict value is not equal to itself.")
1269+ }
1270+ else throw("Strict value is not equal to itself.")
1271+ }
1272+ else throw("Strict value is not equal to itself.")
1273+ }
1274+
1275+
1276+
1277+@Callable(dF)
1278+func activate (gh,gi) = if ((toString(dF.caller) != toString(aL)))
1279+ then throw("permissions denied")
1280+ else $Tuple2([StringEntry(ac(), gh), StringEntry(ad(), gi)], "success")
1281+
1282+
1283+
1284+@Callable(dF)
1285+func refreshKLp () = {
1286+ let gj = valueOrElse(getInteger(ai), 0)
1287+ let gk = if (((height - gj) >= al))
1288+ then unit
1289+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1290+ if ((gk == gk))
1291+ then {
1292+ let dz = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1293+ let gl = do(0, 0, 0)
1294+ let gm = gl._1
1295+ let df = gl._2
1296+ let dr = if ((dz != df))
1297+ then gm
1298+ else aI("nothing to refresh")
1299+ $Tuple2(dr, toString(df))
1300+ }
1301+ else throw("Strict value is not equal to itself.")
1302+ }
1303+
1304+
1305+
1306+@Callable(dF)
1307+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1308+
1309+
1310+
1311+@Callable(dF)
1312+func getAccBalanceWrapperREADONLY (bC) = $Tuple2(nil, bB(bC))
1313+
1314+
1315+
1316+@Callable(dF)
1317+func calcPricesWrapperREADONLY (bK,bL,bP) = {
1318+ let bY = bO(bK, bL, bP)
1319+ $Tuple2(nil, [toString(bY[0]), toString(bY[1]), toString(bY[2])])
1320+ }
1321+
1322+
1323+
1324+@Callable(dF)
11011325 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021326
11031327
11041328
1105-@Callable(df)
1329+@Callable(dF)
11061330 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11071331
11081332
11091333
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1334+@Callable(dF)
1335+func calcPriceBigIntWrapperREADONLY (bE,bF) = $Tuple2(nil, toString(bD(parseBigIntValue(bE), parseBigIntValue(bF))))
11121336
11131337
11141338
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1339+@Callable(dF)
1340+func estimatePutOperationWrapperREADONLY (ca,cw,cx,cy,cz,cA,Z,cB,cC) = $Tuple2(nil, cv(ca, cw, cx, cy, cz, cA, Z, cB, cC))
11171341
11181342
11191343
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1344+@Callable(dF)
1345+func estimateGetOperationWrapperREADONLY (ca,cb,cc,Z) = {
1346+ let cM = bZ(ca, cb, cc, addressFromStringValue(Z))
1347+ $Tuple2(nil, $Tuple10(cM._1, cM._2, cM._3, cM._4, cM._5, cM._6, cM._7, toString(cM._8), cM._9, cM._10))
11241348 }
11251349
11261350
11271351
1128-@Callable(df)
1352+@Callable(dF)
11291353 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1354+ let bQ = aS()
1355+ let cd = fromBase58String(bQ[q])
1356+ let gn = bQ[r]
1357+ let go = bQ[s]
1358+ let cF = bQ[v]
1359+ let cG = bQ[w]
1360+ let bR = parseIntValue(bQ[t])
1361+ let bS = parseIntValue(bQ[u])
1362+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1363+ let gq = bB(gn)
1364+ let gr = bB(go)
1365+ let gs = if ((gp == 0))
11421366 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1367+ else bO(gq, gr, gp)
1368+ let cn = 0
1369+ let gt = G(gs[1], b)
1370+ let gu = G(gs[2], b)
1371+ let gv = value(getInteger(aL, aw(toString(this))))
1372+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gq), toString(gr), toString(gp), toString(cn), toString(gt), toString(gu), toString(gv)], j))
11491373 }
11501374
11511375
11521376
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1377+@Callable(dF)
1378+func evaluatePutByAmountAssetREADONLY (cx) = {
1379+ let bQ = aS()
1380+ let cd = fromBase58String(bQ[q])
1381+ let cD = bQ[r]
1382+ let ce = fromBase58String(cD)
1383+ let cE = bQ[s]
1384+ let cf = fromBase58String(cE)
1385+ let bR = parseIntValue(bQ[t])
1386+ let bS = parseIntValue(bQ[u])
1387+ let cg = bQ[p]
1388+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1389+ let gq = bB(cD)
1390+ let gr = bB(cE)
1391+ let bM = D(gq, bR)
1392+ let bN = D(gr, bS)
1393+ let cm = if ((gp == 0))
11701394 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1395+ else bD(bN, bM)
1396+ let cJ = D(cx, bR)
1397+ let cK = fraction(cJ, cm, d)
1398+ let cz = G(cK, bS)
1399+ let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1400+ let cU = dL._1
1401+ let gw = dL._3
1402+ let ci = dL._4
1403+ let ck = dL._5
1404+ let ch = dL._6
1405+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
11821406 }
11831407
11841408
11851409
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1410+@Callable(dF)
1411+func evaluatePutByPriceAssetREADONLY (cz) = {
1412+ let bQ = aS()
1413+ let cd = fromBase58String(bQ[q])
1414+ let cD = bQ[r]
1415+ let ce = fromBase58String(cD)
1416+ let cE = bQ[s]
1417+ let cf = fromBase58String(cE)
1418+ let bR = parseIntValue(bQ[t])
1419+ let bS = parseIntValue(bQ[u])
1420+ let cg = bQ[p]
1421+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1422+ let gx = bB(cD)
1423+ let gy = bB(cE)
1424+ let gz = D(gx, bR)
1425+ let gA = D(gy, bS)
1426+ let cm = if ((gp == 0))
12031427 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1428+ else bD(gA, gz)
1429+ let cK = D(cz, bS)
1430+ let cJ = fraction(cK, d, cm)
1431+ let cx = G(cJ, bR)
1432+ let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1433+ let cU = dL._1
1434+ let gw = dL._3
1435+ let ci = dL._4
1436+ let ck = dL._5
1437+ let ch = dL._6
1438+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
12151439 }
12161440
12171441
12181442
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1443+@Callable(dF)
1444+func evaluateGetREADONLY (gB,gC) = {
1445+ let cM = bZ("", gB, gC, this)
1446+ let cs = cM._1
1447+ let ct = cM._2
1448+ let ci = cM._5
1449+ let ck = cM._6
1450+ let ch = cM._7
1451+ let cn = cM._8
1452+ let cg = parseIntValue(cM._9)
1453+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(ci), toString(ck), toString(ch), toString(cn), toString(cg)], j))
12301454 }
12311455
12321456
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1457+@Verifier(gD)
1458+func gE () = {
1459+ let gF = {
1460+ let dQ = eT()
1461+ if ($isInstanceOf(dQ, "ByteVector"))
12381462 then {
1239- let ez = dq
1240- ez
1463+ let eX = dQ
1464+ eX
12411465 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1466+ else if ($isInstanceOf(dQ, "Unit"))
1467+ then gD.senderPublicKey
12441468 else throw("Match error")
12451469 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1470+ let dQ = gD
1471+ if ($isInstanceOf(dQ, "Order"))
12481472 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1473+ let dv = dQ
1474+ let gG = aR()
1475+ let aB = du(dv)
1476+ let aC = sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
1477+ let aD = sigVerify(dv.bodyBytes, dv.proofs[1], gG)
1478+ if (if (if (aB)
1479+ then aC
12561480 else false)
1257- then at
1481+ then aD
12581482 else false)
12591483 then true
1260- else aq(ar, as, at)
1484+ else aA(aB, aC, aD)
12611485 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1486+ else if ($isInstanceOf(dQ, "SetScriptTransaction"))
12631487 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1488+ let eU = dQ
1489+ let gH = blake2b256(value(eU.script))
1490+ let gI = fromBase64String(value(getString(aL, ay())))
1491+ let gJ = scriptHash(this)
1492+ if (if ((gI == gH))
1493+ then (gJ != gH)
12701494 else false)
12711495 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1496+ else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
12731497 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1498+ else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
12751499 }
12761500
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-func ac () = "%s__factoryConfig"
111+let ae = "%s__fee"
112+
113+let af = fraction(10, b, 10000)
114+
115+let ag = valueOrElse(getInteger(this, ae), af)
116+
117+let ah = makeString(["%s", "kLp"], j)
118+
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120+
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
122+
123+let ak = 30
124+
125+let al = valueOrElse(getInteger(this, aj), ak)
126+
127+func am () = "%s__factoryConfig"
109128
110129
111-func ad () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
112131
113132
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
115134
116135
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
118137
119138
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
121140
122141
123-func al () = "%s__shutdown"
142+func av () = "%s__shutdown"
124143
125144
126-func am (an) = ("%s%s__poolWeight__" + an)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
127146
128147
129-func ao () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
130149
131150
132-let ap = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
133152
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
135154
136155
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
138157
139158
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
141160
142161
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
144163
145164
146-let aA = addressFromStringValue(au(this, P()))
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
147166
148-let aB = addressFromStringValue(au(aA, ap))
149167
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
168+let aL = addressFromStringValue(aE(this, R()))
169+
170+let aM = addressFromStringValue(aE(aL, az))
171+
172+let aN = {
173+ let aO = invoke(aL, "getInFeeREADONLY", [toString(this)], nil)
174+ if ($isInstanceOf(aO, "Int"))
175+ then aO
176+ else throw(($getType(aO) + " couldn't be cast to Int"))
155177 }
156178
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
179+let aP = {
180+ let aO = invoke(aL, "getOutFeeREADONLY", [toString(this)], nil)
181+ if ($isInstanceOf(aO, "Int"))
182+ then aO
183+ else throw(($getType(aO) + " couldn't be cast to Int"))
162184 }
163185
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
186+func aQ () = valueOrElse(getBoolean(aL, av()), false)
165187
166188
167-func aG () = fromBase58String(au(aA, ad()))
189+func aR () = fromBase58String(aE(aL, an()))
168190
169191
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
192+func aS () = {
193+ let aT = aE(this, ac())
194+ let aU = aE(this, ad())
195+ let as = aH(aL, at(aU))
196+ let ar = aH(aL, at(aT))
197+ split(aE(aL, aq(toString(ar), toString(as))), j)
176198 }
177199
178200
179-func aK (aL) = if ((aL == i))
201+func aV (aW) = if ((aW == i))
180202 then unit
181- else fromBase58String(aL)
203+ else fromBase58String(aW)
182204
183205
184-func aM (aL) = if ((aL == unit))
206+func aX (aW) = if ((aW == unit))
185207 then i
186- else toBase58String(value(aL))
208+ else toBase58String(value(aW))
187209
188210
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
211+func aY (aZ) = $Tuple7(addressFromStringValue(aZ[o]), parseIntValue(aZ[p]), fromBase58String(aZ[q]), aV(aZ[r]), aV(aZ[s]), parseIntValue(aZ[t]), parseIntValue(aZ[u]))
190212
191213
192-let aP = aN(aH())
214+let ba = aY(aS())
193215
194-let aQ = aP
216+let bb = ba
195217
196-let aR = aQ._1
218+let bc = bb._1
197219
198-let aS = aQ._2
220+let bd = bb._2
199221
200-let aT = aQ._3
222+let be = bb._3
201223
202-let aU = aQ._4
224+let bf = bb._4
203225
204-let aV = aQ._5
226+let bg = bb._5
205227
206-let aW = aQ._6
228+let bh = bb._6
207229
208-let aX = aQ._7
230+let bi = bb._7
209231
210-func aY () = split(au(aA, ac()), j)
232+func bj () = split(aE(aL, am()), j)
211233
212234
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
235+let bk = valueOrErrorMessage(addressFromString(bj()[B]), "incorrect staking address")
214236
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
237+let bl = valueOrErrorMessage(addressFromString(bj()[C]), "incorrect staking address")
216238
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
239+func bm (bn,bo,bp,bq,br,bs,bt,bu,bv,bw) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw)], j)
218240
219241
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
242+func bx (by,bz,bA,bq,bt,bu) = makeString(["%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bq), toString(bt), toString(bu)], j)
221243
222244
223-func bq (br) = if ((br == "WAVES"))
245+func bB (bC) = if ((bC == "WAVES"))
224246 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
247+ else assetBalance(this, fromBase58String(bC))
226248
227249
228-func bs (bt,bu) = fraction(bt, d, bu)
250+func bD (bE,bF) = fraction(bE, d, bF)
229251
230252
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
253+func bG (bE,bF,K) = fraction(bE, d, bF, K)
254+
255+
256+func bH (bI,bJ,bK,bL) = {
257+ let bM = D(bK, bI)
258+ let bN = D(bL, bJ)
259+ bD(bN, bM)
235260 }
236261
237262
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
263+func bO (bK,bL,bP) = {
264+ let bQ = aS()
265+ let bR = parseIntValue(bQ[t])
266+ let bS = parseIntValue(bQ[u])
267+ let bT = bH(bR, bS, bK, bL)
268+ let bF = D(bK, bR)
269+ let bE = D(bL, bS)
270+ let bU = D(bP, b)
271+ let bV = bD(bF, bU)
272+ let bW = bD(bE, bU)
273+[bT, bV, bW]
249274 }
250275
251276
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
277+func bX (bK,bL,bP) = {
278+ let bY = bO(bK, bL, bP)
279+[G(bY[0], b), G(bY[1], b), G(bY[2], b)]
255280 }
256281
257282
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
283+func bZ (ca,cb,cc,Z) = {
284+ let bQ = aS()
285+ let cd = bQ[q]
286+ let ce = bQ[r]
287+ let cf = bQ[s]
288+ let bI = parseIntValue(bQ[t])
289+ let bJ = parseIntValue(bQ[u])
290+ let cg = bQ[p]
291+ let ch = valueOrErrorMessage(assetInfo(fromBase58String(cd)), (("Asset " + cd) + " doesn't exist")).quantity
292+ if ((cd != cb))
268293 then throw("Invalid asset passed.")
269294 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
295+ let ci = bB(ce)
296+ let cj = D(ci, bI)
297+ let ck = bB(cf)
298+ let cl = D(ck, bJ)
299+ let cm = bD(cl, cj)
300+ let cn = G(cm, b)
301+ let co = D(cc, b)
302+ let cp = D(ch, b)
303+ let cq = fraction(cj, co, cp)
304+ let cr = fraction(cl, co, cp)
305+ let cs = J(cq, bI, FLOOR)
306+ let ct = J(cr, bJ, FLOOR)
307+ let cu = if ((ca == ""))
283308 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
309+ else [ScriptTransfer(Z, cs, if ((ce == "WAVES"))
285310 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
311+ else fromBase58String(ce)), ScriptTransfer(Z, ct, if ((cf == "WAVES"))
287312 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
313+ else fromBase58String(cf)), StringEntry(ab(toString(Z), ca), bx(cs, ct, cc, cn, height, lastBlock.timestamp)), IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn)]
314+ $Tuple10(cs, ct, ce, cf, ci, ck, ch, cm, cg, cu)
290315 }
291316 }
292317
293318
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
319+func cv (ca,cw,cx,cy,cz,cA,Z,cB,cC) = {
320+ let bQ = aS()
321+ let cd = fromBase58String(bQ[q])
322+ let cD = bQ[r]
323+ let cE = bQ[s]
324+ let cF = bQ[v]
325+ let cG = bQ[w]
326+ let bR = parseIntValue(bQ[t])
327+ let bS = parseIntValue(bQ[u])
328+ let cg = bQ[p]
329+ let ch = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
330+ let cH = toBase58String(valueOrElse(cy, fromBase58String("WAVES")))
331+ let cI = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
332+ if (if ((cD != cH))
308333 then true
309- else (cs != cw))
334+ else (cE != cI))
310335 then throw("Invalid amt or price asset passed.")
311336 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
337+ let ci = if (cB)
338+ then bB(cD)
339+ else (bB(cD) - cx)
340+ let ck = if (cB)
341+ then bB(cE)
342+ else (bB(cE) - cz)
343+ let cJ = D(cx, bR)
344+ let cK = D(cz, bS)
345+ let cL = bD(cK, cJ)
346+ let cj = D(ci, bR)
347+ let cl = D(ck, bS)
348+ let cM = if ((ch == 0))
324349 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
350+ let cm = e
351+ let cN = e
352+ let bU = pow((cJ * cK), 0, toBigInt(5), 1, 0, DOWN)
353+ $Tuple5(G(bU, b), G(cJ, bR), G(cK, bS), bD((cl + cK), (cj + cJ)), cN)
329354 }
330355 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
356+ let cm = bD(cl, cj)
357+ let cN = fraction(Q((cm - cL)), d, cm)
358+ let cO = D(cw, b)
359+ if (if ((cm != e))
360+ then (cN > cO)
336361 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
362+ then throw(((("Price slippage " + toString(cN)) + " exceeded the passed limit of ") + toString(cO)))
338363 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
364+ let cp = D(ch, b)
365+ let cP = fraction(cJ, bG(cl, cj, CEILING), d, CEILING)
366+ let cQ = fraction(cK, d, bG(cl, cj, FLOOR), CEILING)
367+ let cR = if ((cP > cK))
368+ then $Tuple2(cQ, cK)
369+ else $Tuple2(cJ, cP)
370+ let cS = cR._1
371+ let cT = cR._2
372+ let bU = fraction(cp, cT, cl, FLOOR)
373+ $Tuple5(J(bU, b, FLOOR), J(cS, bR, CEILING), J(cT, bS, CEILING), cm, cN)
349374 }
350375 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
376+ let cU = cM._1
377+ let cV = cM._2
378+ let cW = cM._3
379+ let cn = G(cM._4, b)
380+ let cX = G(cM._5, b)
381+ if ((0 >= cU))
357382 then throw("Invalid calculations. LP calculated is less than zero.")
358383 else {
359- let cM = if (!(cq))
384+ let cY = if (!(cC))
360385 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
386+ else cU
387+ let cZ = (cx - cV)
388+ let da = (cz - cW)
389+ let db = [IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn), StringEntry(Y(Z, ca), bm(cV, cW, cY, cn, cw, cX, height, lastBlock.timestamp, cZ, da))]
390+ $Tuple13(cU, cY, cn, ci, ck, ch, cd, cg, db, cZ, da, cy, cA)
366391 }
367392 }
368393 }
369394
370395
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
396+func dc (dd,de,ch) = {
397+ let df = fraction(pow((dd * de), 0, toBigInt(5), 1, 18, DOWN), g, ch)
398+ if ((ch == f))
399+ then f
400+ else df
413401 }
414402
415403
416-func de (df) = if ((size(df.payments) != 1))
404+func dg (dh,di,dj) = {
405+ let dk = (toBigInt(bB(aX(bf))) - dh)
406+ let dl = (toBigInt(bB(aX(bg))) - di)
407+ let dm = (toBigInt(value(assetInfo(be)).quantity) - dj)
408+ let dn = dc(dk, dl, dm)
409+ dn
410+ }
411+
412+
413+func do (dp,dq,dj) = {
414+ let dk = (bB(aX(bf)) + dp)
415+ let dl = (bB(aX(bg)) + dq)
416+ let dm = (value(assetInfo(be)).quantity + dj)
417+ let df = dc(toBigInt(dk), toBigInt(dl), toBigInt(dm))
418+ let dr = [IntegerEntry(ai, height), StringEntry(ah, toString(df))]
419+ $Tuple2(dr, df)
420+ }
421+
422+
423+func ds (dt,df) = if ((df >= dt))
424+ then true
425+ else aI(makeString(["updated KLp lower than current KLp", toString(dt), toString(df)], " "))
426+
427+
428+func du (dv) = {
429+ let dw = dv.amount
430+ let dx = fraction(dv.amount, dv.price, b, FLOOR)
431+ let dy = if ((dv.orderType == Buy))
432+ then $Tuple2(dw, -(dx))
433+ else $Tuple2(-(dw), dx)
434+ let dp = dy._1
435+ let dq = dy._2
436+ if (if (if (aQ())
437+ then true
438+ else (bd == m))
439+ then true
440+ else (bd == n))
441+ then throw("Exchange operations disabled")
442+ else if (if ((dv.assetPair.amountAsset != bf))
443+ then true
444+ else (dv.assetPair.priceAsset != bg))
445+ then throw("Wrong order assets.")
446+ else {
447+ let dz = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
448+ let dA = do(dp, dq, 0)
449+ let dB = dA._1
450+ let dC = dA._2
451+ let dD = (dC >= dz)
452+ dD
453+ }
454+ }
455+
456+
457+func dE (dF) = if ((size(dF.payments) != 1))
417458 then throw("exactly 1 payment is expected")
418459 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
460+ let dG = value(dF.payments[0])
461+ let cb = value(dG.assetId)
462+ let dH = dG.amount
463+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(cb), dH, dF.caller)
464+ let cs = cM._1
465+ let ct = cM._2
466+ let cg = parseIntValue(cM._9)
467+ let cu = cM._10
468+ if (if (aQ())
428469 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
470+ else (cg == n))
471+ then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
472+ else $Tuple5(cs, ct, dH, cb, cu)
432473 }
433474
434475
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
476+func dI (dF,cw,cC) = if ((size(dF.payments) != 2))
436477 then throw("exactly 2 payments are expected")
437478 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
479+ let dJ = value(dF.payments[0])
480+ let dK = value(dF.payments[1])
481+ let dL = cv(toBase58String(dF.transactionId), cw, dJ.amount, dJ.assetId, dK.amount, dK.assetId, toString(dF.caller), false, cC)
482+ let cg = parseIntValue(dL._8)
483+ if (if (if (aQ())
443484 then true
444- else (bU == l))
485+ else (cg == l))
445486 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
487+ else (cg == n))
488+ then throw(("Put operation is blocked by admin. Status = " + toString(cg)))
489+ else dL
449490 }
450491
451492
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
493+func dM (dN) = {
494+ let dO = invoke(aL, "emit", [dN], nil)
495+ if ((dO == dO))
455496 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
497+ let dP = {
498+ let dQ = dO
499+ if ($isInstanceOf(dQ, "Address"))
459500 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
501+ let dR = dQ
502+ invoke(dR, "emit", [dN], nil)
462503 }
463504 else unit
464505 }
465- if ((dp == dp))
466- then dn
506+ if ((dP == dP))
507+ then dN
467508 else throw("Strict value is not equal to itself.")
468509 }
469510 else throw("Strict value is not equal to itself.")
470511 }
471512
472513
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
514+func dS (dN,ag) = {
515+ let dT = if ((ag == 0))
475516 then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
517+ else fraction(dN, ag, b)
518+ $Tuple2((dN - dT), dT)
478519 }
479520
480521
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
522+func dU (dV,dW,Z,aa) = {
523+ let dX = (aa == unit)
524+ let dY = bB(aX(bf))
525+ let dZ = bB(aX(bg))
526+ let ea = if ((dW == bf))
486527 then true
487- else if ((dx == aV))
528+ else if ((dW == bg))
488529 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
530+ else aI("invalid asset")
531+ let eb = if (dX)
532+ then $Tuple2(dY, dZ)
533+ else if (ea)
534+ then $Tuple2((dY - dV), dZ)
535+ else $Tuple2(dY, (dZ - dV))
536+ let ec = eb._1
537+ let ed = eb._2
538+ let ee = if (ea)
539+ then $Tuple2(dV, 0)
540+ else $Tuple2(0, dV)
541+ let ef = ee._1
542+ let eg = ee._2
543+ let dw = dS(ef, aN)._1
544+ let dx = dS(eg, aN)._1
545+ let eh = dS(dV, aN)
546+ let ei = eh._1
547+ let dT = eh._2
548+ let ej = (ec + dw)
549+ let ek = (ed + dx)
550+ let el = bD(D(ek, bi), D(ej, bh))
551+ let em = G(el, b)
552+ let en = if (ea)
553+ then ec
554+ else ed
555+ let eo = toBigInt(en)
556+ let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
557+ let eq = if ((ep > f))
517558 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
559+ else aI("initial deposit requires all coins")
560+ if ((eq == eq))
520561 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
562+ let er = toBigInt(ei)
563+ let es = max([0, toInt(((ep * (sqrtBigInt((d + ((er * d) / eo)), 18, 18, DOWN) - d)) / d))])
564+ let db = if (dX)
524565 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
566+ else [IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bm(ef, eg, es, em, 0, 0, height, lastBlock.timestamp, 0, 0))]
567+ let et = bD(D(ed, bi), D(ec, bh))
568+ let eu = G(et, b)
569+ let ev = {
570+ let ew = if (ea)
571+ then $Tuple2(ef, ec)
572+ else $Tuple2(eg, ed)
573+ let dN = ew._1
574+ let ex = ew._2
575+ let ey = toInt(fraction(ep, toBigInt((dN / 2)), toBigInt(ex)))
576+ fraction((es - ey), b, ey)
536577 }
537- $Tuple4(dV, cP, du, dY)
578+ $Tuple5(es, db, dT, ev, ea)
538579 }
539580 else throw("Strict value is not equal to itself.")
540581 }
541582
542583
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
584+func ez (eA,ei,dW,Z,aa) = {
585+ let dX = (aa == unit)
586+ let bQ = aS()
587+ let bR = parseIntValue(bQ[t])
588+ let bS = parseIntValue(bQ[u])
589+ let eB = [if ((dW == be))
546590 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
591+ else aI("invalid lp asset")]
592+ if ((eB == eB))
549593 then {
550- let ef = if ((ed == aU))
594+ let eC = if ((eA == bf))
551595 then true
552- else if ((ed == aV))
596+ else if ((eA == bg))
553597 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
598+ else aI("invalid asset")
599+ let eD = if (eC)
600+ then toBigInt(bB(aX(bf)))
601+ else toBigInt(bB(aX(bg)))
602+ let eE = if (eC)
603+ then bR
604+ else bS
605+ let eF = bB(aX(bf))
606+ let eG = bB(aX(bg))
607+ let eH = if (eC)
608+ then eF
609+ else eG
610+ let eI = toBigInt(eH)
611+ let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
612+ let eJ = toBigInt(ei)
613+ let eK = max([0, toInt(((eD * (d - pow((d - ((eJ * d) / ep)), 18, h, 0, 18, DOWN))) / d))])
614+ let eL = dS(eK, aP)
615+ let eM = eL._1
616+ let dT = eL._2
617+ let eN = if (eC)
618+ then $Tuple4(eM, 0, (eF - eK), eG)
619+ else $Tuple4(0, eM, eF, (eG - eK))
620+ let eO = eN._1
621+ let eP = eN._2
622+ let eQ = eN._3
623+ let eR = eN._4
624+ let el = bD(D(eR, bi), D(eQ, bh))
625+ let em = G(el, b)
626+ let db = if (dX)
580627 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
628+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bx(eO, eP, ei, em, height, lastBlock.timestamp)), IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em)]
629+ let et = bD(D(eG, bi), D(eF, bh))
630+ let eu = G(et, b)
631+ let ev = {
632+ let eS = (toInt(fraction(eD, eJ, ep)) * 2)
633+ fraction((eM - eS), b, eS)
587634 }
588- $Tuple4(eo, cP, du, dY)
635+ $Tuple5(eM, db, dT, ev, eC)
589636 }
590637 else throw("Strict value is not equal to itself.")
591638 }
592639
593640
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
641+func eT () = {
642+ let dQ = getString(S())
643+ if ($isInstanceOf(dQ, "String"))
597644 then {
598- let ew = dq
599- fromBase58String(ew)
645+ let eU = dQ
646+ fromBase58String(eU)
600647 }
601- else if ($isInstanceOf(dq, "Unit"))
648+ else if ($isInstanceOf(dQ, "Unit"))
602649 then unit
603650 else throw("Match error")
604651 }
605652
606653
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
654+func eV () = {
655+ let dQ = getString(T())
656+ if ($isInstanceOf(dQ, "String"))
610657 then {
611- let ew = dq
612- fromBase58String(ew)
658+ let eU = dQ
659+ fromBase58String(eU)
613660 }
614- else if ($isInstanceOf(dq, "Unit"))
661+ else if ($isInstanceOf(dQ, "Unit"))
615662 then unit
616663 else throw("Match error")
617664 }
618665
619666
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
667+func eW (dF) = {
668+ let dQ = eT()
669+ if ($isInstanceOf(dQ, "ByteVector"))
623670 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
671+ let eX = dQ
672+ (dF.callerPublicKey == eX)
626673 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
674+ else if ($isInstanceOf(dQ, "Unit"))
675+ then (dF.caller == this)
629676 else throw("Match error")
630677 }
631678
632679
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
680+func eY (dF) = {
681+ let eZ = throw("Permission denied")
682+ let dQ = eT()
683+ if ($isInstanceOf(dQ, "ByteVector"))
637684 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
685+ let eX = dQ
686+ if ((dF.callerPublicKey == eX))
640687 then true
641- else eB
688+ else eZ
642689 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
690+ else if ($isInstanceOf(dQ, "Unit"))
691+ then if ((dF.caller == this))
645692 then true
646- else eB
693+ else eZ
647694 else throw("Match error")
648695 }
649696
650697
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
698+@Callable(dF)
699+func setManager (fa) = {
700+ let fb = eY(dF)
701+ if ((fb == fb))
655702 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
703+ let fc = fromBase58String(fa)
704+ if ((fc == fc))
705+ then [StringEntry(T(), fa)]
659706 else throw("Strict value is not equal to itself.")
660707 }
661708 else throw("Strict value is not equal to itself.")
662709 }
663710
664711
665712
666-@Callable(df)
713+@Callable(dF)
667714 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
715+ let fd = eV()
716+ let fe = if (isDefined(fd))
670717 then true
671718 else throw("No pending manager")
672- if ((eG == eG))
719+ if ((fe == fe))
673720 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
721+ let ff = if ((dF.callerPublicKey == value(fd)))
675722 then true
676723 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
724+ if ((ff == ff))
725+ then [StringEntry(S(), toBase58String(value(fd))), DeleteEntry(T())]
679726 else throw("Strict value is not equal to itself.")
680727 }
681728 else throw("Strict value is not equal to itself.")
682729 }
683730
684731
685732
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
733+@Callable(dF)
734+func put (cw,fg) = if ((0 > cw))
688735 then throw("Invalid slippageTolerance passed")
689736 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
737+ let dL = dI(dF, cw, true)
738+ let cY = dL._2
739+ let cd = dL._7
740+ let cu = dL._9
741+ let cZ = dL._10
742+ let da = dL._11
743+ let fh = dL._12
744+ let fi = dL._13
745+ let dJ = toBigInt(value(dF.payments[0]).amount)
746+ let dK = toBigInt(value(dF.payments[1]).amount)
747+ let dn = dg(dJ, dK, toBigInt(0))
748+ if ((dn == dn))
700749 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
750+ let dO = invoke(aL, "emit", [cY], nil)
751+ if ((dO == dO))
752+ then {
753+ let dP = {
754+ let dQ = dO
755+ if ($isInstanceOf(dQ, "Address"))
756+ then {
757+ let dR = dQ
758+ invoke(dR, "emit", [cY], nil)
759+ }
760+ else unit
707761 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
762+ if ((dP == dP))
716763 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
764+ let fj = if ((cZ > 0))
765+ then invoke(bl, "put", nil, [AttachedPayment(fh, cZ)])
719766 else nil
720- if ((eM == eM))
767+ if ((fj == fj))
721768 then {
722- let eN = if (eI)
769+ let fk = if ((da > 0))
770+ then invoke(bl, "put", nil, [AttachedPayment(fi, da)])
771+ else nil
772+ if ((fk == fk))
723773 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
774+ let fl = if (fg)
775+ then {
776+ let fm = invoke(bk, "stake", nil, [AttachedPayment(cd, cY)])
777+ if ((fm == fm))
778+ then nil
779+ else throw("Strict value is not equal to itself.")
780+ }
781+ else [ScriptTransfer(dF.caller, cY, cd)]
782+ let fn = do(0, 0, 0)
783+ if ((fn == fn))
784+ then {
785+ let df = fn._2
786+ let fo = fn._1
787+ let fp = ds(dn, df)
788+ if ((fp == fp))
789+ then ((cu ++ fl) ++ fo)
790+ else throw("Strict value is not equal to itself.")
791+ }
727792 else throw("Strict value is not equal to itself.")
728793 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
794+ else throw("Strict value is not equal to itself.")
731795 }
732796 else throw("Strict value is not equal to itself.")
733797 }
734798 else throw("Strict value is not equal to itself.")
735799 }
736800 else throw("Strict value is not equal to itself.")
737801 }
738802 else throw("Strict value is not equal to itself.")
739803 }
740804
741805
742806
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
807+@Callable(dF)
808+func putForFree (fq) = if ((0 > fq))
745809 then throw("Invalid value passed")
746810 else {
747- let dl = di(df, eP, false)
748- dl._9
811+ let dL = dI(dF, fq, false)
812+ let cu = dL._9
813+ let dJ = toBigInt(value(dF.payments[0]).amount)
814+ let dK = toBigInt(value(dF.payments[1]).amount)
815+ let dn = dg(dJ, dK, toBigInt(0))
816+ if ((dn == dn))
817+ then {
818+ let fr = do(0, 0, 0)
819+ let fo = fr._1
820+ let df = fr._2
821+ let fp = ds(dn, df)
822+ if ((fp == fp))
823+ then (cu ++ fo)
824+ else throw("Strict value is not equal to itself.")
825+ }
826+ else throw("Strict value is not equal to itself.")
749827 }
750828
751829
752830
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
831+@Callable(dF)
832+func putOneTkn (fs,ft) = {
833+ let fu = {
834+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aO, "Boolean"))
836+ then aO
837+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
760838 }
761- let eT = if (if (if (aF())
839+ let fv = if (if (if (aQ())
762840 then true
763- else (aS == l))
841+ else (bd == l))
764842 then true
765- else (aS == n))
843+ else (bd == n))
766844 then true
767- else eS
768- let ee = [if (if (!(eT))
845+ else fu
846+ let eB = [if (if (!(fv))
769847 then true
770- else ey(df))
848+ else eW(dF))
771849 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
850+ else aI("put operation is blocked by admin"), if ((size(dF.payments) == 1))
773851 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
852+ else aI("exactly 1 payment are expected")]
853+ if ((eB == eB))
776854 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
855+ let fw = dF.payments[0]
856+ let dW = fw.assetId
857+ let dV = fw.amount
858+ let dn = if ((dW == bf))
859+ then dg(toBigInt(dV), toBigInt(0), toBigInt(0))
860+ else if ((dW == bg))
861+ then dg(toBigInt(0), toBigInt(dV), toBigInt(0))
862+ else aI("payment asset is not supported")
863+ if ((dn == dn))
784864 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
791- else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
865+ let Z = dF.caller
866+ let aa = dF.transactionId
867+ let fx = dU(dV, dW, Z, aa)
868+ if ((fx == fx))
796869 then {
797- let eN = if (eR)
870+ let ea = fx._5
871+ let fy = fx._4
872+ let dT = fx._3
873+ let db = fx._2
874+ let fz = fx._1
875+ let fA = if (if ((fs > 0))
876+ then (fs > fz)
877+ else false)
878+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
879+ else fz
880+ let dO = dM(fA)
881+ if ((dO == dO))
798882 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
801- then nil
883+ let fl = if (ft)
884+ then {
885+ let fB = invoke(bk, "stake", nil, [AttachedPayment(be, fA)])
886+ if ((fB == fB))
887+ then nil
888+ else throw("Strict value is not equal to itself.")
889+ }
890+ else [ScriptTransfer(dF.caller, fA, be)]
891+ let fC = if ((dT > 0))
892+ then [ScriptTransfer(aM, dT, dW)]
893+ else nil
894+ let fD = if ((this == aM))
895+ then $Tuple2(0, 0)
896+ else if (ea)
897+ then $Tuple2(-(dT), 0)
898+ else $Tuple2(0, -(dT))
899+ let dp = fD._1
900+ let dq = fD._2
901+ let fE = do(dp, dq, 0)
902+ let fo = fE._1
903+ let df = fE._2
904+ let dz = value(getString(ah))
905+ let fp = ds(dn, df)
906+ if ((fp == fp))
907+ then $Tuple2((((db ++ fl) ++ fC) ++ fo), fA)
802908 else throw("Strict value is not equal to itself.")
803- }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
807- else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
809- }
810- else throw("Strict value is not equal to itself.")
811- }
812- else throw("Strict value is not equal to itself.")
813- }
814- else throw("Strict value is not equal to itself.")
815- }
816-
817-
818-
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
827- }
828-
829-
830-
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
838- }
839- let fd = if (if (aF())
840- then true
841- else (aS == n))
842- then true
843- else eS
844- let ee = [if (if (!(fd))
845- then true
846- else ey(df))
847- then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849- then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
852- then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
861- then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
868- else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
873- then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
877- else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
879- }
880- else throw("Strict value is not equal to itself.")
881- }
882- else throw("Strict value is not equal to itself.")
883- }
884- else throw("Strict value is not equal to itself.")
885- }
886-
887-
888-
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
897- }
898-
899-
900-
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
908- }
909- let fd = if (if (aF())
910- then true
911- else (aS == n))
912- then true
913- else eS
914- let ee = [if (if (!(fd))
915- then true
916- else ey(df))
917- then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919- then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
922- then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
928- then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
931- then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
938- else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
943- then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
947- else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
949909 }
950910 else throw("Strict value is not equal to itself.")
951911 }
952912 else throw("Strict value is not equal to itself.")
953913 }
954914 else throw("Strict value is not equal to itself.")
955915 }
956916 else throw("Strict value is not equal to itself.")
957917 }
958918
959919
960920
961-@Callable(df)
962-func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
972- else throw("Strict value is not equal to itself.")
921+@Callable(dF)
922+func putOneTknREADONLY (dW,dV) = {
923+ let fF = dU(dV, aV(dW), unit, unit)
924+ let fz = fF._1
925+ let db = fF._2
926+ let dT = fF._3
927+ let fy = fF._4
928+ let ea = fF._5
929+ $Tuple2(nil, $Tuple3(fz, dT, fy))
973930 }
974931
975932
976933
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989- else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
993- else throw("Strict value is not equal to itself.")
994- }
995- }
996-
997-
998-
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1002- then throw("No payments are expected")
1003- else true
1004- if ((fq == fq))
934+@Callable(dF)
935+func getOneTkn (fG,fs) = {
936+ let fu = {
937+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
938+ if ($isInstanceOf(aO, "Boolean"))
939+ then aO
940+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
941+ }
942+ let fH = if (if (aQ())
943+ then true
944+ else (bd == n))
945+ then true
946+ else fu
947+ let eB = [if (if (!(fH))
948+ then true
949+ else eW(dF))
950+ then true
951+ else aI("get operation is blocked by admin"), if ((size(dF.payments) == 1))
952+ then true
953+ else aI("exactly 1 payment are expected")]
954+ if ((eB == eB))
1005955 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
956+ let eA = aV(fG)
957+ let fw = dF.payments[0]
958+ let dW = fw.assetId
959+ let ei = fw.amount
960+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
961+ if ((dn == dn))
1010962 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1015- then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018- else true
1019- if ((fr == fr))
963+ let Z = dF.caller
964+ let aa = dF.transactionId
965+ let fI = ez(eA, ei, dW, Z, aa)
966+ if ((fI == fI))
1020967 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
968+ let eC = fI._5
969+ let fy = fI._4
970+ let dT = fI._3
971+ let db = fI._2
972+ let fJ = fI._1
973+ let dN = if (if ((fs > 0))
974+ then (fs > fJ)
975+ else false)
976+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
977+ else fJ
978+ let fK = invoke(aL, "burn", [ei], [AttachedPayment(dW, ei)])
979+ if ((fK == fK))
980+ then {
981+ let fL = [ScriptTransfer(Z, dN, eA)]
982+ let fC = if ((dT > 0))
983+ then [ScriptTransfer(aM, dT, eA)]
984+ else nil
985+ let fM = {
986+ let fN = if ((this == aM))
987+ then 0
988+ else dT
989+ if (eC)
990+ then $Tuple2(-((dN + fN)), 0)
991+ else $Tuple2(0, -((dN + fN)))
992+ }
993+ let dp = fM._1
994+ let dq = fM._2
995+ let fO = do(dp, dq, 0)
996+ let fo = fO._1
997+ let df = fO._2
998+ let fp = ds(dn, df)
999+ if ((fp == fp))
1000+ then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1001+ else throw("Strict value is not equal to itself.")
1002+ }
10241003 else throw("Strict value is not equal to itself.")
10251004 }
10261005 else throw("Strict value is not equal to itself.")
10271006 }
10281007 else throw("Strict value is not equal to itself.")
10291008 }
10301009 else throw("Strict value is not equal to itself.")
10311010 }
10321011
10331012
10341013
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1014+@Callable(dF)
1015+func getOneTknREADONLY (eA,ei) = {
1016+ let fP = ez(aV(eA), ei, be, unit, unit)
1017+ let fJ = fP._1
1018+ let db = fP._2
1019+ let dT = fP._3
1020+ let fy = fP._4
1021+ let eC = fP._5
1022+ $Tuple2(nil, $Tuple3(fJ, dT, fy))
1023+ }
1024+
1025+
1026+
1027+@Callable(dF)
1028+func unstakeAndGetOneTkn (fQ,fG,fs) = {
1029+ let fu = {
1030+ let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1031+ if ($isInstanceOf(aO, "Boolean"))
1032+ then aO
1033+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
1034+ }
1035+ let fH = if (if (aQ())
10381036 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1037+ else (bd == n))
10411038 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1039+ else fu
1040+ let eB = [if (if (!(fH))
10431041 then true
1044- else throw("no payments are expected")]
1045- if ((ee == ee))
1042+ else eW(dF))
1043+ then true
1044+ else aI("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1045+ then true
1046+ else aI("no payments are expected")]
1047+ if ((eB == eB))
10461048 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1049+ let eA = aV(fG)
1050+ let Z = dF.caller
1051+ let aa = dF.transactionId
1052+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1053+ if ((dn == dn))
10491054 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1055- then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057- then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1055+ let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1056+ if ((fR == fR))
10601057 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1058+ let fS = ez(eA, fQ, be, Z, aa)
1059+ if ((fS == fS))
1060+ then {
1061+ let eC = fS._5
1062+ let fy = fS._4
1063+ let dT = fS._3
1064+ let db = fS._2
1065+ let fJ = fS._1
1066+ let dN = if (if ((fs > 0))
1067+ then (fs > fJ)
1068+ else false)
1069+ then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
1070+ else fJ
1071+ let fK = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1072+ if ((fK == fK))
1073+ then {
1074+ let fL = [ScriptTransfer(dF.caller, dN, eA)]
1075+ let fC = if ((dT > 0))
1076+ then [ScriptTransfer(aM, dT, eA)]
1077+ else nil
1078+ let fT = {
1079+ let fN = if ((this == aM))
1080+ then 0
1081+ else dT
1082+ if (eC)
1083+ then $Tuple2(-((dN + fN)), 0)
1084+ else $Tuple2(0, -((dN + fN)))
1085+ }
1086+ let dp = fT._1
1087+ let dq = fT._2
1088+ let fU = do(dp, dq, 0)
1089+ let fo = fU._1
1090+ let df = fU._2
1091+ let fp = ds(dn, df)
1092+ if ((fp == fp))
1093+ then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1094+ else throw("Strict value is not equal to itself.")
1095+ }
1096+ else throw("Strict value is not equal to itself.")
1097+ }
10641098 else throw("Strict value is not equal to itself.")
10651099 }
10661100 else throw("Strict value is not equal to itself.")
10671101 }
10681102 else throw("Strict value is not equal to itself.")
10691103 }
10701104 else throw("Strict value is not equal to itself.")
10711105 }
10721106
10731107
10741108
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077- then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079-
1080-
1081-
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1109+@Callable(dF)
1110+func get () = {
1111+ let cM = dE(dF)
1112+ let fV = cM._1
1113+ let ct = cM._2
1114+ let dH = cM._3
1115+ let cb = cM._4
1116+ let cu = cM._5
1117+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1118+ if ((dn == dn))
1119+ then {
1120+ let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1121+ if ((fW == fW))
1122+ then {
1123+ let fX = do(-(fV), -(ct), 0)
1124+ let fo = fX._1
1125+ let df = fX._2
1126+ let fp = ds(dn, df)
1127+ if ((fp == fp))
1128+ then (cu ++ fo)
1129+ else throw("Strict value is not equal to itself.")
1130+ }
1131+ else throw("Strict value is not equal to itself.")
1132+ }
1133+ else throw("Strict value is not equal to itself.")
10961134 }
10971135
10981136
10991137
1100-@Callable(df)
1138+@Callable(dF)
1139+func getNoLess (fY,fZ) = {
1140+ let cM = dE(dF)
1141+ let cs = cM._1
1142+ let ct = cM._2
1143+ let dH = cM._3
1144+ let cb = cM._4
1145+ let cu = cM._5
1146+ if ((fY > cs))
1147+ then throw(((("noLessThenAmtAsset failed: " + toString(cs)) + " < ") + toString(fY)))
1148+ else if ((fZ > ct))
1149+ then throw(((("noLessThenPriceAsset failed: " + toString(ct)) + " < ") + toString(fZ)))
1150+ else {
1151+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1152+ if ((dn == dn))
1153+ then {
1154+ let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1155+ if ((fW == fW))
1156+ then {
1157+ let ga = do(-(cs), -(ct), 0)
1158+ let fo = ga._1
1159+ let df = ga._2
1160+ let fp = ds(dn, df)
1161+ if ((fp == fp))
1162+ then (cu ++ fo)
1163+ else throw("Strict value is not equal to itself.")
1164+ }
1165+ else throw("Strict value is not equal to itself.")
1166+ }
1167+ else throw("Strict value is not equal to itself.")
1168+ }
1169+ }
1170+
1171+
1172+
1173+@Callable(dF)
1174+func unstakeAndGet (dN) = {
1175+ let gb = if ((size(dF.payments) != 0))
1176+ then throw("No payments are expected")
1177+ else true
1178+ if ((gb == gb))
1179+ then {
1180+ let bQ = aS()
1181+ let cd = fromBase58String(bQ[q])
1182+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1183+ if ((dn == dn))
1184+ then {
1185+ let fR = invoke(bk, "unstake", [toBase58String(cd), dN], nil)
1186+ if ((fR == fR))
1187+ then {
1188+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(cd), dN, dF.caller)
1189+ let cs = cM._1
1190+ let ct = cM._2
1191+ let cg = parseIntValue(cM._9)
1192+ let cu = cM._10
1193+ let gc = if (if (aQ())
1194+ then true
1195+ else (cg == n))
1196+ then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
1197+ else true
1198+ if ((gc == gc))
1199+ then {
1200+ let fW = invoke(aL, "burn", [dN], [AttachedPayment(cd, dN)])
1201+ if ((fW == fW))
1202+ then {
1203+ let gd = do(-(cs), -(ct), 0)
1204+ let fo = gd._1
1205+ let df = gd._2
1206+ let fp = ds(dn, df)
1207+ if ((fp == fp))
1208+ then (cu ++ fo)
1209+ else throw("Strict value is not equal to itself.")
1210+ }
1211+ else throw("Strict value is not equal to itself.")
1212+ }
1213+ else throw("Strict value is not equal to itself.")
1214+ }
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
1221+
1222+
1223+
1224+@Callable(dF)
1225+func unstakeAndGetNoLess (fQ,ge,fZ) = {
1226+ let fH = if (aQ())
1227+ then true
1228+ else (bd == n)
1229+ let eB = [if (!(fH))
1230+ then true
1231+ else throw("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1232+ then true
1233+ else throw("no payments are expected")]
1234+ if ((eB == eB))
1235+ then {
1236+ let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((dn == dn))
1238+ then {
1239+ let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1240+ if ((fR == fR))
1241+ then {
1242+ let cM = bZ(toBase58String(dF.transactionId), toBase58String(be), fQ, dF.caller)
1243+ let cs = cM._1
1244+ let ct = cM._2
1245+ let cu = cM._10
1246+ let gf = [if ((cs >= ge))
1247+ then true
1248+ else throw(makeString(["amount asset amount to receive is less than ", toString(ge)], "")), if ((ct >= fZ))
1249+ then true
1250+ else throw(makeString(["price asset amount to receive is less than ", toString(fZ)], ""))]
1251+ if ((gf == gf))
1252+ then {
1253+ let fW = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1254+ if ((fW == fW))
1255+ then {
1256+ let gg = do(-(cs), -(ct), 0)
1257+ let fo = gg._1
1258+ let df = gg._2
1259+ let fp = ds(dn, df)
1260+ if ((fp == fp))
1261+ then (cu ++ fo)
1262+ else throw("Strict value is not equal to itself.")
1263+ }
1264+ else throw("Strict value is not equal to itself.")
1265+ }
1266+ else throw("Strict value is not equal to itself.")
1267+ }
1268+ else throw("Strict value is not equal to itself.")
1269+ }
1270+ else throw("Strict value is not equal to itself.")
1271+ }
1272+ else throw("Strict value is not equal to itself.")
1273+ }
1274+
1275+
1276+
1277+@Callable(dF)
1278+func activate (gh,gi) = if ((toString(dF.caller) != toString(aL)))
1279+ then throw("permissions denied")
1280+ else $Tuple2([StringEntry(ac(), gh), StringEntry(ad(), gi)], "success")
1281+
1282+
1283+
1284+@Callable(dF)
1285+func refreshKLp () = {
1286+ let gj = valueOrElse(getInteger(ai), 0)
1287+ let gk = if (((height - gj) >= al))
1288+ then unit
1289+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1290+ if ((gk == gk))
1291+ then {
1292+ let dz = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1293+ let gl = do(0, 0, 0)
1294+ let gm = gl._1
1295+ let df = gl._2
1296+ let dr = if ((dz != df))
1297+ then gm
1298+ else aI("nothing to refresh")
1299+ $Tuple2(dr, toString(df))
1300+ }
1301+ else throw("Strict value is not equal to itself.")
1302+ }
1303+
1304+
1305+
1306+@Callable(dF)
1307+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1308+
1309+
1310+
1311+@Callable(dF)
1312+func getAccBalanceWrapperREADONLY (bC) = $Tuple2(nil, bB(bC))
1313+
1314+
1315+
1316+@Callable(dF)
1317+func calcPricesWrapperREADONLY (bK,bL,bP) = {
1318+ let bY = bO(bK, bL, bP)
1319+ $Tuple2(nil, [toString(bY[0]), toString(bY[1]), toString(bY[2])])
1320+ }
1321+
1322+
1323+
1324+@Callable(dF)
11011325 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021326
11031327
11041328
1105-@Callable(df)
1329+@Callable(dF)
11061330 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11071331
11081332
11091333
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1334+@Callable(dF)
1335+func calcPriceBigIntWrapperREADONLY (bE,bF) = $Tuple2(nil, toString(bD(parseBigIntValue(bE), parseBigIntValue(bF))))
11121336
11131337
11141338
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1339+@Callable(dF)
1340+func estimatePutOperationWrapperREADONLY (ca,cw,cx,cy,cz,cA,Z,cB,cC) = $Tuple2(nil, cv(ca, cw, cx, cy, cz, cA, Z, cB, cC))
11171341
11181342
11191343
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1344+@Callable(dF)
1345+func estimateGetOperationWrapperREADONLY (ca,cb,cc,Z) = {
1346+ let cM = bZ(ca, cb, cc, addressFromStringValue(Z))
1347+ $Tuple2(nil, $Tuple10(cM._1, cM._2, cM._3, cM._4, cM._5, cM._6, cM._7, toString(cM._8), cM._9, cM._10))
11241348 }
11251349
11261350
11271351
1128-@Callable(df)
1352+@Callable(dF)
11291353 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1354+ let bQ = aS()
1355+ let cd = fromBase58String(bQ[q])
1356+ let gn = bQ[r]
1357+ let go = bQ[s]
1358+ let cF = bQ[v]
1359+ let cG = bQ[w]
1360+ let bR = parseIntValue(bQ[t])
1361+ let bS = parseIntValue(bQ[u])
1362+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1363+ let gq = bB(gn)
1364+ let gr = bB(go)
1365+ let gs = if ((gp == 0))
11421366 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1367+ else bO(gq, gr, gp)
1368+ let cn = 0
1369+ let gt = G(gs[1], b)
1370+ let gu = G(gs[2], b)
1371+ let gv = value(getInteger(aL, aw(toString(this))))
1372+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gq), toString(gr), toString(gp), toString(cn), toString(gt), toString(gu), toString(gv)], j))
11491373 }
11501374
11511375
11521376
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1377+@Callable(dF)
1378+func evaluatePutByAmountAssetREADONLY (cx) = {
1379+ let bQ = aS()
1380+ let cd = fromBase58String(bQ[q])
1381+ let cD = bQ[r]
1382+ let ce = fromBase58String(cD)
1383+ let cE = bQ[s]
1384+ let cf = fromBase58String(cE)
1385+ let bR = parseIntValue(bQ[t])
1386+ let bS = parseIntValue(bQ[u])
1387+ let cg = bQ[p]
1388+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1389+ let gq = bB(cD)
1390+ let gr = bB(cE)
1391+ let bM = D(gq, bR)
1392+ let bN = D(gr, bS)
1393+ let cm = if ((gp == 0))
11701394 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1395+ else bD(bN, bM)
1396+ let cJ = D(cx, bR)
1397+ let cK = fraction(cJ, cm, d)
1398+ let cz = G(cK, bS)
1399+ let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1400+ let cU = dL._1
1401+ let gw = dL._3
1402+ let ci = dL._4
1403+ let ck = dL._5
1404+ let ch = dL._6
1405+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
11821406 }
11831407
11841408
11851409
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1410+@Callable(dF)
1411+func evaluatePutByPriceAssetREADONLY (cz) = {
1412+ let bQ = aS()
1413+ let cd = fromBase58String(bQ[q])
1414+ let cD = bQ[r]
1415+ let ce = fromBase58String(cD)
1416+ let cE = bQ[s]
1417+ let cf = fromBase58String(cE)
1418+ let bR = parseIntValue(bQ[t])
1419+ let bS = parseIntValue(bQ[u])
1420+ let cg = bQ[p]
1421+ let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1422+ let gx = bB(cD)
1423+ let gy = bB(cE)
1424+ let gz = D(gx, bR)
1425+ let gA = D(gy, bS)
1426+ let cm = if ((gp == 0))
12031427 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1428+ else bD(gA, gz)
1429+ let cK = D(cz, bS)
1430+ let cJ = fraction(cK, d, cm)
1431+ let cx = G(cJ, bR)
1432+ let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1433+ let cU = dL._1
1434+ let gw = dL._3
1435+ let ci = dL._4
1436+ let ck = dL._5
1437+ let ch = dL._6
1438+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
12151439 }
12161440
12171441
12181442
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1443+@Callable(dF)
1444+func evaluateGetREADONLY (gB,gC) = {
1445+ let cM = bZ("", gB, gC, this)
1446+ let cs = cM._1
1447+ let ct = cM._2
1448+ let ci = cM._5
1449+ let ck = cM._6
1450+ let ch = cM._7
1451+ let cn = cM._8
1452+ let cg = parseIntValue(cM._9)
1453+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(ci), toString(ck), toString(ch), toString(cn), toString(cg)], j))
12301454 }
12311455
12321456
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1457+@Verifier(gD)
1458+func gE () = {
1459+ let gF = {
1460+ let dQ = eT()
1461+ if ($isInstanceOf(dQ, "ByteVector"))
12381462 then {
1239- let ez = dq
1240- ez
1463+ let eX = dQ
1464+ eX
12411465 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1466+ else if ($isInstanceOf(dQ, "Unit"))
1467+ then gD.senderPublicKey
12441468 else throw("Match error")
12451469 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1470+ let dQ = gD
1471+ if ($isInstanceOf(dQ, "Order"))
12481472 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1473+ let dv = dQ
1474+ let gG = aR()
1475+ let aB = du(dv)
1476+ let aC = sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
1477+ let aD = sigVerify(dv.bodyBytes, dv.proofs[1], gG)
1478+ if (if (if (aB)
1479+ then aC
12561480 else false)
1257- then at
1481+ then aD
12581482 else false)
12591483 then true
1260- else aq(ar, as, at)
1484+ else aA(aB, aC, aD)
12611485 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1486+ else if ($isInstanceOf(dQ, "SetScriptTransaction"))
12631487 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1488+ let eU = dQ
1489+ let gH = blake2b256(value(eU.script))
1490+ let gI = fromBase64String(value(getString(aL, ay())))
1491+ let gJ = scriptHash(this)
1492+ if (if ((gI == gH))
1493+ then (gJ != gH)
12701494 else false)
12711495 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1496+ else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
12731497 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1498+ else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
12751499 }
12761500

github/deemru/w8io/026f985 
347.18 ms