tx · Asa5JypeBy64DEWfN7uZnoF7T4iCiHf2X9DbfH2J4HfE

3N3U79NpaceoEhRUxhL8mHt3EY22MSNuyX2:  -0.03100000 Waves

2022.11.28 13:00 [2336806] smart account 3N3U79NpaceoEhRUxhL8mHt3EY22MSNuyX2 > SELF 0.00000000 Waves

{ "type": 13, "id": "Asa5JypeBy64DEWfN7uZnoF7T4iCiHf2X9DbfH2J4HfE", "fee": 3100000, "feeAssetId": null, "timestamp": 1669629593008, "version": 1, "sender": "3N3U79NpaceoEhRUxhL8mHt3EY22MSNuyX2", "senderPublicKey": "FzJb5sYk81HEPrL2PEUccDGxzmF3Eb1yiDUNhYVe4Bff", "proofs": [ "45kMcYb1of5YKNTJeqpZFTfjYdx9HChtuQP5NjF1V6TVQnDPnCdSSBjpkWM7zo9ZUSMursfBMR6p9NfMiejzYTJQ" ], "script": "base64:BgKoKQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI5NDIyMzIzNSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzIzOTIzMzg4IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNTEwMjM1NjkiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MDQ2MjUyMTMiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjc5MzI2ODQzIgt0b3RhbEFtb3VudCINJHQwMjY4NDcyNzA3MyILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzE5ODAzMjEwNyITZW1pdEFtb3VudEVzdGltYXRlZCIFYm9udXMiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMjgzNjMyOTcxIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzMzc3NjMzOTA4Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM0NTQzMzQ2ODEiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM1NTA2MzU2MzYiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0IhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCnVwZGF0ZWRLTHAiB2FjdGlvbnMiDXBvb2xMUEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoaQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFLAUwBTQkAawMFAUsFAUwFAU0BAU4BAUgDCQBmAgAABQFICQEBLQEFAUgFAUgBAU8BAUgDCQC/AgIFAWUFAUgJAL4CAQUBSAUBSAEBUAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVEAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUwACESVzJXNfX3ByaWNlX19sYXN0AQFUAgFVAVYJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFVCQDMCAIJAKQDAQUBVgUDbmlsBQFqAQFXAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFYAgJfXwUBWQEBWgIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWAICX18FAVkBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJhYgACDiVzX19wcmljZUFzc2V0AAJhYwIHJXNfX2ZlZQACYWQJAGsDAAoFAWIAkE4AAmFlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFjBQJhZAACYWYJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWcJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWgJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWkAHgACYWoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWgFAmFpAQJhawACESVzX19mYWN0b3J5Q29uZmlnAQJhbAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW0BAmFuCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFuAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYW8CAmFwAmFxCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcAICX18FAmFxAghfX2NvbmZpZwECYXIBAmFzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFzAQJhdAACDCVzX19zaHV0ZG93bgECYXUBAmF2CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXYBAmF3AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF4Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXkDAmF6AmFBAmFCCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhegINIHNlbmRlclZhbGlkPQkApQMBBQJhQQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUIBAmFDAgJhRAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFEBQJhRQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRAkAzAgCAgEuCQDMCAIFAmFFCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFGAgJhRAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFEBQJhRQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRAkAzAgCAgEuCQDMCAIFAmFFCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFHAQJhSAkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSAUDbmlsAgEgAQJhSQECYUgJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSAUDbmlsAgEgAAJhSgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFDAgUEdGhpcwkBAVAAAAJhSwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFDAgUCYUoFAmF4AQJhTAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUoJAQJhdAAHAQJhTQAJANkEAQkBAmFDAgUCYUoJAQJhbAABAmFOAAQCYU8JAQJhQwIFBHRoaXMJAQJhYQAEAmFQCQECYUMCBQR0aGlzCQECYWIABAJhcQkBAmFGAgUCYUoJAQJhcgEFAmFQBAJhcAkBAmFGAgUCYUoJAQJhcgEFAmFPCQC1CQIJAQJhQwIFAmFKCQECYW8CCQCkAwEFAmFwCQCkAwEFAmFxBQFqAQJhUQECYVIDCQAAAgUCYVIFAWkFBHVuaXQJANkEAQUCYVIBAmFTAQJhUgMJAAACBQJhUgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhUgECYVQBAmFVCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVUFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBcAkA2QQBCQCRAwIFAmFVBQFxCQECYVEBCQCRAwIFAmFVBQFyCQECYVEBCQCRAwIFAmFVBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdQACYVYJAQJhVAEJAQJhTgAAAmFXBQJhVgACYVgIBQJhVwJfMQACYVkIBQJhVwJfMgACYVoIBQJhVwJfMwACYmEIBQJhVwJfNAACYmIIBQJhVwJfNQACYmMIBQJhVwJfNgACYmQIBQJhVwJfNwECYmUACQC1CQIJAQJhQwIFAmFKCQECYWsABQFqAAJiZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJlAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJoCgJiaQJiagJiawJibAJibQJibgJibwJicAJicQJicgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibQkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIFA25pbAUBagECYnMGAmJ0AmJ1AmJ2AmJsAmJvAmJwCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwBQNuaWwFAWoBAmJ3AQJieAMJAAACBQJieAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYngBAmJ5AgJiegJiQQkAvAIDBQJiegUBZAUCYkEBAmJCBAJiQwJiRAJiRQJiRgQCYkcJAQFEAgUCYkUFAmJDBAJiSAkBAUQCBQJiRgUCYkQJAQJieQIFAmJIBQJiRwECYkkDAmJFAmJGAmJKBAJiSwkBAmFOAAQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCYk4JAQJiQgQFAmJMBQJiTQUCYkUFAmJGBAJiQQkBAUQCBQJiRQUCYkwEAmJ6CQEBRAIFAmJGBQJiTQQCYk8JAQFEAgUCYkoFAWIEAmJQCQECYnkCBQJiQQUCYk8EAmJRCQECYnkCBQJiegUCYk8JAMwIAgUCYk4JAMwIAgUCYlAJAMwIAgUCYlEFA25pbAECYlIDAmJFAmJGAmJKBAJiUwkBAmJJAwUCYkUFAmJGBQJiSgkAzAgCCQEBRwIJAJEDAgUCYlMAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlMAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlMAAgUBYgUDbmlsAQJiVAQCYlUCYlYCYlcBWAQCYksJAQJhTgAEAmJYCQCRAwIFAmJLBQFxBAJiWQkAkQMCBQJiSwUBcgQCYloJAJEDAgUCYksFAXMEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJjYggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiWAUCYlYJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNjCQECYncBBQJiWQQCY2QJAQFEAgUCY2MFAmJDBAJjZQkBAmJ3AQUCYloEAmNmCQEBRAIFAmNlBQJiRAQCY2cJAQJieQIFAmNmBQJjZAQCY2gJAQFHAgUCY2cFAWIEAmNpCQEBRAIFAmJXBQFiBAJjagkBAUQCBQJjYgUBYgQCY2sJALwCAwUCY2QFAmNpBQJjagQCY2wJALwCAwUCY2YFAmNpBQJjagQCY20JAQFHAgUCY2sFAmJDBAJjbgkBAUcCBQJjbAUCYkQEAmNvAwkAAAIFAmJVAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjbQMJAAACBQJiWQIFV0FWRVMFBHVuaXQJANkEAQUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY24DCQAAAgUCYloCBVdBVkVTBQR1bml0CQDZBAEFAmJaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiVQkBAmJzBgUCY20FAmNuBQJiVwUCY2gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2gFA25pbAkAnAoKBQJjbQUCY24FAmJZBQJiWgUCY2MFAmNlBQJjYgUCY2cFAmNhBQJjbwECY3AJAmJVAmNxAmNyAmNzAmN0AmN1AVgCY3YCY3cEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCY3kJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmNiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0IJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3MJANkEAQIFV0FWRVMEAmNDCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN1CQDZBAECBVdBVkVTAwMJAQIhPQIFAmN4BQJjQgYJAQIhPQIFAmN5BQJjQwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNjAwUCY3YJAQJidwEFAmN4CQBlAgkBAmJ3AQUCY3gFAmNyBAJjZQMFAmN2CQECYncBBQJjeQkAZQIJAQJidwEFAmN5BQJjdAQCY0QJAQFEAgUCY3IFAmJMBAJjRQkBAUQCBQJjdAUCYk0EAmNGCQECYnkCBQJjRQUCY0QEAmNkCQEBRAIFAmNjBQJiTAQCY2YJAQFEAgUCY2UFAmJNBAJjRwMJAAACBQJjYgAABAJjZwUBZQQCY0gFAWUEAmJPCQB2BgkAuQICBQJjRAUCY0UAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYk8FAWIJAQFHAgUCY0QFAmJMCQEBRwIFAmNFBQJiTQkBAmJ5AgkAtwICBQJjZgUCY0UJALcCAgUCY2QFAmNEBQJjSAQCY2cJAQJieQIFAmNmBQJjZAQCY0gJALwCAwkBAU8BCQC4AgIFAmNnBQJjRgUBZAUCY2cEAmNJCQEBRAIFAmNxBQFiAwMJAQIhPQIFAmNnBQFlCQC/AgIFAmNIBQJjSQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0gCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjSQQCY2oJAQFEAgUCY2IFAWIEAmNKCQC8AgMFAmNEBQJjZwUBZAQCY0sJALwCAwUCY0UFAWQFAmNnBAJjTAMJAL8CAgUCY0oFAmNFCQCUCgIFAmNLBQJjRQkAlAoCBQJjRAUCY0oEAmNNCAUCY0wCXzEEAmNOCAUCY0wCXzIEAmJPCQC8AgMFAmNqBQJjTgUCY2YJAJcKBQkBAUcCBQJiTwUBYgkBAUcCBQJjTQUCYkwJAQFHAgUCY04FAmJNBQJjZwUCY0gEAmNPCAUCY0cCXzEEAmNQCAUCY0cCXzIEAmNRCAUCY0cCXzMEAmNoCQEBRwIIBQJjRwJfNAUBYgQCY1IJAQFHAggFAmNHAl81BQFiAwkAZwIAAAUCY08JAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNTAwkBASEBBQJjdwAABQJjTwQCY1QJAGUCBQJjcgUCY1AEAmNVCQBlAgUCY3QFAmNRBAJjVgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJVCQECYmgKBQJjUAUCY1EFAmNTBQJjaAUCY3EFAmNSBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVAUCY1UFA25pbAkAnwoNBQJjTwUCY1MFAmNoBQJjYwUCY2UFAmNiBQJiWAUCY2EFAmNWBQJjVAUCY1UFAmNzBQJjdQECY1cBAmNYBAJiSwkBAmFOAAQCY1kJAJEDAgUCYksFAXIEAmNaCQCRAwIFAmJLBQFzBAJjYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQFwBAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJkYQkBAmJ3AQUCY1kEAmRiCQECYncBBQJjWgQCY2cDCQAAAggFAmNYCW9yZGVyVHlwZQUDQnV5CQECYkIEBQJiTAUCYk0JAGQCBQJkYQgFAmNYBmFtb3VudAUCZGIJAQJiQgQFAmJMBQJiTQkAZQIFAmRhCAUCY1gGYW1vdW50BQJkYgQCY2gJAQFHAgUCY2cFAWIDAwMJAQJhTAAGCQAAAgUCY2EFAW0GCQAAAgUCY2EFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJkYwgIBQJjWAlhc3NldFBhaXILYW1vdW50QXNzZXQEAmRkAwkAAAIFAmRjBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkYwQCZGUICAUCY1gJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRmAwkAAAIFAmRlBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkZQMDCQECIT0CBQJkZAUCY1kGCQECIT0CBQJkZgUCY1oJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkZwgFAmNYBXByaWNlBAJkaAkAawMFAWIFAmJNBQJiTAQCZGkJAQFKAwUCZGcFAWIFAmRoBAJkagMJAAACCAUCY1gJb3JkZXJUeXBlBQNCdXkJAGcCBQJjaAUCZGkJAGcCBQJkaQUCY2gGAQJkawECZGwDCQECIT0CCQCQAwEIBQJkbAhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRtCQEFdmFsdWUBCQCRAwIIBQJkbAhwYXltZW50cwAABAJiVgkBBXZhbHVlAQgFAmRtB2Fzc2V0SWQEAmRuCAUCZG0GYW1vdW50BAJjRwkBAmJUBAkA2AQBCAUCZGwNdHJhbnNhY3Rpb25JZAkA2AQBBQJiVgUCZG4IBQJkbAZjYWxsZXIEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY28IBQJjRwNfMTADAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EJAJcKBQUCY20FAmNuBQJkbgUCYlYFAmNvAQJkbwMCZGwCY3ECY3cDCQECIT0CCQCQAwEIBQJkbAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZHAJAQV2YWx1ZQEJAJEDAggFAmRsCHBheW1lbnRzAAAEAmRxCQEFdmFsdWUBCQCRAwIIBQJkbAhwYXltZW50cwABBAJkcgkBAmNwCQkA2AQBCAUCZGwNdHJhbnNhY3Rpb25JZAUCY3EIBQJkcAZhbW91bnQIBQJkcAdhc3NldElkCAUCZHEGYW1vdW50CAUCZHEHYXNzZXRJZAkApQgBCAUCZGwGY2FsbGVyBwUCY3cEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJkcgJfOAMDAwkBAmFMAAYJAAACBQJjYQUBbAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EFAmRyAQJkcwECZHQEAmR1CQD8BwQFAmFKAgRlbWl0CQDMCAIFAmR0BQNuaWwFA25pbAMJAAACBQJkdQUCZHUEAmR2BAJkdwUCZHUDCQABAgUCZHcCB0FkZHJlc3MEAmR4BQJkdwkA/AcEBQJkeAIEZW1pdAkAzAgCBQJkdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHYFAmR2BQJkdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHkBAmR0BAJkegkAawMFAmR0BQJhZQUBYgkAlAoCCQBlAgUCZHQFAmR6BQJkegECZEEEAmRCAmRDAVgBWQQCZEQJAAACBQFZBQR1bml0BAJkRQkBAmJ3AQkBAmFTAQUCYmEEAmRGCQECYncBCQECYVMBBQJiYgQCZEcDCQAAAgUCZEMFAmJhBgMJAAACBQJkQwUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJkSAMFAmRECQCUCgIFAmRFBQJkRgMFAmRHCQCUCgIJAGUCBQJkRQUCZEIFAmRGCQCUCgIFAmRFCQBlAgUCZEYFAmRCBAJkSQgFAmRIAl8xBAJkSggFAmRIAl8yBAJkSwMFAmRHCQCUCgIFAmRCAAAJAJQKAgAABQJkQgQCZEwIBQJkSwJfMQQCZE0IBQJkSwJfMgQCZE4ICQECZHkBBQJkTAJfMQQCZE8ICQECZHkBBQJkTQJfMQQCZFAJAQJkeQEFAmRCBAJkUQgFAmRQAl8xBAJkeggFAmRQAl8yBAJkUgkAZAIFAmRJBQJkTgQCZFMJAGQCBQJkSgUCZE8EAmRUCQECYnkCCQEBRAIFAmRTBQJiZAkBAUQCBQJkUgUCYmMEAmRVCQEBRwIFAmRUBQFiBAJkVgMFAmRHBQJkSQUCZEoEAmRXCQC2AgEFAmRWBAJkWAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFaCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFaAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFkDCQC/AgIFAmRYBQFmBgkBAmFHAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJkWQUCZFkEAmRaCQC2AgEFAmRRBAJlYQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJkWAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmRaBQFkBQJkVwASABIFBERPV04FAWQFAWQFA25pbAQCY1YDBQJkRAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmRVCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRVCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJiaAoFAmRMBQJkTQUCZWEFAmRVAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZWIJAQJieQIJAQFEAgUCZEoFAmJkCQEBRAIFAmRJBQJiYwQCZWMJAQFHAgUCZWIFAWIEAmVkBAJlZQMFAmRHCQCUCgIFAmRMBQJkSQkAlAoCBQJkTQUCZEoEAmR0CAUCZWUCXzEEAmVmCAUCZWUCXzIEAmVnCQCgAwEJALwCAwUCZFgJALYCAQkAaQIFAmR0AAIJALYCAQUCZWYJAGsDCQBlAgUCZWEFAmVnBQFiBQJlZwkAlgoEBQJlYQUCY1YFAmR6BQJlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWgFAmVpAmRRAmRDAVgBWQQCZEQJAAACBQFZBQR1bml0BAJlagkAzAgCAwkAAAIFAmRDBQJhWgYJAQJhRwECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlagUCZWoEAmVrAwkAAAIFAmVpBQJiYQYDCQAAAgUCZWkFAmJiBwkBAmFHAQINaW52YWxpZCBhc3NldAQCZWwDBQJlawkAtgIBCQECYncBCQECYVMBBQJiYQkAtgIBCQECYncBCQECYVMBBQJiYgQCZW0JAQJidwEJAQJhUwEFAmJhBAJlbgkBAmJ3AQkBAmFTAQUCYmIEAmVvAwUCZWsFAmVtBQJlbgQCZXAJALYCAQUCZW8EAmRYCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVoJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVoCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlcQkAtgIBBQJkUQQCZXIJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZWwJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVxBQFkBQJkWAASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlcwkBAmR5AQUCZXIEAmV0CAUCZXMCXzEEAmR6CAUCZXMCXzIEAmV1AwUCZWsJAJYKBAUCZXQAAAkAZQIFAmVtBQJlcgUCZW4JAJYKBAAABQJldAUCZW0JAGUCBQJlbgUCZXIEAmV2CAUCZXUCXzEEAmV3CAUCZXUCXzIEAmV4CAUCZXUCXzMEAmV5CAUCZXUCXzQEAmRUCQECYnkCCQEBRAIFAmV5BQJiZAkBAUQCBQJleAUCYmMEAmRVCQEBRwIFAmRUBQFiBAJjVgMFAmREBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJzBgUCZXYFAmV3BQJkUQUCZFUFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZFUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFUFA25pbAQCZWIJAQJieQIJAQFEAgUCZW4FAmJkCQEBRAIFAmVtBQJiYwQCZWMJAQFHAgUCZWIFAWIEAmVkBAJlegkAaAIJAKADAQkAvAIDBQJlbAUCZXEFAmRYAAIJAGsDCQBlAgUCZXQFAmV6BQFiBQJlegkAlgoEBQJldAUCY1YFAmR6BQJlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUEABAJkdwkAoggBCQEBUQADCQABAgUCZHcCBlN0cmluZwQCZUIFAmR3CQDZBAEFAmVCAwkAAQIFAmR3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVDAAQCZHcJAKIIAQkBAVIAAwkAAQIFAmR3AgZTdHJpbmcEAmVCBQJkdwkA2QQBBQJlQgMJAAECBQJkdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlRAECZGwEAmR3CQECZUEAAwkAAQIFAmR3AgpCeXRlVmVjdG9yBAJlRQUCZHcJAAACCAUCZGwPY2FsbGVyUHVibGljS2V5BQJlRQMJAAECBQJkdwIEVW5pdAkAAAIIBQJkbAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZUYBAmRsBAJlRwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkdwkBAmVBAAMJAAECBQJkdwIKQnl0ZVZlY3RvcgQCZUUFAmR3AwkAAAIIBQJkbA9jYWxsZXJQdWJsaWNLZXkFAmVFBgUCZUcDCQABAgUCZHcCBFVuaXQDCQAAAggFAmRsBmNhbGxlcgUEdGhpcwYFAmVHCQACAQILTWF0Y2ggZXJyb3IbAmRsAQpzZXRNYW5hZ2VyAQJlSAQCZUkJAQJlRgEFAmRsAwkAAAIFAmVJBQJlSQQCZUoJANkEAQUCZUgDCQAAAgUCZUoFAmVKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAAUCZUgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEOY29uZmlybU1hbmFnZXIABAJlSwkBAmVDAAQCZUwDCQEJaXNEZWZpbmVkAQUCZUsGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVMBQJlTAQCZU0DCQAAAggFAmRsD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZUsGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVNBQJlTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQAJANgEAQkBBXZhbHVlAQUCZUsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVIABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBA3B1dAICY3ECZU4DCQBmAgAABQJjcQkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkcgkBAmRvAwUCZGwFAmNxBgQCY1MIBQJkcgJfMgQCYlgIBQJkcgJfNwQCY28IBQJkcgJfOQQCY1QIBQJkcgNfMTAEAmNVCAUCZHIDXzExBAJlTwgFAmRyA18xMgQCZVAIBQJkcgNfMTMEAmR1CQD8BwQFAmFKAgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAMJAAACBQJkdQUCZHUEAmR2BAJkdwUCZHUDCQABAgUCZHcCB0FkZHJlc3MEAmR4BQJkdwkA/AcEBQJkeAIEZW1pdAkAzAgCBQJjUwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHYFAmR2BAJlUQMJAGYCBQJjVAAACQD8BwQFAmJnAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZU8FAmNUBQNuaWwFA25pbAMJAAACBQJlUQUCZVEEAmVSAwkAZgIFAmNVAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlUAUCY1UFA25pbAUDbmlsAwkAAAIFAmVSBQJlUgQCZVMDBQJlTgQCZVQJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJYBQJjUwUDbmlsAwkAAAIFAmVUBQJlVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmNTBQJiWAUDbmlsCQDOCAIFAmNvBQJlUwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEKcHV0Rm9yRnJlZQECZVUDCQBmAgAABQJlVQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkcgkBAmRvAwUCZGwFAmVVBwgFAmRyAl85AmRsAQlwdXRPbmVUa24CAmVWAmVXBAJlWAoAAmVZCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVkCB0Jvb2xlYW4FAmVZCQACAQkArAICCQADAQUCZVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmVaAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZVgEAmVqCQDMCAIDAwkBASEBBQJlWgYJAQJlRAEFAmRsBgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZmEJAJEDAggFAmRsCHBheW1lbnRzAAAEAmRDCAUCZmEHYXNzZXRJZAQCZEIIBQJmYQZhbW91bnQEAVgIBQJkbAZjYWxsZXIEAVkIBQJkbA10cmFuc2FjdGlvbklkBAJmYgkBAmRBBAUCZEIFAmRDBQFYBQFZBAJmYwgFAmZiAl8xBAJjVggFAmZiAl8yBAJkeggFAmZiAl8zBAJmZAgFAmZiAl80BAJmZQMDCQBmAgUCZVYAAAkAZgIFAmVWBQJmYwcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVYFA25pbAIABQJmYwQCZHUJAQJkcwEFAmZlAwkAAAIFAmR1BQJkdQQCZVMDBQJlVwQCZmYJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmZQUDbmlsAwkAAAIFAmZmBQJmZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmZlBQJhWgUDbmlsBAJmZwMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZEMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZVMFAmZnBQJmZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAERcHV0T25lVGtuUkVBRE9OTFkCAmRDAmRCBAJmaAkBAmRBBAUCZEIJAQJhUQEFAmRDBQR1bml0BQR1bml0BAJmYwgFAmZoAl8xBAJjVggFAmZoAl8yBAJkeggFAmZoAl8zBAJmZAgFAmZoAl80CQCUCgIFA25pbAkAlQoDBQJmYwUCZHoFAmZkAmRsAQlnZXRPbmVUa24CAmZpAmVWBAJlWAoAAmVZCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVkCB0Jvb2xlYW4FAmVZCQACAQkArAICCQADAQUCZVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZqAwMJAQJhTAAGCQAAAgUCYVkFAW4GBQJlWAQCZWoJAMwIAgMDCQEBIQEFAmZqBgkBAmVEAQUCZGwGCQECYUcBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwABBgkBAmFHAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWoFAmVqBAJlaQkBAmFRAQUCZmkEAmZhCQCRAwIIBQJkbAhwYXltZW50cwAABAJkQwgFAmZhB2Fzc2V0SWQEAmRRCAUCZmEGYW1vdW50BAFYCAUCZGwGY2FsbGVyBAFZCAUCZGwNdHJhbnNhY3Rpb25JZAQCZmsJAQJlaAUFAmVpBQJkUQUCZEMFAVgFAVkEAmZsCAUCZmsCXzEEAmNWCAUCZmsCXzIEAmR6CAUCZmsCXzMEAmZkCAUCZmsCXzQEAmR0AwMJAGYCBQJlVgAACQBmAgUCZVYFAmZsBwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlVgUDbmlsAgAFAmZsBAJmbQkA/AcEBQJhSgIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkQwUCZFEFA25pbAMJAAACBQJmbQUCZm0EAmZuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmR0BQJlaQUDbmlsBAJmZwMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZWkFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZm4FAmZnBQJkdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAERZ2V0T25lVGtuUkVBRE9OTFkCAmVpAmRRBAJmbwkBAmVoBQkBAmFRAQUCZWkFAmRRBQJhWgUEdW5pdAUEdW5pdAQCZmwIBQJmbwJfMQQCY1YIBQJmbwJfMgQCZHoIBQJmbwJfMwQCZmQIBQJmbwJfNAkAlAoCBQNuaWwJAJUKAwUCZmwFAmR6BQJmZAJkbAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZnACZmkCZVYEAmVYCgACZVkJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlWQIHQm9vbGVhbgUCZVkJAAIBCQCsAgIJAAMBBQJlWQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZmoDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmVYBAJlagkAzAgCAwMJAQEhAQUCZmoGCQECZUQBBQJkbAYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRsCHBheW1lbnRzAAAGCQECYUcBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlagUCZWoEAmVpCQECYVEBBQJmaQQBWAgFAmRsBmNhbGxlcgQBWQgFAmRsDXRyYW5zYWN0aW9uSWQEAmZxCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZnAFA25pbAUDbmlsAwkAAAIFAmZxBQJmcQQCZnIJAQJlaAUFAmVpBQJmcAUCYVoFAVgFAVkEAmZsCAUCZnICXzEEAmNWCAUCZnICXzIEAmR6CAUCZnICXzMEAmZkCAUCZnICXzQEAmR0AwMJAGYCBQJlVgAACQBmAgUCZVYFAmZsBwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlVgUDbmlsAgAFAmZsBAJmbQkA/AcEBQJhSgIEYnVybgkAzAgCBQJmcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZnAFA25pbAMJAAACBQJmbQUCZm0EAmZuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmR0BQJlaQUDbmlsBAJmZwMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZWkFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZm4FAmZnBQJkdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEDZ2V0AAQCY0cJAQJkawEFAmRsBAJmcwgFAmNHAl8xBAJjbggFAmNHAl8yBAJkbggFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81BAJmdAkA/AcEBQJhSgIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZG4FA25pbAMJAAACBQJmdAUCZnQFAmNvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQlnZXROb0xlc3MCAmZ1AmZ2BAJjRwkBAmRrAQUCZGwEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmRuCAUCY0cCXzMEAmJWCAUCY0cCXzQEAmNvCAUCY0cCXzUDCQBmAgUCZnUFAmNtCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjbQIDIDwgCQCkAwEFAmZ1AwkAZgIFAmZ2BQJjbgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNuAgMgPCAJAKQDAQUCZnYEAmZ0CQD8BwQFAmFKAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJWBQJkbgUDbmlsAwkAAAIFAmZ0BQJmdAUCY28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBDXVuc3Rha2VBbmRHZXQBAmR0BAJmdwMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmZ3BQJmdwQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmZxCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYlgJAMwIAgUCZHQFA25pbAUDbmlsAwkAAAIFAmZxBQJmcQQCY0cJAQJiVAQJANgEAQgFAmRsDXRyYW5zYWN0aW9uSWQJANgEAQUCYlgFAmR0CAUCZGwGY2FsbGVyBAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkEAmNvCAUCY0cDXzEwBAJmeAMDCQECYUwABgkAAAIFAmNhBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQYDCQAAAgUCZngFAmZ4BAJmdAkA/AcEBQJhSgIEYnVybgkAzAgCBQJkdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWAUCZHQFA25pbAMJAAACBQJmdAUCZnQFAmNvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmcAJmeQJmdgQCZmoDCQECYUwABgkAAAIFAmFZBQFuBAJlagkAzAgCAwkBASEBBQJmagYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZnEJAPwHBAUCYmYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWgkAzAgCBQJmcAUDbmlsBQNuaWwDCQAAAgUCZnEFAmZxBAJjRwkBAmJUBAkA2AQBCAUCZGwNdHJhbnNhY3Rpb25JZAkA2AQBBQJhWgUCZnAIBQJkbAZjYWxsZXIEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNvCAUCY0cDXzEwBAJmegkAzAgCAwkAZwIFAmNtBQJmeQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmeQUDbmlsAgAJAMwIAgMJAGcCBQJjbgUCZnYGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmdgUDbmlsAgAFA25pbAMJAAACBQJmegUCZnoEAmZ0CQD8BwQFAmFKAgRidXJuCQDMCAIFAmZwBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmcAUDbmlsAwkAAAIFAmZ0BQJmdAUCY28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBCGFjdGl2YXRlAgJmQQJmQgMJAQIhPQIJAKUIAQgFAmRsBmNhbGxlcgkApQgBBQJhSgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmZBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmZCBQNuaWwCB3N1Y2Nlc3MCZGwBCnJlZnJlc2hLTHAABAJmQwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhZwAABAJmRAMJAGcCCQBlAgUGaGVpZ2h0BQJmQwUCYWoFBHVuaXQJAQJhRwEJALkJAgkAzAgCCQCkAwEFAmFqCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJmRAUCZkQEAmZFCQC2AgEJAQJidwEJAQJhUwEFAmJhBAJmRgkAtgIBCQECYncBCQECYVMBBQJiYgQCZkcJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYVoIcXVhbnRpdHkEAmZICQC8AgMJAHYGCQC5AgIFAmZFBQJmRgAACQC2AgEABQABAAAFBERPV04FAWQFAmZHBAJmSQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWcFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhZgkApgMBBQJmSAUDbmlsCQCUCgIFAmZJCQCmAwEFAmZICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhTgACZGwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJ4CQCUCgIFA25pbAkBAmJ3AQUCYngCZGwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJFAmJGAmJKBAJiUwkBAmJJAwUCYkUFAmJGBQJiSgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJTAAAJAMwIAgkApgMBCQCRAwIFAmJTAAEJAMwIAgkApgMBCQCR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cgkAzAgCCQCkAwEFAmN0BQNuaWwFAWoCZGwBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN0BAJiSwkBAmFOAAQCYlgJANkEAQkAkQMCBQJiSwUBcQQCY3gJAJEDAgUCYksFAXIEAmJZCQDZBAEFAmN4BAJjeQkAkQMCBQJiSwUBcwQCYloJANkEAQUCY3kEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJmSggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiWAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZQCQECYncBBQJjeAQCZlEJAQJidwEFAmN5BAJmUgkBAUQCBQJmUAUCYkwEAmZTCQEBRAIFAmZRBQJiTQQCY2cDCQAAAgUCZkoAAAUBZQkBAmJ5AgUCZlMFAmZSBAJjRQkBAUQCBQJjdAUCYk0EAmNECQC8AgMFAmNFBQFkBQJjZwQCY3IJAQFHAgUCY0QFAmJMBAJkcgkBAmNwCQIAAKDCHgUCY3IFAmJZBQJjdAUCYloCAAYHBAJjTwgFAmRyAl8xBAJmTwgFAmRyAl8zBAJjYwgFAmRyAl80BAJjZQgFAmRyAl81BAJjYggFAmRyAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjTwkAzAgCCQCkAwEJAQFHAgUCY2cFAWIJAMwIAgkApAMBBQJjYwkAzAgCCQCkAwEFAmNlCQDMCAIJAKQDAQUCY2IJAMwIAgUCY2EJAMwIAgkApAMBBQJjcgkAzAgCCQCkAwEFAmN0BQNuaWwFAWoCZGwBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmZUAmZVBAJjRwkBAmJUBAIABQJmVAUCZlUFBHRoaXMEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNjCAUCY0cCXzUEAmNlCAUCY0cCXzYEAmNiCAUCY0cCXzcEAmNoCAUCY0cCXzgEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNtCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjYwkAzAgCCQCkAwEFAmNlCQDMCAIJAKQDAQUCY2IJAMwIAgkApgMBBQJjaAkAzAgCCQCkAwEFAmNhBQNuaWwFAWoBAmZWAQJmVwAEAmZYBAJkdwkBAmVBAAMJAAECBQJkdwIKQnl0ZVZlY3RvcgQCZUUFAmR3BQJlRQMJAAECBQJkdwIEVW5pdAgFAmZWD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkdwUCZlYDCQABAgUCZHcCBU9yZGVyBAJjWAUCZHcEAmZZCQECYU0ABAJhegkBAmNXAQUCY1gEAmFBCQD0AwMIBQJjWAlib2R5Qnl0ZXMJAJEDAggFAmNYBnByb29mcwAACAUCY1gPc2VuZGVyUHVibGljS2V5BAJhQgkA9AMDCAUCY1gJYm9keUJ5dGVzCQCRAwIIBQJjWAZwcm9vZnMAAQUCZlkDAwMFAmF6BQJhQQcFAmFCBwYJAQJheQMFAmF6BQJhQQUCYUIDCQABAgUCZHcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlQgUCZHcEAmZaCQD2AwEJAQV2YWx1ZQEIBQJlQgZzY3JpcHQEAmdhCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUoJAQJhdwAEAmdiCQDxBwEFBHRoaXMDAwkAAAIFAmdhBQJmWgkBAiE9AgUCZ2IFAmZaBwYJAPQDAwgFAmZWCWJvZHlCeXRlcwkAkQMCCAUCZlYGcHJvb2ZzAAAFAmZYCQD0AwMIBQJmVglib2R5Qnl0ZXMJAJEDAggFAmZWBnByb29mcwAABQJmWLxXcig=", "chainId": 84, "height": 2336806, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EgD6accrgt4rAeRhUzUX5joC8Jn26RkpRguKs9H3SQyA Next: EtY95EFiJ3j4ycvjhB5ykxZwVVNpaVaUumE5bPrEut3N Diff:
OldNewDifferences
594594 }
595595
596596
597-func eA (eB,eC,cb) = {
598- let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599- eD
600- }
601-
602-
603-func eE () = {
604- let eF = bw(aS(ba))
605- let eG = bw(aS(bb))
606- let cb = value(assetInfo(aZ)).quantity
607- let eD = eA(toBigInt(eF), toBigInt(eG), toBigInt(cb))
608- let eH = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609- $Tuple2(eH, eD)
610- }
611-
612-
613-func eI () = {
597+func eA () = {
614598 let dw = getString(Q())
615599 if ($isInstanceOf(dw, "String"))
616600 then {
617- let eJ = dw
618- fromBase58String(eJ)
601+ let eB = dw
602+ fromBase58String(eB)
619603 }
620604 else if ($isInstanceOf(dw, "Unit"))
621605 then unit
623607 }
624608
625609
626-func eK () = {
610+func eC () = {
627611 let dw = getString(R())
628612 if ($isInstanceOf(dw, "String"))
629613 then {
630- let eJ = dw
631- fromBase58String(eJ)
614+ let eB = dw
615+ fromBase58String(eB)
632616 }
633617 else if ($isInstanceOf(dw, "Unit"))
634618 then unit
636620 }
637621
638622
639-func eL (dl) = {
640- let dw = eI()
623+func eD (dl) = {
624+ let dw = eA()
641625 if ($isInstanceOf(dw, "ByteVector"))
642626 then {
643- let eM = dw
644- (dl.callerPublicKey == eM)
627+ let eE = dw
628+ (dl.callerPublicKey == eE)
645629 }
646630 else if ($isInstanceOf(dw, "Unit"))
647631 then (dl.caller == this)
649633 }
650634
651635
652-func eN (dl) = {
653- let eO = throw("Permission denied")
654- let dw = eI()
636+func eF (dl) = {
637+ let eG = throw("Permission denied")
638+ let dw = eA()
655639 if ($isInstanceOf(dw, "ByteVector"))
656640 then {
657- let eM = dw
658- if ((dl.callerPublicKey == eM))
641+ let eE = dw
642+ if ((dl.callerPublicKey == eE))
659643 then true
660- else eO
644+ else eG
661645 }
662646 else if ($isInstanceOf(dw, "Unit"))
663647 then if ((dl.caller == this))
664648 then true
665- else eO
649+ else eG
666650 else throw("Match error")
667651 }
668652
669653
670654 @Callable(dl)
671-func setManager (eP) = {
672- let eQ = eN(dl)
673- if ((eQ == eQ))
655+func setManager (eH) = {
656+ let eI = eF(dl)
657+ if ((eI == eI))
674658 then {
675- let eR = fromBase58String(eP)
676- if ((eR == eR))
677- then [StringEntry(R(), eP)]
659+ let eJ = fromBase58String(eH)
660+ if ((eJ == eJ))
661+ then [StringEntry(R(), eH)]
678662 else throw("Strict value is not equal to itself.")
679663 }
680664 else throw("Strict value is not equal to itself.")
684668
685669 @Callable(dl)
686670 func confirmManager () = {
687- let eS = eK()
688- let eT = if (isDefined(eS))
671+ let eK = eC()
672+ let eL = if (isDefined(eK))
689673 then true
690674 else throw("No pending manager")
691- if ((eT == eT))
675+ if ((eL == eL))
692676 then {
693- let eU = if ((dl.callerPublicKey == value(eS)))
677+ let eM = if ((dl.callerPublicKey == value(eK)))
694678 then true
695679 else throw("You are not pending manager")
696- if ((eU == eU))
697- then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
680+ if ((eM == eM))
681+ then [StringEntry(Q(), toBase58String(value(eK))), DeleteEntry(R())]
698682 else throw("Strict value is not equal to itself.")
699683 }
700684 else throw("Strict value is not equal to itself.")
703687
704688
705689 @Callable(dl)
706-func put (cq,eV) = if ((0 > cq))
690+func put (cq,eN) = if ((0 > cq))
707691 then throw("Invalid slippageTolerance passed")
708692 else {
709693 let dr = do(dl, cq, true)
712696 let co = dr._9
713697 let cT = dr._10
714698 let cU = dr._11
715- let eW = dr._12
716- let eX = dr._13
699+ let eO = dr._12
700+ let eP = dr._13
717701 let du = invoke(aJ, "emit", [cS], nil)
718702 if ((du == du))
719703 then {
728712 }
729713 if ((dv == dv))
730714 then {
731- let eY = if ((cT > 0))
732- then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
715+ let eQ = if ((cT > 0))
716+ then invoke(bg, "put", nil, [AttachedPayment(eO, cT)])
733717 else nil
734- if ((eY == eY))
718+ if ((eQ == eQ))
735719 then {
736- let eZ = if ((cU > 0))
737- then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
720+ let eR = if ((cU > 0))
721+ then invoke(bg, "put", nil, [AttachedPayment(eP, cU)])
738722 else nil
739- if ((eZ == eZ))
723+ if ((eR == eR))
740724 then {
741- let fa = if (eV)
725+ let eS = if (eN)
742726 then {
743- let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744- if ((fb == fb))
727+ let eT = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728+ if ((eT == eT))
745729 then nil
746730 else throw("Strict value is not equal to itself.")
747731 }
748732 else [ScriptTransfer(dl.caller, cS, bX)]
749- (co ++ fa)
733+ (co ++ eS)
750734 }
751735 else throw("Strict value is not equal to itself.")
752736 }
760744
761745
762746 @Callable(dl)
763-func putForFree (fc) = if ((0 > fc))
747+func putForFree (eU) = if ((0 > eU))
764748 then throw("Invalid value passed")
765749 else {
766- let dr = do(dl, fc, false)
750+ let dr = do(dl, eU, false)
767751 dr._9
768752 }
769753
770754
771755
772756 @Callable(dl)
773-func putOneTkn (fd,fe) = {
774- let ff = {
775- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
776- if ($isInstanceOf(fg, "Boolean"))
777- then fg
778- else throw(($getType(fg) + " couldn't be cast to Boolean"))
757+func putOneTkn (eV,eW) = {
758+ let eX = {
759+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
760+ if ($isInstanceOf(eY, "Boolean"))
761+ then eY
762+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
779763 }
780- let fh = if (if (if (aL())
764+ let eZ = if (if (if (aL())
781765 then true
782766 else (aY == l))
783767 then true
784768 else (aY == n))
785769 then true
786- else ff
787- let ej = [if (if (!(fh))
770+ else eX
771+ let ej = [if (if (!(eZ))
788772 then true
789- else eL(dl))
773+ else eD(dl))
790774 then true
791775 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
792776 then true
793777 else aG("exactly 1 payment are expected")]
794778 if ((ej == ej))
795779 then {
796- let fi = dl.payments[0]
797- let dC = fi.assetId
798- let dB = fi.amount
780+ let fa = dl.payments[0]
781+ let dC = fa.assetId
782+ let dB = fa.amount
799783 let X = dl.caller
800784 let Y = dl.transactionId
801- let fj = dA(dB, dC, X, Y)
802- let fk = fj._1
803- let cV = fj._2
804- let dz = fj._3
805- let fl = fj._4
806- let fm = if (if ((fd > 0))
807- then (fd > fk)
785+ let fb = dA(dB, dC, X, Y)
786+ let fc = fb._1
787+ let cV = fb._2
788+ let dz = fb._3
789+ let fd = fb._4
790+ let fe = if (if ((eV > 0))
791+ then (eV > fc)
808792 else false)
809- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
810- else fk
811- let du = ds(fm)
793+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
794+ else fc
795+ let du = ds(fe)
812796 if ((du == du))
813797 then {
814- let fa = if (fe)
798+ let eS = if (eW)
815799 then {
816- let fn = invoke(bf, "stake", nil, [AttachedPayment(aZ, fm)])
817- if ((fn == fn))
800+ let ff = invoke(bf, "stake", nil, [AttachedPayment(aZ, fe)])
801+ if ((ff == ff))
818802 then nil
819803 else throw("Strict value is not equal to itself.")
820804 }
821- else [ScriptTransfer(dl.caller, fm, aZ)]
822- let fo = if ((dz > 0))
805+ else [ScriptTransfer(dl.caller, fe, aZ)]
806+ let fg = if ((dz > 0))
823807 then [ScriptTransfer(aK, dz, dC)]
824808 else nil
825- $Tuple2(((cV ++ fa) ++ fo), fm)
809+ $Tuple2(((cV ++ eS) ++ fg), fe)
826810 }
827811 else throw("Strict value is not equal to itself.")
828812 }
833817
834818 @Callable(dl)
835819 func putOneTknREADONLY (dC,dB) = {
836- let fp = dA(dB, aQ(dC), unit, unit)
837- let fk = fp._1
838- let cV = fp._2
839- let dz = fp._3
840- let fl = fp._4
841- $Tuple2(nil, $Tuple3(fk, dz, fl))
820+ let fh = dA(dB, aQ(dC), unit, unit)
821+ let fc = fh._1
822+ let cV = fh._2
823+ let dz = fh._3
824+ let fd = fh._4
825+ $Tuple2(nil, $Tuple3(fc, dz, fd))
842826 }
843827
844828
845829
846830 @Callable(dl)
847-func getOneTkn (fq,fd) = {
848- let ff = {
849- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
850- if ($isInstanceOf(fg, "Boolean"))
851- then fg
852- else throw(($getType(fg) + " couldn't be cast to Boolean"))
831+func getOneTkn (fi,eV) = {
832+ let eX = {
833+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
834+ if ($isInstanceOf(eY, "Boolean"))
835+ then eY
836+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
853837 }
854- let fr = if (if (aL())
838+ let fj = if (if (aL())
855839 then true
856840 else (aY == n))
857841 then true
858- else ff
859- let ej = [if (if (!(fr))
842+ else eX
843+ let ej = [if (if (!(fj))
860844 then true
861- else eL(dl))
845+ else eD(dl))
862846 then true
863847 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
864848 then true
865849 else aG("exactly 1 payment are expected")]
866850 if ((ej == ej))
867851 then {
868- let ei = aQ(fq)
869- let fi = dl.payments[0]
870- let dC = fi.assetId
871- let dQ = fi.amount
852+ let ei = aQ(fi)
853+ let fa = dl.payments[0]
854+ let dC = fa.assetId
855+ let dQ = fa.amount
872856 let X = dl.caller
873857 let Y = dl.transactionId
874- let fs = eh(ei, dQ, dC, X, Y)
875- let ft = fs._1
876- let cV = fs._2
877- let dz = fs._3
878- let fl = fs._4
879- let dt = if (if ((fd > 0))
880- then (fd > ft)
858+ let fk = eh(ei, dQ, dC, X, Y)
859+ let fl = fk._1
860+ let cV = fk._2
861+ let dz = fk._3
862+ let fd = fk._4
863+ let dt = if (if ((eV > 0))
864+ then (eV > fl)
881865 else false)
882- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
883- else ft
884- let fu = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
885- if ((fu == fu))
866+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
867+ else fl
868+ let fm = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
869+ if ((fm == fm))
886870 then {
887- let fv = [ScriptTransfer(X, dt, ei)]
888- let fo = if ((dz > 0))
871+ let fn = [ScriptTransfer(X, dt, ei)]
872+ let fg = if ((dz > 0))
889873 then [ScriptTransfer(aK, dz, ei)]
890874 else nil
891- $Tuple2(((cV ++ fv) ++ fo), dt)
875+ $Tuple2(((cV ++ fn) ++ fg), dt)
892876 }
893877 else throw("Strict value is not equal to itself.")
894878 }
899883
900884 @Callable(dl)
901885 func getOneTknREADONLY (ei,dQ) = {
902- let fw = eh(aQ(ei), dQ, aZ, unit, unit)
903- let ft = fw._1
904- let cV = fw._2
905- let dz = fw._3
906- let fl = fw._4
907- $Tuple2(nil, $Tuple3(ft, dz, fl))
886+ let fo = eh(aQ(ei), dQ, aZ, unit, unit)
887+ let fl = fo._1
888+ let cV = fo._2
889+ let dz = fo._3
890+ let fd = fo._4
891+ $Tuple2(nil, $Tuple3(fl, dz, fd))
908892 }
909893
910894
911895
912896 @Callable(dl)
913-func unstakeAndGetOneTkn (fx,fq,fd) = {
914- let ff = {
915- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916- if ($isInstanceOf(fg, "Boolean"))
917- then fg
918- else throw(($getType(fg) + " couldn't be cast to Boolean"))
897+func unstakeAndGetOneTkn (fp,fi,eV) = {
898+ let eX = {
899+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
900+ if ($isInstanceOf(eY, "Boolean"))
901+ then eY
902+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
919903 }
920- let fr = if (if (aL())
904+ let fj = if (if (aL())
921905 then true
922906 else (aY == n))
923907 then true
924- else ff
925- let ej = [if (if (!(fr))
908+ else eX
909+ let ej = [if (if (!(fj))
926910 then true
927- else eL(dl))
911+ else eD(dl))
928912 then true
929913 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
930914 then true
931915 else aG("no payments are expected")]
932916 if ((ej == ej))
933917 then {
934- let ei = aQ(fq)
918+ let ei = aQ(fi)
935919 let X = dl.caller
936920 let Y = dl.transactionId
937- let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
938- if ((fy == fy))
921+ let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
922+ if ((fq == fq))
939923 then {
940- let fz = eh(ei, fx, aZ, X, Y)
941- let ft = fz._1
942- let cV = fz._2
943- let dz = fz._3
944- let fl = fz._4
945- let dt = if (if ((fd > 0))
946- then (fd > ft)
924+ let fr = eh(ei, fp, aZ, X, Y)
925+ let fl = fr._1
926+ let cV = fr._2
927+ let dz = fr._3
928+ let fd = fr._4
929+ let dt = if (if ((eV > 0))
930+ then (eV > fl)
947931 else false)
948- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
949- else ft
950- let fu = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
951- if ((fu == fu))
932+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
933+ else fl
934+ let fm = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
935+ if ((fm == fm))
952936 then {
953- let fv = [ScriptTransfer(dl.caller, dt, ei)]
954- let fo = if ((dz > 0))
937+ let fn = [ScriptTransfer(dl.caller, dt, ei)]
938+ let fg = if ((dz > 0))
955939 then [ScriptTransfer(aK, dz, ei)]
956940 else nil
957- $Tuple2(((cV ++ fv) ++ fo), dt)
941+ $Tuple2(((cV ++ fn) ++ fg), dt)
958942 }
959943 else throw("Strict value is not equal to itself.")
960944 }
968952 @Callable(dl)
969953 func get () = {
970954 let cG = dk(dl)
971- let fA = cG._1
955+ let fs = cG._1
972956 let cn = cG._2
973957 let dn = cG._3
974958 let bV = cG._4
975959 let co = cG._5
976- let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
977- if ((fB == fB))
960+ let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
961+ if ((ft == ft))
978962 then co
979963 else throw("Strict value is not equal to itself.")
980964 }
982966
983967
984968 @Callable(dl)
985-func getNoLess (fC,fD) = {
969+func getNoLess (fu,fv) = {
986970 let cG = dk(dl)
987971 let cm = cG._1
988972 let cn = cG._2
989973 let dn = cG._3
990974 let bV = cG._4
991975 let co = cG._5
992- if ((fC > cm))
993- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fC)))
994- else if ((fD > cn))
995- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fD)))
976+ if ((fu > cm))
977+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fu)))
978+ else if ((fv > cn))
979+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fv)))
996980 else {
997- let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
998- if ((fB == fB))
981+ let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
982+ if ((ft == ft))
999983 then co
1000984 else throw("Strict value is not equal to itself.")
1001985 }
1005989
1006990 @Callable(dl)
1007991 func unstakeAndGet (dt) = {
1008- let fE = if ((size(dl.payments) != 0))
992+ let fw = if ((size(dl.payments) != 0))
1009993 then throw("No payments are expected")
1010994 else true
1011- if ((fE == fE))
995+ if ((fw == fw))
1012996 then {
1013997 let bK = aN()
1014998 let bX = fromBase58String(bK[q])
1015- let fy = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1016- if ((fy == fy))
999+ let fq = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1000+ if ((fq == fq))
10171001 then {
10181002 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
10191003 let ca = parseIntValue(cG._9)
10201004 let co = cG._10
1021- let fF = if (if (aL())
1005+ let fx = if (if (aL())
10221006 then true
10231007 else (ca == n))
10241008 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10251009 else true
1026- if ((fF == fF))
1010+ if ((fx == fx))
10271011 then {
1028- let fB = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1029- if ((fB == fB))
1012+ let ft = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1013+ if ((ft == ft))
10301014 then co
10311015 else throw("Strict value is not equal to itself.")
10321016 }
10401024
10411025
10421026 @Callable(dl)
1043-func unstakeAndGetNoLess (fx,fG,fD) = {
1044- let fr = if (aL())
1027+func unstakeAndGetNoLess (fp,fy,fv) = {
1028+ let fj = if (aL())
10451029 then true
10461030 else (aY == n)
1047- let ej = [if (!(fr))
1031+ let ej = [if (!(fj))
10481032 then true
10491033 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10501034 then true
10511035 else throw("no payments are expected")]
10521036 if ((ej == ej))
10531037 then {
1054- let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
1055- if ((fy == fy))
1038+ let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
1039+ if ((fq == fq))
10561040 then {
1057- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fx, dl.caller)
1041+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fp, dl.caller)
10581042 let cm = cG._1
10591043 let cn = cG._2
10601044 let co = cG._10
1061- let fH = [if ((cm >= fG))
1045+ let fz = [if ((cm >= fy))
10621046 then true
1063- else throw(makeString(["amount asset amount to receive is less than ", toString(fG)], "")), if ((cn >= fD))
1047+ else throw(makeString(["amount asset amount to receive is less than ", toString(fy)], "")), if ((cn >= fv))
10641048 then true
1065- else throw(makeString(["price asset amount to receive is less than ", toString(fD)], ""))]
1066- if ((fH == fH))
1049+ else throw(makeString(["price asset amount to receive is less than ", toString(fv)], ""))]
1050+ if ((fz == fz))
10671051 then {
1068- let fB = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
1069- if ((fB == fB))
1052+ let ft = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
1053+ if ((ft == ft))
10701054 then co
10711055 else throw("Strict value is not equal to itself.")
10721056 }
10801064
10811065
10821066 @Callable(dl)
1083-func activate (fI,fJ) = if ((toString(dl.caller) != toString(aJ)))
1067+func activate (fA,fB) = if ((toString(dl.caller) != toString(aJ)))
10841068 then throw("permissions denied")
1085- else $Tuple2([StringEntry(aa(), fI), StringEntry(ab(), fJ)], "success")
1069+ else $Tuple2([StringEntry(aa(), fA), StringEntry(ab(), fB)], "success")
10861070
10871071
10881072
10891073 @Callable(dl)
10901074 func refreshKLp () = {
1091- let fK = valueOrElse(getInteger(ag), 0)
1092- let fL = if (((height - fK) >= aj))
1075+ let fC = valueOrElse(getInteger(ag), 0)
1076+ let fD = if (((height - fC) >= aj))
10931077 then unit
10941078 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1095- if ((fL == fL))
1079+ if ((fD == fD))
10961080 then {
1097- let fM = eE()
1098- let eH = fM._1
1099- let eD = fM._2
1100- $Tuple2(eH, eD)
1081+ let fE = toBigInt(bw(aS(ba)))
1082+ let fF = toBigInt(bw(aS(bb)))
1083+ let fG = toBigInt(value(assetInfo(aZ)).quantity)
1084+ let fH = fraction(pow((fE * fF), 0, toBigInt(5), 1, 0, DOWN), d, fG)
1085+ let fI = [IntegerEntry(ag, height), StringEntry(af, toString(fH))]
1086+ $Tuple2(fI, toString(fH))
11011087 }
11021088 else throw("Strict value is not equal to itself.")
11031089 }
11601146 let cA = bK[w]
11611147 let bL = parseIntValue(bK[t])
11621148 let bM = parseIntValue(bK[u])
1163- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1149+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11641150 let da = bw(cY)
11651151 let db = bw(cZ)
1166- let fO = if ((fN == 0))
1152+ let fK = if ((fJ == 0))
11671153 then [e, e, e]
1168- else bI(da, db, fN)
1154+ else bI(da, db, fJ)
11691155 let ch = 0
1170- let fP = G(fO[1], b)
1171- let fQ = G(fO[2], b)
1172- let fR = value(getInteger(aJ, au(toString(this))))
1173- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fN), toString(ch), toString(fP), toString(fQ), toString(fR)], j))
1156+ let fL = G(fK[1], b)
1157+ let fM = G(fK[2], b)
1158+ let fN = value(getInteger(aJ, au(toString(this))))
1159+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fJ), toString(ch), toString(fL), toString(fM), toString(fN)], j))
11741160 }
11751161
11761162
11861172 let bL = parseIntValue(bK[t])
11871173 let bM = parseIntValue(bK[u])
11881174 let ca = bK[p]
1189- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1175+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11901176 let da = bw(cx)
11911177 let db = bw(cy)
11921178 let bG = D(da, bL)
11931179 let bH = D(db, bM)
1194- let cg = if ((fN == 0))
1180+ let cg = if ((fJ == 0))
11951181 then e
11961182 else by(bH, bG)
11971183 let cD = D(cr, bL)
11991185 let ct = G(cE, bM)
12001186 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12011187 let cO = dr._1
1202- let fS = dr._3
1188+ let fO = dr._3
12031189 let cc = dr._4
12041190 let ce = dr._5
12051191 let cb = dr._6
12191205 let bL = parseIntValue(bK[t])
12201206 let bM = parseIntValue(bK[u])
12211207 let ca = bK[p]
1222- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1223- let fT = bw(cx)
1224- let fU = bw(cy)
1225- let fV = D(fT, bL)
1226- let fW = D(fU, bM)
1227- let cg = if ((fN == 0))
1208+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1209+ let fP = bw(cx)
1210+ let fQ = bw(cy)
1211+ let fR = D(fP, bL)
1212+ let fS = D(fQ, bM)
1213+ let cg = if ((fJ == 0))
12281214 then e
1229- else by(fW, fV)
1215+ else by(fS, fR)
12301216 let cE = D(ct, bM)
12311217 let cD = fraction(cE, d, cg)
12321218 let cr = G(cD, bL)
12331219 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12341220 let cO = dr._1
1235- let fS = dr._3
1221+ let fO = dr._3
12361222 let cc = dr._4
12371223 let ce = dr._5
12381224 let cb = dr._6
12421228
12431229
12441230 @Callable(dl)
1245-func evaluateGetREADONLY (fX,fY) = {
1246- let cG = bT("", fX, fY, this)
1231+func evaluateGetREADONLY (fT,fU) = {
1232+ let cG = bT("", fT, fU, this)
12471233 let cm = cG._1
12481234 let cn = cG._2
12491235 let cc = cG._5
12551241 }
12561242
12571243
1258-@Verifier(fZ)
1259-func ga () = {
1260- let gb = {
1261- let dw = eI()
1244+@Verifier(fV)
1245+func fW () = {
1246+ let fX = {
1247+ let dw = eA()
12621248 if ($isInstanceOf(dw, "ByteVector"))
12631249 then {
1264- let eM = dw
1265- eM
1250+ let eE = dw
1251+ eE
12661252 }
12671253 else if ($isInstanceOf(dw, "Unit"))
1268- then fZ.senderPublicKey
1254+ then fV.senderPublicKey
12691255 else throw("Match error")
12701256 }
1271- let dw = fZ
1257+ let dw = fV
12721258 if ($isInstanceOf(dw, "Order"))
12731259 then {
12741260 let cX = dw
1275- let gc = aM()
1261+ let fY = aM()
12761262 let az = cW(cX)
12771263 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1278- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gc)
1264+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], fY)
12791265 if (if (if (az)
12801266 then aA
12811267 else false)
12861272 }
12871273 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12881274 then {
1289- let eJ = dw
1290- let gd = blake2b256(value(eJ.script))
1291- let ge = fromBase64String(value(getString(aJ, aw())))
1292- let gf = scriptHash(this)
1293- if (if ((ge == gd))
1294- then (gf != gd)
1275+ let eB = dw
1276+ let fZ = blake2b256(value(eB.script))
1277+ let ga = fromBase64String(value(getString(aJ, aw())))
1278+ let gb = scriptHash(this)
1279+ if (if ((ga == fZ))
1280+ then (gb != fZ)
12951281 else false)
12961282 then true
1297- else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
1283+ else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
12981284 }
1299- else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
1285+ else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
13001286 }
13011287
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 (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
223223
224224
225225 func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX) = {
377377 let bK = aN()
378378 let cY = bK[r]
379379 let cZ = bK[s]
380380 let ca = parseIntValue(bK[p])
381381 let bL = parseIntValue(bK[t])
382382 let bM = parseIntValue(bK[u])
383383 let da = bw(cY)
384384 let db = bw(cZ)
385385 let cg = if ((cX.orderType == Buy))
386386 then bB(bL, bM, (da + cX.amount), db)
387387 else bB(bL, bM, (da - cX.amount), db)
388388 let ch = G(cg, b)
389389 if (if (if (aL())
390390 then true
391391 else (ca == m))
392392 then true
393393 else (ca == n))
394394 then throw("Exchange operations disabled")
395395 else {
396396 let dc = cX.assetPair.amountAsset
397397 let dd = if ((dc == unit))
398398 then "WAVES"
399399 else toBase58String(value(dc))
400400 let de = cX.assetPair.priceAsset
401401 let df = if ((de == unit))
402402 then "WAVES"
403403 else toBase58String(value(de))
404404 if (if ((dd != cY))
405405 then true
406406 else (df != cZ))
407407 then throw("Wrong order assets.")
408408 else {
409409 let dg = cX.price
410410 let dh = fraction(b, bM, bL)
411411 let di = J(dg, b, dh)
412412 let dj = if ((cX.orderType == Buy))
413413 then (ch >= di)
414414 else (di >= ch)
415415 true
416416 }
417417 }
418418 }
419419
420420
421421 func dk (dl) = if ((size(dl.payments) != 1))
422422 then throw("exactly 1 payment is expected")
423423 else {
424424 let dm = value(dl.payments[0])
425425 let bV = value(dm.assetId)
426426 let dn = dm.amount
427427 let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
428428 let cm = cG._1
429429 let cn = cG._2
430430 let ca = parseIntValue(cG._9)
431431 let co = cG._10
432432 if (if (aL())
433433 then true
434434 else (ca == n))
435435 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436436 else $Tuple5(cm, cn, dn, bV, co)
437437 }
438438
439439
440440 func do (dl,cq,cw) = if ((size(dl.payments) != 2))
441441 then throw("exactly 2 payments are expected")
442442 else {
443443 let dp = value(dl.payments[0])
444444 let dq = value(dl.payments[1])
445445 let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446446 let ca = parseIntValue(dr._8)
447447 if (if (if (aL())
448448 then true
449449 else (ca == l))
450450 then true
451451 else (ca == n))
452452 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453453 else dr
454454 }
455455
456456
457457 func ds (dt) = {
458458 let du = invoke(aJ, "emit", [dt], nil)
459459 if ((du == du))
460460 then {
461461 let dv = {
462462 let dw = du
463463 if ($isInstanceOf(dw, "Address"))
464464 then {
465465 let dx = dw
466466 invoke(dx, "emit", [dt], nil)
467467 }
468468 else unit
469469 }
470470 if ((dv == dv))
471471 then dt
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476
477477
478478 func dy (dt) = {
479479 let dz = fraction(dt, ae, b)
480480 $Tuple2((dt - dz), dz)
481481 }
482482
483483
484484 func dA (dB,dC,X,Y) = {
485485 let dD = (Y == unit)
486486 let dE = bw(aS(ba))
487487 let dF = bw(aS(bb))
488488 let dG = if ((dC == ba))
489489 then true
490490 else if ((dC == bb))
491491 then false
492492 else aG("invalid asset")
493493 let dH = if (dD)
494494 then $Tuple2(dE, dF)
495495 else if (dG)
496496 then $Tuple2((dE - dB), dF)
497497 else $Tuple2(dE, (dF - dB))
498498 let dI = dH._1
499499 let dJ = dH._2
500500 let dK = if (dG)
501501 then $Tuple2(dB, 0)
502502 else $Tuple2(0, dB)
503503 let dL = dK._1
504504 let dM = dK._2
505505 let dN = dy(dL)._1
506506 let dO = dy(dM)._1
507507 let dP = dy(dB)
508508 let dQ = dP._1
509509 let dz = dP._2
510510 let dR = (dI + dN)
511511 let dS = (dJ + dO)
512512 let dT = by(D(dS, bd), D(dR, bc))
513513 let dU = G(dT, b)
514514 let dV = if (dG)
515515 then dI
516516 else dJ
517517 let dW = toBigInt(dV)
518518 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519519 let dY = if ((dX > f))
520520 then true
521521 else aG("initial deposit requires all coins")
522522 if ((dY == dY))
523523 then {
524524 let dZ = toBigInt(dQ)
525525 let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526526 let cV = if (dD)
527527 then nil
528528 else [IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dL, dM, ea, dU, 0, 0, height, lastBlock.timestamp, 0, 0))]
529529 let eb = by(D(dJ, bd), D(dI, bc))
530530 let ec = G(eb, b)
531531 let ed = {
532532 let ee = if (dG)
533533 then $Tuple2(dL, dI)
534534 else $Tuple2(dM, dJ)
535535 let dt = ee._1
536536 let ef = ee._2
537537 let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538538 fraction((ea - eg), b, eg)
539539 }
540540 $Tuple4(ea, cV, dz, ed)
541541 }
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546 func eh (ei,dQ,dC,X,Y) = {
547547 let dD = (Y == unit)
548548 let ej = [if ((dC == aZ))
549549 then true
550550 else aG("invalid lp asset")]
551551 if ((ej == ej))
552552 then {
553553 let ek = if ((ei == ba))
554554 then true
555555 else if ((ei == bb))
556556 then false
557557 else aG("invalid asset")
558558 let el = if (ek)
559559 then toBigInt(bw(aS(ba)))
560560 else toBigInt(bw(aS(bb)))
561561 let em = bw(aS(ba))
562562 let en = bw(aS(bb))
563563 let eo = if (ek)
564564 then em
565565 else en
566566 let ep = toBigInt(eo)
567567 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568568 let eq = toBigInt(dQ)
569569 let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570570 let es = dy(er)
571571 let et = es._1
572572 let dz = es._2
573573 let eu = if (ek)
574574 then $Tuple4(et, 0, (em - er), en)
575575 else $Tuple4(0, et, em, (en - er))
576576 let ev = eu._1
577577 let ew = eu._2
578578 let ex = eu._3
579579 let ey = eu._4
580580 let dT = by(D(ey, bd), D(ex, bc))
581581 let dU = G(dT, b)
582582 let cV = if (dD)
583583 then nil
584584 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ev, ew, dQ, dU, height, lastBlock.timestamp)), IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU)]
585585 let eb = by(D(en, bd), D(em, bc))
586586 let ec = G(eb, b)
587587 let ed = {
588588 let ez = (toInt(fraction(el, eq, dX)) * 2)
589589 fraction((et - ez), b, ez)
590590 }
591591 $Tuple4(et, cV, dz, ed)
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595
596596
597-func eA (eB,eC,cb) = {
598- let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599- eD
600- }
601-
602-
603-func eE () = {
604- let eF = bw(aS(ba))
605- let eG = bw(aS(bb))
606- let cb = value(assetInfo(aZ)).quantity
607- let eD = eA(toBigInt(eF), toBigInt(eG), toBigInt(cb))
608- let eH = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609- $Tuple2(eH, eD)
610- }
611-
612-
613-func eI () = {
597+func eA () = {
614598 let dw = getString(Q())
615599 if ($isInstanceOf(dw, "String"))
616600 then {
617- let eJ = dw
618- fromBase58String(eJ)
601+ let eB = dw
602+ fromBase58String(eB)
619603 }
620604 else if ($isInstanceOf(dw, "Unit"))
621605 then unit
622606 else throw("Match error")
623607 }
624608
625609
626-func eK () = {
610+func eC () = {
627611 let dw = getString(R())
628612 if ($isInstanceOf(dw, "String"))
629613 then {
630- let eJ = dw
631- fromBase58String(eJ)
614+ let eB = dw
615+ fromBase58String(eB)
632616 }
633617 else if ($isInstanceOf(dw, "Unit"))
634618 then unit
635619 else throw("Match error")
636620 }
637621
638622
639-func eL (dl) = {
640- let dw = eI()
623+func eD (dl) = {
624+ let dw = eA()
641625 if ($isInstanceOf(dw, "ByteVector"))
642626 then {
643- let eM = dw
644- (dl.callerPublicKey == eM)
627+ let eE = dw
628+ (dl.callerPublicKey == eE)
645629 }
646630 else if ($isInstanceOf(dw, "Unit"))
647631 then (dl.caller == this)
648632 else throw("Match error")
649633 }
650634
651635
652-func eN (dl) = {
653- let eO = throw("Permission denied")
654- let dw = eI()
636+func eF (dl) = {
637+ let eG = throw("Permission denied")
638+ let dw = eA()
655639 if ($isInstanceOf(dw, "ByteVector"))
656640 then {
657- let eM = dw
658- if ((dl.callerPublicKey == eM))
641+ let eE = dw
642+ if ((dl.callerPublicKey == eE))
659643 then true
660- else eO
644+ else eG
661645 }
662646 else if ($isInstanceOf(dw, "Unit"))
663647 then if ((dl.caller == this))
664648 then true
665- else eO
649+ else eG
666650 else throw("Match error")
667651 }
668652
669653
670654 @Callable(dl)
671-func setManager (eP) = {
672- let eQ = eN(dl)
673- if ((eQ == eQ))
655+func setManager (eH) = {
656+ let eI = eF(dl)
657+ if ((eI == eI))
674658 then {
675- let eR = fromBase58String(eP)
676- if ((eR == eR))
677- then [StringEntry(R(), eP)]
659+ let eJ = fromBase58String(eH)
660+ if ((eJ == eJ))
661+ then [StringEntry(R(), eH)]
678662 else throw("Strict value is not equal to itself.")
679663 }
680664 else throw("Strict value is not equal to itself.")
681665 }
682666
683667
684668
685669 @Callable(dl)
686670 func confirmManager () = {
687- let eS = eK()
688- let eT = if (isDefined(eS))
671+ let eK = eC()
672+ let eL = if (isDefined(eK))
689673 then true
690674 else throw("No pending manager")
691- if ((eT == eT))
675+ if ((eL == eL))
692676 then {
693- let eU = if ((dl.callerPublicKey == value(eS)))
677+ let eM = if ((dl.callerPublicKey == value(eK)))
694678 then true
695679 else throw("You are not pending manager")
696- if ((eU == eU))
697- then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
680+ if ((eM == eM))
681+ then [StringEntry(Q(), toBase58String(value(eK))), DeleteEntry(R())]
698682 else throw("Strict value is not equal to itself.")
699683 }
700684 else throw("Strict value is not equal to itself.")
701685 }
702686
703687
704688
705689 @Callable(dl)
706-func put (cq,eV) = if ((0 > cq))
690+func put (cq,eN) = if ((0 > cq))
707691 then throw("Invalid slippageTolerance passed")
708692 else {
709693 let dr = do(dl, cq, true)
710694 let cS = dr._2
711695 let bX = dr._7
712696 let co = dr._9
713697 let cT = dr._10
714698 let cU = dr._11
715- let eW = dr._12
716- let eX = dr._13
699+ let eO = dr._12
700+ let eP = dr._13
717701 let du = invoke(aJ, "emit", [cS], nil)
718702 if ((du == du))
719703 then {
720704 let dv = {
721705 let dw = du
722706 if ($isInstanceOf(dw, "Address"))
723707 then {
724708 let dx = dw
725709 invoke(dx, "emit", [cS], nil)
726710 }
727711 else unit
728712 }
729713 if ((dv == dv))
730714 then {
731- let eY = if ((cT > 0))
732- then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
715+ let eQ = if ((cT > 0))
716+ then invoke(bg, "put", nil, [AttachedPayment(eO, cT)])
733717 else nil
734- if ((eY == eY))
718+ if ((eQ == eQ))
735719 then {
736- let eZ = if ((cU > 0))
737- then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
720+ let eR = if ((cU > 0))
721+ then invoke(bg, "put", nil, [AttachedPayment(eP, cU)])
738722 else nil
739- if ((eZ == eZ))
723+ if ((eR == eR))
740724 then {
741- let fa = if (eV)
725+ let eS = if (eN)
742726 then {
743- let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744- if ((fb == fb))
727+ let eT = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728+ if ((eT == eT))
745729 then nil
746730 else throw("Strict value is not equal to itself.")
747731 }
748732 else [ScriptTransfer(dl.caller, cS, bX)]
749- (co ++ fa)
733+ (co ++ eS)
750734 }
751735 else throw("Strict value is not equal to itself.")
752736 }
753737 else throw("Strict value is not equal to itself.")
754738 }
755739 else throw("Strict value is not equal to itself.")
756740 }
757741 else throw("Strict value is not equal to itself.")
758742 }
759743
760744
761745
762746 @Callable(dl)
763-func putForFree (fc) = if ((0 > fc))
747+func putForFree (eU) = if ((0 > eU))
764748 then throw("Invalid value passed")
765749 else {
766- let dr = do(dl, fc, false)
750+ let dr = do(dl, eU, false)
767751 dr._9
768752 }
769753
770754
771755
772756 @Callable(dl)
773-func putOneTkn (fd,fe) = {
774- let ff = {
775- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
776- if ($isInstanceOf(fg, "Boolean"))
777- then fg
778- else throw(($getType(fg) + " couldn't be cast to Boolean"))
757+func putOneTkn (eV,eW) = {
758+ let eX = {
759+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
760+ if ($isInstanceOf(eY, "Boolean"))
761+ then eY
762+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
779763 }
780- let fh = if (if (if (aL())
764+ let eZ = if (if (if (aL())
781765 then true
782766 else (aY == l))
783767 then true
784768 else (aY == n))
785769 then true
786- else ff
787- let ej = [if (if (!(fh))
770+ else eX
771+ let ej = [if (if (!(eZ))
788772 then true
789- else eL(dl))
773+ else eD(dl))
790774 then true
791775 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
792776 then true
793777 else aG("exactly 1 payment are expected")]
794778 if ((ej == ej))
795779 then {
796- let fi = dl.payments[0]
797- let dC = fi.assetId
798- let dB = fi.amount
780+ let fa = dl.payments[0]
781+ let dC = fa.assetId
782+ let dB = fa.amount
799783 let X = dl.caller
800784 let Y = dl.transactionId
801- let fj = dA(dB, dC, X, Y)
802- let fk = fj._1
803- let cV = fj._2
804- let dz = fj._3
805- let fl = fj._4
806- let fm = if (if ((fd > 0))
807- then (fd > fk)
785+ let fb = dA(dB, dC, X, Y)
786+ let fc = fb._1
787+ let cV = fb._2
788+ let dz = fb._3
789+ let fd = fb._4
790+ let fe = if (if ((eV > 0))
791+ then (eV > fc)
808792 else false)
809- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
810- else fk
811- let du = ds(fm)
793+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
794+ else fc
795+ let du = ds(fe)
812796 if ((du == du))
813797 then {
814- let fa = if (fe)
798+ let eS = if (eW)
815799 then {
816- let fn = invoke(bf, "stake", nil, [AttachedPayment(aZ, fm)])
817- if ((fn == fn))
800+ let ff = invoke(bf, "stake", nil, [AttachedPayment(aZ, fe)])
801+ if ((ff == ff))
818802 then nil
819803 else throw("Strict value is not equal to itself.")
820804 }
821- else [ScriptTransfer(dl.caller, fm, aZ)]
822- let fo = if ((dz > 0))
805+ else [ScriptTransfer(dl.caller, fe, aZ)]
806+ let fg = if ((dz > 0))
823807 then [ScriptTransfer(aK, dz, dC)]
824808 else nil
825- $Tuple2(((cV ++ fa) ++ fo), fm)
809+ $Tuple2(((cV ++ eS) ++ fg), fe)
826810 }
827811 else throw("Strict value is not equal to itself.")
828812 }
829813 else throw("Strict value is not equal to itself.")
830814 }
831815
832816
833817
834818 @Callable(dl)
835819 func putOneTknREADONLY (dC,dB) = {
836- let fp = dA(dB, aQ(dC), unit, unit)
837- let fk = fp._1
838- let cV = fp._2
839- let dz = fp._3
840- let fl = fp._4
841- $Tuple2(nil, $Tuple3(fk, dz, fl))
820+ let fh = dA(dB, aQ(dC), unit, unit)
821+ let fc = fh._1
822+ let cV = fh._2
823+ let dz = fh._3
824+ let fd = fh._4
825+ $Tuple2(nil, $Tuple3(fc, dz, fd))
842826 }
843827
844828
845829
846830 @Callable(dl)
847-func getOneTkn (fq,fd) = {
848- let ff = {
849- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
850- if ($isInstanceOf(fg, "Boolean"))
851- then fg
852- else throw(($getType(fg) + " couldn't be cast to Boolean"))
831+func getOneTkn (fi,eV) = {
832+ let eX = {
833+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
834+ if ($isInstanceOf(eY, "Boolean"))
835+ then eY
836+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
853837 }
854- let fr = if (if (aL())
838+ let fj = if (if (aL())
855839 then true
856840 else (aY == n))
857841 then true
858- else ff
859- let ej = [if (if (!(fr))
842+ else eX
843+ let ej = [if (if (!(fj))
860844 then true
861- else eL(dl))
845+ else eD(dl))
862846 then true
863847 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
864848 then true
865849 else aG("exactly 1 payment are expected")]
866850 if ((ej == ej))
867851 then {
868- let ei = aQ(fq)
869- let fi = dl.payments[0]
870- let dC = fi.assetId
871- let dQ = fi.amount
852+ let ei = aQ(fi)
853+ let fa = dl.payments[0]
854+ let dC = fa.assetId
855+ let dQ = fa.amount
872856 let X = dl.caller
873857 let Y = dl.transactionId
874- let fs = eh(ei, dQ, dC, X, Y)
875- let ft = fs._1
876- let cV = fs._2
877- let dz = fs._3
878- let fl = fs._4
879- let dt = if (if ((fd > 0))
880- then (fd > ft)
858+ let fk = eh(ei, dQ, dC, X, Y)
859+ let fl = fk._1
860+ let cV = fk._2
861+ let dz = fk._3
862+ let fd = fk._4
863+ let dt = if (if ((eV > 0))
864+ then (eV > fl)
881865 else false)
882- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
883- else ft
884- let fu = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
885- if ((fu == fu))
866+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
867+ else fl
868+ let fm = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
869+ if ((fm == fm))
886870 then {
887- let fv = [ScriptTransfer(X, dt, ei)]
888- let fo = if ((dz > 0))
871+ let fn = [ScriptTransfer(X, dt, ei)]
872+ let fg = if ((dz > 0))
889873 then [ScriptTransfer(aK, dz, ei)]
890874 else nil
891- $Tuple2(((cV ++ fv) ++ fo), dt)
875+ $Tuple2(((cV ++ fn) ++ fg), dt)
892876 }
893877 else throw("Strict value is not equal to itself.")
894878 }
895879 else throw("Strict value is not equal to itself.")
896880 }
897881
898882
899883
900884 @Callable(dl)
901885 func getOneTknREADONLY (ei,dQ) = {
902- let fw = eh(aQ(ei), dQ, aZ, unit, unit)
903- let ft = fw._1
904- let cV = fw._2
905- let dz = fw._3
906- let fl = fw._4
907- $Tuple2(nil, $Tuple3(ft, dz, fl))
886+ let fo = eh(aQ(ei), dQ, aZ, unit, unit)
887+ let fl = fo._1
888+ let cV = fo._2
889+ let dz = fo._3
890+ let fd = fo._4
891+ $Tuple2(nil, $Tuple3(fl, dz, fd))
908892 }
909893
910894
911895
912896 @Callable(dl)
913-func unstakeAndGetOneTkn (fx,fq,fd) = {
914- let ff = {
915- let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916- if ($isInstanceOf(fg, "Boolean"))
917- then fg
918- else throw(($getType(fg) + " couldn't be cast to Boolean"))
897+func unstakeAndGetOneTkn (fp,fi,eV) = {
898+ let eX = {
899+ let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
900+ if ($isInstanceOf(eY, "Boolean"))
901+ then eY
902+ else throw(($getType(eY) + " couldn't be cast to Boolean"))
919903 }
920- let fr = if (if (aL())
904+ let fj = if (if (aL())
921905 then true
922906 else (aY == n))
923907 then true
924- else ff
925- let ej = [if (if (!(fr))
908+ else eX
909+ let ej = [if (if (!(fj))
926910 then true
927- else eL(dl))
911+ else eD(dl))
928912 then true
929913 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
930914 then true
931915 else aG("no payments are expected")]
932916 if ((ej == ej))
933917 then {
934- let ei = aQ(fq)
918+ let ei = aQ(fi)
935919 let X = dl.caller
936920 let Y = dl.transactionId
937- let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
938- if ((fy == fy))
921+ let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
922+ if ((fq == fq))
939923 then {
940- let fz = eh(ei, fx, aZ, X, Y)
941- let ft = fz._1
942- let cV = fz._2
943- let dz = fz._3
944- let fl = fz._4
945- let dt = if (if ((fd > 0))
946- then (fd > ft)
924+ let fr = eh(ei, fp, aZ, X, Y)
925+ let fl = fr._1
926+ let cV = fr._2
927+ let dz = fr._3
928+ let fd = fr._4
929+ let dt = if (if ((eV > 0))
930+ then (eV > fl)
947931 else false)
948- then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
949- else ft
950- let fu = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
951- if ((fu == fu))
932+ then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
933+ else fl
934+ let fm = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
935+ if ((fm == fm))
952936 then {
953- let fv = [ScriptTransfer(dl.caller, dt, ei)]
954- let fo = if ((dz > 0))
937+ let fn = [ScriptTransfer(dl.caller, dt, ei)]
938+ let fg = if ((dz > 0))
955939 then [ScriptTransfer(aK, dz, ei)]
956940 else nil
957- $Tuple2(((cV ++ fv) ++ fo), dt)
941+ $Tuple2(((cV ++ fn) ++ fg), dt)
958942 }
959943 else throw("Strict value is not equal to itself.")
960944 }
961945 else throw("Strict value is not equal to itself.")
962946 }
963947 else throw("Strict value is not equal to itself.")
964948 }
965949
966950
967951
968952 @Callable(dl)
969953 func get () = {
970954 let cG = dk(dl)
971- let fA = cG._1
955+ let fs = cG._1
972956 let cn = cG._2
973957 let dn = cG._3
974958 let bV = cG._4
975959 let co = cG._5
976- let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
977- if ((fB == fB))
960+ let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
961+ if ((ft == ft))
978962 then co
979963 else throw("Strict value is not equal to itself.")
980964 }
981965
982966
983967
984968 @Callable(dl)
985-func getNoLess (fC,fD) = {
969+func getNoLess (fu,fv) = {
986970 let cG = dk(dl)
987971 let cm = cG._1
988972 let cn = cG._2
989973 let dn = cG._3
990974 let bV = cG._4
991975 let co = cG._5
992- if ((fC > cm))
993- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fC)))
994- else if ((fD > cn))
995- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fD)))
976+ if ((fu > cm))
977+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fu)))
978+ else if ((fv > cn))
979+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fv)))
996980 else {
997- let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
998- if ((fB == fB))
981+ let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
982+ if ((ft == ft))
999983 then co
1000984 else throw("Strict value is not equal to itself.")
1001985 }
1002986 }
1003987
1004988
1005989
1006990 @Callable(dl)
1007991 func unstakeAndGet (dt) = {
1008- let fE = if ((size(dl.payments) != 0))
992+ let fw = if ((size(dl.payments) != 0))
1009993 then throw("No payments are expected")
1010994 else true
1011- if ((fE == fE))
995+ if ((fw == fw))
1012996 then {
1013997 let bK = aN()
1014998 let bX = fromBase58String(bK[q])
1015- let fy = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1016- if ((fy == fy))
999+ let fq = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1000+ if ((fq == fq))
10171001 then {
10181002 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
10191003 let ca = parseIntValue(cG._9)
10201004 let co = cG._10
1021- let fF = if (if (aL())
1005+ let fx = if (if (aL())
10221006 then true
10231007 else (ca == n))
10241008 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10251009 else true
1026- if ((fF == fF))
1010+ if ((fx == fx))
10271011 then {
1028- let fB = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1029- if ((fB == fB))
1012+ let ft = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1013+ if ((ft == ft))
10301014 then co
10311015 else throw("Strict value is not equal to itself.")
10321016 }
10331017 else throw("Strict value is not equal to itself.")
10341018 }
10351019 else throw("Strict value is not equal to itself.")
10361020 }
10371021 else throw("Strict value is not equal to itself.")
10381022 }
10391023
10401024
10411025
10421026 @Callable(dl)
1043-func unstakeAndGetNoLess (fx,fG,fD) = {
1044- let fr = if (aL())
1027+func unstakeAndGetNoLess (fp,fy,fv) = {
1028+ let fj = if (aL())
10451029 then true
10461030 else (aY == n)
1047- let ej = [if (!(fr))
1031+ let ej = [if (!(fj))
10481032 then true
10491033 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10501034 then true
10511035 else throw("no payments are expected")]
10521036 if ((ej == ej))
10531037 then {
1054- let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
1055- if ((fy == fy))
1038+ let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
1039+ if ((fq == fq))
10561040 then {
1057- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fx, dl.caller)
1041+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fp, dl.caller)
10581042 let cm = cG._1
10591043 let cn = cG._2
10601044 let co = cG._10
1061- let fH = [if ((cm >= fG))
1045+ let fz = [if ((cm >= fy))
10621046 then true
1063- else throw(makeString(["amount asset amount to receive is less than ", toString(fG)], "")), if ((cn >= fD))
1047+ else throw(makeString(["amount asset amount to receive is less than ", toString(fy)], "")), if ((cn >= fv))
10641048 then true
1065- else throw(makeString(["price asset amount to receive is less than ", toString(fD)], ""))]
1066- if ((fH == fH))
1049+ else throw(makeString(["price asset amount to receive is less than ", toString(fv)], ""))]
1050+ if ((fz == fz))
10671051 then {
1068- let fB = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
1069- if ((fB == fB))
1052+ let ft = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
1053+ if ((ft == ft))
10701054 then co
10711055 else throw("Strict value is not equal to itself.")
10721056 }
10731057 else throw("Strict value is not equal to itself.")
10741058 }
10751059 else throw("Strict value is not equal to itself.")
10761060 }
10771061 else throw("Strict value is not equal to itself.")
10781062 }
10791063
10801064
10811065
10821066 @Callable(dl)
1083-func activate (fI,fJ) = if ((toString(dl.caller) != toString(aJ)))
1067+func activate (fA,fB) = if ((toString(dl.caller) != toString(aJ)))
10841068 then throw("permissions denied")
1085- else $Tuple2([StringEntry(aa(), fI), StringEntry(ab(), fJ)], "success")
1069+ else $Tuple2([StringEntry(aa(), fA), StringEntry(ab(), fB)], "success")
10861070
10871071
10881072
10891073 @Callable(dl)
10901074 func refreshKLp () = {
1091- let fK = valueOrElse(getInteger(ag), 0)
1092- let fL = if (((height - fK) >= aj))
1075+ let fC = valueOrElse(getInteger(ag), 0)
1076+ let fD = if (((height - fC) >= aj))
10931077 then unit
10941078 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1095- if ((fL == fL))
1079+ if ((fD == fD))
10961080 then {
1097- let fM = eE()
1098- let eH = fM._1
1099- let eD = fM._2
1100- $Tuple2(eH, eD)
1081+ let fE = toBigInt(bw(aS(ba)))
1082+ let fF = toBigInt(bw(aS(bb)))
1083+ let fG = toBigInt(value(assetInfo(aZ)).quantity)
1084+ let fH = fraction(pow((fE * fF), 0, toBigInt(5), 1, 0, DOWN), d, fG)
1085+ let fI = [IntegerEntry(ag, height), StringEntry(af, toString(fH))]
1086+ $Tuple2(fI, toString(fH))
11011087 }
11021088 else throw("Strict value is not equal to itself.")
11031089 }
11041090
11051091
11061092
11071093 @Callable(dl)
11081094 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11091095
11101096
11111097
11121098 @Callable(dl)
11131099 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11141100
11151101
11161102
11171103 @Callable(dl)
11181104 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11191105 let bS = bI(bE, bF, bJ)
11201106 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11211107 }
11221108
11231109
11241110
11251111 @Callable(dl)
11261112 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11271113
11281114
11291115
11301116 @Callable(dl)
11311117 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11321118
11331119
11341120
11351121 @Callable(dl)
11361122 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
11371123
11381124
11391125
11401126 @Callable(dl)
11411127 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
11421128
11431129
11441130
11451131 @Callable(dl)
11461132 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
11471133 let cG = bT(bU, bV, bW, addressFromStringValue(X))
11481134 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
11491135 }
11501136
11511137
11521138
11531139 @Callable(dl)
11541140 func statsREADONLY () = {
11551141 let bK = aN()
11561142 let bX = fromBase58String(bK[q])
11571143 let cY = bK[r]
11581144 let cZ = bK[s]
11591145 let cz = bK[v]
11601146 let cA = bK[w]
11611147 let bL = parseIntValue(bK[t])
11621148 let bM = parseIntValue(bK[u])
1163- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1149+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11641150 let da = bw(cY)
11651151 let db = bw(cZ)
1166- let fO = if ((fN == 0))
1152+ let fK = if ((fJ == 0))
11671153 then [e, e, e]
1168- else bI(da, db, fN)
1154+ else bI(da, db, fJ)
11691155 let ch = 0
1170- let fP = G(fO[1], b)
1171- let fQ = G(fO[2], b)
1172- let fR = value(getInteger(aJ, au(toString(this))))
1173- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fN), toString(ch), toString(fP), toString(fQ), toString(fR)], j))
1156+ let fL = G(fK[1], b)
1157+ let fM = G(fK[2], b)
1158+ let fN = value(getInteger(aJ, au(toString(this))))
1159+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fJ), toString(ch), toString(fL), toString(fM), toString(fN)], j))
11741160 }
11751161
11761162
11771163
11781164 @Callable(dl)
11791165 func evaluatePutByAmountAssetREADONLY (cr) = {
11801166 let bK = aN()
11811167 let bX = fromBase58String(bK[q])
11821168 let cx = bK[r]
11831169 let bY = fromBase58String(cx)
11841170 let cy = bK[s]
11851171 let bZ = fromBase58String(cy)
11861172 let bL = parseIntValue(bK[t])
11871173 let bM = parseIntValue(bK[u])
11881174 let ca = bK[p]
1189- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1175+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11901176 let da = bw(cx)
11911177 let db = bw(cy)
11921178 let bG = D(da, bL)
11931179 let bH = D(db, bM)
1194- let cg = if ((fN == 0))
1180+ let cg = if ((fJ == 0))
11951181 then e
11961182 else by(bH, bG)
11971183 let cD = D(cr, bL)
11981184 let cE = fraction(cD, cg, d)
11991185 let ct = G(cE, bM)
12001186 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12011187 let cO = dr._1
1202- let fS = dr._3
1188+ let fO = dr._3
12031189 let cc = dr._4
12041190 let ce = dr._5
12051191 let cb = dr._6
12061192 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12071193 }
12081194
12091195
12101196
12111197 @Callable(dl)
12121198 func evaluatePutByPriceAssetREADONLY (ct) = {
12131199 let bK = aN()
12141200 let bX = fromBase58String(bK[q])
12151201 let cx = bK[r]
12161202 let bY = fromBase58String(cx)
12171203 let cy = bK[s]
12181204 let bZ = fromBase58String(cy)
12191205 let bL = parseIntValue(bK[t])
12201206 let bM = parseIntValue(bK[u])
12211207 let ca = bK[p]
1222- let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1223- let fT = bw(cx)
1224- let fU = bw(cy)
1225- let fV = D(fT, bL)
1226- let fW = D(fU, bM)
1227- let cg = if ((fN == 0))
1208+ let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1209+ let fP = bw(cx)
1210+ let fQ = bw(cy)
1211+ let fR = D(fP, bL)
1212+ let fS = D(fQ, bM)
1213+ let cg = if ((fJ == 0))
12281214 then e
1229- else by(fW, fV)
1215+ else by(fS, fR)
12301216 let cE = D(ct, bM)
12311217 let cD = fraction(cE, d, cg)
12321218 let cr = G(cD, bL)
12331219 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12341220 let cO = dr._1
1235- let fS = dr._3
1221+ let fO = dr._3
12361222 let cc = dr._4
12371223 let ce = dr._5
12381224 let cb = dr._6
12391225 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12401226 }
12411227
12421228
12431229
12441230 @Callable(dl)
1245-func evaluateGetREADONLY (fX,fY) = {
1246- let cG = bT("", fX, fY, this)
1231+func evaluateGetREADONLY (fT,fU) = {
1232+ let cG = bT("", fT, fU, this)
12471233 let cm = cG._1
12481234 let cn = cG._2
12491235 let cc = cG._5
12501236 let ce = cG._6
12511237 let cb = cG._7
12521238 let ch = cG._8
12531239 let ca = parseIntValue(cG._9)
12541240 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
12551241 }
12561242
12571243
1258-@Verifier(fZ)
1259-func ga () = {
1260- let gb = {
1261- let dw = eI()
1244+@Verifier(fV)
1245+func fW () = {
1246+ let fX = {
1247+ let dw = eA()
12621248 if ($isInstanceOf(dw, "ByteVector"))
12631249 then {
1264- let eM = dw
1265- eM
1250+ let eE = dw
1251+ eE
12661252 }
12671253 else if ($isInstanceOf(dw, "Unit"))
1268- then fZ.senderPublicKey
1254+ then fV.senderPublicKey
12691255 else throw("Match error")
12701256 }
1271- let dw = fZ
1257+ let dw = fV
12721258 if ($isInstanceOf(dw, "Order"))
12731259 then {
12741260 let cX = dw
1275- let gc = aM()
1261+ let fY = aM()
12761262 let az = cW(cX)
12771263 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1278- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gc)
1264+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], fY)
12791265 if (if (if (az)
12801266 then aA
12811267 else false)
12821268 then aB
12831269 else false)
12841270 then true
12851271 else ay(az, aA, aB)
12861272 }
12871273 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12881274 then {
1289- let eJ = dw
1290- let gd = blake2b256(value(eJ.script))
1291- let ge = fromBase64String(value(getString(aJ, aw())))
1292- let gf = scriptHash(this)
1293- if (if ((ge == gd))
1294- then (gf != gd)
1275+ let eB = dw
1276+ let fZ = blake2b256(value(eB.script))
1277+ let ga = fromBase64String(value(getString(aJ, aw())))
1278+ let gb = scriptHash(this)
1279+ if (if ((ga == fZ))
1280+ then (gb != fZ)
12951281 else false)
12961282 then true
1297- else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
1283+ else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
12981284 }
1299- else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
1285+ else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
13001286 }
13011287

github/deemru/w8io/873ac7e 
265.25 ms