tx · 5tog8x7bSLC6iuCsZ5peaA914TR6cERf2aVHu9YZoL3C

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02300000 Waves

2023.02.20 16:51 [2458058] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "5tog8x7bSLC6iuCsZ5peaA914TR6cERf2aVHu9YZoL3C", "fee": 2300000, "feeAssetId": null, "timestamp": 1676901129057, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "5ecE5wggZYvD9oD8trrHV5rFx9dxW7nQUAasFNAMqmkukYrRchQtjeegfgeQhrg9NCb6fqYjnTfMP1YoBxVm2fLw" ], "script": "base64:BgLnJQgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIECgIIARIAEgMKAQgSACIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIEc3RyZiIHYWRkcmVzcyIDa2V5IgNpb3oiA2lvZCIKZGVmYXVsdFZhbCIDaW9mIgNhYnMiA3ZhbCIDYWFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgJhaSIGdmFsSW50IhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmciCmxwQXNzZXRTdHIiEGtleUZhY3RvcnlMcExpc3QiJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkiC3Bvb2xBZGRyZXNzIgNudW0iGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbCIKcmVhZExwTGlzdCIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayINa2V5TmV4dFBlcmlvZCIfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCINSWR4Q2ZnQXNzZXRJZCITSWR4Q2ZnTWluTG9ja0Ftb3VudCIVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uIhVJZHhDZmdNYXhMb2NrRHVyYXRpb24iEklkeENmZ01hdGhDb250cmFjdCIJa2V5Q29uZmlnIhVyZWFkQ29uZmlnQXJyYXlPckZhaWwiDG1hdGhDb250cmFjdCINZm9ybWF0Q29uZmlnUyIHYXNzZXRJZCINbWluTG9ja0Ftb3VudCIPbWluTG9ja0R1cmF0aW9uIg9tYXhMb2NrRHVyYXRpb24iDGZvcm1hdENvbmZpZyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiDklkeExvY2tVc2VyTnVtIg1JZHhMb2NrQW1vdW50IgxJZHhMb2NrU3RhcnQiD0lkeExvY2tEdXJhdGlvbiINSWR4TG9ja1BhcmFtSyINSWR4TG9ja1BhcmFtQiITa2V5TG9ja1BhcmFtc1JlY29yZCILdXNlckFkZHJlc3MiGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsIhdmb3JtYXRMb2NrUGFyYW1zUmVjb3JkUyIHdXNlck51bSIGYW1vdW50IgVzdGFydCIIZHVyYXRpb24iBnBhcmFtSyIGcGFyYW1CIhBsYXN0VXBkVGltZXN0YW1wIglnd3hBbW91bnQiFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQiDmtleU5leHRVc2VyTnVtIhJrZXlVc2VyMk51bU1hcHBpbmciEmtleU51bTJVc2VyTWFwcGluZyIWa2V5TG9ja1BhcmFtVXNlckFtb3VudCIWa2V5TG9ja1BhcmFtU3RhcnRCbG9jayIUa2V5TG9ja1BhcmFtRHVyYXRpb24iDWtleUxvY2tQYXJhbUsiDWtleUxvY2tQYXJhbUIiFWtleUxvY2tQYXJhbUJ5UGVyaW9kSyIGcGVyaW9kIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEIiF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50IiBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyISa2V5U3RhdHNMb2Nrc0NvdW50IhJrZXlTdGF0c1VzZXJzQ291bnQiIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIiJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIglscEFzc2V0SWQiF2tleVVzZXJNYXhCb29zdElOVEVHUkFMIhhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwiIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbCITa2V5VXNlckJvb3N0Q2xhaW1lZCIRa2V5VG90YWxDYWNoZWRHd3giG2tleVRvdGFsQ2FjaGVkR3d4Q29ycmVjdGl2ZSIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiEWd3eFJld2FyZENvbnRyYWN0IhFnZXRUb3RhbENhY2hlZEd3eCIHY29ycmVjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIWdm90aW5nRW1pc3Npb25Db250cmFjdCIRa2V5Q3VycmVudEVwb2NoVWkiDmN1cnJlbnRFcG9jaFVpIg5rZXlUYXJnZXRFcG9jaCIRdGFyZ2V0RXBvY2hPcHRpb24iEXRvdGFsQ2FjaGVkR3d4UmF3IhVpc0NvcnJlY3Rpb25BY3RpdmF0ZWQiCmNvcnJlY3RpdmUiDEhpc3RvcnlFbnRyeSIEdHlwZSIEdXNlciIJbG9ja1N0YXJ0IgFrIgFiIgpoaXN0b3J5S0VZIgtoaXN0b3J5REFUQSIKU3RhdHNFbnRyeSIOdG90YWxMb2NrZWRJbmMiC2R1cmF0aW9uSW5jIgxsb2NrQ291bnRJbmMiDXVzZXJzQ291bnRJbmMiG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWSINbG9ja3NDb3VudEtFWSINdXNlcnNDb3VudEtFWSIOdG90YWxBbW91bnRLRVkiGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyIKbG9ja3NDb3VudCIKdXNlcnNDb3VudCILdG90YWxBbW91bnQiDWNhbGNHd3hBbW91bnQiBGtSYXciBGJSYXciAWgiBVNDQUxFIg9Mb2NrUGFyYW1zRW50cnkiDXVzZXJBbW91bnRLRVkiDXN0YXJ0QmxvY2tLRVkiC2R1cmF0aW9uS0VZIgRrS0VZIgRiS0VZIgxrQnlQZXJpb2RLRVkiDGJCeVBlcmlvZEtFWSIiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbCIPZXhwZWN0ZWRBc3NldElkIgNwbXQiGWNhbGNVc2VyR3d4QW1vdW50QXRIZWlnaHQiDHRhcmdldEhlaWdodCIFRU1QVFkiEnVzZXIyTnVtTWFwcGluZ0tFWSINZ3d4QW1vdW50Q2FsYyIUY2FsY0N1cnJlbnRHd3hBbW91bnQiFGludGVybmFsQ2xhaW1XeEJvb3N0IgxscEFzc2V0SWRTdHIiDnVzZXJBZGRyZXNzU3RyIghyZWFkT25seSIRdXNlclJlY29yZE9yRW1wdHkiD3VzZXJSZWNvcmRBcnJheSIKdXNlck51bVN0ciIcZ3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCIIRU1QVFlTVFIiDSR0MDE0OTY1MTU1MzMiDnBvb2xBZGRyZXNzU3RyIgNwdzEiA3B3MCILcG9vbFdlaWdodDAiC3Bvb2xXZWlnaHQxIhJ3eEVtaXNzaW9uUGVyQmxvY2siDWVtaXNzaW9uU3RhcnQiC2VtaXNzaW9uRW5kIgJkaCIidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsIhVib29zdEVtaXNzaW9uSW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiA3VkaCIGdUxhc3RIIgR1ZGgwIgR1ZGgxIhd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWSIYdG90YWxNYXhCb29zdEludGVncmFsS0VZIg91c2VyTWF4Qm9vc3RJbnQiEHRvdGFsTWF4Qm9vc3RJbnQiF3RvdGFsQ2FjaGVkR3d4Q29ycmVjdGVkIgt1c2VyQ3Vyckd3eCIhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZIh51c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwiGnVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwwIhp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMSIecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwwIh5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEiInVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldzAiInVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldzEiIXVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldyITdXNlckJvb3N0Q2xhaW1lZEtFWSIQdXNlckJvb3N0Q2xhaW1lZCISdXNlckJvb3N0QXZhaWxhYmxlIglkYXRhU3RhdGUiBWRlYnVnIgtsb2NrQWN0aW9ucyIIY2ZnQXJyYXkiCmFzc2V0SWRTdHIiCXBtdEFtb3VudCIObmV4dFVzZXJOdW1LRVkiDnVzZXJJc0V4aXN0aW5nIgdjb2VmZlg4Ig5nV3hBbW91bnRTdGFydCITZ1d4UGFyYW1zUmVzdWx0TGlzdCIDYXJyIhFmYWN0b3J5QWRkcmVzc1N0ciIObG9ja0Fzc2V0SWRTdHIiC21pbkR1cmF0aW9uIgttYXhEdXJhdGlvbiILY2hlY2tDYWxsZXIiD3JlZmVycmVyQWRkcmVzcyIJc2lnbmF0dXJlIg0kdDAyMzg5MjIzOTU3IhFsb2NrQWN0aW9uc1Jlc3VsdCIPcmVmZXJyYWxBZGRyZXNzIgZyZWZJbnYiEXVwZGF0ZVJlZkFjdGl2aXR5Ig0kdDAyNDQxNTI0NDgwIg1kZWx0YUR1cmF0aW9uIgp1c2VyQW1vdW50Igxsb2NrRHVyYXRpb24iB2xvY2tFbmQiEXJlbWFpbmluZ0R1cmF0aW9uIg11c2VyQW1vdW50TmV3Ig9sb2NrRHVyYXRpb25OZXciDGxvY2tTdGFydE5ldyILY3VyclVzZXJHd3giB2d3eERpZmYiEnVzZXJNYXhCb29zdEludE5ldyIYcmVtYWluaW5nVXNlck1heEJvb3N0SW50IhN1c2VyTWF4Qm9vc3RJbnREaWZmIg0kdDAyOTQ2MTI5NTYzIg0kdDAyOTY5NTI5Nzk2IhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleW4AAWECAl9fAAFiAAgAAWMAgMLXLwABZAUBYwEBZQIBZgFnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBZgUBZwkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBZwIPIGlzIG5vdCBkZWZpbmVkAQFoAgFmAWcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZgUBZwAAAQFpAwFmAWcBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQFmBQFnBQFqAQFrAgFmAWcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFmBQFnCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFnAg8gaXMgbm90IGRlZmluZWQBAWwBAW0DCQBmAgAABQFtCQEBLQEFAW0FAW0BAW4BAW0EAW8FAW0DCQABAgUBbwIJTGlzdFtBbnldBAFwBQFvBQFwCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFxAQFtBAFvBQFtAwkAAQIFAW8CA0ludAQBcgUBbwUBcgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBcwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUBYQABdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAWUCBQR0aGlzCQEBcwAAAXUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFAWEAAXYCBnd4bG9jawABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQF1BQF2AQF4AAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwABeQABAAF6AAIAAUEAAwABQgAEAAFDAAUAAUQABgABRQAHAAFGAAgAAUcACQABSAAKAAFJAAsBAUoAAhElc19fZmFjdG9yeUNvbmZpZwEBSwEBTAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQFMCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFhAQFNAAIQJXNfX2xwVG9rZW5zTGlzdAEBTgEBTAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQFMCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFhAQFPAQFQCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFAVAFA25pbAUBYQEBUQIBUgFTCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAVICAl9fCQCkAwEFAVMBAVQACQERQGV4dHJOYXRpdmUoMTA2MikBCQEBZQIFBHRoaXMJAQF4AAEBVQAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCCQEBVAAJAQFNAAIABQFhAQFWAQFXCQC1CQIJAQFlAgUBVwkBAUoABQFhAQFYAQFZCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAVkFAXoBAVoBAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBWQUBQwECYWEBAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBWQUBeQECYWIBAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBWQUBSAECYWMAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFlAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhZgACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWcAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWgAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAmFpAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQJhagACDiVzX19uZXh0UGVyaW9kAQJhawACKCVzJXNfX2d3eFJld2FyZEVtaXNzaW9uUGFydF9fc3RhcnRIZWlnaHQAAmFsAAEAAmFtAAIAAmFuAAMAAmFvAAQAAmFwAAUBAmFxAAIKJXNfX2NvbmZpZwECYXIACQC1CQIJAQFlAgUEdGhpcwkBAmFxAAUBYQACYXMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgkBAmFyAAUCYXABAmF0BQJhdQJhdgJhdwJheAJhcwkAuQkCCQDMCAICCCVzJWQlZCVkCQDMCAIFAmF1CQDMCAIFAmF2CQDMCAIFAmF3CQDMCAIFAmF4CQDMCAIFAmFzBQNuaWwFAWEBAmF5BQJhdQJhdgJhdwJheAJhcwkBAmF0BQUCYXUJAKQDAQUCYXYJAKQDAQUCYXcJAKQDAQUCYXgFAmFzAQJhegAEAW8JAKIIAQkBAmFjAAMJAAECBQFvAgZTdHJpbmcEAmFBBQFvCQDZBAEFAmFBAwkAAQIFAW8CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUIABAFvCQCiCAEJAQJhZAADCQABAgUBbwIGU3RyaW5nBAJhQQUBbwkA2QQBBQJhQQMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFDAQJhRAQCYUUJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBbwkBAmF6AAMJAAECBQFvAgpCeXRlVmVjdG9yBAJhRgUBbwMJAAACCAUCYUQPY2FsbGVyUHVibGljS2V5BQJhRgYFAmFFAwkAAQIFAW8CBFVuaXQDCQAAAggFAmFEBmNhbGxlcgUEdGhpcwYFAmFFCQACAQILTWF0Y2ggZXJyb3IAAmFHAAEAAmFIAAIAAmFJAAMAAmFKAAQAAmFLAAUAAmFMAAYBAmFNAQJhTgkAuQkCCQDMCAICCiVzJXNfX2xvY2sJAMwIAgUCYU4FA25pbAUBYQECYU8BAmFOCQC1CQIJAQFlAgUEdGhpcwkBAmFNAQUCYU4FAWEBAmFQCAJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgUCYVEJAMwIAgUCYVIJAMwIAgUCYVMJAMwIAgUCYVQJAMwIAgUCYVUJAMwIAgUCYVYJAMwIAgUCYVcJAMwIAgUCYVgFA25pbAUBYQECYVkHAmFRAmFSAmFTAmFUAmFVAmFWAmFYCQECYVAIBQJhUQkApAMBBQJhUgkApAMBBQJhUwkApAMBBQJhVAkApAMBBQJhVQkApAMBBQJhVgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkApAMBBQJhWAECYVoAAg8lc19fbmV4dFVzZXJOdW0BAmJhAQJhTgkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYU4FA25pbAUBYQECYmIBAVMJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFAVMFA25pbAUBYQECYmMBAmFRCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUQkAzAgCAgZhbW91bnQFA25pbAUBYQECYmQBAmFRCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUQkAzAgCAgVzdGFydAUDbmlsBQFhAQJiZQECYVEJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFRCQDMCAICCGR1cmF0aW9uBQNuaWwFAWEBAmJmAQJhUQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVEJAMwIAgIBawUDbmlsBQFhAQJiZwECYVEJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFRCQDMCAICAWIFA25pbAUBYQECYmgCAmFRAmJpCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVEJAMwIAgIBawkAzAgCBQJiaQUDbmlsBQFhAQJiagICYVECYmkJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhUQkAzAgCAgFiCQDMCAIFAmJpBQNuaWwFAWEBAmJrAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJibAACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmJtAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmJuAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmJvAQJhUQkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQJhUQUDbmlsBQFhAQJicAICYVECYnEJALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUCYVEJAMwIAgUCYnEFA25pbAUBYQECYnIBAmFRCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUCYVEFA25pbAUBYQECYnMAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ0AQJhUQkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQJhUQUDbmlsBQFhAQJidQECYVEJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFAmFRBQNuaWwFAWEBAmJ2AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAECYncAAhwlc19fZ3d4Q2FjaGVkVG90YWxDb3JyZWN0aXZlAAJieAkBAVQAAAFZCQEBVgEFAmJ4AAJieQkBAVoBBQFZAAJiegkBAmFhAQUBWQACYkEJAQJhYgEFAVkBAmJCAQJiQwQCYkQJALkJAgkAzAgCAgIlcwkAzAgCAhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwFAWEEAmJFCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQJieAUCYkQEAmJGCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQQCYkcJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJFBQJiRgQCYkgJALkJAgkAzAgCAgQlcyVzCQDMCAICKXRvdGFsQ2FjaGVkR3d4Q29ycmVjdGlvbl9fYWN0aXZhdGlvbkVwb2NoBQNuaWwFAWEEAmJJCQCaCAIFBHRoaXMFAmJIBAJiSgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYnYAAAAEAmJLAwkBCWlzRGVmaW5lZAEFAmJJCQBnAgUCYkcJAQV2YWx1ZQEFAmJJBwQCYkwDAwUCYksFAmJDBwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYncAAAAAAAkAlgMBCQDMCAIAAAkAzAgCCQBkAgUCYkoFAmJMBQNuaWwBAmJNCAJiTgJiTwJhUgJiUAJhVAJiUQJiUgJhRAQCYlMJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJiTgkAzAgCBQJiTwkAzAgCCQDYBAEIBQJhRA10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmJUCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYVIJAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmFUCQDMCAIJAKQDAQUCYlEJAMwIAgkApAMBBQJiUgUDbmlsBQFhCQELU3RyaW5nRW50cnkCBQJiUwUCYlQBAmJVBAJiVgJiVwJiWAJiWQQCYloJAQJibAAEAmNhCQECYm0ABAJjYgkBAmJuAAQCY2MJAQJiawAEAmNkCQEBaAIFBHRoaXMFAmJaBAJjZQkBAWgCBQR0aGlzBQJjYQQCY2YJAQFoAgUEdGhpcwUCY2IEAmNnCQEBaAIFBHRoaXMFAmNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiWgkAZAIFAmNkBQJiVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2EJAGQCBQJjZQUCYlgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNiCQBkAgUCY2YFAmJZCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYwkAZAIFAmNnBQJiVgUDbmlsAQJjaAMCY2kCY2oCY2sEAmNsAOgHCQBpAgkAZAIJAGgCBQJjaQUCY2sFAmNqBQJjbAECY20IAmFOAmFRAmFSAmFTAmFUAmJRAmJSAmJpBAJjbgkBAmJjAQUCYVEEAmNvCQECYmQBBQJhUQQCY3AJAQJiZQEFAmFRBAJjcQkBAmJmAQUCYVEEAmNyCQECYmcBBQJhUQQCY3MJAQJiaAIFAmFRBQJiaQQCY3QJAQJiagIFAmFRBQJiaQQCYVgJAQJjaAMFAmJRBQJiUgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjbgUCYVIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNvBQJhUwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3AFAmFUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcQUCYlEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNyBQJiUgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3MFAmJRCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdAUCYlIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFNAQUCYU4JAQJhWQcFAmFRBQJhUgUCYVMFAmFUBQJiUQUCYlIFAmFYBQNuaWwBAmN1AgJhRAJjdgMJAGYCCQCQAwEIBQJhRAhwYXltZW50cwABCQACAQIbb25seSBvbmUgcGF5bWVudCBpcyBhbGxvd2VkAwkAAAIJAJADAQgFAmFECHBheW1lbnRzAAAAAAQCY3cJAJEDAggFAmFECHBheW1lbnRzAAADCQECIT0CCQEFdmFsdWUBCAUCY3cHYXNzZXRJZAUCY3YJAAIBAhtpbnZhbGlkIGFzc2V0IGlkIGluIHBheW1lbnQIBQJjdwZhbW91bnQBAmN4AgJhTgJjeQQCY3oCBWVtcHR5BAJjQQkBAmJhAQUCYU4EAmFRCQELdmFsdWVPckVsc2UCCQCiCAEFAmNBBQJjegQCYlEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJmAQUCYVEAAAQCYlIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJnAQUCYVEAAAQCY0IJAQJjaAMFAmJRBQJiUgUCY3kEAmFYAwkAZgIAAAUCY0IAAAUCY0IFAmFYAQJjQwECYU4JAQJjeAIFAmFOBQZoZWlnaHQBAmNEAwJjRQJjRgJjRwQCY3oCBUVNUFRZBAJjSAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYU0BBQJjRgUCY3oDCQAAAgUCY0gFAmN6CQCVCgMAAAUDbmlsAhV1c2VyUmVjb3JkOjppczo6ZW1wdHkEAmNJCQC1CQIFAmNIBQFhBAJjSgkAkQMCBQJjSQUCYUcEAmNLCQELdmFsdWVPckVsc2UCCQCaCAIFAmJBCQECYWsAAAAEAmNMAgVlbXB0eQQCY00DCQECIT0CBQJjRQUCY0wEAmNOCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYngJAQFLAQUCY0UJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjRQQCY08JARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJ4CQEBTwEFAmNOBAJjUAkBC3ZhbHVlT3JFbHNlAgkAmggCBQJieAkBAVECBQJjTgAABQJjTwkAlAoCBQJjUAUCY08DBQJjRwkAlAoCAAAAAAkAAgEJAKwCAgIobm90IHJlYWRvbmx5IG1vZGU6IHVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCY0UEAmNRCAUCY00CXzEEAmNSCAUCY00CXzIEAmNTCQEBawIFAmJ5CQECYWUABAJjVAkBAWsCBQJieQkBAmFnAAQCY1UJAQFrAgUCYnkJAQJhaQAEAmNrAwkAZgIFBmhlaWdodAUCY1UFAmNVBQZoZWlnaHQEAmNWCQCWAwEJAMwIAgkAZQIFAmNrBQJjVAkAzAgCAAAFA25pbAQCY1cJAQJicAIFAmNKBQJjRQQCY1gJAQJibwEFAmNKBAJjWQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJjVwkBAWgCBQR0aGlzBQJjWAQCY1oJAGkCCQBoAgkAaAIFAmNTBQJjVgACAAMEAmRhCQBlAgUCY1oFAmNZBAJkYgkAawMFAmRhAAMJAGgCAAIFAmNTBAJkYwkAZQIFAmNrBQJkYgQCZGQJAJYDAQkAzAgCCQBlAgUCY0sFAmRjCQDMCAIAAAUDbmlsBAJkZQkAZQIJAGUCBQJjawUCZGMFAmRkAwMDCQBmAgAABQJkYwYJAGYCAAAFAmRlBgkAZwIJAQFsAQkAZQIJAGQCBQJkZAUCZGUFAmRiAAEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFmludmFsaWQgdWRoIGNhbGM6IHVkaD0JAKQDAQUCZGICCCB1TGFzdEg9CQCkAwEFAmRjAgYgdWRoMD0JAKQDAQUCZGQCBiB1ZGgxPQkApAMBBQJkZQMJAGYCAAAFAmRhCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBAJkZgkBAmJyAQUCY0oEAmRnCQECYnMABAJkaAkBAWgCBQR0aGlzBQJkZgQCZGkJAQFoAgUEdGhpcwUCZGcEAmRqCQECYkIBBgQCZGsJAQJjQwEFAmNGBAJkbAkBAmJ0AQUCY0oEAmRtCQEBaAIFBHRoaXMFAmRsBAJkbgMJAAACBQJkYgAAAAAJAGsDBQJkYQUCZGQFAmRiBAJkbwMJAAACBQJkYgAAAAAJAGsDBQJkYQUCZGUFAmRiBAJkcAkAawMFAmRuBQJjUQUBZAQCZHEJAGsDBQJkbwUCY1IFAWQEAmRyAwkAAAIFAmRqAAAAAAkAawMFAmRwBQJkawUCZGoEAmRzAwkAAAIFAmRqAAAAAAkAawMFAmRxBQJkawUCZGoEAmR0CQBkAgUCZHIFAmRzBAJkdQkBAmJ1AQUCY0oEAmR2CQEBaAIFBHRoaXMFAmR1BAJkdwkAZQIFAmR0BQJkdgQCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNXBQJjWgUDbmlsBAJkeQkAuQkCCQDMCAIJAKQDAQUCY1kJAMwIAgkApAMBBQJkYQkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCZHcJAMwIAgkApAMBBQJjUQkAzAgCCQCkAwEFAmNSCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJkYgkAzAgCCQCkAwEFAmRjCQDMCAIJAKQDAQUCZGQJAMwIAgkApAMBBQJkZQkAzAgCCQCkAwEFAmRrCQDMCAIJAKQDAQUCZGoFA25pbAIBOgkAlQoDBQJkdAUCZHgFAmR5AQJkegICYUQCYVQEAmRBCQECYXIABAJkQgkAkQMCBQJkQQUCYWwEAmF1CQDZBAEFAmRCBAJhdgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRBBQJhbQQCYXcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkQQUCYW4EAmF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEEFAmFvAwkBAiE9AgkAkAMBCAUCYUQIcGF5bWVudHMAAQkAAgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmN3CQCRAwIIBQJhRAhwYXltZW50cwAABAJkQwgFAmN3BmFtb3VudAMJAQIhPQIFAmF1CQEFdmFsdWUBCAUCY3cHYXNzZXRJZAkAAgEJAKwCAgkArAICAh5pbnZhbGlkIGFzc2V0IGlzIGluIHBheW1lbnQgLSAFAmRCAgwgaXMgZXhwZWN0ZWQEAmRECQECYVoABAJjRgkApQgBCAUCYUQGY2FsbGVyBAJkRQkBCWlzRGVmaW5lZAEJAKIIAQkBAmJhAQUCY0YEAmNKAwUCZEUJAQV2YWx1ZQEJAKIIAQkBAmJhAQUCY0YJAKQDAQkBAWsCBQR0aGlzBQJkRAQCYVEJAQ1wYXJzZUludFZhbHVlAQUCY0oEAmJQBQZoZWlnaHQEAmNvCQECYmQBBQJjSgQCY3AJAQJiZQEFAmNKBAJjbgkBAmJjAQUCY0oDCQBmAgUCYXYFAmRDCQACAQkArAICAiJhbW91bnQgaXMgbGVzcyB0aGVuIG1pbkxvY2tBbW91bnQ9CQCkAwEFAmF2AwkAZgIFAmF3BQJhVAkAAgEJAKwCAgItcGFzc2VkIGR1cmF0aW9uIGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmF3AwkAZgIFAmFUBQJheAkAAgEJAKwCAgIwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFAmF4AwMFAmRFCQBnAgkAZAIJAQFrAgUEdGhpcwUCY28JAQFrAgUEdGhpcwUCY3AFAmJQBwkAAgECNnRoZXJlIGlzIGFuIGFjdGl2ZSBsb2NrIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jawMJAGYCCQEBaAIFBHRoaXMFAmNuAAAJAAIBCQCsAgICNHRoZXJlIGFyZSBsb2NrZWQgV1hzIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jayAFAmNuBAJkRgkAawMFAmFUBQFjBQJheAQCZEcJAGsDBQJkQwUCZEYFAWMEAmRICQEBbgEJAPwHBAUCYXMCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQJkRwkAzAgCBQJiUAkAzAgCBQJhVAUDbmlsBQNuaWwEAmJRCQEBcQEJAJEDAgUCZEgAAAQCYlIJAQFxAQkAkQMCBQJkSAABBAJiaQkApAMBCQEBcQEJAJEDAgUCZEgAAgQCY1MJAQFrAgUCYnkJAQJhZQAEAmNUCQEBawIFAmJ5CQECYWcABAJjVQkBAWsCBQJieQkBAmFpAAQCY2sDCQBmAgUGaGVpZ2h0BQJjVQUCY1UFBmhlaWdodAQCY1YJAJYDAQkAzAgCCQBlAgUCY2sFAmNUCQDMCAIAAAUDbmlsBAJjWAkBAmJvAQUCY0oEAmNaCQBpAgkAaAIJAGgCBQJjUwUCY1YAAgADBAJkZgkBAmJyAQUCY0oEAmRnCQECYnMABAJkaAkAaQIJAGgCBQJkRwUCYVQAAgQCZGkJAQFoAgUEdGhpcwUCZGcEAmJKCQECYkIBBwQCZEkDBQJkRQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkRAkAZAIFAmFRAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJhAQUCY0YFAmNKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgEFAmNKBQJjRgUDbmlsCQCUCgIJAM4IAgkAzQgCCQDOCAIJAM4IAgUCZEkJAQJjbQgFAmNGBQJjSgUCZEMFAmJQBQJhVAUCYlEFAmJSBQJiaQkBAmJVBAUCZEMFAmFUAAEDBQJkRQAAAAEJAQJiTQgCBGxvY2sFAmNGBQJkQwUCYlAFAmFUBQJiUQUCYlIFAmFECQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjWAUCY1oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJidgAJAGQCBQJiSgUCZEcFA25pbAUCZEcMAmFEAQtjb25zdHJ1Y3RvcgYCZEoCZEsCYXYCZEwCZE0CYXMEAmROCQECYUMBBQJhRAMJAAACBQJkTgUCZE4JAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFaAAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcQAJAQJheQUFAmRLBQJhdgUCZEwFAmRNBQJhcwkAzAgCCQELU3RyaW5nRW50cnkCCQEBeAAFAmRKBQNuaWwJAQJiVQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRAEHbG9ja1JlZgMCYVQCZE8CZFAEAmRRCQECZHoCBQJhRAUCYVQEAmRSCAUCZFECXzEEAmRHCAUCZFECXzIEAmRTCQClCAEIBQJhRAZjYWxsZXIEAmRUAwMJAAACBQJkTwIABgkAAAIFAmRQAQAFBHVuaXQJAPwHBAUBdAIKY3JlYXRlUGFpcgkAzAgCBQF3CQDMCAIFAmRPCQDMCAIFAmRTCQDMCAIFAmRQBQNuaWwFA25pbAMJAAACBQJkVAUCZFQEAmRVCQD8BwQFAmFzAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFEBmNhbGxlcgkAzAgCBQJkRwUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVCQCUCgIFAmRSBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFEAQRsb2NrAQJhVAQCZFYJAQJkegIFAmFEBQJhVAQCZFIIBQJkVgJfMQQCZEcIBQJkVgJfMgQCZFUJAPwHBAUCYXMCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUQGY2FsbGVyCQDMCAIFAmRHBQNuaWwFA25pbAMJAAACBQJkVQUCZFUJAJQKAgUCZFIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUQBDGluY3JlYXNlTG9jawECZFcEAmRBCQECYXIABAJkQgkAkQMCBQJkQQUCYWwEAmF1CQDZBAEFAmRCBAJhdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRBBQJhbgQCYXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkQQUCYW8EAmRDCQECY3UCBQJhRAUCYXUEAmNGCQClCAEIBQJhRAZjYWxsZXIEAmNJCQECYU8BBQJjRgQCY0oJAJEDAgUCY0kFAmFHBAJkWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNJBQJhSAQCYlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSQUCYUkEAmRZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0kFAmFKBAJkWgkAZAIFAmJQBQJkWQQCZWEJAJYDAQkAzAgCCQBlAgUCZFoFBmhlaWdodAkAzAgCAAAFA25pbAQCZWIJAGQCBQJkWAUCZEMEAmVjCQBkAgUCZWEFAmRXAwkAZgIAAAUCZFcJAAIBAhpkdXJhdGlvbiBpcyBsZXNzIHRoZW4gemVybwMJAGYCBQJhdwUCZWMJAAIBCQCsAgICLWxvY2tEdXJhdGlvbk5ldyBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhdwMJAGYCBQJlYwUCYXgJAAIBCQCsAgICRGRlbHRhRHVyYXRpb24gKyBleGlzdGVkTG9ja0R1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFAmF4BAJkRgkAawMFAmVjBQFjBQJheAQCZEcJAGsDBQJlYgUCZEYFAWMEAmRVCQD8BwQFAmFzAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFEBmNhbGxlcgkAzAgCBQJkRwUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVBAJlZAUGaGVpZ2h0BAJkSAkBAW4BCQD8BwQFAmFzAhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZEcJAMwIAgUCZWQJAMwIAgUCZWMFA25pbAUDbmlsBAJiUQkBAXEBCQCRAwIFAmRIAAAEAmJSCQEBcQEJAJEDAgUCZEgAAQQCYmkJAKQDAQkBAXEBCQCRAwIFAmRIAAIEAmNTCQEBawIFAmJ5CQECYWUABAJjVAkBAWsCBQJieQkBAmFnAAQCY1UJAQFrAgUCYnkJAQJhaQAEAmNrAwkAZgIFBmhlaWdodAUCY1UFAmNVBQZoZWlnaHQEAmNWCQCWAwEJAMwIAgkAZQIFAmNrBQJjVAkAzAgCAAAFA25pbAQCY1gJAQJibwEFAmNKBAJjWQkBAWgCBQR0aGlzBQJjWAQCY1oJAGkCCQBoAgkAaAIFAmNTBQJjVgACAAMEAmRhCQBlAgUCY1oFAmNZAwkAZgIAAAUCZGEJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmRmCQECYnIBBQJjSgQCZGcJAQJicwAEAmRoCQEBaAIFBHRoaXMFAmRmBAJkaQkBAWgCBQR0aGlzBQJkZwQCZWUJAQJjQwEFAmNGBAJlZgkAZQIFAmRHBQJlZQMJAGYCAAAFAmVmCQACAQkArAICAhhnd3hEaWZmIGlzIGxlc3MgdGhlbiAwOiAJAKQDAQUCZWYEAmJKCQECYkIBBwQCZGoJAQJiQgEGBAJkbAkBAmJ0AQUCY0oEAmRtCQEBaAIFBHRoaXMFAmRsBAJkdAkAawMFAmRhBQJlZQUCZGoEAmVnCQBpAgkAaAIFAmRHBQJlYwACBAJlaAkAaQIJAGgCBQJlZQUCZWEAAgQCZWkJAGUCBQJlZwUCZWgJAM4IAgkAzQgCCQDOCAIJAQJjbQgFAmNGBQJjSgUCZWIFAmVkBQJlYwUCYlEFAmJSBQJiaQkBAmJVBAUCZEMFAmRXAAAAAAkBAmJNCAIEbG9jawUCY0YFAmRDBQJiUAUCZWMFAmJRBQJiUgUCYUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJidgAJAGQCBQJiSgUCZWYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRAEMY2xhaW1XeEJvb3N0AgJjRQJjRgMJAQIhPQIFAmJ6CAUCYUQGY2FsbGVyCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJlagkBAmNEAwUCY0UFAmNGBwQCZHcIBQJlagJfMQQCZHgIBQJlagJfMgQCZHkIBQJlagJfMwkAlAoCBQJkeAkAzAgCBQJkdwUDbmlsAmFEARRjbGFpbVd4Qm9vc3RSRUFET05MWQICY0UCY0YEAmVrCQECY0QDBQJjRQUCY0YGBAJkdwgFAmVrAl8xBAJkeAgFAmVrAl8yBAJkeQgFAmVrAl8zCQCUCgIFA25pbAkAzAgCBQJkdwkAzAgCBQJkeQUDbmlsAmFEAQZ1bmxvY2sBAmFOBAJjSQkBAmFPAQUCYU4EAmNKCQCRAwIFAmNJBQJhRwQCZFgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjSQUCYUgEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0kFAmFJBAJkWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNJBQJhSgQCZFoJAGQCBQJiUAUCZFkEAmRBCQECYXIABAJhdQkA2QQBCQCRAwIFAmRBBQJhbAMJAGcCBQJkWgUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFAmRaAgogdG8gdW5sb2NrAwkAZwIAAAUCZFgJAAIBAhFub3RoaW5nIHRvIHVubG9jawQCYmkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYXMJAQJhagAAAAkAzQgCCQDNCAIJAM4IAgkBAmNtCAUCYU4FAmNKAAAFAmJQBQJkWQAAAAAJAKQDAQUCYmkJAQJiVQQJAQEtAQUCZFgAAAAAAP///////////wEJAQJiTQgCBnVubG9jawUCYU4FAmRYBQJiUAUCZFkAAAAABQJhRAkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYU4FAmRYBQJhdQJhRAETZ3d4VXNlckluZm9SRUFET05MWQECYU4EAmFYCQECY0MBBQJhTgkAlAoCBQNuaWwJAMwIAgUCYVgFA25pbAJhRAEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmFOAmN5BAJhWAkBAmN4AgUCYU4FAmN5CQCUCgIFA25pbAUCYVgCYUQBGWdldFRvdGFsQ2FjaGVkR3d4UkVBRE9OTFkACQCUCgIFA25pbAkBAmJCAQYCYUQBCnNldE1hbmFnZXIBAmVsBAJkTgkBAmFDAQUCYUQDCQAAAgUCZE4FAmROBAJlbQkA2QQBBQJlbAMJAAACBQJlbQUCZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAAUCZWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRAEOY29uZmlybU1hbmFnZXIABAJlbgkBAmFCAAQCZW8DCQEJaXNEZWZpbmVkAQUCZW4GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVvBQJlbwQCZXADCQAAAggFAmFED2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZW4GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVwBQJlcAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMACQDYBAEJAQV2YWx1ZQEFAmVuCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXEBAmVyAAQCZXMEAW8JAQJhegADCQABAgUBbwIKQnl0ZVZlY3RvcgQCYUYFAW8FAmFGAwkAAQIFAW8CBFVuaXQIBQJlcQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCZXEJYm9keUJ5dGVzCQCRAwIIBQJlcQZwcm9vZnMAAAUCZXPDR9vj", "height": 2458058, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BskLMfXpLaR9V9pDsWzAWTWriKeW8XPeQk4d2whGb51u Next: ECDRefMeK9T8XVnhUrxN6ca8E8mVNrFtpbBqrBre9Er1 Diff:
OldNewDifferences
99
1010 let d = c
1111
12-func e (f) = makeString(["boosting.ride:", f], " ")
12+func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1313
1414
15-func g (f) = throw(e(f))
15+func h (f,g) = valueOrElse(getInteger(f, g), 0)
1616
1717
18-func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
18+func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1919
2020
21-func k (i,j) = valueOrElse(getInteger(i, j), 0)
21+func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2222
2323
24-func l (i,j,m) = valueOrElse(getInteger(i, j), m)
24+func l (m) = if ((0 > m))
25+ then -(m)
26+ else m
2527
2628
27-func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
28-
29-
30-func o (p) = if ((0 > p))
31- then -(p)
32- else p
33-
34-
35-func q (p) = {
36- let r = p
37- if ($isInstanceOf(r, "List[Any]"))
29+func n (m) = {
30+ let o = m
31+ if ($isInstanceOf(o, "List[Any]"))
3832 then {
39- let s = r
40- s
33+ let p = o
34+ p
4135 }
4236 else throw("fail to cast into List[Any]")
4337 }
4438
4539
46-func t (p) = {
47- let r = p
48- if ($isInstanceOf(r, "Int"))
40+func q (m) = {
41+ let o = m
42+ if ($isInstanceOf(o, "Int"))
4943 then {
50- let u = r
51- u
44+ let r = o
45+ r
5246 }
5347 else throw("fail to cast into Int")
5448 }
5549
5650
57-func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
51+func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5852
5953
60-let w = addressFromStringValue(h(this, v()))
54+let t = addressFromStringValue(e(this, s()))
6155
62-let x = makeString(["%s%s", "referral", "programName"], a)
56+let u = makeString(["%s%s", "referral", "programName"], a)
6357
64-let y = "wxlock"
58+let v = "wxlock"
6559
66-let z = valueOrElse(getString(this, x), y)
60+let w = valueOrElse(getString(this, u), v)
6761
68-func A () = "%s%s__config__factoryAddress"
62+func x () = "%s%s__config__factoryAddress"
6963
7064
71-let B = 1
65+let y = 1
7266
73-let C = 2
67+let z = 2
7468
75-let D = 3
69+let A = 3
7670
77-let E = 4
71+let B = 4
7872
79-let F = 5
73+let C = 5
8074
81-let G = 6
75+let D = 6
8276
83-let H = 7
77+let E = 7
8478
85-let I = 8
79+let F = 8
8680
87-let J = 9
81+let G = 9
8882
89-let K = 10
83+let H = 10
9084
91-let L = 11
85+let I = 11
9286
93-func M () = "%s__factoryConfig"
87+func J () = "%s__factoryConfig"
9488
9589
96-func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
90+func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9791
9892
99-func P () = "%s__lpTokensList"
93+func M () = "%s__lpTokensList"
10094
10195
102-func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
96+func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
10397
10498
105-func R (S) = makeString(["%s%s", "poolWeight", S], a)
99+func O (P) = makeString(["%s%s", "poolWeight", P], a)
106100
107101
108-func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
102+func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
109103
110104
111-func W () = addressFromStringValue(h(this, A()))
105+func T () = addressFromStringValue(e(this, x()))
112106
113107
114-func X () = split(valueOrElse(getString(W(), P()), ""), a)
108+func U () = split(valueOrElse(getString(T(), M()), ""), a)
115109
116110
117-func Y (Z) = split(h(Z, M()), a)
111+func V (W) = split(e(W, J()), a)
118112
119113
120-func aa (ab) = addressFromStringValue(ab[C])
114+func X (Y) = addressFromStringValue(Y[z])
121115
122116
123-func ac (ab) = addressFromStringValue(ab[F])
117+func Z (Y) = addressFromStringValue(Y[C])
124118
125119
126-func ad (ab) = addressFromStringValue(ab[B])
120+func aa (Y) = addressFromStringValue(Y[y])
127121
128122
129-func ae (ab) = addressFromStringValue(ab[K])
123+func ab (Y) = addressFromStringValue(Y[H])
130124
131125
132-func af () = "%s__managerPublicKey"
126+func ac () = "%s__managerPublicKey"
133127
134128
135-func ag () = "%s__pendingManagerPublicKey"
129+func ad () = "%s__pendingManagerPublicKey"
136130
137131
138-func ah () = "%s%s__ratePerBlock__current"
132+func ae () = "%s%s__ratePerBlock__current"
139133
140134
141-func ai () = "%s%s__ratePerBlockMax__current"
135+func af () = "%s%s__ratePerBlockMax__current"
142136
143137
144-func aj () = "%s%s__emission__startBlock"
138+func ag () = "%s%s__emission__startBlock"
145139
146140
147-func ak () = "%s%s__boostingV2__startBlock"
141+func ah () = "%s%s__emission__duration"
148142
149143
150-func al () = "%s%s__emission__duration"
144+func ai () = "%s%s__emission__endBlock"
151145
152146
153-func am () = "%s%s__emission__endBlock"
147+func aj () = "%s__nextPeriod"
154148
155149
156-func an () = "%s__nextPeriod"
150+func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
157151
158152
159-func ao () = "%s%s__gwxRewardEmissionPart__startHeight"
153+let al = 1
154+
155+let am = 2
156+
157+let an = 3
158+
159+let ao = 4
160+
161+let ap = 5
162+
163+func aq () = "%s__config"
160164
161165
162-let ap = 1
163-
164-let aq = 2
165-
166-let ar = 3
167-
168-let as = 4
169-
170-let at = 5
171-
172-func au () = "%s__config"
166+func ar () = split(e(this, aq()), a)
173167
174168
175-func av () = split(h(this, au()), a)
169+let as = addressFromStringValue(ar()[ap])
170+
171+func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
176172
177173
178-let aw = addressFromStringValue(av()[at])
179-
180-func ax (ay,az,aA,aB,aw) = makeString(["%s%d%d%d", ay, az, aA, aB, aw], a)
174+func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
181175
182176
183-func aC (ay,az,aA,aB,aw) = ax(ay, toString(az), toString(aA), toString(aB), aw)
184-
185-
186-func aD () = {
187- let r = getString(af())
188- if ($isInstanceOf(r, "String"))
177+func az () = {
178+ let o = getString(ac())
179+ if ($isInstanceOf(o, "String"))
189180 then {
190- let aE = r
191- fromBase58String(aE)
181+ let aA = o
182+ fromBase58String(aA)
192183 }
193- else if ($isInstanceOf(r, "Unit"))
184+ else if ($isInstanceOf(o, "Unit"))
194185 then unit
195186 else throw("Match error")
196187 }
197188
198189
199-func aF () = {
200- let r = getString(ag())
201- if ($isInstanceOf(r, "String"))
190+func aB () = {
191+ let o = getString(ad())
192+ if ($isInstanceOf(o, "String"))
202193 then {
203- let aE = r
204- fromBase58String(aE)
194+ let aA = o
195+ fromBase58String(aA)
205196 }
206- else if ($isInstanceOf(r, "Unit"))
197+ else if ($isInstanceOf(o, "Unit"))
207198 then unit
208199 else throw("Match error")
209200 }
210201
211202
212-func aG (aH) = {
213- let aI = throw("Permission denied")
214- let r = aD()
215- if ($isInstanceOf(r, "ByteVector"))
203+func aC (aD) = {
204+ let aE = throw("Permission denied")
205+ let o = az()
206+ if ($isInstanceOf(o, "ByteVector"))
216207 then {
217- let aJ = r
218- if ((aH.callerPublicKey == aJ))
208+ let aF = o
209+ if ((aD.callerPublicKey == aF))
219210 then true
220- else aI
211+ else aE
221212 }
222- else if ($isInstanceOf(r, "Unit"))
223- then if ((aH.caller == this))
213+ else if ($isInstanceOf(o, "Unit"))
214+ then if ((aD.caller == this))
224215 then true
225- else aI
216+ else aE
226217 else throw("Match error")
227218 }
228219
229220
230-let aK = 1
221+let aG = 1
231222
232-let aL = 2
223+let aH = 2
233224
234-let aM = 3
225+let aI = 3
235226
236-let aN = 4
227+let aJ = 4
237228
238-let aO = 5
229+let aK = 5
239230
240-let aP = 6
231+let aL = 6
241232
242-func aQ (aR) = makeString(["%s%s__lock", aR], a)
233+func aM (aN) = makeString(["%s%s__lock", aN], a)
243234
244235
245-func aS (aR) = split(h(this, aQ(aR)), a)
236+func aO (aN) = split(e(this, aM(aN)), a)
246237
247238
248-func aT (aU,aV,aW,aX,aY,aZ,ba,bb) = makeString(["%d%d%d%d%d%d%d%d", aU, aV, aW, aX, aY, aZ, ba, bb], a)
239+func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
249240
250241
251-func bc (aU,aV,aW,aX,aY,aZ,bb) = aT(aU, toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ), toString(lastBlock.timestamp), toString(bb))
242+func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
252243
253244
254-func bd () = "%s__nextUserNum"
245+func aZ () = "%s__nextUserNum"
255246
256247
257-func be (aR) = makeString(["%s%s%s__mapping__user2num", aR], a)
248+func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
258249
259250
260-func bf (V) = makeString(["%s%s%s__mapping__num2user", V], a)
251+func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
261252
262253
263-func bg (aU) = makeString(["%s%d%s__paramByUserNum", aU, "amount"], a)
254+func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
264255
265256
266-func bh (aU) = makeString(["%s%d%s__paramByUserNum", aU, "start"], a)
257+func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
267258
268259
269-func bi (aU) = makeString(["%s%d%s__paramByUserNum", aU, "duration"], a)
260+func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
270261
271262
272-func bj (aU) = makeString(["%s%d%s__paramByUserNum", aU, "k"], a)
263+func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
273264
274265
275-func bk (aU) = makeString(["%s%d%s__paramByUserNum", aU, "b"], a)
266+func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
276267
277268
278-func bl (aU,bm) = makeString(["%s%d%s%d__paramByPeriod", aU, "k", bm], a)
269+func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
279270
280271
281-func bn (aU,bm) = makeString(["%s%d%s%d__paramByPeriod", aU, "b", bm], a)
272+func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
282273
283274
284-func bo () = "%s%s__stats__activeTotalLocked"
275+func bk () = "%s%s__stats__activeTotalLocked"
285276
286277
287-func bp () = "%s%s__stats__locksDurationSumInBlocks"
278+func bl () = "%s%s__stats__locksDurationSumInBlocks"
288279
289280
290-func bq () = "%s%s__stats__locksCount"
281+func bm () = "%s%s__stats__locksCount"
291282
292283
293-func br () = "%s%s__stats__activeUsersCount"
284+func bn () = "%s%s__stats__activeUsersCount"
294285
295286
296-func bs (aU) = makeString(["%s%d__userBoostEmissionLastIntV2", aU], a)
287+func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
297288
298289
299-func bt (aU,bu) = makeString(["%s%d__userBoostEmissionLastIntV2", aU, bu], a)
290+func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
300291
301292
302-func bv (aU) = makeString(["%s%d__maxBoostInt", aU], a)
293+func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
303294
304295
305-func bw () = "%s%s__maxBoostInt__total"
296+func bs () = "%s%s__maxBoostInt__total"
306297
307298
308-func bx (aU) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aU], a)
299+func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
309300
310301
311-func by (aU) = makeString(["%s%d__userBoostClaimed", aU], a)
302+func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
312303
313304
314-func bz () = "%s%s__gwxCached__total"
305+func bv () = "%s%s__gwxCached__total"
315306
316307
317-func bA () = "%s__gwxCachedTotalCorrective"
308+func bw () = "%s__gwxCachedTotalCorrective"
318309
319310
320-let bB = W()
311+let bx = T()
321312
322-let ab = Y(bB)
313+let Y = V(bx)
323314
324-let bC = ac(ab)
315+let by = Z(Y)
325316
326-let bD = ad(ab)
317+let bz = aa(Y)
327318
328-let bE = ae(ab)
319+let bA = ab(Y)
329320
330-let bF = makeString(["%s", "votingEmissionContract"], a)
331-
332-let bG = addressFromStringValue(getStringValue(bB, bF))
333-
334-let bH = {
335- let bI = invoke(bC, "getBoostCoeffREADONLY", nil, nil)
336- if ($isInstanceOf(bI, "Int"))
337- then bI
338- else throw(($getType(bI) + " couldn't be cast to Int"))
339- }
340-
341-func bJ (bK) = {
342- let bL = makeString(["%s", "currentEpochUi"], a)
343- let bM = getIntegerValue(bG, bL)
344- let bN = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
345- let bO = getInteger(this, bN)
346- let bP = valueOrElse(getInteger(this, bz()), 0)
347- let bQ = if (isDefined(bO))
348- then (bM >= value(bO))
321+func bB (bC) = {
322+ let bD = makeString(["%s", "votingEmissionContract"], a)
323+ let bE = addressFromStringValue(getStringValue(bx, bD))
324+ let bF = makeString(["%s", "currentEpochUi"], a)
325+ let bG = getIntegerValue(bE, bF)
326+ let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327+ let bI = getInteger(this, bH)
328+ let bJ = valueOrElse(getInteger(this, bv()), 0)
329+ let bK = if (isDefined(bI))
330+ then (bG >= value(bI))
349331 else false
350- let bR = if (if (bQ)
351- then bK
332+ let bL = if (if (bK)
333+ then bC
352334 else false)
353- then valueOrElse(getInteger(this, bA()), 0)
335+ then valueOrElse(getInteger(this, bw()), 0)
354336 else 0
355- max([0, (bP + bR)])
337+ max([0, (bJ + bL)])
356338 }
357339
358340
359-func bS (bT,bU,aV,bV,aX,bW,bX,aH) = {
360- let bY = makeString(["%s%s%s%s__history", bT, bU, toBase58String(aH.transactionId)], a)
361- let bZ = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aV), toString(bV), toString(aX), toString(bW), toString(bX)], a)
362- StringEntry(bY, bZ)
341+func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342+ let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343+ let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344+ StringEntry(bS, bT)
363345 }
364346
365347
366-func ca (cb,cc,cd,ce) = {
367- let cf = bp()
368- let cg = bq()
369- let ch = br()
370- let ci = bo()
371- let cj = k(this, cf)
372- let ck = k(this, cg)
373- let cl = k(this, ch)
374- let cm = k(this, ci)
375-[IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + cd)), IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cb))]
348+func bU (bV,bW,bX,bY) = {
349+ let bZ = bl()
350+ let ca = bm()
351+ let cb = bn()
352+ let cc = bk()
353+ let cd = h(this, bZ)
354+ let ce = h(this, ca)
355+ let cf = h(this, cb)
356+ let cg = h(this, cc)
357+[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
376358 }
377359
378360
379-func cn (co,cp,cq) = {
380- let cr = 1000
381- (((co * cq) + cp) / cr)
361+func ch (ci,cj,ck) = {
362+ let cl = 1000
363+ (((ci * ck) + cj) / cl)
382364 }
383365
384366
385-func cs (aR,aU,aV,aW,aX,bW,bX,bm) = {
386- let ct = bg(aU)
387- let cu = bh(aU)
388- let cv = bi(aU)
389- let cw = bj(aU)
390- let cx = bk(aU)
391- let cy = bl(aU, bm)
392- let cz = bn(aU, bm)
393- let bb = cn(bW, bX, height)
394-[IntegerEntry(ct, aV), IntegerEntry(cu, aW), IntegerEntry(cv, aX), IntegerEntry(cw, bW), IntegerEntry(cx, bX), IntegerEntry(cy, bW), IntegerEntry(cz, bX), StringEntry(aQ(aR), bc(aU, aV, aW, aX, bW, bX, bb))]
367+func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368+ let cn = bc(aQ)
369+ let co = bd(aQ)
370+ let cp = be(aQ)
371+ let cq = bf(aQ)
372+ let cr = bg(aQ)
373+ let cs = bh(aQ, bi)
374+ let ct = bj(aQ, bi)
375+ let aX = ch(bQ, bR, height)
376+[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
395377 }
396378
397379
398-func cA (aH,cB) = if ((size(aH.payments) > 1))
380+func cu (aD,cv) = if ((size(aD.payments) > 1))
399381 then throw("only one payment is allowed")
400- else if ((size(aH.payments) == 0))
382+ else if ((size(aD.payments) == 0))
401383 then 0
402384 else {
403- let cC = aH.payments[0]
404- if ((value(cC.assetId) != cB))
385+ let cw = aD.payments[0]
386+ if ((value(cw.assetId) != cv))
405387 then throw("invalid asset id in payment")
406- else cC.amount
388+ else cw.amount
407389 }
408390
409391
410-func cD (aR,cE) = {
411- let cF = "empty"
412- let cG = be(aR)
413- let aU = valueOrElse(getString(cG), cF)
414- let bW = valueOrElse(getInteger(bj(aU)), 0)
415- let bX = valueOrElse(getInteger(bk(aU)), 0)
416- let cH = cn(bW, bX, cE)
417- let bb = if ((0 > cH))
392+func cx (aN,cy) = {
393+ let cz = "empty"
394+ let cA = ba(aN)
395+ let aQ = valueOrElse(getString(cA), cz)
396+ let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397+ let bR = valueOrElse(getInteger(bg(aQ)), 0)
398+ let cB = ch(bQ, bR, cy)
399+ let aX = if ((0 > cB))
418400 then 0
419- else cH
420- bb
401+ else cB
402+ aX
421403 }
422404
423405
424-func cI (aR) = cD(aR, height)
406+func cC (aN) = cx(aN, height)
425407
426408
427-func cJ (cK,cL) = {
428- let aR = addressFromStringValue(cL)
429- let cM = 4
430- let cN = 5
431- let cO = {
432- let bI = invoke(bB, "getPoolConfigByLpAssetId", [cK], nil)
433- if ($isInstanceOf(bI, "List[Any]"))
434- then bI
435- else throw(($getType(bI) + " couldn't be cast to List[Any]"))
436- }
437- let cP = {
438- let bI = cO[cM]
439- if ($isInstanceOf(bI, "String"))
440- then bI
441- else throw(($getType(bI) + " couldn't be cast to String"))
442- }
443- let cQ = {
444- let bI = cO[cN]
445- if ($isInstanceOf(bI, "String"))
446- then bI
447- else throw(($getType(bI) + " couldn't be cast to String"))
448- }
449- let cR = makeString(["%s", "currentEpoch"], a)
450- let cS = {
451- let cT = (value(getInteger(bG, cR)) - 1)
452- if ((0 > cT))
453- then g("invalid epoch")
454- else cT
455- }
456- func cU (cV,i,cT) = makeString(["%s%s%s%s%d", "vote", cP, cQ, toString(i), toString(cT)], a)
457-
458- func cW (cV,cT) = makeString(["%s%s%s%d", "votingResult", cP, cQ, toString(cT)], a)
459-
460- let cV = $Tuple2(cP, cQ)
461- let cX = valueOrElse(getInteger(bG, cU(cV, aR, cS)), 0)
462- let cY = valueOrElse(getInteger(bG, cW(cV, cS)), 0)
463- $Tuple2(cX, cY)
464- }
465-
466-
467-func cZ (cK,cL,da) = {
468- let cF = "EMPTY"
469- let db = valueOrElse(getString(this, aQ(cL)), cF)
470- if ((db == cF))
409+func cD (cE,cF,cG) = {
410+ let cz = "EMPTY"
411+ let cH = valueOrElse(getString(this, aM(cF)), cz)
412+ if ((cH == cz))
471413 then $Tuple3(0, nil, "userRecord::is::empty")
472414 else {
473- let dc = split(db, a)
474- let dd = dc[aK]
475- let de = "empty"
476- let df = if ((cK != de))
415+ let cI = split(cH, a)
416+ let cJ = cI[aG]
417+ let cK = valueOrElse(getInteger(bA, ak()), 0)
418+ let cL = "empty"
419+ let cM = if ((cE != cL))
477420 then {
478- let dg = valueOrErrorMessage(getString(bB, N(cK)), ("unsupported lp asset " + cK))
479- getIntegerValue(bB, R(dg))
421+ let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422+ let cO = getIntegerValue(bx, O(cN))
423+ let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424+ $Tuple2(cP, cO)
480425 }
481- else if (da)
482- then 0
483- else throw(("not readonly mode: unsupported lp asset " + cK))
484- let dh = n(bC, ah())
485- let di = n(bC, ak())
486- let dj = n(bC, am())
487- let cq = if ((height > dj))
488- then dj
426+ else if (cG)
427+ then $Tuple2(0, 0)
428+ else throw(("not readonly mode: unsupported lp asset " + cE))
429+ let cQ = cM._1
430+ let cR = cM._2
431+ let cS = k(by, ae())
432+ let cT = k(by, ag())
433+ let cU = k(by, ai())
434+ let ck = if ((height > cU))
435+ then cU
489436 else height
490- let dk = max([(cq - di), 0])
491- let dl = bt(dd, cK)
492- let dm = bs(dd)
493- let dn = valueOrElse(getInteger(this, dl), k(this, dm))
494- let do = (((dh * dk) * (bH - 1)) / bH)
495- let dp = (do - dn)
496- let dq = fraction(dp, bH, ((bH - 1) * dh))
497- let dr = (cq - dq)
498- if ((0 > dp))
499- then throw("wrong calculations")
500- else {
501- let ds = bv(dd)
502- let dt = bw()
503- let du = k(this, ds)
504- let dv = k(this, dt)
505- let dw = cJ(cK, cL)
506- let cX = dw._1
507- let dx = dw._2
508- let dy = bx(dd)
509- let dz = k(this, dy)
510- let dA = fraction(dp, df, d)
511- let dB = if ((dx == 0))
512- then 0
513- else fraction(dA, cX, dx)
514- let dC = by(dd)
515- let dD = k(this, dC)
516- let dE = (dB - dD)
517- let dF = [IntegerEntry(dl, do)]
518- let dG = makeString([toString(dn), toString(dp), toString(dD), toString(dE), toString(df), toString(cq), toString(dq), toString(dr), toString(cX), toString(dx)], ":")
519- $Tuple3(dB, dF, dG)
520- }
437+ let cV = max([(ck - cT), 0])
438+ let cW = bp(cJ, cE)
439+ let cX = bo(cJ)
440+ let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441+ let cZ = (((cS * cV) * 2) / 3)
442+ let da = (cZ - cY)
443+ let db = fraction(da, 3, (2 * cS))
444+ let dc = (ck - db)
445+ let dd = max([(cK - dc), 0])
446+ let de = ((ck - dc) - dd)
447+ if (if (if ((0 > dc))
448+ then true
449+ else (0 > de))
450+ then true
451+ else (l(((dd + de) - db)) >= 1))
452+ then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453+ else if ((0 > da))
454+ then throw("wrong calculations")
455+ else {
456+ let df = br(cJ)
457+ let dg = bs()
458+ let dh = h(this, df)
459+ let di = h(this, dg)
460+ let dj = bB(true)
461+ let dk = cC(cF)
462+ let dl = bt(cJ)
463+ let dm = h(this, dl)
464+ let dn = if ((db == 0))
465+ then 0
466+ else fraction(da, dd, db)
467+ let do = if ((db == 0))
468+ then 0
469+ else fraction(da, de, db)
470+ let dp = fraction(dn, cQ, d)
471+ let dq = fraction(do, cR, d)
472+ let dr = if ((dj == 0))
473+ then 0
474+ else fraction(dp, dk, dj)
475+ let ds = if ((dj == 0))
476+ then 0
477+ else fraction(dq, dk, dj)
478+ let dt = (dr + ds)
479+ let du = bu(cJ)
480+ let dv = h(this, du)
481+ let dw = (dt - dv)
482+ let dx = [IntegerEntry(cW, cZ)]
483+ let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":")
484+ $Tuple3(dt, dx, dy)
485+ }
521486 }
522487 }
523488
524489
525-func dH (aH,aX) = {
526- let dI = av()
527- let dJ = dI[ap]
528- let ay = fromBase58String(dJ)
529- let az = parseIntValue(dI[aq])
530- let aA = parseIntValue(dI[ar])
531- let aB = parseIntValue(dI[as])
532- if ((size(aH.payments) != 1))
490+func dz (aD,aT) = {
491+ let dA = ar()
492+ let dB = dA[al]
493+ let au = fromBase58String(dB)
494+ let av = parseIntValue(dA[am])
495+ let aw = parseIntValue(dA[an])
496+ let ax = parseIntValue(dA[ao])
497+ if ((size(aD.payments) != 1))
533498 then throw("invalid payment - exact one payment must be attached")
534499 else {
535- let cC = aH.payments[0]
536- let dK = cC.amount
537- if ((ay != value(cC.assetId)))
538- then throw((("invalid asset is in payment - " + dJ) + " is expected"))
500+ let cw = aD.payments[0]
501+ let dC = cw.amount
502+ if ((au != value(cw.assetId)))
503+ then throw((("invalid asset is in payment - " + dB) + " is expected"))
539504 else {
540- let dL = bd()
541- let cL = toString(aH.caller)
542- let dM = isDefined(getString(be(cL)))
543- let dd = if (dM)
544- then value(getString(be(cL)))
545- else toString(n(this, dL))
546- let aU = parseIntValue(dd)
547- let bV = height
548- let cu = bh(dd)
549- let cv = bi(dd)
550- let ct = bg(dd)
551- if ((az > dK))
552- then throw(("amount is less then minLockAmount=" + toString(az)))
553- else if ((aA > aX))
554- then throw(("passed duration is less then minLockDuration=" + toString(aA)))
555- else if ((aX > aB))
556- then throw(("passed duration is greater then maxLockDuration=" + toString(aB)))
557- else if (if (dM)
558- then ((n(this, cu) + n(this, cv)) >= bV)
505+ let dD = aZ()
506+ let cF = toString(aD.caller)
507+ let dE = isDefined(getString(ba(cF)))
508+ let cJ = if (dE)
509+ then value(getString(ba(cF)))
510+ else toString(k(this, dD))
511+ let aQ = parseIntValue(cJ)
512+ let bP = height
513+ let co = bd(cJ)
514+ let cp = be(cJ)
515+ let cn = bc(cJ)
516+ if ((av > dC))
517+ then throw(("amount is less then minLockAmount=" + toString(av)))
518+ else if ((aw > aT))
519+ then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520+ else if ((aT > ax))
521+ then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522+ else if (if (dE)
523+ then ((k(this, co) + k(this, cp)) >= bP)
559524 else false)
560525 then throw("there is an active lock - consider to use increaseLock")
561- else if ((k(this, ct) > 0))
562- then throw(("there are locked WXs - consider to use increaseLock " + ct))
526+ else if ((h(this, cn) > 0))
527+ then throw(("there are locked WXs - consider to use increaseLock " + cn))
563528 else {
564- let dN = fraction(aX, c, aB)
565- let dO = fraction(dK, dN, c)
566- let dP = q(invoke(aw, "calcGwxParamsREADONLY", [dO, bV, aX], nil))
567- let bW = t(dP[0])
568- let bX = t(dP[1])
569- let bm = toString(t(dP[2]))
570- let dh = n(bC, ah())
571- let dQ = n(bC, aj())
572- let dj = n(bC, am())
573- let cq = if ((height > dj))
574- then dj
529+ let dF = fraction(aT, c, ax)
530+ let dG = fraction(dC, dF, c)
531+ let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532+ let bQ = q(dH[0])
533+ let bR = q(dH[1])
534+ let bi = toString(q(dH[2]))
535+ let cS = k(by, ae())
536+ let cT = k(by, ag())
537+ let cU = k(by, ai())
538+ let ck = if ((height > cU))
539+ then cU
575540 else height
576- let dk = max([(cq - dQ), 0])
577- let dm = bs(dd)
578- let do = (((dh * dk) * 2) / 3)
579- let ds = bv(dd)
580- let dt = bw()
581- let du = ((dO * aX) / 2)
582- let dv = k(this, dt)
583- let bP = bJ(false)
584- let dR = if (dM)
541+ let cV = max([(ck - cT), 0])
542+ let cX = bo(cJ)
543+ let cZ = (((cS * cV) * 2) / 3)
544+ let df = br(cJ)
545+ let dg = bs()
546+ let dh = ((dG * aT) / 2)
547+ let di = h(this, dg)
548+ let bJ = bB(false)
549+ let dI = if (dE)
585550 then nil
586- else [IntegerEntry(dL, (aU + 1)), StringEntry(be(cL), dd), StringEntry(bf(dd), cL)]
587- $Tuple2(((((dR ++ cs(cL, dd, dK, bV, aX, bW, bX, bm)) ++ ca(dK, aX, 1, if (dM)
551+ else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552+ $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
588553 then 0
589- else 1)) :+ bS("lock", cL, dK, bV, aX, bW, bX, aH)) ++ [IntegerEntry(dm, do), IntegerEntry(bz(), (bP + dO))]), dO)
554+ else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
590555 }
591556 }
592557 }
593558 }
594559
595560
596-@Callable(aH)
597-func constructor (dS,dT,az,dU,dV,aw) = {
598- let dW = aG(aH)
599- if ((dW == dW))
600- then ([IntegerEntry(bd(), 0), StringEntry(au(), aC(dT, az, dU, dV, aw)), StringEntry(A(), dS)] ++ ca(0, 0, 0, 0))
561+@Callable(aD)
562+func constructor (dJ,dK,av,dL,dM,as) = {
563+ let dN = aC(aD)
564+ if ((dN == dN))
565+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
601566 else throw("Strict value is not equal to itself.")
602567 }
603568
604569
605570
606-@Callable(aH)
607-func lockRef (aX,dX,dY) = {
608- let dZ = dH(aH, aX)
609- let ea = dZ._1
610- let dO = dZ._2
611- let eb = toString(aH.caller)
612- let ec = if (if ((dX == ""))
571+@Callable(aD)
572+func lockRef (aT,dO,dP) = {
573+ let dQ = dz(aD, aT)
574+ let dR = dQ._1
575+ let dG = dQ._2
576+ let dS = toString(aD.caller)
577+ let dT = if (if ((dO == ""))
613578 then true
614- else (dY == base58''))
579+ else (dP == base58''))
615580 then unit
616- else invoke(w, "createPair", [z, dX, eb, dY], nil)
617- if ((ec == ec))
581+ else invoke(t, "createPair", [w, dO, dS, dP], nil)
582+ if ((dT == dT))
618583 then {
619- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
620- if ((ed == ed))
621- then $Tuple2(ea, unit)
584+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585+ if ((dU == dU))
586+ then $Tuple2(dR, unit)
622587 else throw("Strict value is not equal to itself.")
623588 }
624589 else throw("Strict value is not equal to itself.")
626591
627592
628593
629-@Callable(aH)
630-func lock (aX) = {
631- let ee = dH(aH, aX)
632- let ea = ee._1
633- let dO = ee._2
634- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
635- if ((ed == ed))
636- then $Tuple2(ea, unit)
594+@Callable(aD)
595+func lock (aT) = {
596+ let dV = dz(aD, aT)
597+ let dR = dV._1
598+ let dG = dV._2
599+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600+ if ((dU == dU))
601+ then $Tuple2(dR, unit)
637602 else throw("Strict value is not equal to itself.")
638603 }
639604
640605
641606
642-@Callable(aH)
643-func increaseLock (ef) = {
644- let dI = av()
645- let dJ = dI[ap]
646- let ay = fromBase58String(dJ)
647- let aA = parseIntValue(dI[ar])
648- let aB = parseIntValue(dI[as])
649- let dK = cA(aH, ay)
650- let cL = toString(aH.caller)
651- let dc = aS(cL)
652- let dd = dc[aK]
653- let eg = parseIntValue(dc[aL])
654- let bV = parseIntValue(dc[aM])
655- let eh = parseIntValue(dc[aN])
656- let ei = (bV + eh)
657- let ej = max([(ei - height), 0])
658- let ek = (eg + dK)
659- let el = (ej + ef)
660- if ((0 > ef))
607+@Callable(aD)
608+func increaseLock (dW) = {
609+ let dA = ar()
610+ let dB = dA[al]
611+ let au = fromBase58String(dB)
612+ let aw = parseIntValue(dA[an])
613+ let ax = parseIntValue(dA[ao])
614+ let dC = cu(aD, au)
615+ let cF = toString(aD.caller)
616+ let cI = aO(cF)
617+ let cJ = cI[aG]
618+ let dX = parseIntValue(cI[aH])
619+ let bP = parseIntValue(cI[aI])
620+ let dY = parseIntValue(cI[aJ])
621+ let dZ = (bP + dY)
622+ let ea = max([(dZ - height), 0])
623+ let eb = (dX + dC)
624+ let ec = (ea + dW)
625+ if ((0 > dW))
661626 then throw("duration is less then zero")
662- else if ((aA > el))
663- then throw(("lockDurationNew is less then minLockDuration=" + toString(aA)))
664- else if ((el > aB))
665- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aB)))
627+ else if ((aw > ec))
628+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629+ else if ((ec > ax))
630+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
666631 else {
667- let dN = fraction(el, c, aB)
668- let dO = fraction(ek, dN, c)
669- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
670- if ((ed == ed))
632+ let dF = fraction(ec, c, ax)
633+ let dG = fraction(eb, dF, c)
634+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635+ if ((dU == dU))
671636 then {
672- let em = height
673- let dP = q(invoke(aw, "calcGwxParamsREADONLY", [dO, em, el], nil))
674- let bW = t(dP[0])
675- let bX = t(dP[1])
676- let bm = toString(t(dP[2]))
677- let dh = n(bC, ah())
678- let dQ = n(bC, aj())
679- let dj = n(bC, am())
680- let cq = if ((height > dj))
681- then dj
637+ let ed = height
638+ let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639+ let bQ = q(dH[0])
640+ let bR = q(dH[1])
641+ let bi = toString(q(dH[2]))
642+ let cS = k(by, ae())
643+ let cT = k(by, ag())
644+ let cU = k(by, ai())
645+ let ck = if ((height > cU))
646+ then cU
682647 else height
683- let dk = max([(cq - dQ), 0])
684- let dm = bs(dd)
685- let dn = k(this, dm)
686- let do = (((dh * dk) * 2) / 3)
687- let dp = (do - dn)
688- if ((0 > dp))
648+ let cV = max([(ck - cT), 0])
649+ let cX = bo(cJ)
650+ let cY = h(this, cX)
651+ let cZ = (((cS * cV) * 2) / 3)
652+ let da = (cZ - cY)
653+ if ((0 > da))
689654 then throw("wrong calculations")
690655 else {
691- let ds = bv(dd)
692- let dt = bw()
693- let du = k(this, ds)
694- let dv = k(this, dt)
695- let en = cI(cL)
696- let eo = (dO - en)
697- if ((0 > eo))
698- then throw(("gwxDiff is less then 0: " + toString(eo)))
656+ let df = br(cJ)
657+ let dg = bs()
658+ let dh = h(this, df)
659+ let di = h(this, dg)
660+ let ee = cC(cF)
661+ let ef = (dG - ee)
662+ if ((0 > ef))
663+ then throw(("gwxDiff is less then 0: " + toString(ef)))
699664 else {
700- let bP = bJ(false)
701- let ep = bJ(true)
702- let dy = bx(dd)
703- let dz = k(this, dy)
704- let dB = fraction(dp, en, ep)
705- let eq = ((dO * el) / 2)
706- let er = ((en * ej) / 2)
707- let es = (eq - er)
708- (((cs(cL, dd, ek, em, el, bW, bX, bm) ++ ca(dK, ef, 0, 0)) :+ bS("lock", cL, dK, bV, el, bW, bX, aH)) ++ [IntegerEntry(bz(), (bP + eo))])
665+ let bJ = bB(false)
666+ let dj = bB(true)
667+ let dl = bt(cJ)
668+ let dm = h(this, dl)
669+ let dt = fraction(da, ee, dj)
670+ let eg = ((dG * ec) / 2)
671+ let eh = ((ee * ea) / 2)
672+ let ei = (eg - eh)
673+ (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
709674 }
710675 }
711676 }
715680
716681
717682
718-@Callable(aH)
719-func claimWxBoost (cK,cL) = if ((bD != aH.caller))
683+@Callable(aD)
684+func claimWxBoost (cE,cF) = if ((bz != aD.caller))
720685 then throw("permissions denied")
721686 else {
722- let et = cZ(cK, cL, false)
723- let dE = et._1
724- let dF = et._2
725- let dG = et._3
726- $Tuple2(dF, [dE])
687+ let ej = cD(cE, cF, false)
688+ let dw = ej._1
689+ let dx = ej._2
690+ let dy = ej._3
691+ $Tuple2(dx, [dw])
727692 }
728693
729694
730695
731-@Callable(aH)
732-func claimWxBoostREADONLY (cK,cL) = {
733- let eu = cZ(cK, cL, true)
734- let dE = eu._1
735- let dF = eu._2
736- let dG = eu._3
737- $Tuple2(nil, [dE, dG])
696+@Callable(aD)
697+func claimWxBoostREADONLY (cE,cF) = {
698+ let ek = cD(cE, cF, true)
699+ let dw = ek._1
700+ let dx = ek._2
701+ let dy = ek._3
702+ $Tuple2(nil, [dw, dy])
738703 }
739704
740705
741706
742-@Callable(aH)
743-func unlock (aR) = {
744- let dc = aS(aR)
745- let dd = dc[aK]
746- let eg = parseIntValue(dc[aL])
747- let bV = parseIntValue(dc[aM])
748- let eh = parseIntValue(dc[aN])
749- let ei = (bV + eh)
750- let dI = av()
751- let ay = fromBase58String(dI[ap])
752- if ((ei >= height))
753- then throw((("wait " + toString(ei)) + " to unlock"))
754- else if ((0 >= eg))
707+@Callable(aD)
708+func unlock (aN) = {
709+ let cI = aO(aN)
710+ let cJ = cI[aG]
711+ let dX = parseIntValue(cI[aH])
712+ let bP = parseIntValue(cI[aI])
713+ let dY = parseIntValue(cI[aJ])
714+ let dZ = (bP + dY)
715+ let dA = ar()
716+ let au = fromBase58String(dA[al])
717+ if ((dZ >= height))
718+ then throw((("wait " + toString(dZ)) + " to unlock"))
719+ else if ((0 >= dX))
755720 then throw("nothing to unlock")
756721 else {
757- let bm = valueOrElse(getInteger(aw, an()), 0)
758- (((cs(aR, dd, 0, bV, eh, 0, 0, toString(bm)) ++ ca(-(eg), 0, 0, -1)) :+ bS("unlock", aR, eg, bV, eh, 0, 0, aH)) :+ ScriptTransfer(addressFromStringValue(aR), eg, ay))
722+ let bi = valueOrElse(getInteger(as, aj()), 0)
723+ (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
759724 }
760725 }
761726
762727
763728
764-@Callable(aH)
765-func gwxUserInfoREADONLY (aR) = {
766- let bb = cI(aR)
767- $Tuple2(nil, [bb])
729+@Callable(aD)
730+func gwxUserInfoREADONLY (aN) = {
731+ let aX = cC(aN)
732+ $Tuple2(nil, [aX])
768733 }
769734
770735
771736
772-@Callable(aH)
773-func getUserGwxAmountAtHeightREADONLY (aR,cE) = {
774- let bb = cD(aR, cE)
775- $Tuple2(nil, bb)
737+@Callable(aD)
738+func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739+ let aX = cx(aN, cy)
740+ $Tuple2(nil, aX)
776741 }
777742
778743
779744
780-@Callable(aH)
781-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bJ(true))
745+@Callable(aD)
746+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
782747
783748
784749
785-@Callable(aH)
786-func setManager (ev) = {
787- let dW = aG(aH)
788- if ((dW == dW))
750+@Callable(aD)
751+func setManager (el) = {
752+ let dN = aC(aD)
753+ if ((dN == dN))
789754 then {
790- let ew = fromBase58String(ev)
791- if ((ew == ew))
792- then [StringEntry(ag(), ev)]
755+ let em = fromBase58String(el)
756+ if ((em == em))
757+ then [StringEntry(ad(), el)]
793758 else throw("Strict value is not equal to itself.")
794759 }
795760 else throw("Strict value is not equal to itself.")
797762
798763
799764
800-@Callable(aH)
765+@Callable(aD)
801766 func confirmManager () = {
802- let ex = aF()
803- let ey = if (isDefined(ex))
767+ let en = aB()
768+ let eo = if (isDefined(en))
804769 then true
805770 else throw("No pending manager")
806- if ((ey == ey))
771+ if ((eo == eo))
807772 then {
808- let ez = if ((aH.callerPublicKey == value(ex)))
773+ let ep = if ((aD.callerPublicKey == value(en)))
809774 then true
810775 else throw("You are not pending manager")
811- if ((ez == ez))
812- then [StringEntry(af(), toBase58String(value(ex))), DeleteEntry(ag())]
776+ if ((ep == ep))
777+ then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
813778 else throw("Strict value is not equal to itself.")
814779 }
815780 else throw("Strict value is not equal to itself.")
816781 }
817782
818783
819-@Verifier(eA)
820-func eB () = {
821- let eC = {
822- let r = aD()
823- if ($isInstanceOf(r, "ByteVector"))
784+@Verifier(eq)
785+func er () = {
786+ let es = {
787+ let o = az()
788+ if ($isInstanceOf(o, "ByteVector"))
824789 then {
825- let aJ = r
826- aJ
790+ let aF = o
791+ aF
827792 }
828- else if ($isInstanceOf(r, "Unit"))
829- then eA.senderPublicKey
793+ else if ($isInstanceOf(o, "Unit"))
794+ then eq.senderPublicKey
830795 else throw("Match error")
831796 }
832- sigVerify(eA.bodyBytes, eA.proofs[0], eC)
797+ sigVerify(eq.bodyBytes, eq.proofs[0], es)
833798 }
834799
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
12-func e (f) = makeString(["boosting.ride:", f], " ")
12+func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1313
1414
15-func g (f) = throw(e(f))
15+func h (f,g) = valueOrElse(getInteger(f, g), 0)
1616
1717
18-func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
18+func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1919
2020
21-func k (i,j) = valueOrElse(getInteger(i, j), 0)
21+func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2222
2323
24-func l (i,j,m) = valueOrElse(getInteger(i, j), m)
24+func l (m) = if ((0 > m))
25+ then -(m)
26+ else m
2527
2628
27-func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
28-
29-
30-func o (p) = if ((0 > p))
31- then -(p)
32- else p
33-
34-
35-func q (p) = {
36- let r = p
37- if ($isInstanceOf(r, "List[Any]"))
29+func n (m) = {
30+ let o = m
31+ if ($isInstanceOf(o, "List[Any]"))
3832 then {
39- let s = r
40- s
33+ let p = o
34+ p
4135 }
4236 else throw("fail to cast into List[Any]")
4337 }
4438
4539
46-func t (p) = {
47- let r = p
48- if ($isInstanceOf(r, "Int"))
40+func q (m) = {
41+ let o = m
42+ if ($isInstanceOf(o, "Int"))
4943 then {
50- let u = r
51- u
44+ let r = o
45+ r
5246 }
5347 else throw("fail to cast into Int")
5448 }
5549
5650
57-func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
51+func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5852
5953
60-let w = addressFromStringValue(h(this, v()))
54+let t = addressFromStringValue(e(this, s()))
6155
62-let x = makeString(["%s%s", "referral", "programName"], a)
56+let u = makeString(["%s%s", "referral", "programName"], a)
6357
64-let y = "wxlock"
58+let v = "wxlock"
6559
66-let z = valueOrElse(getString(this, x), y)
60+let w = valueOrElse(getString(this, u), v)
6761
68-func A () = "%s%s__config__factoryAddress"
62+func x () = "%s%s__config__factoryAddress"
6963
7064
71-let B = 1
65+let y = 1
7266
73-let C = 2
67+let z = 2
7468
75-let D = 3
69+let A = 3
7670
77-let E = 4
71+let B = 4
7872
79-let F = 5
73+let C = 5
8074
81-let G = 6
75+let D = 6
8276
83-let H = 7
77+let E = 7
8478
85-let I = 8
79+let F = 8
8680
87-let J = 9
81+let G = 9
8882
89-let K = 10
83+let H = 10
9084
91-let L = 11
85+let I = 11
9286
93-func M () = "%s__factoryConfig"
87+func J () = "%s__factoryConfig"
9488
9589
96-func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
90+func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9791
9892
99-func P () = "%s__lpTokensList"
93+func M () = "%s__lpTokensList"
10094
10195
102-func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
96+func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
10397
10498
105-func R (S) = makeString(["%s%s", "poolWeight", S], a)
99+func O (P) = makeString(["%s%s", "poolWeight", P], a)
106100
107101
108-func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
102+func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
109103
110104
111-func W () = addressFromStringValue(h(this, A()))
105+func T () = addressFromStringValue(e(this, x()))
112106
113107
114-func X () = split(valueOrElse(getString(W(), P()), ""), a)
108+func U () = split(valueOrElse(getString(T(), M()), ""), a)
115109
116110
117-func Y (Z) = split(h(Z, M()), a)
111+func V (W) = split(e(W, J()), a)
118112
119113
120-func aa (ab) = addressFromStringValue(ab[C])
114+func X (Y) = addressFromStringValue(Y[z])
121115
122116
123-func ac (ab) = addressFromStringValue(ab[F])
117+func Z (Y) = addressFromStringValue(Y[C])
124118
125119
126-func ad (ab) = addressFromStringValue(ab[B])
120+func aa (Y) = addressFromStringValue(Y[y])
127121
128122
129-func ae (ab) = addressFromStringValue(ab[K])
123+func ab (Y) = addressFromStringValue(Y[H])
130124
131125
132-func af () = "%s__managerPublicKey"
126+func ac () = "%s__managerPublicKey"
133127
134128
135-func ag () = "%s__pendingManagerPublicKey"
129+func ad () = "%s__pendingManagerPublicKey"
136130
137131
138-func ah () = "%s%s__ratePerBlock__current"
132+func ae () = "%s%s__ratePerBlock__current"
139133
140134
141-func ai () = "%s%s__ratePerBlockMax__current"
135+func af () = "%s%s__ratePerBlockMax__current"
142136
143137
144-func aj () = "%s%s__emission__startBlock"
138+func ag () = "%s%s__emission__startBlock"
145139
146140
147-func ak () = "%s%s__boostingV2__startBlock"
141+func ah () = "%s%s__emission__duration"
148142
149143
150-func al () = "%s%s__emission__duration"
144+func ai () = "%s%s__emission__endBlock"
151145
152146
153-func am () = "%s%s__emission__endBlock"
147+func aj () = "%s__nextPeriod"
154148
155149
156-func an () = "%s__nextPeriod"
150+func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
157151
158152
159-func ao () = "%s%s__gwxRewardEmissionPart__startHeight"
153+let al = 1
154+
155+let am = 2
156+
157+let an = 3
158+
159+let ao = 4
160+
161+let ap = 5
162+
163+func aq () = "%s__config"
160164
161165
162-let ap = 1
163-
164-let aq = 2
165-
166-let ar = 3
167-
168-let as = 4
169-
170-let at = 5
171-
172-func au () = "%s__config"
166+func ar () = split(e(this, aq()), a)
173167
174168
175-func av () = split(h(this, au()), a)
169+let as = addressFromStringValue(ar()[ap])
170+
171+func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
176172
177173
178-let aw = addressFromStringValue(av()[at])
179-
180-func ax (ay,az,aA,aB,aw) = makeString(["%s%d%d%d", ay, az, aA, aB, aw], a)
174+func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
181175
182176
183-func aC (ay,az,aA,aB,aw) = ax(ay, toString(az), toString(aA), toString(aB), aw)
184-
185-
186-func aD () = {
187- let r = getString(af())
188- if ($isInstanceOf(r, "String"))
177+func az () = {
178+ let o = getString(ac())
179+ if ($isInstanceOf(o, "String"))
189180 then {
190- let aE = r
191- fromBase58String(aE)
181+ let aA = o
182+ fromBase58String(aA)
192183 }
193- else if ($isInstanceOf(r, "Unit"))
184+ else if ($isInstanceOf(o, "Unit"))
194185 then unit
195186 else throw("Match error")
196187 }
197188
198189
199-func aF () = {
200- let r = getString(ag())
201- if ($isInstanceOf(r, "String"))
190+func aB () = {
191+ let o = getString(ad())
192+ if ($isInstanceOf(o, "String"))
202193 then {
203- let aE = r
204- fromBase58String(aE)
194+ let aA = o
195+ fromBase58String(aA)
205196 }
206- else if ($isInstanceOf(r, "Unit"))
197+ else if ($isInstanceOf(o, "Unit"))
207198 then unit
208199 else throw("Match error")
209200 }
210201
211202
212-func aG (aH) = {
213- let aI = throw("Permission denied")
214- let r = aD()
215- if ($isInstanceOf(r, "ByteVector"))
203+func aC (aD) = {
204+ let aE = throw("Permission denied")
205+ let o = az()
206+ if ($isInstanceOf(o, "ByteVector"))
216207 then {
217- let aJ = r
218- if ((aH.callerPublicKey == aJ))
208+ let aF = o
209+ if ((aD.callerPublicKey == aF))
219210 then true
220- else aI
211+ else aE
221212 }
222- else if ($isInstanceOf(r, "Unit"))
223- then if ((aH.caller == this))
213+ else if ($isInstanceOf(o, "Unit"))
214+ then if ((aD.caller == this))
224215 then true
225- else aI
216+ else aE
226217 else throw("Match error")
227218 }
228219
229220
230-let aK = 1
221+let aG = 1
231222
232-let aL = 2
223+let aH = 2
233224
234-let aM = 3
225+let aI = 3
235226
236-let aN = 4
227+let aJ = 4
237228
238-let aO = 5
229+let aK = 5
239230
240-let aP = 6
231+let aL = 6
241232
242-func aQ (aR) = makeString(["%s%s__lock", aR], a)
233+func aM (aN) = makeString(["%s%s__lock", aN], a)
243234
244235
245-func aS (aR) = split(h(this, aQ(aR)), a)
236+func aO (aN) = split(e(this, aM(aN)), a)
246237
247238
248-func aT (aU,aV,aW,aX,aY,aZ,ba,bb) = makeString(["%d%d%d%d%d%d%d%d", aU, aV, aW, aX, aY, aZ, ba, bb], a)
239+func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
249240
250241
251-func bc (aU,aV,aW,aX,aY,aZ,bb) = aT(aU, toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ), toString(lastBlock.timestamp), toString(bb))
242+func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
252243
253244
254-func bd () = "%s__nextUserNum"
245+func aZ () = "%s__nextUserNum"
255246
256247
257-func be (aR) = makeString(["%s%s%s__mapping__user2num", aR], a)
248+func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
258249
259250
260-func bf (V) = makeString(["%s%s%s__mapping__num2user", V], a)
251+func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
261252
262253
263-func bg (aU) = makeString(["%s%d%s__paramByUserNum", aU, "amount"], a)
254+func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
264255
265256
266-func bh (aU) = makeString(["%s%d%s__paramByUserNum", aU, "start"], a)
257+func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
267258
268259
269-func bi (aU) = makeString(["%s%d%s__paramByUserNum", aU, "duration"], a)
260+func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
270261
271262
272-func bj (aU) = makeString(["%s%d%s__paramByUserNum", aU, "k"], a)
263+func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
273264
274265
275-func bk (aU) = makeString(["%s%d%s__paramByUserNum", aU, "b"], a)
266+func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
276267
277268
278-func bl (aU,bm) = makeString(["%s%d%s%d__paramByPeriod", aU, "k", bm], a)
269+func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
279270
280271
281-func bn (aU,bm) = makeString(["%s%d%s%d__paramByPeriod", aU, "b", bm], a)
272+func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
282273
283274
284-func bo () = "%s%s__stats__activeTotalLocked"
275+func bk () = "%s%s__stats__activeTotalLocked"
285276
286277
287-func bp () = "%s%s__stats__locksDurationSumInBlocks"
278+func bl () = "%s%s__stats__locksDurationSumInBlocks"
288279
289280
290-func bq () = "%s%s__stats__locksCount"
281+func bm () = "%s%s__stats__locksCount"
291282
292283
293-func br () = "%s%s__stats__activeUsersCount"
284+func bn () = "%s%s__stats__activeUsersCount"
294285
295286
296-func bs (aU) = makeString(["%s%d__userBoostEmissionLastIntV2", aU], a)
287+func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
297288
298289
299-func bt (aU,bu) = makeString(["%s%d__userBoostEmissionLastIntV2", aU, bu], a)
290+func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
300291
301292
302-func bv (aU) = makeString(["%s%d__maxBoostInt", aU], a)
293+func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
303294
304295
305-func bw () = "%s%s__maxBoostInt__total"
296+func bs () = "%s%s__maxBoostInt__total"
306297
307298
308-func bx (aU) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aU], a)
299+func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
309300
310301
311-func by (aU) = makeString(["%s%d__userBoostClaimed", aU], a)
302+func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
312303
313304
314-func bz () = "%s%s__gwxCached__total"
305+func bv () = "%s%s__gwxCached__total"
315306
316307
317-func bA () = "%s__gwxCachedTotalCorrective"
308+func bw () = "%s__gwxCachedTotalCorrective"
318309
319310
320-let bB = W()
311+let bx = T()
321312
322-let ab = Y(bB)
313+let Y = V(bx)
323314
324-let bC = ac(ab)
315+let by = Z(Y)
325316
326-let bD = ad(ab)
317+let bz = aa(Y)
327318
328-let bE = ae(ab)
319+let bA = ab(Y)
329320
330-let bF = makeString(["%s", "votingEmissionContract"], a)
331-
332-let bG = addressFromStringValue(getStringValue(bB, bF))
333-
334-let bH = {
335- let bI = invoke(bC, "getBoostCoeffREADONLY", nil, nil)
336- if ($isInstanceOf(bI, "Int"))
337- then bI
338- else throw(($getType(bI) + " couldn't be cast to Int"))
339- }
340-
341-func bJ (bK) = {
342- let bL = makeString(["%s", "currentEpochUi"], a)
343- let bM = getIntegerValue(bG, bL)
344- let bN = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
345- let bO = getInteger(this, bN)
346- let bP = valueOrElse(getInteger(this, bz()), 0)
347- let bQ = if (isDefined(bO))
348- then (bM >= value(bO))
321+func bB (bC) = {
322+ let bD = makeString(["%s", "votingEmissionContract"], a)
323+ let bE = addressFromStringValue(getStringValue(bx, bD))
324+ let bF = makeString(["%s", "currentEpochUi"], a)
325+ let bG = getIntegerValue(bE, bF)
326+ let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327+ let bI = getInteger(this, bH)
328+ let bJ = valueOrElse(getInteger(this, bv()), 0)
329+ let bK = if (isDefined(bI))
330+ then (bG >= value(bI))
349331 else false
350- let bR = if (if (bQ)
351- then bK
332+ let bL = if (if (bK)
333+ then bC
352334 else false)
353- then valueOrElse(getInteger(this, bA()), 0)
335+ then valueOrElse(getInteger(this, bw()), 0)
354336 else 0
355- max([0, (bP + bR)])
337+ max([0, (bJ + bL)])
356338 }
357339
358340
359-func bS (bT,bU,aV,bV,aX,bW,bX,aH) = {
360- let bY = makeString(["%s%s%s%s__history", bT, bU, toBase58String(aH.transactionId)], a)
361- let bZ = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aV), toString(bV), toString(aX), toString(bW), toString(bX)], a)
362- StringEntry(bY, bZ)
341+func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342+ let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343+ let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344+ StringEntry(bS, bT)
363345 }
364346
365347
366-func ca (cb,cc,cd,ce) = {
367- let cf = bp()
368- let cg = bq()
369- let ch = br()
370- let ci = bo()
371- let cj = k(this, cf)
372- let ck = k(this, cg)
373- let cl = k(this, ch)
374- let cm = k(this, ci)
375-[IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + cd)), IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cb))]
348+func bU (bV,bW,bX,bY) = {
349+ let bZ = bl()
350+ let ca = bm()
351+ let cb = bn()
352+ let cc = bk()
353+ let cd = h(this, bZ)
354+ let ce = h(this, ca)
355+ let cf = h(this, cb)
356+ let cg = h(this, cc)
357+[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
376358 }
377359
378360
379-func cn (co,cp,cq) = {
380- let cr = 1000
381- (((co * cq) + cp) / cr)
361+func ch (ci,cj,ck) = {
362+ let cl = 1000
363+ (((ci * ck) + cj) / cl)
382364 }
383365
384366
385-func cs (aR,aU,aV,aW,aX,bW,bX,bm) = {
386- let ct = bg(aU)
387- let cu = bh(aU)
388- let cv = bi(aU)
389- let cw = bj(aU)
390- let cx = bk(aU)
391- let cy = bl(aU, bm)
392- let cz = bn(aU, bm)
393- let bb = cn(bW, bX, height)
394-[IntegerEntry(ct, aV), IntegerEntry(cu, aW), IntegerEntry(cv, aX), IntegerEntry(cw, bW), IntegerEntry(cx, bX), IntegerEntry(cy, bW), IntegerEntry(cz, bX), StringEntry(aQ(aR), bc(aU, aV, aW, aX, bW, bX, bb))]
367+func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368+ let cn = bc(aQ)
369+ let co = bd(aQ)
370+ let cp = be(aQ)
371+ let cq = bf(aQ)
372+ let cr = bg(aQ)
373+ let cs = bh(aQ, bi)
374+ let ct = bj(aQ, bi)
375+ let aX = ch(bQ, bR, height)
376+[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
395377 }
396378
397379
398-func cA (aH,cB) = if ((size(aH.payments) > 1))
380+func cu (aD,cv) = if ((size(aD.payments) > 1))
399381 then throw("only one payment is allowed")
400- else if ((size(aH.payments) == 0))
382+ else if ((size(aD.payments) == 0))
401383 then 0
402384 else {
403- let cC = aH.payments[0]
404- if ((value(cC.assetId) != cB))
385+ let cw = aD.payments[0]
386+ if ((value(cw.assetId) != cv))
405387 then throw("invalid asset id in payment")
406- else cC.amount
388+ else cw.amount
407389 }
408390
409391
410-func cD (aR,cE) = {
411- let cF = "empty"
412- let cG = be(aR)
413- let aU = valueOrElse(getString(cG), cF)
414- let bW = valueOrElse(getInteger(bj(aU)), 0)
415- let bX = valueOrElse(getInteger(bk(aU)), 0)
416- let cH = cn(bW, bX, cE)
417- let bb = if ((0 > cH))
392+func cx (aN,cy) = {
393+ let cz = "empty"
394+ let cA = ba(aN)
395+ let aQ = valueOrElse(getString(cA), cz)
396+ let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397+ let bR = valueOrElse(getInteger(bg(aQ)), 0)
398+ let cB = ch(bQ, bR, cy)
399+ let aX = if ((0 > cB))
418400 then 0
419- else cH
420- bb
401+ else cB
402+ aX
421403 }
422404
423405
424-func cI (aR) = cD(aR, height)
406+func cC (aN) = cx(aN, height)
425407
426408
427-func cJ (cK,cL) = {
428- let aR = addressFromStringValue(cL)
429- let cM = 4
430- let cN = 5
431- let cO = {
432- let bI = invoke(bB, "getPoolConfigByLpAssetId", [cK], nil)
433- if ($isInstanceOf(bI, "List[Any]"))
434- then bI
435- else throw(($getType(bI) + " couldn't be cast to List[Any]"))
436- }
437- let cP = {
438- let bI = cO[cM]
439- if ($isInstanceOf(bI, "String"))
440- then bI
441- else throw(($getType(bI) + " couldn't be cast to String"))
442- }
443- let cQ = {
444- let bI = cO[cN]
445- if ($isInstanceOf(bI, "String"))
446- then bI
447- else throw(($getType(bI) + " couldn't be cast to String"))
448- }
449- let cR = makeString(["%s", "currentEpoch"], a)
450- let cS = {
451- let cT = (value(getInteger(bG, cR)) - 1)
452- if ((0 > cT))
453- then g("invalid epoch")
454- else cT
455- }
456- func cU (cV,i,cT) = makeString(["%s%s%s%s%d", "vote", cP, cQ, toString(i), toString(cT)], a)
457-
458- func cW (cV,cT) = makeString(["%s%s%s%d", "votingResult", cP, cQ, toString(cT)], a)
459-
460- let cV = $Tuple2(cP, cQ)
461- let cX = valueOrElse(getInteger(bG, cU(cV, aR, cS)), 0)
462- let cY = valueOrElse(getInteger(bG, cW(cV, cS)), 0)
463- $Tuple2(cX, cY)
464- }
465-
466-
467-func cZ (cK,cL,da) = {
468- let cF = "EMPTY"
469- let db = valueOrElse(getString(this, aQ(cL)), cF)
470- if ((db == cF))
409+func cD (cE,cF,cG) = {
410+ let cz = "EMPTY"
411+ let cH = valueOrElse(getString(this, aM(cF)), cz)
412+ if ((cH == cz))
471413 then $Tuple3(0, nil, "userRecord::is::empty")
472414 else {
473- let dc = split(db, a)
474- let dd = dc[aK]
475- let de = "empty"
476- let df = if ((cK != de))
415+ let cI = split(cH, a)
416+ let cJ = cI[aG]
417+ let cK = valueOrElse(getInteger(bA, ak()), 0)
418+ let cL = "empty"
419+ let cM = if ((cE != cL))
477420 then {
478- let dg = valueOrErrorMessage(getString(bB, N(cK)), ("unsupported lp asset " + cK))
479- getIntegerValue(bB, R(dg))
421+ let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422+ let cO = getIntegerValue(bx, O(cN))
423+ let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424+ $Tuple2(cP, cO)
480425 }
481- else if (da)
482- then 0
483- else throw(("not readonly mode: unsupported lp asset " + cK))
484- let dh = n(bC, ah())
485- let di = n(bC, ak())
486- let dj = n(bC, am())
487- let cq = if ((height > dj))
488- then dj
426+ else if (cG)
427+ then $Tuple2(0, 0)
428+ else throw(("not readonly mode: unsupported lp asset " + cE))
429+ let cQ = cM._1
430+ let cR = cM._2
431+ let cS = k(by, ae())
432+ let cT = k(by, ag())
433+ let cU = k(by, ai())
434+ let ck = if ((height > cU))
435+ then cU
489436 else height
490- let dk = max([(cq - di), 0])
491- let dl = bt(dd, cK)
492- let dm = bs(dd)
493- let dn = valueOrElse(getInteger(this, dl), k(this, dm))
494- let do = (((dh * dk) * (bH - 1)) / bH)
495- let dp = (do - dn)
496- let dq = fraction(dp, bH, ((bH - 1) * dh))
497- let dr = (cq - dq)
498- if ((0 > dp))
499- then throw("wrong calculations")
500- else {
501- let ds = bv(dd)
502- let dt = bw()
503- let du = k(this, ds)
504- let dv = k(this, dt)
505- let dw = cJ(cK, cL)
506- let cX = dw._1
507- let dx = dw._2
508- let dy = bx(dd)
509- let dz = k(this, dy)
510- let dA = fraction(dp, df, d)
511- let dB = if ((dx == 0))
512- then 0
513- else fraction(dA, cX, dx)
514- let dC = by(dd)
515- let dD = k(this, dC)
516- let dE = (dB - dD)
517- let dF = [IntegerEntry(dl, do)]
518- let dG = makeString([toString(dn), toString(dp), toString(dD), toString(dE), toString(df), toString(cq), toString(dq), toString(dr), toString(cX), toString(dx)], ":")
519- $Tuple3(dB, dF, dG)
520- }
437+ let cV = max([(ck - cT), 0])
438+ let cW = bp(cJ, cE)
439+ let cX = bo(cJ)
440+ let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441+ let cZ = (((cS * cV) * 2) / 3)
442+ let da = (cZ - cY)
443+ let db = fraction(da, 3, (2 * cS))
444+ let dc = (ck - db)
445+ let dd = max([(cK - dc), 0])
446+ let de = ((ck - dc) - dd)
447+ if (if (if ((0 > dc))
448+ then true
449+ else (0 > de))
450+ then true
451+ else (l(((dd + de) - db)) >= 1))
452+ then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453+ else if ((0 > da))
454+ then throw("wrong calculations")
455+ else {
456+ let df = br(cJ)
457+ let dg = bs()
458+ let dh = h(this, df)
459+ let di = h(this, dg)
460+ let dj = bB(true)
461+ let dk = cC(cF)
462+ let dl = bt(cJ)
463+ let dm = h(this, dl)
464+ let dn = if ((db == 0))
465+ then 0
466+ else fraction(da, dd, db)
467+ let do = if ((db == 0))
468+ then 0
469+ else fraction(da, de, db)
470+ let dp = fraction(dn, cQ, d)
471+ let dq = fraction(do, cR, d)
472+ let dr = if ((dj == 0))
473+ then 0
474+ else fraction(dp, dk, dj)
475+ let ds = if ((dj == 0))
476+ then 0
477+ else fraction(dq, dk, dj)
478+ let dt = (dr + ds)
479+ let du = bu(cJ)
480+ let dv = h(this, du)
481+ let dw = (dt - dv)
482+ let dx = [IntegerEntry(cW, cZ)]
483+ let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":")
484+ $Tuple3(dt, dx, dy)
485+ }
521486 }
522487 }
523488
524489
525-func dH (aH,aX) = {
526- let dI = av()
527- let dJ = dI[ap]
528- let ay = fromBase58String(dJ)
529- let az = parseIntValue(dI[aq])
530- let aA = parseIntValue(dI[ar])
531- let aB = parseIntValue(dI[as])
532- if ((size(aH.payments) != 1))
490+func dz (aD,aT) = {
491+ let dA = ar()
492+ let dB = dA[al]
493+ let au = fromBase58String(dB)
494+ let av = parseIntValue(dA[am])
495+ let aw = parseIntValue(dA[an])
496+ let ax = parseIntValue(dA[ao])
497+ if ((size(aD.payments) != 1))
533498 then throw("invalid payment - exact one payment must be attached")
534499 else {
535- let cC = aH.payments[0]
536- let dK = cC.amount
537- if ((ay != value(cC.assetId)))
538- then throw((("invalid asset is in payment - " + dJ) + " is expected"))
500+ let cw = aD.payments[0]
501+ let dC = cw.amount
502+ if ((au != value(cw.assetId)))
503+ then throw((("invalid asset is in payment - " + dB) + " is expected"))
539504 else {
540- let dL = bd()
541- let cL = toString(aH.caller)
542- let dM = isDefined(getString(be(cL)))
543- let dd = if (dM)
544- then value(getString(be(cL)))
545- else toString(n(this, dL))
546- let aU = parseIntValue(dd)
547- let bV = height
548- let cu = bh(dd)
549- let cv = bi(dd)
550- let ct = bg(dd)
551- if ((az > dK))
552- then throw(("amount is less then minLockAmount=" + toString(az)))
553- else if ((aA > aX))
554- then throw(("passed duration is less then minLockDuration=" + toString(aA)))
555- else if ((aX > aB))
556- then throw(("passed duration is greater then maxLockDuration=" + toString(aB)))
557- else if (if (dM)
558- then ((n(this, cu) + n(this, cv)) >= bV)
505+ let dD = aZ()
506+ let cF = toString(aD.caller)
507+ let dE = isDefined(getString(ba(cF)))
508+ let cJ = if (dE)
509+ then value(getString(ba(cF)))
510+ else toString(k(this, dD))
511+ let aQ = parseIntValue(cJ)
512+ let bP = height
513+ let co = bd(cJ)
514+ let cp = be(cJ)
515+ let cn = bc(cJ)
516+ if ((av > dC))
517+ then throw(("amount is less then minLockAmount=" + toString(av)))
518+ else if ((aw > aT))
519+ then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520+ else if ((aT > ax))
521+ then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522+ else if (if (dE)
523+ then ((k(this, co) + k(this, cp)) >= bP)
559524 else false)
560525 then throw("there is an active lock - consider to use increaseLock")
561- else if ((k(this, ct) > 0))
562- then throw(("there are locked WXs - consider to use increaseLock " + ct))
526+ else if ((h(this, cn) > 0))
527+ then throw(("there are locked WXs - consider to use increaseLock " + cn))
563528 else {
564- let dN = fraction(aX, c, aB)
565- let dO = fraction(dK, dN, c)
566- let dP = q(invoke(aw, "calcGwxParamsREADONLY", [dO, bV, aX], nil))
567- let bW = t(dP[0])
568- let bX = t(dP[1])
569- let bm = toString(t(dP[2]))
570- let dh = n(bC, ah())
571- let dQ = n(bC, aj())
572- let dj = n(bC, am())
573- let cq = if ((height > dj))
574- then dj
529+ let dF = fraction(aT, c, ax)
530+ let dG = fraction(dC, dF, c)
531+ let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532+ let bQ = q(dH[0])
533+ let bR = q(dH[1])
534+ let bi = toString(q(dH[2]))
535+ let cS = k(by, ae())
536+ let cT = k(by, ag())
537+ let cU = k(by, ai())
538+ let ck = if ((height > cU))
539+ then cU
575540 else height
576- let dk = max([(cq - dQ), 0])
577- let dm = bs(dd)
578- let do = (((dh * dk) * 2) / 3)
579- let ds = bv(dd)
580- let dt = bw()
581- let du = ((dO * aX) / 2)
582- let dv = k(this, dt)
583- let bP = bJ(false)
584- let dR = if (dM)
541+ let cV = max([(ck - cT), 0])
542+ let cX = bo(cJ)
543+ let cZ = (((cS * cV) * 2) / 3)
544+ let df = br(cJ)
545+ let dg = bs()
546+ let dh = ((dG * aT) / 2)
547+ let di = h(this, dg)
548+ let bJ = bB(false)
549+ let dI = if (dE)
585550 then nil
586- else [IntegerEntry(dL, (aU + 1)), StringEntry(be(cL), dd), StringEntry(bf(dd), cL)]
587- $Tuple2(((((dR ++ cs(cL, dd, dK, bV, aX, bW, bX, bm)) ++ ca(dK, aX, 1, if (dM)
551+ else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552+ $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
588553 then 0
589- else 1)) :+ bS("lock", cL, dK, bV, aX, bW, bX, aH)) ++ [IntegerEntry(dm, do), IntegerEntry(bz(), (bP + dO))]), dO)
554+ else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
590555 }
591556 }
592557 }
593558 }
594559
595560
596-@Callable(aH)
597-func constructor (dS,dT,az,dU,dV,aw) = {
598- let dW = aG(aH)
599- if ((dW == dW))
600- then ([IntegerEntry(bd(), 0), StringEntry(au(), aC(dT, az, dU, dV, aw)), StringEntry(A(), dS)] ++ ca(0, 0, 0, 0))
561+@Callable(aD)
562+func constructor (dJ,dK,av,dL,dM,as) = {
563+ let dN = aC(aD)
564+ if ((dN == dN))
565+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
601566 else throw("Strict value is not equal to itself.")
602567 }
603568
604569
605570
606-@Callable(aH)
607-func lockRef (aX,dX,dY) = {
608- let dZ = dH(aH, aX)
609- let ea = dZ._1
610- let dO = dZ._2
611- let eb = toString(aH.caller)
612- let ec = if (if ((dX == ""))
571+@Callable(aD)
572+func lockRef (aT,dO,dP) = {
573+ let dQ = dz(aD, aT)
574+ let dR = dQ._1
575+ let dG = dQ._2
576+ let dS = toString(aD.caller)
577+ let dT = if (if ((dO == ""))
613578 then true
614- else (dY == base58''))
579+ else (dP == base58''))
615580 then unit
616- else invoke(w, "createPair", [z, dX, eb, dY], nil)
617- if ((ec == ec))
581+ else invoke(t, "createPair", [w, dO, dS, dP], nil)
582+ if ((dT == dT))
618583 then {
619- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
620- if ((ed == ed))
621- then $Tuple2(ea, unit)
584+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585+ if ((dU == dU))
586+ then $Tuple2(dR, unit)
622587 else throw("Strict value is not equal to itself.")
623588 }
624589 else throw("Strict value is not equal to itself.")
625590 }
626591
627592
628593
629-@Callable(aH)
630-func lock (aX) = {
631- let ee = dH(aH, aX)
632- let ea = ee._1
633- let dO = ee._2
634- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
635- if ((ed == ed))
636- then $Tuple2(ea, unit)
594+@Callable(aD)
595+func lock (aT) = {
596+ let dV = dz(aD, aT)
597+ let dR = dV._1
598+ let dG = dV._2
599+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600+ if ((dU == dU))
601+ then $Tuple2(dR, unit)
637602 else throw("Strict value is not equal to itself.")
638603 }
639604
640605
641606
642-@Callable(aH)
643-func increaseLock (ef) = {
644- let dI = av()
645- let dJ = dI[ap]
646- let ay = fromBase58String(dJ)
647- let aA = parseIntValue(dI[ar])
648- let aB = parseIntValue(dI[as])
649- let dK = cA(aH, ay)
650- let cL = toString(aH.caller)
651- let dc = aS(cL)
652- let dd = dc[aK]
653- let eg = parseIntValue(dc[aL])
654- let bV = parseIntValue(dc[aM])
655- let eh = parseIntValue(dc[aN])
656- let ei = (bV + eh)
657- let ej = max([(ei - height), 0])
658- let ek = (eg + dK)
659- let el = (ej + ef)
660- if ((0 > ef))
607+@Callable(aD)
608+func increaseLock (dW) = {
609+ let dA = ar()
610+ let dB = dA[al]
611+ let au = fromBase58String(dB)
612+ let aw = parseIntValue(dA[an])
613+ let ax = parseIntValue(dA[ao])
614+ let dC = cu(aD, au)
615+ let cF = toString(aD.caller)
616+ let cI = aO(cF)
617+ let cJ = cI[aG]
618+ let dX = parseIntValue(cI[aH])
619+ let bP = parseIntValue(cI[aI])
620+ let dY = parseIntValue(cI[aJ])
621+ let dZ = (bP + dY)
622+ let ea = max([(dZ - height), 0])
623+ let eb = (dX + dC)
624+ let ec = (ea + dW)
625+ if ((0 > dW))
661626 then throw("duration is less then zero")
662- else if ((aA > el))
663- then throw(("lockDurationNew is less then minLockDuration=" + toString(aA)))
664- else if ((el > aB))
665- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aB)))
627+ else if ((aw > ec))
628+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629+ else if ((ec > ax))
630+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
666631 else {
667- let dN = fraction(el, c, aB)
668- let dO = fraction(ek, dN, c)
669- let ed = invoke(aw, "updateReferralActivity", [toString(aH.caller), dO], nil)
670- if ((ed == ed))
632+ let dF = fraction(ec, c, ax)
633+ let dG = fraction(eb, dF, c)
634+ let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635+ if ((dU == dU))
671636 then {
672- let em = height
673- let dP = q(invoke(aw, "calcGwxParamsREADONLY", [dO, em, el], nil))
674- let bW = t(dP[0])
675- let bX = t(dP[1])
676- let bm = toString(t(dP[2]))
677- let dh = n(bC, ah())
678- let dQ = n(bC, aj())
679- let dj = n(bC, am())
680- let cq = if ((height > dj))
681- then dj
637+ let ed = height
638+ let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639+ let bQ = q(dH[0])
640+ let bR = q(dH[1])
641+ let bi = toString(q(dH[2]))
642+ let cS = k(by, ae())
643+ let cT = k(by, ag())
644+ let cU = k(by, ai())
645+ let ck = if ((height > cU))
646+ then cU
682647 else height
683- let dk = max([(cq - dQ), 0])
684- let dm = bs(dd)
685- let dn = k(this, dm)
686- let do = (((dh * dk) * 2) / 3)
687- let dp = (do - dn)
688- if ((0 > dp))
648+ let cV = max([(ck - cT), 0])
649+ let cX = bo(cJ)
650+ let cY = h(this, cX)
651+ let cZ = (((cS * cV) * 2) / 3)
652+ let da = (cZ - cY)
653+ if ((0 > da))
689654 then throw("wrong calculations")
690655 else {
691- let ds = bv(dd)
692- let dt = bw()
693- let du = k(this, ds)
694- let dv = k(this, dt)
695- let en = cI(cL)
696- let eo = (dO - en)
697- if ((0 > eo))
698- then throw(("gwxDiff is less then 0: " + toString(eo)))
656+ let df = br(cJ)
657+ let dg = bs()
658+ let dh = h(this, df)
659+ let di = h(this, dg)
660+ let ee = cC(cF)
661+ let ef = (dG - ee)
662+ if ((0 > ef))
663+ then throw(("gwxDiff is less then 0: " + toString(ef)))
699664 else {
700- let bP = bJ(false)
701- let ep = bJ(true)
702- let dy = bx(dd)
703- let dz = k(this, dy)
704- let dB = fraction(dp, en, ep)
705- let eq = ((dO * el) / 2)
706- let er = ((en * ej) / 2)
707- let es = (eq - er)
708- (((cs(cL, dd, ek, em, el, bW, bX, bm) ++ ca(dK, ef, 0, 0)) :+ bS("lock", cL, dK, bV, el, bW, bX, aH)) ++ [IntegerEntry(bz(), (bP + eo))])
665+ let bJ = bB(false)
666+ let dj = bB(true)
667+ let dl = bt(cJ)
668+ let dm = h(this, dl)
669+ let dt = fraction(da, ee, dj)
670+ let eg = ((dG * ec) / 2)
671+ let eh = ((ee * ea) / 2)
672+ let ei = (eg - eh)
673+ (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
709674 }
710675 }
711676 }
712677 else throw("Strict value is not equal to itself.")
713678 }
714679 }
715680
716681
717682
718-@Callable(aH)
719-func claimWxBoost (cK,cL) = if ((bD != aH.caller))
683+@Callable(aD)
684+func claimWxBoost (cE,cF) = if ((bz != aD.caller))
720685 then throw("permissions denied")
721686 else {
722- let et = cZ(cK, cL, false)
723- let dE = et._1
724- let dF = et._2
725- let dG = et._3
726- $Tuple2(dF, [dE])
687+ let ej = cD(cE, cF, false)
688+ let dw = ej._1
689+ let dx = ej._2
690+ let dy = ej._3
691+ $Tuple2(dx, [dw])
727692 }
728693
729694
730695
731-@Callable(aH)
732-func claimWxBoostREADONLY (cK,cL) = {
733- let eu = cZ(cK, cL, true)
734- let dE = eu._1
735- let dF = eu._2
736- let dG = eu._3
737- $Tuple2(nil, [dE, dG])
696+@Callable(aD)
697+func claimWxBoostREADONLY (cE,cF) = {
698+ let ek = cD(cE, cF, true)
699+ let dw = ek._1
700+ let dx = ek._2
701+ let dy = ek._3
702+ $Tuple2(nil, [dw, dy])
738703 }
739704
740705
741706
742-@Callable(aH)
743-func unlock (aR) = {
744- let dc = aS(aR)
745- let dd = dc[aK]
746- let eg = parseIntValue(dc[aL])
747- let bV = parseIntValue(dc[aM])
748- let eh = parseIntValue(dc[aN])
749- let ei = (bV + eh)
750- let dI = av()
751- let ay = fromBase58String(dI[ap])
752- if ((ei >= height))
753- then throw((("wait " + toString(ei)) + " to unlock"))
754- else if ((0 >= eg))
707+@Callable(aD)
708+func unlock (aN) = {
709+ let cI = aO(aN)
710+ let cJ = cI[aG]
711+ let dX = parseIntValue(cI[aH])
712+ let bP = parseIntValue(cI[aI])
713+ let dY = parseIntValue(cI[aJ])
714+ let dZ = (bP + dY)
715+ let dA = ar()
716+ let au = fromBase58String(dA[al])
717+ if ((dZ >= height))
718+ then throw((("wait " + toString(dZ)) + " to unlock"))
719+ else if ((0 >= dX))
755720 then throw("nothing to unlock")
756721 else {
757- let bm = valueOrElse(getInteger(aw, an()), 0)
758- (((cs(aR, dd, 0, bV, eh, 0, 0, toString(bm)) ++ ca(-(eg), 0, 0, -1)) :+ bS("unlock", aR, eg, bV, eh, 0, 0, aH)) :+ ScriptTransfer(addressFromStringValue(aR), eg, ay))
722+ let bi = valueOrElse(getInteger(as, aj()), 0)
723+ (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
759724 }
760725 }
761726
762727
763728
764-@Callable(aH)
765-func gwxUserInfoREADONLY (aR) = {
766- let bb = cI(aR)
767- $Tuple2(nil, [bb])
729+@Callable(aD)
730+func gwxUserInfoREADONLY (aN) = {
731+ let aX = cC(aN)
732+ $Tuple2(nil, [aX])
768733 }
769734
770735
771736
772-@Callable(aH)
773-func getUserGwxAmountAtHeightREADONLY (aR,cE) = {
774- let bb = cD(aR, cE)
775- $Tuple2(nil, bb)
737+@Callable(aD)
738+func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739+ let aX = cx(aN, cy)
740+ $Tuple2(nil, aX)
776741 }
777742
778743
779744
780-@Callable(aH)
781-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bJ(true))
745+@Callable(aD)
746+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
782747
783748
784749
785-@Callable(aH)
786-func setManager (ev) = {
787- let dW = aG(aH)
788- if ((dW == dW))
750+@Callable(aD)
751+func setManager (el) = {
752+ let dN = aC(aD)
753+ if ((dN == dN))
789754 then {
790- let ew = fromBase58String(ev)
791- if ((ew == ew))
792- then [StringEntry(ag(), ev)]
755+ let em = fromBase58String(el)
756+ if ((em == em))
757+ then [StringEntry(ad(), el)]
793758 else throw("Strict value is not equal to itself.")
794759 }
795760 else throw("Strict value is not equal to itself.")
796761 }
797762
798763
799764
800-@Callable(aH)
765+@Callable(aD)
801766 func confirmManager () = {
802- let ex = aF()
803- let ey = if (isDefined(ex))
767+ let en = aB()
768+ let eo = if (isDefined(en))
804769 then true
805770 else throw("No pending manager")
806- if ((ey == ey))
771+ if ((eo == eo))
807772 then {
808- let ez = if ((aH.callerPublicKey == value(ex)))
773+ let ep = if ((aD.callerPublicKey == value(en)))
809774 then true
810775 else throw("You are not pending manager")
811- if ((ez == ez))
812- then [StringEntry(af(), toBase58String(value(ex))), DeleteEntry(ag())]
776+ if ((ep == ep))
777+ then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
813778 else throw("Strict value is not equal to itself.")
814779 }
815780 else throw("Strict value is not equal to itself.")
816781 }
817782
818783
819-@Verifier(eA)
820-func eB () = {
821- let eC = {
822- let r = aD()
823- if ($isInstanceOf(r, "ByteVector"))
784+@Verifier(eq)
785+func er () = {
786+ let es = {
787+ let o = az()
788+ if ($isInstanceOf(o, "ByteVector"))
824789 then {
825- let aJ = r
826- aJ
790+ let aF = o
791+ aF
827792 }
828- else if ($isInstanceOf(r, "Unit"))
829- then eA.senderPublicKey
793+ else if ($isInstanceOf(o, "Unit"))
794+ then eq.senderPublicKey
830795 else throw("Match error")
831796 }
832- sigVerify(eA.bodyBytes, eA.proofs[0], eC)
797+ sigVerify(eq.bodyBytes, eq.proofs[0], es)
833798 }
834799

github/deemru/w8io/169f3d6 
340.88 ms