tx · Gu1XCsm6Nsx7EV6YeYZ7ng8bPgJRLgYhzfJ5odyV49YZ

3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw:  -0.03500000 Waves

2022.12.16 12:16 [2362664] smart account 3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw > SELF 0.00000000 Waves

{ "type": 13, "id": "Gu1XCsm6Nsx7EV6YeYZ7ng8bPgJRLgYhzfJ5odyV49YZ", "fee": 3500000, "feeAssetId": null, "timestamp": 1671182153729, "version": 1, "sender": "3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw", "senderPublicKey": "4gxnZwoAfBVeM48WyrZLy16TAaS7CUtppRoDqbadsKeA", "proofs": [ "3WAgJ98wGHP4M37ijXMKoPAiijMM42rmJydieKh1cHSr3jZeiyKw7MwsAwmJSsSafg37hwJMyzTgP8uSiKWT8sPr" ], "script": "base64:BgKDLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA3NzcyMDk4OSIDa0xwIg0kdDAyMTQ2MDIxNTYwIg11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNDUyNDUzOCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU0MjI0NjkxIhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MTMyNDg3MiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzNDkyNjUxNiIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI4MTE4MjgxNjgiC3RvdGFsQW1vdW50Ig0kdDAyODE3MjI4Mzk4IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMjkyNjMzMzg4IhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzMzk1MDM0MDE1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM1MjAwMzUzNTIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzU5MzgzNjEzNSINJHQwMzYxMzgzNjI0NiINJHQwMzY1NTIzNjcwOSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzc2MDMzNzc1NiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzODI1NjM4NTAzIhBmZWVBbW91bnRGb3JDYWxjIg0kdDAzODUwNjM4NjE0Ig0kdDAzODg3MTM5MDI3Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzOTkyOTQwMDgwIg0kdDA0MDU3NTQwODIyIg0kdDA0MDgyNTQwOTMzIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0MTg4MTQxOTYzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0MjkxNDQyOTk1Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ0MTE4NDQxOTkiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0NTQ5MTQ1NTcyIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDY3NTk0NjgyMyIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaG8AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSAFJAUsJAKADAQkAvQIEBQFICQC2AgEFAUkFAWQFAUsBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBUQEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFSAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFUAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFVAAIRJXMlc19fcHJpY2VfX2xhc3QBAVYCAVcBWAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVcJAMwIAgkApAMBBQFYBQNuaWwFAWoBAVkCAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFaAgJfXwUCYWEBAmFiAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWgICX18FAmFhAQJhYwACDyVzX19hbW91bnRBc3NldAECYWQAAg4lc19fcHJpY2VBc3NldAACYWUCByVzX19mZWUAAmFmCQBrAwAKBQFiAJBOAAJhZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUCYWYAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFpCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFrAB4AAmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFqBQJhawECYW0AAhElc19fZmFjdG9yeUNvbmZpZwECYW4AAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFvAQJhcAkArAICCQCsAgICCCVzJXMlc19fBQJhcAIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFxAgJhcgJhcwkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXICAl9fBQJhcwIIX19jb25maWcBAmF0AQJhdQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhdQECYXYAAgwlc19fc2h1dGRvd24BAmF3AQJheAkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF4AQJheQACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhegIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFBAwJhQgJhQwJhRAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUICDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUMCDiBtYXRjaGVyVmFs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AQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCYlEJAQJiRQQFAmJPBQJiUAUCYkgFAmJJBAJiQwkBAUQCBQJiSAUCYk8EAmJCCQEBRAIFAmJJBQJiUAQCYlIJAQFEAgUCYk0FAWIEAmJTCQECYkECBQJiQwUCYlIEAmJUCQECYkECBQJiQgUCYlIJAMwIAgUCYlEJAMwIAgUCYlMJAMwIAgUCYlQFA25pbAECYlUDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAzAgCCQEBRwIJAJEDAgUCYlYAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAgUBYgUDbmlsAQJiVwQCYlgCYlkCYloBWgQCYk4JAQJhUAAEAmNhCQCRAwIFAmJOBQFxBAJjYgkAkQMCBQJiTgUBcgQCY2MJAJEDAgUCYk4FAXMEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjYQUCYlkJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNmCQECYnkBBQJjYgQCY2cJAQFEAgUCY2YFAmJGBAJjaAkBAmJ5AQUCY2MEAmNpCQEBRAIFAmNoBQJiRwQCY2oJAQJiQQIFAmNpBQJjZwQCY2sJAQFHAgUCY2oFAWIEAmNsCQEBRAIFAmJaBQFiBAJjbQkBAUQCBQJjZQUBYgQCY24JALwCAwUCY2cFAmNsBQJjbQQCY28JALwCAwUCY2kFAmNsBQJjbQQCY3AJAQFHAgUCY24FAmJGBAJjcQkBAUcCBQJjbwUCYkcEAmNyAwkAAAIFAmJYAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjcAMJAAACBQJjYgIFV0FWRVMFBHVuaXQJANkEAQUCY2IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3EDCQAAAgUCY2MCBVdBVkVTBQR1bml0CQDZBAEFAmNjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUBWgUCYlgJAQJidQYFAmNwBQJjcQUCYloFAmNrBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNrBQNuaWwJAJwKCgUCY3AFAmNxBQJjYgUCY2MFAmNmBQJjaAUCY2UFAmNqBQJjZAUCY3IBAmNzCQJiWAJjdAJjdQJjdgJjdwJjeAFaAmN5AmN6BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNCCQCRAwIFAmJOBQFzBAJjQwkAkQMCBQJiTgUBdgQCY0QJAJEDAgUCYk4FAXcEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNFCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN2CQDZBAECBVdBVkVTBAJjRgkA2AQBCQELdmFsdWVPckVsc2UCBQJjeAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjQQUCY0UGCQECIT0CBQJjQgUCY0YJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjZgMFAmN5CQECYnkBBQJjQQkAZQIJAQJieQEFAmNBBQJjdQQCY2gDBQJjeQkBAmJ5AQUCY0IJAGUCCQECYnkBBQJjQgUCY3cEAmNHCQEBRAIFAmN1BQJiTwQCY0gJAQFEAgUCY3cFAmJQBAJjSQkBAmJBAgUCY0gFAmNHBAJjZwkBAUQCBQJjZgUCYk8EAmNpCQEBRAIFAmNoBQJiUAQCY0oDCQAAAgUCY2UAAAQCY2oFAWUEAmNLBQFlBAJiUgkAdgYJALkCAgUCY0cFAmNIAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJSBQFiCQEBRwIFAmNHBQJiTwkBAUcCBQJjSAUCYlAJAQJiQQIJALcCAgUCY2kFAmNICQC3AgIFAmNnBQJjRwUCY0sEAmNqCQECYkECBQJjaQUCY2cEAmNLCQC8AgMJAQFRAQkAuAICBQJjagUCY0kFAWQFAmNqBAJjTAkBAUQCBQJjdAUBYgMDCQECIT0CBQJjagUBZQkAvwICBQJjSwUCY0wHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNLAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0wEAmNtCQEBRAIFAmNlBQFiBAJjTQkAvQIEBQJjRwkBAmJEAwUCY2kFAmNnBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjTgkAvQIEBQJjSAUBZAkBAmJEAwUCY2kFAmNnBQVGTE9PUgUHQ0VJTElORwQCY08DCQC/AgIFAmNNBQJjSAkAlAoCBQJjTgUCY0gJAJQKAgUCY0cFAmNNBAJjUAgFAmNPAl8xBAJjUQgFAmNPAl8yBAJiUgkAvQIEBQJjbQUCY1EFAmNpBQVGTE9PUgkAlwoFCQEBSgMFAmJSBQFiBQVGTE9PUgkBAUoDBQJjUAUCYk8FB0NFSUxJTkcJAQFKAwUCY1EFAmJQBQdDRUlMSU5HBQJjagUCY0sEAmNSCAUCY0oCXzEEAmNTCAUCY0oCXzIEAmNUCAUCY0oCXzMEAmNrCQEBRwIIBQJjSgJfNAUBYgQCY1UJAQFHAggFAmNKAl81BQFiAwkAZwIAAAUCY1IJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNWAwkBASEBBQJjegAABQJjUgQCY1cJAGUCBQJjdQUCY1MEAmNYCQBlAgUCY3cFAmNUBAJjWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIFAVoFAmJYCQECYmoKBQJjUwUCY1QFAmNWBQJjawUCY3QFAmNVBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVwUCY1gFA25pbAkAnwoNBQJjUgUCY1YFAmNrBQJjZgUCY2gFAmNlBQJjYQUCY2QFAmNZBQJjVwUCY1gFAmN2BQJjeAECY1oDAmRhAmRiAmNlBAJkYwkAvAIDCQB2BgkAuQICBQJkYQUCZGIAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjZQMJAAACBQJjZQUBZgUBZgUCZGMBAmRkAwJkZQJkZgJkZwQCZGgJALgCAgkAtgIBCQECYnkBCQECYVUBBQJiYwUCZGUEAmRpCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmQFAmRmBAJkagkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJiCHF1YW50aXR5BQJkZwQCZGsJAQJjWgMFAmRoBQJkaQUCZGoFAmRrAQJkbAMCZG0CZG4CZGcEAmRoCQBkAgkBAmJ5AQkBAmFVAQUCYmMFAmRtBAJkaQkAZAIJAQJieQEJAQJhVQEFAmJkBQJkbgQCZGoJAGQCCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRjCQECY1oDCQC2AgEFAmRoCQC2AgEFAmRpCQC2AgEFAmRqBAJkbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWkFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhaAkApgMBBQJkYwUDbmlsCQCUCgIFAmRvBQJkYwECZHACAmRxAmRjAwkAwAICBQJkYwUCZHEGCQECYUkBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmRxCQDMCAIJAKYDAQUCZGMFA25pbAIBIAECZHIBAmRzBAJkdAgFAmRzBmFtb3VudAQCZHUJAG4ECAUCZHMGYW1vdW50CAUCZHMFcHJpY2UFAWIFBUZMT09SBAJkdgMJAAACCAUCZHMJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZHQJAQEtAQUCZHUJAJQKAgkBAS0BBQJkdAUCZHUEAmRtCAUCZHYCXzEEAmRuCAUCZHYCXzIDAwMJAQJhTgAGCQAAAgUCYmEFAW0GCQAAAgUCYmEFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZHMJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiYwYJAQIhPQIICAUCZHMJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJkCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYWgJAQJhSwECD2tMcCBpcyByZXF1aXJlZAkBAmFLAQILaW52YWxpZCBrTHAEAmR4CQECZGwDBQJkbQUCZG4AAAQCZHkIBQJkeAJfMQQCZHoIBQJkeAJfMgQCZEEJAMACAgUCZHoFAmR3BQJkQQECZEIBAmRDAwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkRAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCYlkJAQV2YWx1ZQEIBQJkRAdhc3NldElkBAJkRQgFAmREBmFtb3VudAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYlkFAmRFCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNyCAUCY0oDXzEwAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkCQCXCgUFAmNwBQJjcQUCZEUFAmJZBQJjcgECZEYDAmRDAmN0AmN6AwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRHCQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABAJkSAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAQQCZEkJAQJjcwkJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQFAmN0CAUCZEcGYW1vdW50CAUCZEcHYXNzZXRJZAgFAmRIBmFtb3VudAgFAmRIB2Fzc2V0SWQJAKUIAQgFAmRDBmNhbGxlcgcFAmN6BAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCZEkCXzgDAwMJAQJhTgAGCQAAAgUCY2QFAWwGCQAAAgUCY2QFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBQJkSQECZEoBAmRLBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRQAQJkSwQCZFEJAGsDBQJkSwUCYWcFAWIJAJQKAgkAZQIFAmRLBQJkUQUCZFEBAmRSBAJkUwJkVAFaAmFhBAJkVQkAAAIFAmFhBQR1bml0BAJkVgkBAmJ5AQkBAmFVAQUCYmMEAmRXCQECYnkBCQECYVUBBQJiZAQCZFgDCQAAAgUCZFQFAmJjBgMJAAACBQJkVAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJkWQMFAmRVCQCUCgIFAmRWBQJkVwMFAmRYCQCUCgIJAGUCBQJkVgUCZFMFAmRXCQCUCgIFAmRWCQBlAgUCZFcFAmRTBAJkWggFAmRZAl8xBAJlYQgFAmRZAl8yBAJlYgMFAmRYCQCUCgIFAmRTAAAJAJQKAgAABQJkUwQCZWMIBQJlYgJfMQQCZWQIBQJlYgJfMgQCZHQICQECZFABBQJlYwJfMQQCZHUICQECZFABBQJlZAJfMQQCZWUJAQJkUAEFAmRTBAJlZggFAmVlAl8xBAJkUQgFAmVlAl8yBAJlZwkAZAIFAmRaBQJkdAQCZWgJAGQCBQJlYQUCZHUEAmVpCQECYkECCQEBRAIFAmVoBQJiZgkBAUQCBQJlZwUCYmUEAmVqCQEBRwIFAmVpBQFiBAJlawMFAmRYBQJkWgUCZWEEAmVsCQC2AgEFAmVrBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZW4DCQC/AgIFAmVtBQFmBgkBAmFJAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlbgUCZW4EAmVvCQC2AgEFAmVmBAJlcAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbQkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVvBQFkBQJlbAASABIFBERPV04FAWQFAWQFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZXkJAMwIAgMJAAACBQJkVAUCYmIGCQECYUkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZXkFAmV5BAJlegMJAAACBQJleAUCYmMGAwkAAAIFAmV4BQJiZAcJAQJhSQECDWludmFsaWQgYXNzZXQEAmVBAwUCZXoJALYCAQkBAmJ5AQkBAmFVAQUCYmMJALYCAQkBAmJ5AQkBAmFVAQUCYmQEAmVCCQECYnkBCQECYVUBBQJiYwQCZUMJAQJieQEJAQJhVQEFAmJkBAJlRAMFAmV6BQJlQgUCZUMEAmVFCQC2AgEFAmVEBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUYJALYCAQUCZWYEAmVHCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVBCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlRgUBZAUCZW0AEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUgJAQJkUAEFAmVHBAJlSQgFAmVIAl8xBAJkUQgFAmVIAl8yBAJlSgMFAmV6CQCWCgQFAmVJAAAJAGUCBQJlQgUCZUcFAmVDCQCWCgQAAAUCZUkFAmVCCQBlAgUCZUMFAmVHBAJlSwgFAmVKAl8xBAJlTAgFAmVKAl8yBAJlTQgFAmVKAl8zBAJlTggFAmVKAl80BAJlaQkBAmJBAgkBAUQCBQJlTgUCYmYJAQFEAgUCZU0FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUsFAmVMBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUMFAmJmCQEBRAIFAmVCBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlTwkAaAIJAKADAQkAvAIDBQJlQQUCZUYFAmVtAAIJAGsDCQBlAgUCZUkFAmVPBQFiBQJlTwkAlwoFBQJlSQUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVQAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVRBQJkTgkA2QQBBQJlUQMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUgAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUQUCZE4JANkEAQUCZVEDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVMBAmRDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVQDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVVAQJkQwQCZVYJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUAADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVUBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVAYFAmVWAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVgkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVcEAmVYCQECZVUBBQJkQwMJAAACBQJlWAUCZVgEAmVZCQDZBAEFAmVXAwkAAAIFAmVZBQJlWQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVXBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZVoJAQJlUgAEAmZhAwkBCWlzRGVmaW5lZAEFAmVaBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYQUCZmEEAmZiAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmVaBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmVaCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZjAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmQIBQJkSQNfMTIEAmZlCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmYDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZkBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmYFAmZmBAJmZwMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmUFAmNYBQNuaWwFA25pbAMJAAACBQJmZwUCZmcEAmZoAwUCZmMEAmZpCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmaQUCZmkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmoJAQJkbAMAAAAAAAADCQAAAgUCZmoFAmZqBAJkYwgFAmZqAl8yBAJmawgFAmZqAl8xBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCCQDOCAIFAmNyBQJmaAUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZtAwkAZgIAAAUCZm0JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbQcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZuCQECZGwDAAAAAAAABAJmawgFAmZuAl8xBAJkYwgFAmZuAl8yBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCBQJjcgUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZm8CZnAEAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnMDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcQQCZXkJAMwIAgMDCQEBIQEFAmZzBgkBAmVTAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdAkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdAdhc3NldElkBAJkUwgFAmZ0BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJmdQkBAmRSBAUCZFMFAmRUBQFaBQJhYQMJAAACBQJmdQUCZnUEAmRYCAUCZnUCXzUEAmZ2CAUCZnUCXzQEAmRRCAUCZnUCXzMEAmNZCAUCZnUCXzIEAmZ3CAUCZnUCXzEEAmZ4AwMJAGYCBQJmbwAACQBmAgUCZm8FAmZ3BwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmbwUDbmlsAgAFAmZ3BAJkTAkBAmRKAQUCZngDCQAAAgUCZEwFAmRMBAJmaAMFAmZwBAJmeQkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZ4BQNuaWwDCQAAAgUCZnkFAmZ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZngFAmJiBQNuaWwEAmZ6AwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJkVAUDbmlsBQNuaWwEAmZBAwkAAAIFBHRoaXMFAmFNCQCUCgIAAAAAAwUCZFgJAJQKAgkBAS0BBQJkUQAACQCUCgIAAAkBAS0BBQJkUQQCZG0IBQJmQQJfMQQCZG4IBQJmQQJfMgQCZkIJAQJkbAMFAmRtBQJkbgAABAJmawgFAmZCAl8xBAJkYwgFAmZCAl8yBAJkdwkBBXZhbHVlAQkAoggBBQJhaAQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZoBQJmegUCZmsFAmZ4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARFwdXRPbmVUa25SRUFET05MWQICZFQCZFMEAmZDCQECZFIEBQJkUwkBAmFTAQUCZFQFBHVuaXQFBHVuaXQEAmZ3CAUCZkMCXzEEAmNZCAUCZkMCXzIEAmRRCAUCZkMCXzMEAmZ2CAUCZkMCXzQEAmRYCAUCZkMCXzUJAJQKAgUDbmlsCQCVCgMFAmZ3BQJkUQUCZnYCZEMBCWdldE9uZVRrbgICZkQCZm8EAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkUDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZx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AAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlUJAQJkbAMJAQEtAQUCZlMJAQEtAQUCY3EAAAQCZmsIBQJmVQJfMQQCZGMIBQJmVQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlnZXROb0xlc3MCAmZWAmZXBAJjSgkBAmRCAQUCZEMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUDCQBmAgUCZlYFAmNwCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjcAIDIDwgCQCkAwEFAmZWAwkAZgIFAmZXBQJjcQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNxAgMgPCAJAKQDAQUCZlcEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlgJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJmWAJfMQQCZGMIBQJmWAJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZlkDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWQUCZlkEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZk8JAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJjYQkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZk8FAmZPBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYQUCZEsIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTAEAmZaAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBgMJAAACBQJmWgUCZloEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJkSwUDbmlsAwkAAAIFAmZUBQJmVAQCZ2EJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJnYQJfMQQCZGMIBQJnYQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmTgJnYgJmVwQCZkUDCQECYU4ABgkAAAIFAmJhBQFuBAJleQkAzAgCAwkBASEBBQJmRQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZPCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk4FA25pbAUDbmlsAwkAAAIFAmZPBQJmTwQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZOCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2MJAMwIAgMJAGcCBQJjcAUCZ2IGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2IFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZXBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlcFA25pbAIABQNuaWwDCQAAAgUCZ2MFAmdjBAJmVAkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk4FA25pbAMJAAACBQJmVAUCZlQEAmdkCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZrCAUCZ2QCXzEEAmRjCAUCZ2QCXzIEAmZsCQECZHACBQJkawUCZGMDCQAAAgUCZmwFAmZsCQDOCAIFAmNyBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZh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ZCVkCQDMCAIJAKQDAQUCZ24JAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmdtCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncQkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3MFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmduCQECYnkBBQJjQQQCZ28JAQJieQEFAmNCBAJiSgkBAUQCBQJnbgUCYk8EAmJLCQEBRAIFAmdvBQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCYksFAmJKBAJjRwkBAUQCBQJjdQUCYk8EAmNICQC8AgMFAmNHBQJjagUBZAQCY3cJAQFHAgUCY0gFAmJQBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN3BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd1CQECYnkBBQJjQQQCZ3YJAQJieQEFAmNCBAJndwkBAUQCBQJndQUCYk8EAmd4CQEBRAIFAmd2BQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCZ3gFAmd3BAJjSAkBAUQCBQJjdwUCYlAEAmNHCQC8AgMFAmNIBQFkBQJjagQCY3UJAQFHAgUCY0cFAmJPBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmd5Amd6BAJjSgkBAmJXBAIABQJneQUCZ3oFBHRoaXMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNmCAUCY0oCXzUEAmNoCAUCY0oCXzYEAmNlCAUCY0oCXzcEAmNrCAUCY0oCXzgEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNwCQDMCAIJAKQDAQUCY3EJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgkApgMBBQJjawkAzAgCCQCkAwEFAmNkBQNuaWwFAWoBAmdBAQJnQgAEAmdDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROBQJlVAMJAAECBQJkTgIEVW5pdAgFAmdBD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkTgUCZ0EDCQABAgUCZE4CBU9yZGVyBAJkcwUCZE4EAmdECQECYU8ABAJhQgkBAmRyAQUCZHMEAmFDCQD0AwMIBQJkcwlib2R5Qnl0ZXMJAJEDAggFAmRzBnByb29mcwAACAUCZHMPc2VuZGVyUHVibGljS2V5BAJhRAkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAQUCZ0QDAwMFAmFCBQJhQwcFAmFEBwYJAQJhQQMFAmFCBQJhQwUCYUQDCQABAgUCZE4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlUQUCZE4EAmdFCQD2AwEJAQV2YWx1ZQEIBQJlUQZzY3JpcHQEAmdGCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUwJAQJheQAEAmdHCQDxBwEFBHRoaXMDAwkAAAIFAmdGBQJnRQkBAiE9AgUCZ0cFAmdFBwYJAPQDAwgFAmdBCWJvZHlCeXRlcwkAkQMCCAUCZ0EGcHJvb2ZzAAAFAmdDCQD0AwMIBQJnQQlib2R5Qnl0ZXMJAJEDAggFAmdBBnByb29mcwAABQJnQ3+fCEw=", "chainId": 84, "height": 2362664, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AtGFmv2faRgPKGPo7bq3ujBznsUz9iMLJdQ3VHPQN4Ay Next: 4tkkQSmcghSEKdfPHdYpDaXHJDY7X9E2DTJGDVHrNByT Diff:
OldNewDifferences
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291- let cp = J(cn, bF, FLOOR)
292- let cq = J(co, bG, FLOOR)
291+ let cp = G(cn, bF)
292+ let cq = G(co, bG)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547- let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
547+ let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548548 let cY = if (dU)
549549 then nil
550550 else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570- let bN = aP()
571- let bO = parseIntValue(bN[t])
572- let bP = parseIntValue(bN[u])
573570 let ey = [if ((dT == bb))
574571 then true
575572 else aI("invalid lp asset")]
583580 let eA = if (ez)
584581 then toBigInt(by(aU(bc)))
585582 else toBigInt(by(aU(bd)))
586- let eB = if (ez)
587- then bO
588- else bP
589- let eC = by(aU(bc))
590- let eD = by(aU(bd))
591- let eE = if (ez)
592- then eC
593- else eD
594- let eF = toBigInt(eE)
583+ let eB = by(aU(bc))
584+ let eC = by(aU(bd))
585+ let eD = if (ez)
586+ then eB
587+ else eC
588+ let eE = toBigInt(eD)
595589 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596- let eG = toBigInt(ef)
597- let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598- let eI = dP(eH)
599- let eJ = eI._1
600- let dQ = eI._2
601- let eK = if (ez)
602- then $Tuple4(eJ, 0, (eC - eH), eD)
603- else $Tuple4(0, eJ, eC, (eD - eH))
604- let eL = eK._1
605- let eM = eK._2
606- let eN = eK._3
607- let eO = eK._4
608- let ei = bA(D(eO, bf), D(eN, be))
590+ let eF = toBigInt(ef)
591+ let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592+ let eH = dP(eG)
593+ let eI = eH._1
594+ let dQ = eH._2
595+ let eJ = if (ez)
596+ then $Tuple4(eI, 0, (eB - eG), eC)
597+ else $Tuple4(0, eI, eB, (eC - eG))
598+ let eK = eJ._1
599+ let eL = eJ._2
600+ let eM = eJ._3
601+ let eN = eJ._4
602+ let ei = bA(D(eN, bf), D(eM, be))
609603 let ej = G(ei, b)
610604 let cY = if (dU)
611605 then nil
612- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613- let eq = bA(D(eD, bf), D(eC, be))
606+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607+ let eq = bA(D(eC, bf), D(eB, be))
614608 let er = G(eq, b)
615609 let es = {
616- let eP = (toInt(fraction(eA, eG, em)) * 2)
617- fraction((eJ - eP), b, eP)
610+ let eO = (toInt(fraction(eA, eF, em)) * 2)
611+ fraction((eI - eO), b, eO)
618612 }
619- $Tuple5(eJ, cY, dQ, es, ez)
613+ $Tuple5(eI, cY, dQ, es, ez)
620614 }
621615 else throw("Strict value is not equal to itself.")
622616 }
623617
624618
625-func eQ () = {
619+func eP () = {
626620 let dN = getString(S())
627621 if ($isInstanceOf(dN, "String"))
628622 then {
629- let eR = dN
630- fromBase58String(eR)
623+ let eQ = dN
624+ fromBase58String(eQ)
631625 }
632626 else if ($isInstanceOf(dN, "Unit"))
633627 then unit
635629 }
636630
637631
638-func eS () = {
632+func eR () = {
639633 let dN = getString(T())
640634 if ($isInstanceOf(dN, "String"))
641635 then {
642- let eR = dN
643- fromBase58String(eR)
636+ let eQ = dN
637+ fromBase58String(eQ)
644638 }
645639 else if ($isInstanceOf(dN, "Unit"))
646640 then unit
648642 }
649643
650644
651-func eT (dC) = {
652- let dN = eQ()
645+func eS (dC) = {
646+ let dN = eP()
653647 if ($isInstanceOf(dN, "ByteVector"))
654648 then {
655- let eU = dN
656- (dC.callerPublicKey == eU)
649+ let eT = dN
650+ (dC.callerPublicKey == eT)
657651 }
658652 else if ($isInstanceOf(dN, "Unit"))
659653 then (dC.caller == this)
661655 }
662656
663657
664-func eV (dC) = {
665- let eW = throw("Permission denied")
666- let dN = eQ()
658+func eU (dC) = {
659+ let eV = throw("Permission denied")
660+ let dN = eP()
667661 if ($isInstanceOf(dN, "ByteVector"))
668662 then {
669- let eU = dN
670- if ((dC.callerPublicKey == eU))
663+ let eT = dN
664+ if ((dC.callerPublicKey == eT))
671665 then true
672- else eW
666+ else eV
673667 }
674668 else if ($isInstanceOf(dN, "Unit"))
675669 then if ((dC.caller == this))
676670 then true
677- else eW
671+ else eV
678672 else throw("Match error")
679673 }
680674
681675
682676 @Callable(dC)
683-func setManager (eX) = {
684- let eY = eV(dC)
685- if ((eY == eY))
677+func setManager (eW) = {
678+ let eX = eU(dC)
679+ if ((eX == eX))
686680 then {
687- let eZ = fromBase58String(eX)
688- if ((eZ == eZ))
689- then [StringEntry(T(), eX)]
681+ let eY = fromBase58String(eW)
682+ if ((eY == eY))
683+ then [StringEntry(T(), eW)]
690684 else throw("Strict value is not equal to itself.")
691685 }
692686 else throw("Strict value is not equal to itself.")
696690
697691 @Callable(dC)
698692 func confirmManager () = {
699- let fa = eS()
700- let fb = if (isDefined(fa))
693+ let eZ = eR()
694+ let fa = if (isDefined(eZ))
701695 then true
702696 else throw("No pending manager")
703- if ((fb == fb))
697+ if ((fa == fa))
704698 then {
705- let fc = if ((dC.callerPublicKey == value(fa)))
699+ let fb = if ((dC.callerPublicKey == value(eZ)))
706700 then true
707701 else throw("You are not pending manager")
708- if ((fc == fc))
709- then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
702+ if ((fb == fb))
703+ then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
710704 else throw("Strict value is not equal to itself.")
711705 }
712706 else throw("Strict value is not equal to itself.")
715709
716710
717711 @Callable(dC)
718-func put (ct,fd) = if ((0 > ct))
712+func put (ct,fc) = if ((0 > ct))
719713 then throw("Invalid slippageTolerance passed")
720714 else {
721715 let dI = dF(dC, ct, true)
724718 let cr = dI._9
725719 let cW = dI._10
726720 let cX = dI._11
727- let fe = dI._12
728- let ff = dI._13
721+ let fd = dI._12
722+ let fe = dI._13
729723 let dG = toBigInt(value(dC.payments[0]).amount)
730724 let dH = toBigInt(value(dC.payments[1]).amount)
731725 let dk = dd(dG, dH, toBigInt(0))
745739 }
746740 if ((dM == dM))
747741 then {
748- let fg = if ((cW > 0))
749- then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
742+ let ff = if ((cW > 0))
743+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
750744 else nil
751- if ((fg == fg))
745+ if ((ff == ff))
752746 then {
753- let fh = if ((cX > 0))
754- then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
747+ let fg = if ((cX > 0))
748+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
755749 else nil
756- if ((fh == fh))
750+ if ((fg == fg))
757751 then {
758- let fi = if (fd)
752+ let fh = if (fc)
759753 then {
760- let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761- if ((fj == fj))
754+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755+ if ((fi == fi))
762756 then nil
763757 else throw("Strict value is not equal to itself.")
764758 }
765759 else [ScriptTransfer(dC.caller, cV, ca)]
766- let fk = dl(0, 0, 0)
767- if ((fk == fk))
760+ let fj = dl(0, 0, 0)
761+ if ((fj == fj))
768762 then {
769- let dc = fk._2
770- let fl = fk._1
771- let fm = dp(dk, dc)
772- if ((fm == fm))
773- then ((cr ++ fi) ++ fl)
763+ let dc = fj._2
764+ let fk = fj._1
765+ let fl = dp(dk, dc)
766+ if ((fl == fl))
767+ then ((cr ++ fh) ++ fk)
774768 else throw("Strict value is not equal to itself.")
775769 }
776770 else throw("Strict value is not equal to itself.")
789783
790784
791785 @Callable(dC)
792-func putForFree (fn) = if ((0 > fn))
786+func putForFree (fm) = if ((0 > fm))
793787 then throw("Invalid value passed")
794788 else {
795- let dI = dF(dC, fn, false)
789+ let dI = dF(dC, fm, false)
796790 let cr = dI._9
797791 let dG = toBigInt(value(dC.payments[0]).amount)
798792 let dH = toBigInt(value(dC.payments[1]).amount)
799793 let dk = dd(dG, dH, toBigInt(0))
800794 if ((dk == dk))
801795 then {
802- let fo = dl(0, 0, 0)
803- let fl = fo._1
804- let dc = fo._2
805- let fm = dp(dk, dc)
806- if ((fm == fm))
807- then (cr ++ fl)
796+ let fn = dl(0, 0, 0)
797+ let fk = fn._1
798+ let dc = fn._2
799+ let fl = dp(dk, dc)
800+ if ((fl == fl))
801+ then (cr ++ fk)
808802 else throw("Strict value is not equal to itself.")
809803 }
810804 else throw("Strict value is not equal to itself.")
813807
814808
815809 @Callable(dC)
816-func putOneTkn (fp,fq) = {
817- let fr = {
818- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819- if ($isInstanceOf(fs, "Boolean"))
820- then fs
821- else throw(($getType(fs) + " couldn't be cast to Boolean"))
810+func putOneTkn (fo,fp) = {
811+ let fq = {
812+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813+ if ($isInstanceOf(fr, "Boolean"))
814+ then fr
815+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
822816 }
823- let ft = if (if (if (aN())
817+ let fs = if (if (if (aN())
824818 then true
825819 else (ba == l))
826820 then true
827821 else (ba == n))
828822 then true
829- else fr
830- let ey = [if (if (!(ft))
823+ else fq
824+ let ey = [if (if (!(fs))
831825 then true
832- else eT(dC))
826+ else eS(dC))
833827 then true
834828 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
835829 then true
836830 else aI("exactly 1 payment are expected")]
837831 if ((ey == ey))
838832 then {
839- let fu = dC.payments[0]
840- let dT = fu.assetId
841- let dS = fu.amount
833+ let ft = dC.payments[0]
834+ let dT = ft.assetId
835+ let dS = ft.amount
842836 let dk = if ((dT == bc))
843837 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844838 else if ((dT == bd))
846840 else aI("payment asset is not supported")
847841 let Z = dC.caller
848842 let aa = dC.transactionId
849- let fv = dR(dS, dT, Z, aa)
850- if ((fv == fv))
843+ let fu = dR(dS, dT, Z, aa)
844+ if ((fu == fu))
851845 then {
852- let dX = fv._5
853- let fw = fv._4
854- let dQ = fv._3
855- let cY = fv._2
856- let fx = fv._1
857- let fy = if (if ((fp > 0))
858- then (fp > fx)
846+ let dX = fu._5
847+ let fv = fu._4
848+ let dQ = fu._3
849+ let cY = fu._2
850+ let fw = fu._1
851+ let fx = if (if ((fo > 0))
852+ then (fo > fw)
859853 else false)
860- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861- else fx
862- let dL = dJ(fy)
854+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855+ else fw
856+ let dL = dJ(fx)
863857 if ((dL == dL))
864858 then {
865- let fi = if (fq)
859+ let fh = if (fp)
866860 then {
867- let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868- if ((fz == fz))
861+ let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862+ if ((fy == fy))
869863 then nil
870864 else throw("Strict value is not equal to itself.")
871865 }
872- else [ScriptTransfer(dC.caller, fy, bb)]
873- let fA = if ((dQ > 0))
866+ else [ScriptTransfer(dC.caller, fx, bb)]
867+ let fz = if ((dQ > 0))
874868 then [ScriptTransfer(aM, dQ, dT)]
875869 else nil
876- let fB = if ((this == aM))
870+ let fA = if ((this == aM))
877871 then $Tuple2(0, 0)
878872 else if (dX)
879873 then $Tuple2(-(dQ), 0)
880874 else $Tuple2(0, -(dQ))
881- let dm = fB._1
882- let dn = fB._2
883- let fC = dl(dm, dn, 0)
884- let fl = fC._1
885- let dc = fC._2
875+ let dm = fA._1
876+ let dn = fA._2
877+ let fB = dl(dm, dn, 0)
878+ let fk = fB._1
879+ let dc = fB._2
886880 let dw = value(getString(ah))
887- let fm = dp(dk, dc)
888- if ((fm == fm))
889- then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
881+ let fl = dp(dk, dc)
882+ if ((fl == fl))
883+ then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
890884 else throw("Strict value is not equal to itself.")
891885 }
892886 else throw("Strict value is not equal to itself.")
900894
901895 @Callable(dC)
902896 func putOneTknREADONLY (dT,dS) = {
903- let fD = dR(dS, aS(dT), unit, unit)
904- let fx = fD._1
905- let cY = fD._2
906- let dQ = fD._3
907- let fw = fD._4
908- let dX = fD._5
909- $Tuple2(nil, $Tuple3(fx, dQ, fw))
897+ let fC = dR(dS, aS(dT), unit, unit)
898+ let fw = fC._1
899+ let cY = fC._2
900+ let dQ = fC._3
901+ let fv = fC._4
902+ let dX = fC._5
903+ $Tuple2(nil, $Tuple3(fw, dQ, fv))
910904 }
911905
912906
913907
914908 @Callable(dC)
915-func getOneTkn (fE,fp) = {
916- let fr = {
917- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
918- if ($isInstanceOf(fs, "Boolean"))
919- then fs
920- else throw(($getType(fs) + " couldn't be cast to Boolean"))
909+func getOneTkn (fD,fo) = {
910+ let fq = {
911+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912+ if ($isInstanceOf(fr, "Boolean"))
913+ then fr
914+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
921915 }
922- let fF = if (if (aN())
916+ let fE = if (if (aN())
923917 then true
924918 else (ba == n))
925919 then true
926- else fr
927- let ey = [if (if (!(fF))
920+ else fq
921+ let ey = [if (if (!(fE))
928922 then true
929- else eT(dC))
923+ else eS(dC))
930924 then true
931925 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
932926 then true
933927 else aI("exactly 1 payment are expected")]
934928 if ((ey == ey))
935929 then {
936- let ex = aS(fE)
937- let fu = dC.payments[0]
938- let dT = fu.assetId
939- let ef = fu.amount
930+ let ex = aS(fD)
931+ let ft = dC.payments[0]
932+ let dT = ft.assetId
933+ let ef = ft.amount
940934 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
941935 let Z = dC.caller
942936 let aa = dC.transactionId
943- let fG = ew(ex, ef, dT, Z, aa)
944- if ((fG == fG))
937+ let fF = ew(ex, ef, dT, Z, aa)
938+ if ((fF == fF))
945939 then {
946- let ez = fG._5
947- let fw = fG._4
948- let dQ = fG._3
949- let cY = fG._2
950- let fH = fG._1
951- let dK = if (if ((fp > 0))
952- then (fp > fH)
940+ let ez = fF._5
941+ let fv = fF._4
942+ let dQ = fF._3
943+ let cY = fF._2
944+ let fG = fF._1
945+ let dK = if (if ((fo > 0))
946+ then (fo > fG)
953947 else false)
954- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
955- else fH
956- let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
957- if ((fI == fI))
948+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949+ else fG
950+ let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951+ if ((fH == fH))
958952 then {
959- let fJ = [ScriptTransfer(Z, dK, ex)]
960- let fA = if ((dQ > 0))
953+ let fI = [ScriptTransfer(Z, dK, ex)]
954+ let fz = if ((dQ > 0))
961955 then [ScriptTransfer(aM, dQ, ex)]
962956 else nil
963- let fK = {
964- let fL = if ((this == aM))
957+ let fJ = {
958+ let fK = if ((this == aM))
965959 then 0
966960 else dQ
967961 if (ez)
968- then $Tuple2(-((dK + fL)), 0)
969- else $Tuple2(0, -((dK + fL)))
962+ then $Tuple2(-((dK + fK)), 0)
963+ else $Tuple2(0, -((dK + fK)))
970964 }
971- let dm = fK._1
972- let dn = fK._2
973- let fM = dl(dm, dn, 0)
974- let fl = fM._1
975- let dc = fM._2
976- let fm = dp(dk, dc)
977- if ((fm == fm))
978- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
965+ let dm = fJ._1
966+ let dn = fJ._2
967+ let fL = dl(dm, dn, 0)
968+ let fk = fL._1
969+ let dc = fL._2
970+ let fl = dp(dk, dc)
971+ if ((fl == fl))
972+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
979973 else throw("Strict value is not equal to itself.")
980974 }
981975 else throw("Strict value is not equal to itself.")
989983
990984 @Callable(dC)
991985 func getOneTknREADONLY (ex,ef) = {
992- let fN = ew(aS(ex), ef, bb, unit, unit)
993- let fH = fN._1
994- let cY = fN._2
995- let dQ = fN._3
996- let fw = fN._4
997- let ez = fN._5
998- $Tuple2(nil, $Tuple3(fH, dQ, fw))
986+ let fM = ew(aS(ex), ef, bb, unit, unit)
987+ let fG = fM._1
988+ let cY = fM._2
989+ let dQ = fM._3
990+ let fv = fM._4
991+ let ez = fM._5
992+ $Tuple2(nil, $Tuple3(fG, dQ, fv))
999993 }
1000994
1001995
1002996
1003997 @Callable(dC)
1004-func unstakeAndGetOneTkn (fO,fE,fp) = {
1005- let fr = {
1006- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1007- if ($isInstanceOf(fs, "Boolean"))
1008- then fs
1009- else throw(($getType(fs) + " couldn't be cast to Boolean"))
998+func unstakeAndGetOneTkn (fN,fD,fo) = {
999+ let fq = {
1000+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001+ if ($isInstanceOf(fr, "Boolean"))
1002+ then fr
1003+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
10101004 }
1011- let fF = if (if (aN())
1005+ let fE = if (if (aN())
10121006 then true
10131007 else (ba == n))
10141008 then true
1015- else fr
1016- let ey = [if (if (!(fF))
1009+ else fq
1010+ let ey = [if (if (!(fE))
10171011 then true
1018- else eT(dC))
1012+ else eS(dC))
10191013 then true
10201014 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10211015 then true
10221016 else aI("no payments are expected")]
10231017 if ((ey == ey))
10241018 then {
1025- let ex = aS(fE)
1019+ let ex = aS(fD)
10261020 let Z = dC.caller
10271021 let aa = dC.transactionId
10281022 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1029- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030- if ((fP == fP))
1023+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024+ if ((fO == fO))
10311025 then {
1032- let fQ = ew(ex, fO, bb, Z, aa)
1033- if ((fQ == fQ))
1026+ let fP = ew(ex, fN, bb, Z, aa)
1027+ if ((fP == fP))
10341028 then {
1035- let ez = fQ._5
1036- let fw = fQ._4
1037- let dQ = fQ._3
1038- let cY = fQ._2
1039- let fH = fQ._1
1040- let dK = if (if ((fp > 0))
1041- then (fp > fH)
1029+ let ez = fP._5
1030+ let fv = fP._4
1031+ let dQ = fP._3
1032+ let cY = fP._2
1033+ let fG = fP._1
1034+ let dK = if (if ((fo > 0))
1035+ then (fo > fG)
10421036 else false)
1043- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1044- else fH
1045- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1046- if ((fI == fI))
1037+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038+ else fG
1039+ let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040+ if ((fH == fH))
10471041 then {
1048- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049- let fA = if ((dQ > 0))
1042+ let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043+ let fz = if ((dQ > 0))
10501044 then [ScriptTransfer(aM, dQ, ex)]
10511045 else nil
1052- let fR = {
1053- let fL = if ((this == aM))
1046+ let fQ = {
1047+ let fK = if ((this == aM))
10541048 then 0
10551049 else dQ
10561050 if (ez)
1057- then $Tuple2(-((dK + fL)), 0)
1058- else $Tuple2(0, -((dK + fL)))
1051+ then $Tuple2(-((dK + fK)), 0)
1052+ else $Tuple2(0, -((dK + fK)))
10591053 }
1060- let dm = fR._1
1061- let dn = fR._2
1062- let fS = dl(dm, dn, 0)
1063- let fl = fS._1
1064- let dc = fS._2
1065- let fm = dp(dk, dc)
1066- if ((fm == fm))
1067- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1054+ let dm = fQ._1
1055+ let dn = fQ._2
1056+ let fR = dl(dm, dn, 0)
1057+ let fk = fR._1
1058+ let dc = fR._2
1059+ let fl = dp(dk, dc)
1060+ if ((fl == fl))
1061+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
10681062 else throw("Strict value is not equal to itself.")
10691063 }
10701064 else throw("Strict value is not equal to itself.")
10811075 @Callable(dC)
10821076 func get () = {
10831077 let cJ = dB(dC)
1084- let fT = cJ._1
1078+ let fS = cJ._1
10851079 let cq = cJ._2
10861080 let dE = cJ._3
10871081 let bY = cJ._4
10881082 let cr = cJ._5
10891083 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1090- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091- if ((fU == fU))
1084+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085+ if ((fT == fT))
10921086 then {
1093- let fV = dl(-(fT), -(cq), 0)
1094- let fl = fV._1
1095- let dc = fV._2
1096- let fm = dp(dk, dc)
1097- if ((fm == fm))
1098- then (cr ++ fl)
1087+ let fU = dl(-(fS), -(cq), 0)
1088+ let fk = fU._1
1089+ let dc = fU._2
1090+ let fl = dp(dk, dc)
1091+ if ((fl == fl))
1092+ then (cr ++ fk)
10991093 else throw("Strict value is not equal to itself.")
11001094 }
11011095 else throw("Strict value is not equal to itself.")
11041098
11051099
11061100 @Callable(dC)
1107-func getNoLess (fW,fX) = {
1101+func getNoLess (fV,fW) = {
11081102 let cJ = dB(dC)
11091103 let cp = cJ._1
11101104 let cq = cJ._2
11111105 let dE = cJ._3
11121106 let bY = cJ._4
11131107 let cr = cJ._5
1114- if ((fW > cp))
1115- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1116- else if ((fX > cq))
1117- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
1108+ if ((fV > cp))
1109+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110+ else if ((fW > cq))
1111+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
11181112 else {
11191113 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1120- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121- if ((fU == fU))
1114+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115+ if ((fT == fT))
11221116 then {
1123- let fY = dl(-(cp), -(cq), 0)
1124- let fl = fY._1
1125- let dc = fY._2
1126- let fm = dp(dk, dc)
1127- if ((fm == fm))
1128- then (cr ++ fl)
1117+ let fX = dl(-(cp), -(cq), 0)
1118+ let fk = fX._1
1119+ let dc = fX._2
1120+ let fl = dp(dk, dc)
1121+ if ((fl == fl))
1122+ then (cr ++ fk)
11291123 else throw("Strict value is not equal to itself.")
11301124 }
11311125 else throw("Strict value is not equal to itself.")
11361130
11371131 @Callable(dC)
11381132 func unstakeAndGet (dK) = {
1139- let fZ = if ((size(dC.payments) != 0))
1133+ let fY = if ((size(dC.payments) != 0))
11401134 then throw("No payments are expected")
11411135 else true
1142- if ((fZ == fZ))
1136+ if ((fY == fY))
11431137 then {
11441138 let bN = aP()
11451139 let ca = fromBase58String(bN[q])
11461140 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1147- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148- if ((fP == fP))
1141+ let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142+ if ((fO == fO))
11491143 then {
11501144 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11511145 let cp = cJ._1
11521146 let cq = cJ._2
11531147 let cd = parseIntValue(cJ._9)
11541148 let cr = cJ._10
1155- let ga = if (if (aN())
1149+ let fZ = if (if (aN())
11561150 then true
11571151 else (cd == n))
11581152 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11591153 else true
1160- if ((ga == ga))
1154+ if ((fZ == fZ))
11611155 then {
1162- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163- if ((fU == fU))
1156+ let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157+ if ((fT == fT))
11641158 then {
1165- let gb = dl(-(cp), -(cq), 0)
1166- let fl = gb._1
1167- let dc = gb._2
1168- let fm = dp(dk, dc)
1169- if ((fm == fm))
1170- then (cr ++ fl)
1159+ let ga = dl(-(cp), -(cq), 0)
1160+ let fk = ga._1
1161+ let dc = ga._2
1162+ let fl = dp(dk, dc)
1163+ if ((fl == fl))
1164+ then (cr ++ fk)
11711165 else throw("Strict value is not equal to itself.")
11721166 }
11731167 else throw("Strict value is not equal to itself.")
11821176
11831177
11841178 @Callable(dC)
1185-func unstakeAndGetNoLess (fO,gc,fX) = {
1186- let fF = if (aN())
1179+func unstakeAndGetNoLess (fN,gb,fW) = {
1180+ let fE = if (aN())
11871181 then true
11881182 else (ba == n)
1189- let ey = [if (!(fF))
1183+ let ey = [if (!(fE))
11901184 then true
11911185 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
11921186 then true
11941188 if ((ey == ey))
11951189 then {
11961190 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1197- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198- if ((fP == fP))
1191+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192+ if ((fO == fO))
11991193 then {
1200- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1194+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
12011195 let cp = cJ._1
12021196 let cq = cJ._2
12031197 let cr = cJ._10
1204- let gd = [if ((cp >= gc))
1198+ let gc = [if ((cp >= gb))
12051199 then true
1206- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1200+ else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
12071201 then true
1208- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209- if ((gd == gd))
1202+ else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203+ if ((gc == gc))
12101204 then {
1211- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212- if ((fU == fU))
1205+ let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206+ if ((fT == fT))
12131207 then {
1214- let ge = dl(-(cp), -(cq), 0)
1215- let fl = ge._1
1216- let dc = ge._2
1217- let fm = dp(dk, dc)
1218- if ((fm == fm))
1219- then (cr ++ fl)
1208+ let gd = dl(-(cp), -(cq), 0)
1209+ let fk = gd._1
1210+ let dc = gd._2
1211+ let fl = dp(dk, dc)
1212+ if ((fl == fl))
1213+ then (cr ++ fk)
12201214 else throw("Strict value is not equal to itself.")
12211215 }
12221216 else throw("Strict value is not equal to itself.")
12311225
12321226
12331227 @Callable(dC)
1234-func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
1228+func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
12351229 then throw("permissions denied")
1236- else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
1230+ else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
12371231
12381232
12391233
12401234 @Callable(dC)
12411235 func refreshKLp () = {
1242- let gh = valueOrElse(getInteger(ai), 0)
1243- let gi = if (((height - gh) >= al))
1236+ let gg = valueOrElse(getInteger(ai), 0)
1237+ let gh = if (((height - gg) >= al))
12441238 then unit
12451239 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1246- if ((gi == gi))
1240+ if ((gh == gh))
12471241 then {
12481242 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1249- let gj = dl(0, 0, 0)
1250- let gk = gj._1
1251- let dc = gj._2
1243+ let gi = dl(0, 0, 0)
1244+ let gj = gi._1
1245+ let dc = gi._2
12521246 let do = if ((dw != dc))
1253- then gk
1247+ then gj
12541248 else aI("nothing to refresh")
12551249 $Tuple2(do, toString(dc))
12561250 }
13091303 func statsREADONLY () = {
13101304 let bN = aP()
13111305 let ca = fromBase58String(bN[q])
1312- let gl = bN[r]
1313- let gm = bN[s]
1306+ let gk = bN[r]
1307+ let gl = bN[s]
13141308 let cC = bN[v]
13151309 let cD = bN[w]
13161310 let bO = parseIntValue(bN[t])
13171311 let bP = parseIntValue(bN[u])
1318- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1312+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313+ let gn = by(gk)
13191314 let go = by(gl)
1320- let gp = by(gm)
1321- let gq = if ((gn == 0))
1315+ let gp = if ((gm == 0))
13221316 then [e, e, e]
1323- else bL(go, gp, gn)
1317+ else bL(gn, go, gm)
13241318 let ck = 0
1325- let gr = G(gq[1], b)
1326- let gs = G(gq[2], b)
1327- let gt = value(getInteger(aL, aw(toString(this))))
1328- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
1319+ let gq = G(gp[1], b)
1320+ let gr = G(gp[2], b)
1321+ let gs = value(getInteger(aL, aw(toString(this))))
1322+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
13291323 }
13301324
13311325
13411335 let bO = parseIntValue(bN[t])
13421336 let bP = parseIntValue(bN[u])
13431337 let cd = bN[p]
1344- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1345- let go = by(cA)
1346- let gp = by(cB)
1347- let bJ = D(go, bO)
1348- let bK = D(gp, bP)
1349- let cj = if ((gn == 0))
1338+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339+ let gn = by(cA)
1340+ let go = by(cB)
1341+ let bJ = D(gn, bO)
1342+ let bK = D(go, bP)
1343+ let cj = if ((gm == 0))
13501344 then e
13511345 else bA(bK, bJ)
13521346 let cG = D(cu, bO)
13541348 let cw = G(cH, bP)
13551349 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13561350 let cR = dI._1
1357- let gu = dI._3
1351+ let gt = dI._3
13581352 let cf = dI._4
13591353 let ch = dI._5
13601354 let ce = dI._6
13741368 let bO = parseIntValue(bN[t])
13751369 let bP = parseIntValue(bN[u])
13761370 let cd = bN[p]
1377- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1378- let gv = by(cA)
1379- let gw = by(cB)
1380- let gx = D(gv, bO)
1381- let gy = D(gw, bP)
1382- let cj = if ((gn == 0))
1371+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372+ let gu = by(cA)
1373+ let gv = by(cB)
1374+ let gw = D(gu, bO)
1375+ let gx = D(gv, bP)
1376+ let cj = if ((gm == 0))
13831377 then e
1384- else bA(gy, gx)
1378+ else bA(gx, gw)
13851379 let cH = D(cw, bP)
13861380 let cG = fraction(cH, d, cj)
13871381 let cu = G(cG, bO)
13881382 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13891383 let cR = dI._1
1390- let gu = dI._3
1384+ let gt = dI._3
13911385 let cf = dI._4
13921386 let ch = dI._5
13931387 let ce = dI._6
13971391
13981392
13991393 @Callable(dC)
1400-func evaluateGetREADONLY (gz,gA) = {
1401- let cJ = bW("", gz, gA, this)
1394+func evaluateGetREADONLY (gy,gz) = {
1395+ let cJ = bW("", gy, gz, this)
14021396 let cp = cJ._1
14031397 let cq = cJ._2
14041398 let cf = cJ._5
14101404 }
14111405
14121406
1413-@Verifier(gB)
1414-func gC () = {
1415- let gD = {
1416- let dN = eQ()
1407+@Verifier(gA)
1408+func gB () = {
1409+ let gC = {
1410+ let dN = eP()
14171411 if ($isInstanceOf(dN, "ByteVector"))
14181412 then {
1419- let eU = dN
1420- eU
1413+ let eT = dN
1414+ eT
14211415 }
14221416 else if ($isInstanceOf(dN, "Unit"))
1423- then gB.senderPublicKey
1417+ then gA.senderPublicKey
14241418 else throw("Match error")
14251419 }
1426- let dN = gB
1420+ let dN = gA
14271421 if ($isInstanceOf(dN, "Order"))
14281422 then {
14291423 let ds = dN
1430- let gE = aO()
1424+ let gD = aO()
14311425 let aB = dr(ds)
14321426 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1433- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1427+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
14341428 if (if (if (aB)
14351429 then aC
14361430 else false)
14411435 }
14421436 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14431437 then {
1444- let eR = dN
1445- let gF = blake2b256(value(eR.script))
1446- let gG = fromBase64String(value(getString(aL, ay())))
1447- let gH = scriptHash(this)
1448- if (if ((gG == gF))
1449- then (gH != gF)
1438+ let eQ = dN
1439+ let gE = blake2b256(value(eQ.script))
1440+ let gF = fromBase64String(value(getString(aL, ay())))
1441+ let gG = scriptHash(this)
1442+ if (if ((gF == gE))
1443+ then (gG != gE)
14501444 else false)
14511445 then true
1452- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1446+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14531447 }
1454- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1448+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14551449 }
14561450
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
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 func aN () = valueOrElse(getBoolean(aL, av()), false)
173173
174174
175175 func aO () = fromBase58String(aE(aL, an()))
176176
177177
178178 func aP () = {
179179 let aQ = aE(this, ac())
180180 let aR = aE(this, ad())
181181 let as = aH(aL, at(aR))
182182 let ar = aH(aL, at(aQ))
183183 split(aE(aL, aq(toString(ar), toString(as))), j)
184184 }
185185
186186
187187 func aS (aT) = if ((aT == i))
188188 then unit
189189 else fromBase58String(aT)
190190
191191
192192 func aU (aT) = if ((aT == unit))
193193 then i
194194 else toBase58String(value(aT))
195195
196196
197197 func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
198198
199199
200200 let aX = aV(aP())
201201
202202 let aY = aX
203203
204204 let aZ = aY._1
205205
206206 let ba = aY._2
207207
208208 let bb = aY._3
209209
210210 let bc = aY._4
211211
212212 let bd = aY._5
213213
214214 let be = aY._6
215215
216216 let bf = aY._7
217217
218218 func bg () = split(aE(aL, am()), j)
219219
220220
221221 let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
222222
223223 let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
224224
225225 func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
226226
227227
228228 func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
229229
230230
231231 func by (bz) = if ((bz == "WAVES"))
232232 then wavesBalance(this).available
233233 else assetBalance(this, fromBase58String(bz))
234234
235235
236236 func bA (bB,bC) = fraction(bB, d, bC)
237237
238238
239239 func bD (bB,bC,K) = fraction(bB, d, bC, K)
240240
241241
242242 func bE (bF,bG,bH,bI) = {
243243 let bJ = D(bH, bF)
244244 let bK = D(bI, bG)
245245 bA(bK, bJ)
246246 }
247247
248248
249249 func bL (bH,bI,bM) = {
250250 let bN = aP()
251251 let bO = parseIntValue(bN[t])
252252 let bP = parseIntValue(bN[u])
253253 let bQ = bE(bO, bP, bH, bI)
254254 let bC = D(bH, bO)
255255 let bB = D(bI, bP)
256256 let bR = D(bM, b)
257257 let bS = bA(bC, bR)
258258 let bT = bA(bB, bR)
259259 [bQ, bS, bT]
260260 }
261261
262262
263263 func bU (bH,bI,bM) = {
264264 let bV = bL(bH, bI, bM)
265265 [G(bV[0], b), G(bV[1], b), G(bV[2], b)]
266266 }
267267
268268
269269 func bW (bX,bY,bZ,Z) = {
270270 let bN = aP()
271271 let ca = bN[q]
272272 let cb = bN[r]
273273 let cc = bN[s]
274274 let bF = parseIntValue(bN[t])
275275 let bG = parseIntValue(bN[u])
276276 let cd = bN[p]
277277 let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278278 if ((ca != bY))
279279 then throw("Invalid asset passed.")
280280 else {
281281 let cf = by(cb)
282282 let cg = D(cf, bF)
283283 let ch = by(cc)
284284 let ci = D(ch, bG)
285285 let cj = bA(ci, cg)
286286 let ck = G(cj, b)
287287 let cl = D(bZ, b)
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291- let cp = J(cn, bF, FLOOR)
292- let cq = J(co, bG, FLOOR)
291+ let cp = G(cn, bF)
292+ let cq = G(co, bG)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
296296 then unit
297297 else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
298298 then unit
299299 else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300300 $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
301301 }
302302 }
303303
304304
305305 func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306306 let bN = aP()
307307 let ca = fromBase58String(bN[q])
308308 let cA = bN[r]
309309 let cB = bN[s]
310310 let cC = bN[v]
311311 let cD = bN[w]
312312 let bO = parseIntValue(bN[t])
313313 let bP = parseIntValue(bN[u])
314314 let cd = bN[p]
315315 let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316316 let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317317 let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318318 if (if ((cA != cE))
319319 then true
320320 else (cB != cF))
321321 then throw("Invalid amt or price asset passed.")
322322 else {
323323 let cf = if (cy)
324324 then by(cA)
325325 else (by(cA) - cu)
326326 let ch = if (cy)
327327 then by(cB)
328328 else (by(cB) - cw)
329329 let cG = D(cu, bO)
330330 let cH = D(cw, bP)
331331 let cI = bA(cH, cG)
332332 let cg = D(cf, bO)
333333 let ci = D(ch, bP)
334334 let cJ = if ((ce == 0))
335335 then {
336336 let cj = e
337337 let cK = e
338338 let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339339 $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
340340 }
341341 else {
342342 let cj = bA(ci, cg)
343343 let cK = fraction(Q((cj - cI)), d, cj)
344344 let cL = D(ct, b)
345345 if (if ((cj != e))
346346 then (cK > cL)
347347 else false)
348348 then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
349349 else {
350350 let cm = D(ce, b)
351351 let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352352 let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353353 let cO = if ((cM > cH))
354354 then $Tuple2(cN, cH)
355355 else $Tuple2(cG, cM)
356356 let cP = cO._1
357357 let cQ = cO._2
358358 let bR = fraction(cm, cQ, ci, FLOOR)
359359 $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
360360 }
361361 }
362362 let cR = cJ._1
363363 let cS = cJ._2
364364 let cT = cJ._3
365365 let ck = G(cJ._4, b)
366366 let cU = G(cJ._5, b)
367367 if ((0 >= cR))
368368 then throw("Invalid calculations. LP calculated is less than zero.")
369369 else {
370370 let cV = if (!(cz))
371371 then 0
372372 else cR
373373 let cW = (cu - cS)
374374 let cX = (cw - cT)
375375 let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376376 $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
377377 }
378378 }
379379 }
380380
381381
382382 func cZ (da,db,ce) = {
383383 let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384384 if ((ce == f))
385385 then f
386386 else dc
387387 }
388388
389389
390390 func dd (de,df,dg) = {
391391 let dh = (toBigInt(by(aU(bc))) - de)
392392 let di = (toBigInt(by(aU(bd))) - df)
393393 let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394394 let dk = cZ(dh, di, dj)
395395 dk
396396 }
397397
398398
399399 func dl (dm,dn,dg) = {
400400 let dh = (by(aU(bc)) + dm)
401401 let di = (by(aU(bd)) + dn)
402402 let dj = (value(assetInfo(bb)).quantity + dg)
403403 let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404404 let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405405 $Tuple2(do, dc)
406406 }
407407
408408
409409 func dp (dq,dc) = if ((dc >= dq))
410410 then true
411411 else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412412
413413
414414 func dr (ds) = {
415415 let dt = ds.amount
416416 let du = fraction(ds.amount, ds.price, b, FLOOR)
417417 let dv = if ((ds.orderType == Buy))
418418 then $Tuple2(dt, -(du))
419419 else $Tuple2(-(dt), du)
420420 let dm = dv._1
421421 let dn = dv._2
422422 if (if (if (aN())
423423 then true
424424 else (ba == m))
425425 then true
426426 else (ba == n))
427427 then throw("Exchange operations disabled")
428428 else if (if ((ds.assetPair.amountAsset != bc))
429429 then true
430430 else (ds.assetPair.priceAsset != bd))
431431 then throw("Wrong order assets.")
432432 else {
433433 let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434434 let dx = dl(dm, dn, 0)
435435 let dy = dx._1
436436 let dz = dx._2
437437 let dA = (dz >= dw)
438438 dA
439439 }
440440 }
441441
442442
443443 func dB (dC) = if ((size(dC.payments) != 1))
444444 then throw("exactly 1 payment is expected")
445445 else {
446446 let dD = value(dC.payments[0])
447447 let bY = value(dD.assetId)
448448 let dE = dD.amount
449449 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450450 let cp = cJ._1
451451 let cq = cJ._2
452452 let cd = parseIntValue(cJ._9)
453453 let cr = cJ._10
454454 if (if (aN())
455455 then true
456456 else (cd == n))
457457 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458458 else $Tuple5(cp, cq, dE, bY, cr)
459459 }
460460
461461
462462 func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
463463 then throw("exactly 2 payments are expected")
464464 else {
465465 let dG = value(dC.payments[0])
466466 let dH = value(dC.payments[1])
467467 let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468468 let cd = parseIntValue(dI._8)
469469 if (if (if (aN())
470470 then true
471471 else (cd == l))
472472 then true
473473 else (cd == n))
474474 then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475475 else dI
476476 }
477477
478478
479479 func dJ (dK) = {
480480 let dL = invoke(aL, "emit", [dK], nil)
481481 if ((dL == dL))
482482 then {
483483 let dM = {
484484 let dN = dL
485485 if ($isInstanceOf(dN, "Address"))
486486 then {
487487 let dO = dN
488488 invoke(dO, "emit", [dK], nil)
489489 }
490490 else unit
491491 }
492492 if ((dM == dM))
493493 then dK
494494 else throw("Strict value is not equal to itself.")
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500 func dP (dK) = {
501501 let dQ = fraction(dK, ag, b)
502502 $Tuple2((dK - dQ), dQ)
503503 }
504504
505505
506506 func dR (dS,dT,Z,aa) = {
507507 let dU = (aa == unit)
508508 let dV = by(aU(bc))
509509 let dW = by(aU(bd))
510510 let dX = if ((dT == bc))
511511 then true
512512 else if ((dT == bd))
513513 then false
514514 else aI("invalid asset")
515515 let dY = if (dU)
516516 then $Tuple2(dV, dW)
517517 else if (dX)
518518 then $Tuple2((dV - dS), dW)
519519 else $Tuple2(dV, (dW - dS))
520520 let dZ = dY._1
521521 let ea = dY._2
522522 let eb = if (dX)
523523 then $Tuple2(dS, 0)
524524 else $Tuple2(0, dS)
525525 let ec = eb._1
526526 let ed = eb._2
527527 let dt = dP(ec)._1
528528 let du = dP(ed)._1
529529 let ee = dP(dS)
530530 let ef = ee._1
531531 let dQ = ee._2
532532 let eg = (dZ + dt)
533533 let eh = (ea + du)
534534 let ei = bA(D(eh, bf), D(eg, be))
535535 let ej = G(ei, b)
536536 let ek = if (dX)
537537 then dZ
538538 else ea
539539 let el = toBigInt(ek)
540540 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541541 let en = if ((em > f))
542542 then true
543543 else aI("initial deposit requires all coins")
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547- let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
547+ let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548548 let cY = if (dU)
549549 then nil
550550 else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551551 let eq = bA(D(ea, bf), D(dZ, be))
552552 let er = G(eq, b)
553553 let es = {
554554 let et = if (dX)
555555 then $Tuple2(ec, dZ)
556556 else $Tuple2(ed, ea)
557557 let dK = et._1
558558 let eu = et._2
559559 let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560560 fraction((ep - ev), b, ev)
561561 }
562562 $Tuple5(ep, cY, dQ, es, dX)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570- let bN = aP()
571- let bO = parseIntValue(bN[t])
572- let bP = parseIntValue(bN[u])
573570 let ey = [if ((dT == bb))
574571 then true
575572 else aI("invalid lp asset")]
576573 if ((ey == ey))
577574 then {
578575 let ez = if ((ex == bc))
579576 then true
580577 else if ((ex == bd))
581578 then false
582579 else aI("invalid asset")
583580 let eA = if (ez)
584581 then toBigInt(by(aU(bc)))
585582 else toBigInt(by(aU(bd)))
586- let eB = if (ez)
587- then bO
588- else bP
589- let eC = by(aU(bc))
590- let eD = by(aU(bd))
591- let eE = if (ez)
592- then eC
593- else eD
594- let eF = toBigInt(eE)
583+ let eB = by(aU(bc))
584+ let eC = by(aU(bd))
585+ let eD = if (ez)
586+ then eB
587+ else eC
588+ let eE = toBigInt(eD)
595589 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596- let eG = toBigInt(ef)
597- let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598- let eI = dP(eH)
599- let eJ = eI._1
600- let dQ = eI._2
601- let eK = if (ez)
602- then $Tuple4(eJ, 0, (eC - eH), eD)
603- else $Tuple4(0, eJ, eC, (eD - eH))
604- let eL = eK._1
605- let eM = eK._2
606- let eN = eK._3
607- let eO = eK._4
608- let ei = bA(D(eO, bf), D(eN, be))
590+ let eF = toBigInt(ef)
591+ let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592+ let eH = dP(eG)
593+ let eI = eH._1
594+ let dQ = eH._2
595+ let eJ = if (ez)
596+ then $Tuple4(eI, 0, (eB - eG), eC)
597+ else $Tuple4(0, eI, eB, (eC - eG))
598+ let eK = eJ._1
599+ let eL = eJ._2
600+ let eM = eJ._3
601+ let eN = eJ._4
602+ let ei = bA(D(eN, bf), D(eM, be))
609603 let ej = G(ei, b)
610604 let cY = if (dU)
611605 then nil
612- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613- let eq = bA(D(eD, bf), D(eC, be))
606+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607+ let eq = bA(D(eC, bf), D(eB, be))
614608 let er = G(eq, b)
615609 let es = {
616- let eP = (toInt(fraction(eA, eG, em)) * 2)
617- fraction((eJ - eP), b, eP)
610+ let eO = (toInt(fraction(eA, eF, em)) * 2)
611+ fraction((eI - eO), b, eO)
618612 }
619- $Tuple5(eJ, cY, dQ, es, ez)
613+ $Tuple5(eI, cY, dQ, es, ez)
620614 }
621615 else throw("Strict value is not equal to itself.")
622616 }
623617
624618
625-func eQ () = {
619+func eP () = {
626620 let dN = getString(S())
627621 if ($isInstanceOf(dN, "String"))
628622 then {
629- let eR = dN
630- fromBase58String(eR)
623+ let eQ = dN
624+ fromBase58String(eQ)
631625 }
632626 else if ($isInstanceOf(dN, "Unit"))
633627 then unit
634628 else throw("Match error")
635629 }
636630
637631
638-func eS () = {
632+func eR () = {
639633 let dN = getString(T())
640634 if ($isInstanceOf(dN, "String"))
641635 then {
642- let eR = dN
643- fromBase58String(eR)
636+ let eQ = dN
637+ fromBase58String(eQ)
644638 }
645639 else if ($isInstanceOf(dN, "Unit"))
646640 then unit
647641 else throw("Match error")
648642 }
649643
650644
651-func eT (dC) = {
652- let dN = eQ()
645+func eS (dC) = {
646+ let dN = eP()
653647 if ($isInstanceOf(dN, "ByteVector"))
654648 then {
655- let eU = dN
656- (dC.callerPublicKey == eU)
649+ let eT = dN
650+ (dC.callerPublicKey == eT)
657651 }
658652 else if ($isInstanceOf(dN, "Unit"))
659653 then (dC.caller == this)
660654 else throw("Match error")
661655 }
662656
663657
664-func eV (dC) = {
665- let eW = throw("Permission denied")
666- let dN = eQ()
658+func eU (dC) = {
659+ let eV = throw("Permission denied")
660+ let dN = eP()
667661 if ($isInstanceOf(dN, "ByteVector"))
668662 then {
669- let eU = dN
670- if ((dC.callerPublicKey == eU))
663+ let eT = dN
664+ if ((dC.callerPublicKey == eT))
671665 then true
672- else eW
666+ else eV
673667 }
674668 else if ($isInstanceOf(dN, "Unit"))
675669 then if ((dC.caller == this))
676670 then true
677- else eW
671+ else eV
678672 else throw("Match error")
679673 }
680674
681675
682676 @Callable(dC)
683-func setManager (eX) = {
684- let eY = eV(dC)
685- if ((eY == eY))
677+func setManager (eW) = {
678+ let eX = eU(dC)
679+ if ((eX == eX))
686680 then {
687- let eZ = fromBase58String(eX)
688- if ((eZ == eZ))
689- then [StringEntry(T(), eX)]
681+ let eY = fromBase58String(eW)
682+ if ((eY == eY))
683+ then [StringEntry(T(), eW)]
690684 else throw("Strict value is not equal to itself.")
691685 }
692686 else throw("Strict value is not equal to itself.")
693687 }
694688
695689
696690
697691 @Callable(dC)
698692 func confirmManager () = {
699- let fa = eS()
700- let fb = if (isDefined(fa))
693+ let eZ = eR()
694+ let fa = if (isDefined(eZ))
701695 then true
702696 else throw("No pending manager")
703- if ((fb == fb))
697+ if ((fa == fa))
704698 then {
705- let fc = if ((dC.callerPublicKey == value(fa)))
699+ let fb = if ((dC.callerPublicKey == value(eZ)))
706700 then true
707701 else throw("You are not pending manager")
708- if ((fc == fc))
709- then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
702+ if ((fb == fb))
703+ then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
710704 else throw("Strict value is not equal to itself.")
711705 }
712706 else throw("Strict value is not equal to itself.")
713707 }
714708
715709
716710
717711 @Callable(dC)
718-func put (ct,fd) = if ((0 > ct))
712+func put (ct,fc) = if ((0 > ct))
719713 then throw("Invalid slippageTolerance passed")
720714 else {
721715 let dI = dF(dC, ct, true)
722716 let cV = dI._2
723717 let ca = dI._7
724718 let cr = dI._9
725719 let cW = dI._10
726720 let cX = dI._11
727- let fe = dI._12
728- let ff = dI._13
721+ let fd = dI._12
722+ let fe = dI._13
729723 let dG = toBigInt(value(dC.payments[0]).amount)
730724 let dH = toBigInt(value(dC.payments[1]).amount)
731725 let dk = dd(dG, dH, toBigInt(0))
732726 if ((dk == dk))
733727 then {
734728 let dL = invoke(aL, "emit", [cV], nil)
735729 if ((dL == dL))
736730 then {
737731 let dM = {
738732 let dN = dL
739733 if ($isInstanceOf(dN, "Address"))
740734 then {
741735 let dO = dN
742736 invoke(dO, "emit", [cV], nil)
743737 }
744738 else unit
745739 }
746740 if ((dM == dM))
747741 then {
748- let fg = if ((cW > 0))
749- then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
742+ let ff = if ((cW > 0))
743+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
750744 else nil
751- if ((fg == fg))
745+ if ((ff == ff))
752746 then {
753- let fh = if ((cX > 0))
754- then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
747+ let fg = if ((cX > 0))
748+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
755749 else nil
756- if ((fh == fh))
750+ if ((fg == fg))
757751 then {
758- let fi = if (fd)
752+ let fh = if (fc)
759753 then {
760- let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761- if ((fj == fj))
754+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755+ if ((fi == fi))
762756 then nil
763757 else throw("Strict value is not equal to itself.")
764758 }
765759 else [ScriptTransfer(dC.caller, cV, ca)]
766- let fk = dl(0, 0, 0)
767- if ((fk == fk))
760+ let fj = dl(0, 0, 0)
761+ if ((fj == fj))
768762 then {
769- let dc = fk._2
770- let fl = fk._1
771- let fm = dp(dk, dc)
772- if ((fm == fm))
773- then ((cr ++ fi) ++ fl)
763+ let dc = fj._2
764+ let fk = fj._1
765+ let fl = dp(dk, dc)
766+ if ((fl == fl))
767+ then ((cr ++ fh) ++ fk)
774768 else throw("Strict value is not equal to itself.")
775769 }
776770 else throw("Strict value is not equal to itself.")
777771 }
778772 else throw("Strict value is not equal to itself.")
779773 }
780774 else throw("Strict value is not equal to itself.")
781775 }
782776 else throw("Strict value is not equal to itself.")
783777 }
784778 else throw("Strict value is not equal to itself.")
785779 }
786780 else throw("Strict value is not equal to itself.")
787781 }
788782
789783
790784
791785 @Callable(dC)
792-func putForFree (fn) = if ((0 > fn))
786+func putForFree (fm) = if ((0 > fm))
793787 then throw("Invalid value passed")
794788 else {
795- let dI = dF(dC, fn, false)
789+ let dI = dF(dC, fm, false)
796790 let cr = dI._9
797791 let dG = toBigInt(value(dC.payments[0]).amount)
798792 let dH = toBigInt(value(dC.payments[1]).amount)
799793 let dk = dd(dG, dH, toBigInt(0))
800794 if ((dk == dk))
801795 then {
802- let fo = dl(0, 0, 0)
803- let fl = fo._1
804- let dc = fo._2
805- let fm = dp(dk, dc)
806- if ((fm == fm))
807- then (cr ++ fl)
796+ let fn = dl(0, 0, 0)
797+ let fk = fn._1
798+ let dc = fn._2
799+ let fl = dp(dk, dc)
800+ if ((fl == fl))
801+ then (cr ++ fk)
808802 else throw("Strict value is not equal to itself.")
809803 }
810804 else throw("Strict value is not equal to itself.")
811805 }
812806
813807
814808
815809 @Callable(dC)
816-func putOneTkn (fp,fq) = {
817- let fr = {
818- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819- if ($isInstanceOf(fs, "Boolean"))
820- then fs
821- else throw(($getType(fs) + " couldn't be cast to Boolean"))
810+func putOneTkn (fo,fp) = {
811+ let fq = {
812+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813+ if ($isInstanceOf(fr, "Boolean"))
814+ then fr
815+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
822816 }
823- let ft = if (if (if (aN())
817+ let fs = if (if (if (aN())
824818 then true
825819 else (ba == l))
826820 then true
827821 else (ba == n))
828822 then true
829- else fr
830- let ey = [if (if (!(ft))
823+ else fq
824+ let ey = [if (if (!(fs))
831825 then true
832- else eT(dC))
826+ else eS(dC))
833827 then true
834828 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
835829 then true
836830 else aI("exactly 1 payment are expected")]
837831 if ((ey == ey))
838832 then {
839- let fu = dC.payments[0]
840- let dT = fu.assetId
841- let dS = fu.amount
833+ let ft = dC.payments[0]
834+ let dT = ft.assetId
835+ let dS = ft.amount
842836 let dk = if ((dT == bc))
843837 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844838 else if ((dT == bd))
845839 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846840 else aI("payment asset is not supported")
847841 let Z = dC.caller
848842 let aa = dC.transactionId
849- let fv = dR(dS, dT, Z, aa)
850- if ((fv == fv))
843+ let fu = dR(dS, dT, Z, aa)
844+ if ((fu == fu))
851845 then {
852- let dX = fv._5
853- let fw = fv._4
854- let dQ = fv._3
855- let cY = fv._2
856- let fx = fv._1
857- let fy = if (if ((fp > 0))
858- then (fp > fx)
846+ let dX = fu._5
847+ let fv = fu._4
848+ let dQ = fu._3
849+ let cY = fu._2
850+ let fw = fu._1
851+ let fx = if (if ((fo > 0))
852+ then (fo > fw)
859853 else false)
860- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861- else fx
862- let dL = dJ(fy)
854+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855+ else fw
856+ let dL = dJ(fx)
863857 if ((dL == dL))
864858 then {
865- let fi = if (fq)
859+ let fh = if (fp)
866860 then {
867- let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868- if ((fz == fz))
861+ let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862+ if ((fy == fy))
869863 then nil
870864 else throw("Strict value is not equal to itself.")
871865 }
872- else [ScriptTransfer(dC.caller, fy, bb)]
873- let fA = if ((dQ > 0))
866+ else [ScriptTransfer(dC.caller, fx, bb)]
867+ let fz = if ((dQ > 0))
874868 then [ScriptTransfer(aM, dQ, dT)]
875869 else nil
876- let fB = if ((this == aM))
870+ let fA = if ((this == aM))
877871 then $Tuple2(0, 0)
878872 else if (dX)
879873 then $Tuple2(-(dQ), 0)
880874 else $Tuple2(0, -(dQ))
881- let dm = fB._1
882- let dn = fB._2
883- let fC = dl(dm, dn, 0)
884- let fl = fC._1
885- let dc = fC._2
875+ let dm = fA._1
876+ let dn = fA._2
877+ let fB = dl(dm, dn, 0)
878+ let fk = fB._1
879+ let dc = fB._2
886880 let dw = value(getString(ah))
887- let fm = dp(dk, dc)
888- if ((fm == fm))
889- then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
881+ let fl = dp(dk, dc)
882+ if ((fl == fl))
883+ then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
890884 else throw("Strict value is not equal to itself.")
891885 }
892886 else throw("Strict value is not equal to itself.")
893887 }
894888 else throw("Strict value is not equal to itself.")
895889 }
896890 else throw("Strict value is not equal to itself.")
897891 }
898892
899893
900894
901895 @Callable(dC)
902896 func putOneTknREADONLY (dT,dS) = {
903- let fD = dR(dS, aS(dT), unit, unit)
904- let fx = fD._1
905- let cY = fD._2
906- let dQ = fD._3
907- let fw = fD._4
908- let dX = fD._5
909- $Tuple2(nil, $Tuple3(fx, dQ, fw))
897+ let fC = dR(dS, aS(dT), unit, unit)
898+ let fw = fC._1
899+ let cY = fC._2
900+ let dQ = fC._3
901+ let fv = fC._4
902+ let dX = fC._5
903+ $Tuple2(nil, $Tuple3(fw, dQ, fv))
910904 }
911905
912906
913907
914908 @Callable(dC)
915-func getOneTkn (fE,fp) = {
916- let fr = {
917- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
918- if ($isInstanceOf(fs, "Boolean"))
919- then fs
920- else throw(($getType(fs) + " couldn't be cast to Boolean"))
909+func getOneTkn (fD,fo) = {
910+ let fq = {
911+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912+ if ($isInstanceOf(fr, "Boolean"))
913+ then fr
914+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
921915 }
922- let fF = if (if (aN())
916+ let fE = if (if (aN())
923917 then true
924918 else (ba == n))
925919 then true
926- else fr
927- let ey = [if (if (!(fF))
920+ else fq
921+ let ey = [if (if (!(fE))
928922 then true
929- else eT(dC))
923+ else eS(dC))
930924 then true
931925 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
932926 then true
933927 else aI("exactly 1 payment are expected")]
934928 if ((ey == ey))
935929 then {
936- let ex = aS(fE)
937- let fu = dC.payments[0]
938- let dT = fu.assetId
939- let ef = fu.amount
930+ let ex = aS(fD)
931+ let ft = dC.payments[0]
932+ let dT = ft.assetId
933+ let ef = ft.amount
940934 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
941935 let Z = dC.caller
942936 let aa = dC.transactionId
943- let fG = ew(ex, ef, dT, Z, aa)
944- if ((fG == fG))
937+ let fF = ew(ex, ef, dT, Z, aa)
938+ if ((fF == fF))
945939 then {
946- let ez = fG._5
947- let fw = fG._4
948- let dQ = fG._3
949- let cY = fG._2
950- let fH = fG._1
951- let dK = if (if ((fp > 0))
952- then (fp > fH)
940+ let ez = fF._5
941+ let fv = fF._4
942+ let dQ = fF._3
943+ let cY = fF._2
944+ let fG = fF._1
945+ let dK = if (if ((fo > 0))
946+ then (fo > fG)
953947 else false)
954- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
955- else fH
956- let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
957- if ((fI == fI))
948+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949+ else fG
950+ let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951+ if ((fH == fH))
958952 then {
959- let fJ = [ScriptTransfer(Z, dK, ex)]
960- let fA = if ((dQ > 0))
953+ let fI = [ScriptTransfer(Z, dK, ex)]
954+ let fz = if ((dQ > 0))
961955 then [ScriptTransfer(aM, dQ, ex)]
962956 else nil
963- let fK = {
964- let fL = if ((this == aM))
957+ let fJ = {
958+ let fK = if ((this == aM))
965959 then 0
966960 else dQ
967961 if (ez)
968- then $Tuple2(-((dK + fL)), 0)
969- else $Tuple2(0, -((dK + fL)))
962+ then $Tuple2(-((dK + fK)), 0)
963+ else $Tuple2(0, -((dK + fK)))
970964 }
971- let dm = fK._1
972- let dn = fK._2
973- let fM = dl(dm, dn, 0)
974- let fl = fM._1
975- let dc = fM._2
976- let fm = dp(dk, dc)
977- if ((fm == fm))
978- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
965+ let dm = fJ._1
966+ let dn = fJ._2
967+ let fL = dl(dm, dn, 0)
968+ let fk = fL._1
969+ let dc = fL._2
970+ let fl = dp(dk, dc)
971+ if ((fl == fl))
972+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
979973 else throw("Strict value is not equal to itself.")
980974 }
981975 else throw("Strict value is not equal to itself.")
982976 }
983977 else throw("Strict value is not equal to itself.")
984978 }
985979 else throw("Strict value is not equal to itself.")
986980 }
987981
988982
989983
990984 @Callable(dC)
991985 func getOneTknREADONLY (ex,ef) = {
992- let fN = ew(aS(ex), ef, bb, unit, unit)
993- let fH = fN._1
994- let cY = fN._2
995- let dQ = fN._3
996- let fw = fN._4
997- let ez = fN._5
998- $Tuple2(nil, $Tuple3(fH, dQ, fw))
986+ let fM = ew(aS(ex), ef, bb, unit, unit)
987+ let fG = fM._1
988+ let cY = fM._2
989+ let dQ = fM._3
990+ let fv = fM._4
991+ let ez = fM._5
992+ $Tuple2(nil, $Tuple3(fG, dQ, fv))
999993 }
1000994
1001995
1002996
1003997 @Callable(dC)
1004-func unstakeAndGetOneTkn (fO,fE,fp) = {
1005- let fr = {
1006- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1007- if ($isInstanceOf(fs, "Boolean"))
1008- then fs
1009- else throw(($getType(fs) + " couldn't be cast to Boolean"))
998+func unstakeAndGetOneTkn (fN,fD,fo) = {
999+ let fq = {
1000+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001+ if ($isInstanceOf(fr, "Boolean"))
1002+ then fr
1003+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
10101004 }
1011- let fF = if (if (aN())
1005+ let fE = if (if (aN())
10121006 then true
10131007 else (ba == n))
10141008 then true
1015- else fr
1016- let ey = [if (if (!(fF))
1009+ else fq
1010+ let ey = [if (if (!(fE))
10171011 then true
1018- else eT(dC))
1012+ else eS(dC))
10191013 then true
10201014 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10211015 then true
10221016 else aI("no payments are expected")]
10231017 if ((ey == ey))
10241018 then {
1025- let ex = aS(fE)
1019+ let ex = aS(fD)
10261020 let Z = dC.caller
10271021 let aa = dC.transactionId
10281022 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1029- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030- if ((fP == fP))
1023+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024+ if ((fO == fO))
10311025 then {
1032- let fQ = ew(ex, fO, bb, Z, aa)
1033- if ((fQ == fQ))
1026+ let fP = ew(ex, fN, bb, Z, aa)
1027+ if ((fP == fP))
10341028 then {
1035- let ez = fQ._5
1036- let fw = fQ._4
1037- let dQ = fQ._3
1038- let cY = fQ._2
1039- let fH = fQ._1
1040- let dK = if (if ((fp > 0))
1041- then (fp > fH)
1029+ let ez = fP._5
1030+ let fv = fP._4
1031+ let dQ = fP._3
1032+ let cY = fP._2
1033+ let fG = fP._1
1034+ let dK = if (if ((fo > 0))
1035+ then (fo > fG)
10421036 else false)
1043- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1044- else fH
1045- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1046- if ((fI == fI))
1037+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038+ else fG
1039+ let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040+ if ((fH == fH))
10471041 then {
1048- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049- let fA = if ((dQ > 0))
1042+ let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043+ let fz = if ((dQ > 0))
10501044 then [ScriptTransfer(aM, dQ, ex)]
10511045 else nil
1052- let fR = {
1053- let fL = if ((this == aM))
1046+ let fQ = {
1047+ let fK = if ((this == aM))
10541048 then 0
10551049 else dQ
10561050 if (ez)
1057- then $Tuple2(-((dK + fL)), 0)
1058- else $Tuple2(0, -((dK + fL)))
1051+ then $Tuple2(-((dK + fK)), 0)
1052+ else $Tuple2(0, -((dK + fK)))
10591053 }
1060- let dm = fR._1
1061- let dn = fR._2
1062- let fS = dl(dm, dn, 0)
1063- let fl = fS._1
1064- let dc = fS._2
1065- let fm = dp(dk, dc)
1066- if ((fm == fm))
1067- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1054+ let dm = fQ._1
1055+ let dn = fQ._2
1056+ let fR = dl(dm, dn, 0)
1057+ let fk = fR._1
1058+ let dc = fR._2
1059+ let fl = dp(dk, dc)
1060+ if ((fl == fl))
1061+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
10681062 else throw("Strict value is not equal to itself.")
10691063 }
10701064 else throw("Strict value is not equal to itself.")
10711065 }
10721066 else throw("Strict value is not equal to itself.")
10731067 }
10741068 else throw("Strict value is not equal to itself.")
10751069 }
10761070 else throw("Strict value is not equal to itself.")
10771071 }
10781072
10791073
10801074
10811075 @Callable(dC)
10821076 func get () = {
10831077 let cJ = dB(dC)
1084- let fT = cJ._1
1078+ let fS = cJ._1
10851079 let cq = cJ._2
10861080 let dE = cJ._3
10871081 let bY = cJ._4
10881082 let cr = cJ._5
10891083 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1090- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091- if ((fU == fU))
1084+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085+ if ((fT == fT))
10921086 then {
1093- let fV = dl(-(fT), -(cq), 0)
1094- let fl = fV._1
1095- let dc = fV._2
1096- let fm = dp(dk, dc)
1097- if ((fm == fm))
1098- then (cr ++ fl)
1087+ let fU = dl(-(fS), -(cq), 0)
1088+ let fk = fU._1
1089+ let dc = fU._2
1090+ let fl = dp(dk, dc)
1091+ if ((fl == fl))
1092+ then (cr ++ fk)
10991093 else throw("Strict value is not equal to itself.")
11001094 }
11011095 else throw("Strict value is not equal to itself.")
11021096 }
11031097
11041098
11051099
11061100 @Callable(dC)
1107-func getNoLess (fW,fX) = {
1101+func getNoLess (fV,fW) = {
11081102 let cJ = dB(dC)
11091103 let cp = cJ._1
11101104 let cq = cJ._2
11111105 let dE = cJ._3
11121106 let bY = cJ._4
11131107 let cr = cJ._5
1114- if ((fW > cp))
1115- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1116- else if ((fX > cq))
1117- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
1108+ if ((fV > cp))
1109+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110+ else if ((fW > cq))
1111+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
11181112 else {
11191113 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1120- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121- if ((fU == fU))
1114+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115+ if ((fT == fT))
11221116 then {
1123- let fY = dl(-(cp), -(cq), 0)
1124- let fl = fY._1
1125- let dc = fY._2
1126- let fm = dp(dk, dc)
1127- if ((fm == fm))
1128- then (cr ++ fl)
1117+ let fX = dl(-(cp), -(cq), 0)
1118+ let fk = fX._1
1119+ let dc = fX._2
1120+ let fl = dp(dk, dc)
1121+ if ((fl == fl))
1122+ then (cr ++ fk)
11291123 else throw("Strict value is not equal to itself.")
11301124 }
11311125 else throw("Strict value is not equal to itself.")
11321126 }
11331127 }
11341128
11351129
11361130
11371131 @Callable(dC)
11381132 func unstakeAndGet (dK) = {
1139- let fZ = if ((size(dC.payments) != 0))
1133+ let fY = if ((size(dC.payments) != 0))
11401134 then throw("No payments are expected")
11411135 else true
1142- if ((fZ == fZ))
1136+ if ((fY == fY))
11431137 then {
11441138 let bN = aP()
11451139 let ca = fromBase58String(bN[q])
11461140 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1147- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148- if ((fP == fP))
1141+ let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142+ if ((fO == fO))
11491143 then {
11501144 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11511145 let cp = cJ._1
11521146 let cq = cJ._2
11531147 let cd = parseIntValue(cJ._9)
11541148 let cr = cJ._10
1155- let ga = if (if (aN())
1149+ let fZ = if (if (aN())
11561150 then true
11571151 else (cd == n))
11581152 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11591153 else true
1160- if ((ga == ga))
1154+ if ((fZ == fZ))
11611155 then {
1162- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163- if ((fU == fU))
1156+ let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157+ if ((fT == fT))
11641158 then {
1165- let gb = dl(-(cp), -(cq), 0)
1166- let fl = gb._1
1167- let dc = gb._2
1168- let fm = dp(dk, dc)
1169- if ((fm == fm))
1170- then (cr ++ fl)
1159+ let ga = dl(-(cp), -(cq), 0)
1160+ let fk = ga._1
1161+ let dc = ga._2
1162+ let fl = dp(dk, dc)
1163+ if ((fl == fl))
1164+ then (cr ++ fk)
11711165 else throw("Strict value is not equal to itself.")
11721166 }
11731167 else throw("Strict value is not equal to itself.")
11741168 }
11751169 else throw("Strict value is not equal to itself.")
11761170 }
11771171 else throw("Strict value is not equal to itself.")
11781172 }
11791173 else throw("Strict value is not equal to itself.")
11801174 }
11811175
11821176
11831177
11841178 @Callable(dC)
1185-func unstakeAndGetNoLess (fO,gc,fX) = {
1186- let fF = if (aN())
1179+func unstakeAndGetNoLess (fN,gb,fW) = {
1180+ let fE = if (aN())
11871181 then true
11881182 else (ba == n)
1189- let ey = [if (!(fF))
1183+ let ey = [if (!(fE))
11901184 then true
11911185 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
11921186 then true
11931187 else throw("no payments are expected")]
11941188 if ((ey == ey))
11951189 then {
11961190 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1197- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198- if ((fP == fP))
1191+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192+ if ((fO == fO))
11991193 then {
1200- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1194+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
12011195 let cp = cJ._1
12021196 let cq = cJ._2
12031197 let cr = cJ._10
1204- let gd = [if ((cp >= gc))
1198+ let gc = [if ((cp >= gb))
12051199 then true
1206- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1200+ else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
12071201 then true
1208- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209- if ((gd == gd))
1202+ else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203+ if ((gc == gc))
12101204 then {
1211- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212- if ((fU == fU))
1205+ let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206+ if ((fT == fT))
12131207 then {
1214- let ge = dl(-(cp), -(cq), 0)
1215- let fl = ge._1
1216- let dc = ge._2
1217- let fm = dp(dk, dc)
1218- if ((fm == fm))
1219- then (cr ++ fl)
1208+ let gd = dl(-(cp), -(cq), 0)
1209+ let fk = gd._1
1210+ let dc = gd._2
1211+ let fl = dp(dk, dc)
1212+ if ((fl == fl))
1213+ then (cr ++ fk)
12201214 else throw("Strict value is not equal to itself.")
12211215 }
12221216 else throw("Strict value is not equal to itself.")
12231217 }
12241218 else throw("Strict value is not equal to itself.")
12251219 }
12261220 else throw("Strict value is not equal to itself.")
12271221 }
12281222 else throw("Strict value is not equal to itself.")
12291223 }
12301224
12311225
12321226
12331227 @Callable(dC)
1234-func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
1228+func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
12351229 then throw("permissions denied")
1236- else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
1230+ else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
12371231
12381232
12391233
12401234 @Callable(dC)
12411235 func refreshKLp () = {
1242- let gh = valueOrElse(getInteger(ai), 0)
1243- let gi = if (((height - gh) >= al))
1236+ let gg = valueOrElse(getInteger(ai), 0)
1237+ let gh = if (((height - gg) >= al))
12441238 then unit
12451239 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1246- if ((gi == gi))
1240+ if ((gh == gh))
12471241 then {
12481242 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1249- let gj = dl(0, 0, 0)
1250- let gk = gj._1
1251- let dc = gj._2
1243+ let gi = dl(0, 0, 0)
1244+ let gj = gi._1
1245+ let dc = gi._2
12521246 let do = if ((dw != dc))
1253- then gk
1247+ then gj
12541248 else aI("nothing to refresh")
12551249 $Tuple2(do, toString(dc))
12561250 }
12571251 else throw("Strict value is not equal to itself.")
12581252 }
12591253
12601254
12611255
12621256 @Callable(dC)
12631257 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12641258
12651259
12661260
12671261 @Callable(dC)
12681262 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12691263
12701264
12711265
12721266 @Callable(dC)
12731267 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12741268 let bV = bL(bH, bI, bM)
12751269 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12761270 }
12771271
12781272
12791273
12801274 @Callable(dC)
12811275 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12821276
12831277
12841278
12851279 @Callable(dC)
12861280 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12871281
12881282
12891283
12901284 @Callable(dC)
12911285 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
12921286
12931287
12941288
12951289 @Callable(dC)
12961290 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
12971291
12981292
12991293
13001294 @Callable(dC)
13011295 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
13021296 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
13031297 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13041298 }
13051299
13061300
13071301
13081302 @Callable(dC)
13091303 func statsREADONLY () = {
13101304 let bN = aP()
13111305 let ca = fromBase58String(bN[q])
1312- let gl = bN[r]
1313- let gm = bN[s]
1306+ let gk = bN[r]
1307+ let gl = bN[s]
13141308 let cC = bN[v]
13151309 let cD = bN[w]
13161310 let bO = parseIntValue(bN[t])
13171311 let bP = parseIntValue(bN[u])
1318- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1312+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313+ let gn = by(gk)
13191314 let go = by(gl)
1320- let gp = by(gm)
1321- let gq = if ((gn == 0))
1315+ let gp = if ((gm == 0))
13221316 then [e, e, e]
1323- else bL(go, gp, gn)
1317+ else bL(gn, go, gm)
13241318 let ck = 0
1325- let gr = G(gq[1], b)
1326- let gs = G(gq[2], b)
1327- let gt = value(getInteger(aL, aw(toString(this))))
1328- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
1319+ let gq = G(gp[1], b)
1320+ let gr = G(gp[2], b)
1321+ let gs = value(getInteger(aL, aw(toString(this))))
1322+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
13291323 }
13301324
13311325
13321326
13331327 @Callable(dC)
13341328 func evaluatePutByAmountAssetREADONLY (cu) = {
13351329 let bN = aP()
13361330 let ca = fromBase58String(bN[q])
13371331 let cA = bN[r]
13381332 let cb = fromBase58String(cA)
13391333 let cB = bN[s]
13401334 let cc = fromBase58String(cB)
13411335 let bO = parseIntValue(bN[t])
13421336 let bP = parseIntValue(bN[u])
13431337 let cd = bN[p]
1344- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1345- let go = by(cA)
1346- let gp = by(cB)
1347- let bJ = D(go, bO)
1348- let bK = D(gp, bP)
1349- let cj = if ((gn == 0))
1338+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339+ let gn = by(cA)
1340+ let go = by(cB)
1341+ let bJ = D(gn, bO)
1342+ let bK = D(go, bP)
1343+ let cj = if ((gm == 0))
13501344 then e
13511345 else bA(bK, bJ)
13521346 let cG = D(cu, bO)
13531347 let cH = fraction(cG, cj, d)
13541348 let cw = G(cH, bP)
13551349 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13561350 let cR = dI._1
1357- let gu = dI._3
1351+ let gt = dI._3
13581352 let cf = dI._4
13591353 let ch = dI._5
13601354 let ce = dI._6
13611355 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13621356 }
13631357
13641358
13651359
13661360 @Callable(dC)
13671361 func evaluatePutByPriceAssetREADONLY (cw) = {
13681362 let bN = aP()
13691363 let ca = fromBase58String(bN[q])
13701364 let cA = bN[r]
13711365 let cb = fromBase58String(cA)
13721366 let cB = bN[s]
13731367 let cc = fromBase58String(cB)
13741368 let bO = parseIntValue(bN[t])
13751369 let bP = parseIntValue(bN[u])
13761370 let cd = bN[p]
1377- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1378- let gv = by(cA)
1379- let gw = by(cB)
1380- let gx = D(gv, bO)
1381- let gy = D(gw, bP)
1382- let cj = if ((gn == 0))
1371+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372+ let gu = by(cA)
1373+ let gv = by(cB)
1374+ let gw = D(gu, bO)
1375+ let gx = D(gv, bP)
1376+ let cj = if ((gm == 0))
13831377 then e
1384- else bA(gy, gx)
1378+ else bA(gx, gw)
13851379 let cH = D(cw, bP)
13861380 let cG = fraction(cH, d, cj)
13871381 let cu = G(cG, bO)
13881382 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13891383 let cR = dI._1
1390- let gu = dI._3
1384+ let gt = dI._3
13911385 let cf = dI._4
13921386 let ch = dI._5
13931387 let ce = dI._6
13941388 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13951389 }
13961390
13971391
13981392
13991393 @Callable(dC)
1400-func evaluateGetREADONLY (gz,gA) = {
1401- let cJ = bW("", gz, gA, this)
1394+func evaluateGetREADONLY (gy,gz) = {
1395+ let cJ = bW("", gy, gz, this)
14021396 let cp = cJ._1
14031397 let cq = cJ._2
14041398 let cf = cJ._5
14051399 let ch = cJ._6
14061400 let ce = cJ._7
14071401 let ck = cJ._8
14081402 let cd = parseIntValue(cJ._9)
14091403 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14101404 }
14111405
14121406
1413-@Verifier(gB)
1414-func gC () = {
1415- let gD = {
1416- let dN = eQ()
1407+@Verifier(gA)
1408+func gB () = {
1409+ let gC = {
1410+ let dN = eP()
14171411 if ($isInstanceOf(dN, "ByteVector"))
14181412 then {
1419- let eU = dN
1420- eU
1413+ let eT = dN
1414+ eT
14211415 }
14221416 else if ($isInstanceOf(dN, "Unit"))
1423- then gB.senderPublicKey
1417+ then gA.senderPublicKey
14241418 else throw("Match error")
14251419 }
1426- let dN = gB
1420+ let dN = gA
14271421 if ($isInstanceOf(dN, "Order"))
14281422 then {
14291423 let ds = dN
1430- let gE = aO()
1424+ let gD = aO()
14311425 let aB = dr(ds)
14321426 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1433- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1427+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
14341428 if (if (if (aB)
14351429 then aC
14361430 else false)
14371431 then aD
14381432 else false)
14391433 then true
14401434 else aA(aB, aC, aD)
14411435 }
14421436 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14431437 then {
1444- let eR = dN
1445- let gF = blake2b256(value(eR.script))
1446- let gG = fromBase64String(value(getString(aL, ay())))
1447- let gH = scriptHash(this)
1448- if (if ((gG == gF))
1449- then (gH != gF)
1438+ let eQ = dN
1439+ let gE = blake2b256(value(eQ.script))
1440+ let gF = fromBase64String(value(getString(aL, ay())))
1441+ let gG = scriptHash(this)
1442+ if (if ((gF == gE))
1443+ then (gG != gE)
14501444 else false)
14511445 then true
1452- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1446+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14531447 }
1454- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1448+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14551449 }
14561450

github/deemru/w8io/026f985 
299.72 ms