tx · 2927fdxeRkwHc8UuDZ7L7eycjotnwaJbTBtKKB35PQaM

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02300000 Waves

2023.03.14 18:54 [2489925] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "2927fdxeRkwHc8UuDZ7L7eycjotnwaJbTBtKKB35PQaM", "fee": 2300000, "feeAssetId": null, "timestamp": 1678809264858, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "5HBabPmDjcqyho6uwLM1Vh3YQrYrCt6tUfn6K5T8CEm4ZWY1hRo1KJZKrcKi3d1rRBwobu7TpRBzWiXaJQdpBK6c" ], "script": "base64:BgKrIAgCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIGCgQCAQICEgMKAQgSAwoBCBIFCgMICAQSBgoEARgIGBIECgIYCBIECgIICBIECgIICBIDCgEIEgQKAggIIgZTQ0FMRTgiBU1VTFQzIgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4IgNTRVAiDlBPT0xXRUlHSFRNVUxUIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiCWFzQW55TGlzdCIDdmFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgVhc0ludCIGdmFsSW50Ighhc1N0cmluZyIGdmFsU3RyIgxhc0J5dGVWZWN0b3IiBnZhbEJpbiIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbCIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybyIcZ2V0QmlnSW50RnJvbVN0cmluZ09yRGVmYXVsdCIBcyIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiD3Jlc3VsdFNjYWxlTXVsdCIRa2V5RmFjdG9yeUFkZHJlc3MiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIg1rZXlGYWN0b3J5Q2ZnIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWa2V5U3RhYmxlUG9vbEFkZG9uQWRkciIMa2V5QWRkb25BZGRyIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiCnJlYWRMcExpc3QiB2ZhY3RvcnkiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIMbHBBc3NldElkU3RyIg5rZXlTdGFrZWRUb3RhbCIQa2V5Q2xhaW1lZEJ5VXNlciIZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZCIba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIg9rZXlDbGFpbWVkVG90YWwiCnJlYWRTdGFrZWQiFWtleUxhc3RUb3RhbExwQmFsYW5jZSIJbHBBc3NldElkIhRrZXlMYXN0VXNlckxwQmFsYW5jZSILdXNlckFkZHJlc3MiGWtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWwiGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbCIma2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiJWtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEmtleVd4UGVyTHBJbnRlZ3JhbCIfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIQa2V5V3hUb0NsYWltVXNlciIja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQiCmtleVd4UGVyTHAiDWtleVd4UGVyTHBYMTgiGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiBmFtb3VudCIVT3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIg5mYWN0b3J5QWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0Igpib29zdENvZWZmIgFAIhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IgtrZXlOZXh0VXNlciIQZ2V0VXNlcnNMaXN0TmFtZSILa2V5TGlzdEhlYWQiCGxpc3ROYW1lIgtrZXlMaXN0U2l6ZSILa2V5TGlzdFByZXYiAmlkIgtrZXlMaXN0TmV4dCIMY29udGFpbnNOb2RlIgpoZWFkT3JVbml0IgpwcmV2T3JVbml0IgpuZXh0T3JVbml0IhFpbnNlcnROb2RlQWN0aW9ucyIIbGlzdFNpemUiCWNoZWNrTm9kZSIRZGVsZXRlTm9kZUFjdGlvbnMiG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIMc3Rha2VkQnlVc2VyIiZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybyISd3hQZXJMcEludGVncmFsTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWSIUcmVmcmVzaFBvb2xJTlRFR1JBTFMiDnBvb2xBZGRyZXNzU3RyIg1scERlbHRhQW1vdW50Ig5zdGFrZWRUb3RhbEtFWSILc3Rha2VkVG90YWwiEm5vblplcm9TdGFrZWRUb3RhbCIKcG9vbFdlaWdodCISZW1pc3Npb25TdGFydEJsb2NrIhR3eEVtaXNzaW9uUGVyQmxvY2tYMyIYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzIhJ3eFBlckxwSW50ZWdyYWxLRVkiH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkiCnd4UGVyTHBLRVkiHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQiD3d4UGVyTHBJbnRlZ3JhbCIPd3hQZXJMcE9yWmVyb1gzIgJkaCIJd3hQZXJMcFgzIg5zdGFrZWRUb3RhbE5ldyIVbm9uWmVyb1N0YWtlZFRvdGFsTmV3Igx3eFBlckxwWDNOZXciH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXciBWRlYnVnIhByZWZyZXNoSU5URUdSQUxTIg0kdDAxNDc2MjE0ODg0IhFwb29sSW50ZWdyYWxTVEFURSIJcG9vbERFQlVHIg9zdGFrZWRCeVVzZXJLRVkiEHd4VG9DbGFpbVVzZXJLRVkiI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZIg13eFRvQ2xhaW1Vc2VyIhd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdCIGTVVMVDExIhB3eFRvQ2xhaW1Vc2VyTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldyIjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IhVwZXJtaXNzaW9uRGVuaWVkRXJyb3IiCG11c3RUaGlzIgFpIgttdXN0TWFuYWdlciICcGsiDnVuc3Rha2VBY3Rpb25zIgtwb29sQWRkcmVzcyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDWludGVncmFsU1RBVEUiC2xpc3RBY3Rpb25zIhFyZWZyZXNoU3Rha2VkVm90ZSIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIQYXZhaWxhYmxlVG9DbGFpbSIVdGhyb3dJZk5vdGhpbmdUb0NsYWltIgFyIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJY2FsbGVyU3RyIg0kdDAyMTYwNjIxNzIzIglwb29sQWRkb24iBnJlc3VsdCIQY2xhaW1lZEJ5VXNlcktFWSIPY2xhaW1lZFRvdGFsS0VZIhljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZIhtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkiDWNsYWltZWRCeVVzZXIiGGNsYWltZWRCeVVzZXJCb29zdFJld2FyZCIMY2xhaW1lZFRvdGFsIg0kdDAyNTEwOTI1MjIxIhJ3eEFtb3VudEJvb3N0VG90YWwiDW1pblJld2FyZFBhcnQiD2Jvb3N0UmV3YXJkUGFydCILdG90YWxSZXdhcmQiCXd4QXNzZXRJZCIJZW1pdEJvb3N0IhJjbGFpbWVkQnlVc2VyVmFsdWUiHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydCIrY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkUGx1c0Jvb3N0UmV3YXJkUGFydCIgY2xhaW1lZFRvdGFsUGx1c0F2YWlsYWJsZVRvQ2xhaW0iC2N1cnJlbnRJdGVyIgpscEFzc2V0SWRzIgZyZXNBY2MiBGluZm8iCXVuY2xhaW1lZCIHY2xhaW1lZCIRdXNlclZvdGVGaW5hbGl6ZWQiA3JlcyIDaW52IhJ3eEVtaXNzaW9uUGVyQmxvY2siDHBhc3NlZEJsb2NrcyIOcG9vbFd4RW1pc3Npb24iDHVzZXJXeFJld2FyZCINJHQwMjkyNjkyOTM4MSIOYm9vc3RJbnZSZXN1bHQiCmJvb3N0RGVidWciCnVzZXJPclVuaXQiByRtYXRjaDEiBGhlYWQiDm5leHRVc2VyT3JVbml0IghuZXh0VXNlciINJHQwMzIwMDIzMjExMiICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5ZAABYQAIAAFiAOgHAAFjAIDC1y8AAWQAEgABZQkAtgIBAICAkLu61q3wDQABZgICX18AAWcFAWMAAWgJALYCAQAAAAFpCQC2AgEAAQEBagEBawkAuQkCCQDMCAICDXN0YWtpbmcucmlkZToJAMwIAgkApQgBBQR0aGlzCQDMCAIFAWsFA25pbAIBIAEBbAEBawkAAgEJAQFqAQUBawEBbQEBbgQBbwUBbgMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXEBAW4EAW8FAW4DCQABAgUBbwIDSW50BAFyBQFvBQFyCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQFzAQFuBAFvBQFuAwkAAQIFAW8CBlN0cmluZwQBdAUBbwUBdAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdQEBbgQBbwUBbgMJAAECBQFvAgpCeXRlVmVjdG9yBAF2BQFvBQF2CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF3AgF4AXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF4BQF5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAXoCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXgFAXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQF4AgEuBQF5Ag8gaXMgbm90IGRlZmluZWQBAUECAXgBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQF4BQF5AAABAUIDAXgBeQFDCQELdmFsdWVPckVsc2UCCQCaCAIFAXgFAXkFAUMBAUQCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAXgFAXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXkCDyBpcyBub3QgZGVmaW5lZAEBRQIBeAF5CQEFdmFsdWUBCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBeAUBeQIBMAEBRgMBeAF5AUMEAW8JAJ0IAgUBeAUBeQMJAAECBQFvAgZTdHJpbmcEAUcFAW8JAQV2YWx1ZQEJAKgDAQUBRwMJAAECBQFvAgRVbml0BQFDCQACAQILTWF0Y2ggZXJyb3IBAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWUJALYCAQUBSgEBSwIBbgFMCQCgAwEJALwCAwUBbgkAtgIBBQFMBQFlAQFNAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwEBTgACGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AAFPAAEAAVAAAgABUQADAAFSAAQAAVMABQABVAAGAAFVAAcBAVYAAhElc19fZmFjdG9yeUNvbmZpZwEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIXJXNfX3N0YWJsZVBvb2xBZGRvbkFkZHIBAVoAAg0lc19fYWRkb25BZGRyAQJhYQECYWIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYWIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWYBAmFjAAIQJXNfX2xwVG9rZW5zTGlzdAECYWQBAmFiCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFiCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFmAQJhZQECYWYJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUCYWYFA25pbAUBZgECYWcBAmFoCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCYWgJAQJhYwACAAUBZgECYWkBAmFoCQC1CQIJAQF6AgUCYWgJAQFWAAUBZgECYWoBAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFrBQFQAQJhbAECYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWsFAVMBAmFtAQJhawkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhawUBTwECYW4AAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFvAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhcAACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhcQACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYXIAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFzAgJhdAJhdQkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF2AQJhdQkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYXUBAmF3AgJhdQJhdAkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhdAkAzAgCBQJhdQUDbmlsBQFmAQJheAICYXUCYXQJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXkCAmF1AmF0CQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXoBAmF1CQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQJhdQUDbmlsBQFmAQJhQQEBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQF5AAABAmFCAQJhQwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUBZgECYUQCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICA2JhbAUDbmlsBQFmAQJhRgECYUMJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgIFdG90YWwJAMwIAgIGYmFsSU5UBQNuaWwFAWYBAmFHAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgZiYWxJTlQFA25pbAUBZgECYUgBAmFDCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAICBXRvdGFsCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUkCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUoBAmFDCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFAWYBAmFLAQJhQwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUBZgECYUwCAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIFbHBJbnQFA25pbAUBZgECYU0CAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIGbHBJbnRIBQNuaWwFAWYBAmFOAQJhQwkAuQkCCQDMCAICAiVzCQDMCAIFAmFDCQDMCAICB3d4UGVyTHAFA25pbAUBZgECYU8BAmFDCQC5CQIJAMwIAgICJXMJAMwIAgUCYUMJAMwIAgIKd3hQZXJMcFgxOAUDbmlsBQFmAQJhUAICYUMCYUUJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgV1SW50TAUDbmlsBQFmAQJhUQMCYVICYUUCYVMJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhUgkAzAgCBQJhRQkAzAgCBQJhUwUDbmlsBQFmAQJhVAQCYUUCYUMCYVICYVUJALkJAgkAzAgCAgwlcyVzJXMlZCVkJWQJAMwIAgUCYUUJAMwIAgUCYUMJAMwIAgUCYVIJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFVBQNuaWwFAWYBAmFWBQJhUgJhRQJhQwJhVQJhVwkBC1N0cmluZ0VudHJ5AgkBAmFRAwUCYVIFAmFFCQDYBAEFAmFXCQECYVQEBQJhRQUCYUMFAmFSBQJhVQACYVgJAQF3AgUEdGhpcwkBAU0AAAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVgAAmFrCQECYWkBBQJhWQACYVoJAQJhbAEFAmFrAAJiYQkBAmFqAQUCYWsAAmJiCgACYmMJAPwHBAUCYVoCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmMCA0ludAUCYmMJAAIBCQCsAgIJAAMBBQJiYwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQC5CQIJAMwIAgICJXMJAMwIAgIWbHBTdGFraW5nUG9vbHNDb250cmFjdAUDbmlsBQFmCQEBagECLmxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcyBpcyB1bmRlZmluZWQJAQFqAQIpaW52YWxpZCBscF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MBAmJlAQJhQwkAuQkCCQDMCAICBCVzJXMJAMwIAgUCYUMJAMwIAgIIbmV4dFVzZXIFA25pbAUBZgECYmYBAmFDCQC5CQIJAMwIAgIFdXNlcnMJAMwIAgUCYUMFA25pbAUBZgECYmcBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBGhlYWQFA25pbAUBZgECYmkBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBHNpemUFA25pbAUBZgECYmoCAmJoAmJrCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYmgJAMwIAgUCYmsJAMwIAgIEcHJldgUDbmlsBQFmAQJibAICYmgCYmsJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiaAkAzAgCBQJiawkAzAgCAgRuZXh0BQNuaWwFAWYBAmJtAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJvCQCdCAIFBHRoaXMJAQJiagIFAmJoBQJiawQCYnAJAJ0IAgUEdGhpcwkBAmJsAgUCYmgFAmJrAwMJAAACBQJiawkBC3ZhbHVlT3JFbHNlAgUCYm4CAAYJAQIhPQIFAmJvBQR1bml0BgkBAiE9AgUCYnAFBHVuaXQBAmJxAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiaQEFAmJoAAAEAmJzAwkBASEBCQECYm0CBQJiaAUCYmsGCQACAQILTm9kZSBleGlzdHMDCQAAAgUCYnMFAmJzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAQUCYmgJAGQCBQJicgABBQNuaWwDCQECIT0CBQJibgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmwCBQJiaAUCYmsJAQV2YWx1ZQEFAmJuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiagIFAmJoCQEFdmFsdWUBBQJibgUCYmsFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZwEFAmJoBQJiawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidAICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJicgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYmkBBQJiaAAABAJibwkAnQgCBQR0aGlzCQECYmoCBQJiaAUCYmsEAmJwCQCdCAIFBHRoaXMJAQJibAIFAmJoBQJiawkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmkBBQJiaAkAZQIFAmJyAAEFA25pbAMDCQECIT0CBQJibwUEdW5pdAkBAiE9AgUCYnAFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJibAIFAmJoCQEFdmFsdWUBBQJibwkBBXZhbHVlAQUCYnAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJqAgUCYmgJAQV2YWx1ZQEFAmJwCQEFdmFsdWUBBQJibwkAzAgCCQELRGVsZXRlRW50cnkBCQECYmoCBQJiaAUCYmsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrBQNuaWwDCQECIT0CBQJicAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJiaAkBBXZhbHVlAQUCYnAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiagIFAmJoCQEFdmFsdWUBBQJicAUDbmlsAwkBAiE9AgUCYm8FBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJqAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJibAIFAmJoCQEFdmFsdWUBBQJibwUDbmlsAwkAAAIFAmJrCQELdmFsdWVPckVsc2UCBQJibgIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZwEFAmJoBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUCYmgCAS4FAmJrAQJidQQCYnYCYncCYngCYnkDAwkAAAIFAmJ3BQFoCQC/AgIFAmJ2BQFoBwUBaAMJAAACBQJidgUBaAUCYngDAwkAvwICBQJidwUBaAkAvwICBQJidgUBaAcJAQV2YWx1ZQEJAKgDAQkBAXcCBQR0aGlzBQJieQkAAgECLWNhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdDogdW5leHBlY3RlZCBzdGF0ZQECYnoDAmF1AmJBAmJCBAJiQwkBAmF2AQUCYXUEAmJECQC2AgEJAQJhQQEFAmJDBAJiRQMJAAACBQJiRAUBaAUBaQUCYkQEAmJGCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJhWQkBAmFlAQUCYkEEAmJHCQEBRAIFAmFaCQECYXAABAJiSAkAaAIJAQFEAgUCYVoJAQJhbgAFAWIEAmJJCQBrAwUCYkgFAmJGCQBoAgUBZwUCYmIEAmJKCQECYUoBBQJhdQQCYksJAQJhSwEFAmF1BAJiTAkBAmFOAQUCYXUEAmJNCQEBQgMFBHRoaXMFAmJLBQJiRwQCYk4JAQFFAgUEdGhpcwUCYkoEAmJPAAAEAmJQCQCWAwEJAMwIAgkAZQIFBmhlaWdodAUCYk0JAMwIAgAABQNuaWwEAmJRAwkBAiE9AgUCYk8AAAkAtgIBBQJiTwkAvAIDCQC2AgEFAmJJCQC2AgEFAWMFAmJFBAJiUgkAtwICBQJiRAkAtgIBBQJiQgQCYlMDCQAAAgUCYlIFAWgFAWkFAmJSBAJieAkAtwICBQJiTgkAuQICBQJiUQkAtgIBBQJiUAQCYlQJALoCAgkAtgIBBQJiSQUCYlMEAmJVBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJieAkAzAgCCQCkAwEFAmJQCQDMCAIJAKYDAQUCYlEJAMwIAgkApgMBBQJiRAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiRgUDbmlsAgI6OgkAlQoDBQJieAkAzAgCCQELU3RyaW5nRW50cnkCBQJiSgkApgMBBQJieAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYksFAmJVCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJMCQCmAwEFAmJUBQNuaWwFAmJWAQJiVwQCYXUCYXQCYkECYkIEAmJYCQECYnoDBQJhdQUCYkEFAmJCBAJieAgFAmJYAl8xBAJiWQgFAmJYAl8yBAJiWggFAmJYAl8zBAJjYQkBAmFzAgUCYXQFAmF1BAJidgkBAmFBAQUCY2EEAmNiCQECYUwCBQJhdQUCYXQEAmNjCQECYU0CBQJhdQUCYXQEAmJ5CQECYVACBQJhdQUCYXQEAmNkCQEBRQIFBHRoaXMFAmNiBAJidwkBAUECBQR0aGlzBQJjYwQCY2UJAQJidQQJALYCAQUCYnYJALYCAQUCYncFAmJ4BQJieQQCY2YJAGgCBQFjBQFiBAJjZwkAmAMBCQDMCAIJALcCAgUCY2QJALwCAwkAuAICBQJieAUCY2UJALYCAQUCYnYJALYCAQUCY2YJAMwIAgUBaAUDbmlsBAJjaAUCYngEAmNpBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJjZAkAzAgCCQCmAwEFAmNlCQDMCAIJAKQDAQUCYnYJAMwIAgUCYloJAMwIAgkApAMBBQZoZWlnaHQFA25pbAICOjoJAJUKAwUCY2cJAM4IAgUCYlkJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY2IJAKYDAQUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNjBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCBQJieQkApgMBBQJjaAUDbmlsBQJiVgECY2oABAFvCQCiCAEJAQFXAAMJAAECBQFvAgZTdHJpbmcEAUcFAW8JANkEAQUBRwMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmNrAAQBbwkAoggBCQEBWAADCQABAgUBbwIGU3RyaW5nBAFHBQFvCQDZBAEFAUcDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJjbAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJjbQECY24DCQAAAggFAmNuBmNhbGxlcgUEdGhpcwYFAmNsAQJjbwECY24EAW8JAQJjagADCQABAgUBbwIKQnl0ZVZlY3RvcgQCY3AFAW8DCQAAAggFAmNuD2NhbGxlclB1YmxpY0tleQUCY3AGBQJjbAMJAAECBQFvAgRVbml0AwkAAAIIBQJjbgZjYWxsZXIFBHRoaXMGBQJjbAkAAgECC01hdGNoIGVycm9yAQJjcQYCY24CYUMCY3ICYUUCY3MCYVUEAmF0CQClCAEFAmFFBAJhdQkA2AQBBQJhQwQCYkEJAKUIAQUCY3IEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmN0CAkBAmJXBAUCYXUFAmF0BQJiQQkBAS0BBQJhVQJfMgQCYmgJAQJiZgEFAmF1BAJjdQMDCQECYm0CBQJiaAUCYXQJAAACBQJhVQUCYnYHCQECYnQCBQJiaAUCYXQFA25pbAQCY3YDCQAAAgUCYVUFAmJ2CQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYXUFAmF0BAJjZwgJAQJiVwQFAmF1BQJhdAUCYkEAAAJfMQQCY3gJALgCAgUCY2cFAmN3BAJjeQYEAmN6AwkAvwICBQJjeAUBaAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN6BQJjegMJAGYCBQJhVQUCYnYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFAmFVAhsgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZT0JAKQDAQUCYnYCDC4gbHBBc3NldElkPQUCYXUCEi4gc3Rha2VkQnlVc2VyS0VZPQUCY2EJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQkAZQIFAmJ2BQJhVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkMJAGUCBQJiRAUCYVUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3MFAmFVBQJhQwkAzAgCCQECYVYFAgd1bnN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4QAmNuAQtjb25zdHJ1Y3RvcgECY0EEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQ1jb25zdHJ1Y3RvclYyAQJjQwQCY0QJAMwIAgkBAmNvAQUCY24JAMwIAgMJAQIhPQIJAKYIAQUCY0MFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUCY0QFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAUCY0MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEKc2V0TWFuYWdlcgECY0UEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IEAmNGCQDZBAEFAmNFAwkAAAIFAmNGBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAAFAmNFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDmNvbmZpcm1NYW5hZ2VyAAQCY0cJAQJjawAEAmNIAwkBCWlzRGVmaW5lZAEFAmNHBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSAUCY0gEAmNJAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNHBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSQUCY0kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcACQDYBAEJAQV2YWx1ZQEFAmNHCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQVzdGFrZQADCQECIT0CCQCQAwEIBQJjbghwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0oJAJEDAggFAmNuCHBheW1lbnRzAAAEAmFDCQEFdmFsdWUBCAUCY0oHYXNzZXRJZAQCYXUJANgEAQUCYUMEAmFVCAUCY0oGYW1vdW50BAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFZCQECYWEBBQJhdQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF1BAJjSwkApQgBCAUCY24GY2FsbGVyBAJhdAMJAAACBQJjSwUCYkEJAKUIAQgFAmNuDG9yaWdpbkNhbGxlcgUCY0sEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJjdgMJAAACBQJidgAACQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgYFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCYkQJAQJhQQEFAmJDBAJjTAkBAmJXBAUCYXUFAmF0BQJiQQUCYVUEAmNnCAUCY0wCXzEEAmN0CAUCY0wCXzIEAmJWCAUCY0wCXzMEAmJoCQECYmYBBQJhdQQCY3UDCQECYm0CBQJiaAUCYXQFA25pbAkBAmJxAgUCYmgFAmF0CQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2EJAGQCBQJidgUCYVUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJDCQBkAgUCYkQFAmFVCQDMCAIJAQJhVgUCBXN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BB3Vuc3Rha2UCAmF1AmFVBAJhQwkA2QQBBQJhdQQCYkEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJBBAJjTQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQJjcgkBAVoABQJiQQQCY0sJAKUIAQgFAmNuBmNhbGxlcgQCYUUDAwkAAAIFAmNLBQJiQQYJAAACBQJjSwUCY00IBQJjbgxvcmlnaW5DYWxsZXIIBQJjbgZjYWxsZXIEAmNzCAUCY24GY2FsbGVyCQECY3EGBQJjbgUCYUMFAmNyBQJhRQUCY3MFAmFVAmNuAQ91bnN0YWtlSU5URVJOQUwEAmFDAmFVAmFFAmNzBAJhdQkA2AQBBQJhQwQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY0IDCQAAAggFAmNuBmNhbGxlcgUCY3IGBQJjbAMJAAACBQJjQgUCY0IJAQJjcQYFAmNuBQJhQwUCY3IJAQdBZGRyZXNzAQUCYUUJAQdBZGRyZXNzAQUCY3MFAmFVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQdjbGFpbVd4AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kGBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BEWNsYWltV3hEb05vdFRocm93AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kHBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BD2NsYWltV3hJTlRFUk5BTAMCYXUCYXQCY3kEAmNCCQECY20BBQJjbgMJAAACBQJjQgUCY0IEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXQCJWNsYWltV3hJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJBCQEBegIFAmFZCQECYWQBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1AJAQJhegEFAmF1BAJjUQkBAmF4AgUCYXUFAmF0BAJjUgkBAmF5AgUCYXUFAmF0BAJjUwkBAUUCBQR0aGlzBQJjTwQCY3cJAQFFAgUEdGhpcwUCY1EEAmNUCQEBRQIFBHRoaXMFAmNSBAJjVQkBAUUCBQR0aGlzBQJjUAQCY1YJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJjVgJfMQQCY3QIBQJjVgJfMgQCYlYIBQJjVgJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwDCQDAAgIFAWgFAmN4AwUCY3kJAAIBAhBub3RoaW5nIHRvIGNsYWltCQCUCgIFA25pbAAABAJjVwkAlgMBCQDMCAIJAQFxAQkAkQMCCQEBbQEJAPwHBAUCYmECDGNsYWltV3hCb29zdAkAzAgCBQJhdQkAzAgCBQJhdAUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1gFAmN4BAJjWQkAmQMBCQDMCAIJALkCAgUCY1gJALYCAQkAZQIFAmJiAAEJAMwIAgkAtgIBBQJjVwUDbmlsBAJjWgkAtwICBQJjWAUCY1kEAmRhCQEBdQEJAJEDAgkBAW0BCQD8BwQFAmFaAgRlbWl0CQDMCAIJAKADAQUCY1gFA25pbAUDbmlsAAAEAmRiCQEBbQEJAPwHBAUCYVoCBGVtaXQJAMwIAgkAoAMBBQJjWQUDbmlsBQNuaWwDCQAAAgUCZGIFAmRiBAJkYwkAtwICCQC3AgIFAmNTBQJjWAUCY1kEAmRkCQC3AgIFAmN3BQJjWAQCZGUJALcCAgUCY1QFAmNZBAJkZgkAtwICBQJjVQUCY3gJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQJjTwkApgMBBQJkYwkAzAgCCQELU3RyaW5nRW50cnkCBQJjUQkApgMBBQJkZAkAzAgCCQELU3RyaW5nRW50cnkCBQJjUgkApgMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCBQJjUAkApgMBBQJkZgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQkAoAMBBQJjWAUCZGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUJAKADAQUCY1kFAmRhCQDMCAIJAQJhVgUCBWNsYWltBQJhdAUCYXUJAKADAQUCY3gIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwJAKADAQUCY1oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQQCZGcCZGgCYXQCZGkDCQAAAgUCZGcJAJADAQUCZGgJAJQKAgUDbmlsBQJkaQQCYUMJAJEDAgUCZGgFAmRnBAJkagkAtQkCCgACYmMJAPwHBAUEdGhpcwIPY2xhaW1XeFJFQURPTkxZCQDMCAIFAmFDCQDMCAIFAmF0BQNuaWwFA25pbAMJAAECBQJiYwIGU3RyaW5nBQJiYwkAAgEJAKwCAgkAAwEFAmJjAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFAWYEAmRrCQCRAwIFAmRqAAMEAmRsCQCRAwIFAmRqAAQEAmRtCgACYmMJAPwHBAUCYmECHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkJAMwIAgUCYUMJAMwIAgUCYXQFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZG4JAM0IAgUCZGkJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgUCZGsJAMwIAgUCZGwJAMwIAgkApAMBBQJkbQUDbmlsBQFmBAJkbwoAAmJjCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCZGcAAQkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQJkbgUDbmlsBQNuaWwDCQABAgUCYmMCCUxpc3RbQW55XQUCYmMJAAIBCQCsAgIJAAMBBQJiYwIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmRvBQJkbwkAlAoCBQNuaWwFAmRvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuARNjbGFpbVd4QnVsa1JFQURPTkxZAgJkaAJhdAQCZG4JAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUCZG4CY24BD2NsYWltV3hSRUFET05MWQICYXUCYXQEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1EJAQJheAIFAmF1BQJhdAQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmNTCQEBRQIFBHRoaXMFAmNPBAJjdwkBAUUCBQR0aGlzBQJjUQQCYkEJAQF6AgUCYVkJAQJhZAEFAmF1BAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJkcAkBAUQCBQJhWgkBAmFuAAQCYkcJAQFEAgUCYVoJAQJhcAAEAmRxAwkAZgIFAmJHBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCYkcEAmRyCQBrAwkAaAIFAmRwBQJkcQUCYkYFAWcEAmRzCQBrAwUCZHIFAmJ2BQJiRAQCZHQJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJkdAJfMQQCY3QIBQJkdAJfMgQCYlYIBQJkdAJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwEAmR1CQEBbQEJAPwHBAUCYmECFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFAmF1CQDMCAIFAmF0BQNuaWwFA25pbAQCY1cJAJYDAQkAzAgCCQEBcQEJAJEDAgUCZHUAAAkAzAgCAAAFA25pbAQCZHYJAQFzAQkAkQMCBQJkdQABBAJjWAUCY3gEAmNZCQCZAwEJAMwIAgkAuQICBQJjWAkAtgIBCQBlAgUCYmIAAQkAzAgCCQC2AgEFAmNXBQNuaWwEAmNaCQC3AgIFAmNYBQJjWQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVzJWQlZCVkJWQlcwkAzAgCBQJhdQkAzAgCBQJhdAkAzAgCCQCmAwEFAmNaCQDMCAIJAKYDAQUCY1MJAMwIAgkApgMBBQJjWAkAzAgCCQCmAwEFAmNZCQDMCAICBHNvb24FA25pbAUBZgJjbgEUc3Rha2VkQnlVc2VyUkVBRE9OTFkCAmF1AmF0BAJidgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMCBQJhdAUCYXUAAAkAlAoCBQNuaWwFAmJ2AmNuARJ1c2Vyc0xpc3RUcmF2ZXJzYWwBAmFDBAJjQgMJAAACCQDYBAEICAUCY24GY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFOAAIABgkBAmNvAQUCY24DCQAAAgUCY0IFAmNCBAJiaAkBAmJmAQUCYUMEAmR3CQCiCAEJAQJiZQEFAmFDBAJibgkAoggBCQECYmcBBQJiaAQBbwUCZHcDCQABAgUBbwIEVW5pdAQCZHgFAmJuAwkAAQIFAmR4AgRVbml0CQCUCgIFA25pbAcDCQABAgUCZHgCBlN0cmluZwQCZHkFAmR4CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJlAQUCYUMFAmR5BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBbwIGU3RyaW5nBAJhRQUBbwQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYUMFAmFFBAJjcgkBAXoCBQJhWQkBAmFkAQUCYUMEAmNnCAkBAmJXBAUCYUMFAmFFBQJjcgAAAl8xBAJjeAkAuAICBQJjZwUCY3cEAmN5BgQCY3oDCQC/AgIFAmN4BQFoCQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCBQJjeQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY3oFAmN6BAJkegkAoggBCQECYmwCBQJiaAUCYUUEAmR4BQJkegMJAAECBQJkeAIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZQEFAmFDBQNuaWwHAwkAAQIFAmR4AgZTdHJpbmcEAmRBBQJkeAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmFDBQJkQQUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDm9uTW9kaWZ5V2VpZ2h0AgJhdQJiQQMJAQIhPQIIBQJjbgZjYWxsZXIFAmFZCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJkQgkBAmJ6AwUCYXUFAmJBAAAEAmJ4CAUCZEICXzEEAmJZCAUCZEICXzIEAmJaCAUCZEICXzMFAmJZAQJkQwECZEQABAJkRQQBbwkBAmNqAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJjcAUBbwUCY3ADCQABAgUBbwIEVW5pdAgFAmRDD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkQwlib2R5Qnl0ZXMJAJEDAggFAmRDBnByb29mcwAABQJkRQFUL/M=", "height": 2489925, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E6ymV3TCGHeDYTWv8To4AEEWe4vvHWWiwxmfeeztwd3Y Next: HKPBNP3EevoYn6Aq6yDXHvL7HRWV69AAN62HwtSX4wgD Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
372+ then i
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,cq,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let bA = az(bz)
455- let cr = bU(at, as, bx, -(aT))._2
456- let be = bc(at)
457- let cs = if (if (bj(be, as))
458- then (aT == bs)
454+func cq (cn,aC,cr,aE,cs,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let bD = aA(bC)
462+ let ct = bW(au, at, bA, -(aU))._2
463+ let bh = bf(au)
464+ let cu = if (if (bm(bh, at))
465+ then (aU == bv)
459466 else false)
460- then bq(be, as)
467+ then bt(bh, at)
461468 else nil
462- let ct = if ((aT == bs))
463- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
469+ let cv = if ((aU == bv))
470+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
464471 else unit
465- if ((ct == ct))
472+ if ((cv == cv))
466473 then {
467- let cu = D(this, aw(at, as))
468- let ce = bU(at, as, bx, 0)._1
469- let cv = (ce - cu)
470- let cw = true
471- let cx = if ((cv > g))
472- then invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
477+ let cy = true
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
473480 else unit
474- if ((cx == cx))
475- then if ((aT > bs))
476- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
477- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cq, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
481+ if ((cz == cz))
482+ then if ((aU > bv))
483+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
484+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cs, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
478485 else throw("Strict value is not equal to itself.")
479486 }
480487 else throw("Strict value is not equal to itself.")
481488 }
482489
483490
484-@Callable(cl)
485-func constructor (cy) = {
486- let cz = cm(cl)
487- if ((cz == cz))
488- then [StringEntry(L(), cy)]
489- else throw("Strict value is not equal to itself.")
490- }
491-
492-
493-
494-@Callable(cl)
495-func constructorV2 (cA) = {
496- let cB = [cm(cl), if ((addressFromString(cA) != unit))
497- then true
498- else "invalid voting emission contract address"]
491+@Callable(cn)
492+func constructor (cA) = {
493+ let cB = co(cn)
499494 if ((cB == cB))
500495 then [StringEntry(M(), cA)]
501496 else throw("Strict value is not equal to itself.")
503498
504499
505500
506-@Callable(cl)
507-func setManager (cC) = {
508- let cz = cm(cl)
509- if ((cz == cz))
501+@Callable(cn)
502+func constructorV2 (cC) = {
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
504+ then true
505+ else "invalid voting emission contract address"]
506+ if ((cD == cD))
507+ then [StringEntry(N(), cC)]
508+ else throw("Strict value is not equal to itself.")
509+ }
510+
511+
512+
513+@Callable(cn)
514+func setManager (cE) = {
515+ let cB = co(cn)
516+ if ((cB == cB))
510517 then {
511- let cD = fromBase58String(cC)
512- if ((cD == cD))
513- then [StringEntry(W(), cC)]
518+ let cF = fromBase58String(cE)
519+ if ((cF == cF))
520+ then [StringEntry(X(), cE)]
514521 else throw("Strict value is not equal to itself.")
515522 }
516523 else throw("Strict value is not equal to itself.")
518525
519526
520527
521-@Callable(cl)
528+@Callable(cn)
522529 func confirmManager () = {
523- let cE = ci()
524- let cF = if (isDefined(cE))
530+ let cG = ck()
531+ let cH = if (isDefined(cG))
525532 then true
526533 else throw("No pending manager")
527- if ((cF == cF))
534+ if ((cH == cH))
528535 then {
529- let cG = if ((cl.callerPublicKey == value(cE)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
530537 then true
531538 else throw("You are not pending manager")
532- if ((cG == cG))
533- then [StringEntry(V(), toBase58String(value(cE))), DeleteEntry(W())]
539+ if ((cI == cI))
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
534541 else throw("Strict value is not equal to itself.")
535542 }
536543 else throw("Strict value is not equal to itself.")
538545
539546
540547
541-@Callable(cl)
542-func stake () = if ((size(cl.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
543550 then throw("invalid payment - exact one payment must be attached")
544551 else {
545- let cH = cl.payments[0]
546- let aB = value(cH.assetId)
547- let at = toBase58String(aB)
548- let aT = cH.amount
549- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
550- let cI = toString(cl.caller)
551- let as = if ((cI == bx))
552- then toString(cl.originCaller)
553- else cI
554- let bY = ar(as, at)
555- let bz = au(at)
556- let bs = az(bY)
557- let ct = if ((bs == 0))
558- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
552+ let cJ = cn.payments[0]
553+ let aC = value(cJ.assetId)
554+ let au = toBase58String(aC)
555+ let aU = cJ.amount
556+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
557+ let cK = toString(cn.caller)
558+ let at = if ((cK == bA))
559+ then toString(cn.originCaller)
560+ else cK
561+ let ca = as(at, au)
562+ let bC = av(au)
563+ let bv = aA(ca)
564+ let cv = if ((bv == 0))
565+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
559566 else unit
560- if ((ct == ct))
567+ if ((cv == cv))
561568 then {
562- let bA = az(bz)
563- let cJ = bU(at, as, bx, aT)
564- let ce = cJ._1
565- let cr = cJ._2
566- let bT = cJ._3
567- let be = bc(at)
568- let cs = if (bj(be, as))
569+ let bD = aA(bC)
570+ let cL = bW(au, at, bA, aU)
571+ let cg = cL._1
572+ let ct = cL._2
573+ let bV = cL._3
574+ let bh = bf(au)
575+ let cu = if (bm(bh, at))
569576 then nil
570- else bn(be, as)
571- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
572579 }
573580 else throw("Strict value is not equal to itself.")
574581 }
575582
576583
577584
578-@Callable(cl)
579-func unstake (at,aT) = {
580- let aB = fromBase58String(at)
581- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
582- let cp = addressFromStringValue(bx)
583- let cK = valueOrElse(getString(cp, Y()), bx)
584- let cI = toString(cl.caller)
585- let aD = if (if ((cI == bx))
585+@Callable(cn)
586+func unstake (au,aU) = {
587+ let aC = fromBase58String(au)
588+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
589+ let cr = addressFromStringValue(bA)
590+ let cM = valueOrElse(getString(cr, Z()), bA)
591+ let cK = toString(cn.caller)
592+ let aE = if (if ((cK == bA))
586593 then true
587- else (cI == cK))
588- then cl.originCaller
589- else cl.caller
590- let cq = cl.caller
591- co(cl, aB, cp, aD, cq, aT)
594+ else (cK == cM))
595+ then cn.originCaller
596+ else cn.caller
597+ let cs = cn.caller
598+ cq(cn, aC, cr, aE, cs, aU)
592599 }
593600
594601
595602
596-@Callable(cl)
597-func unstakeINTERNAL (aB,aT,aD,cq) = {
598- let at = toBase58String(aB)
599- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
600- let cz = if ((cl.caller == cp))
603+@Callable(cn)
604+func unstakeINTERNAL (aC,aU,aE,cs) = {
605+ let au = toBase58String(aC)
606+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
607+ let cB = if ((cn.caller == cr))
601608 then true
602- else cj
603- if ((cz == cz))
604- then co(cl, aB, cp, Address(aD), Address(cq), aT)
609+ else cl
610+ if ((cB == cB))
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
605612 else throw("Strict value is not equal to itself.")
606613 }
607614
608615
609616
610-@Callable(cl)
611-func claimWx (at) = {
612- let as = toString(cl.caller)
613- let cw = true
614- let cL = invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
615- $Tuple2(nil, cL)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
620+ let cy = true
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
616623 }
617624
618625
619626
620-@Callable(cl)
621-func claimWxDoNotThrow (at) = {
622- let as = toString(cl.caller)
623- let cw = false
624- let cL = invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
625- $Tuple2(nil, cL)
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
630+ let cy = false
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
626633 }
627634
628635
629636
630-@Callable(cl)
631-func claimWxINTERNAL (at,as,cw) = {
632- let cz = ck(cl)
633- if ((cz == cz))
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
640+ if ((cB == cB))
634641 then {
635- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
636- let bx = y(aX, ac(at))
637- let cM = av(at, as)
638- let cN = ay(at)
639- let cO = aw(at, as)
640- let cP = ax(at, as)
641- let cQ = D(this, cM)
642- let cu = D(this, cO)
643- let cR = D(this, cP)
644- let cS = D(this, cN)
645- let cT = bU(at, as, bx, 0)
646- let ce = cT._1
647- let cr = cT._2
648- let bT = cT._3
649- let cv = max([(ce - cu), g])
650- if ((g >= cv))
651- then if (cw)
642+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
643+ let bA = z(aY, ad(au))
644+ let cO = aw(au, at)
645+ let cP = az(au)
646+ let cQ = ax(au, at)
647+ let cR = ay(au, at)
648+ let cS = E(this, cO)
649+ let cw = E(this, cQ)
650+ let cT = E(this, cR)
651+ let cU = E(this, cP)
652+ let cV = bW(au, at, bA, 0)
653+ let cg = cV._1
654+ let ct = cV._2
655+ let bV = cV._3
656+ let cx = max([(cg - cw), h])
657+ if ((h >= cx))
658+ then if (cy)
652659 then throw("nothing to claim")
653660 else $Tuple2(nil, 0)
654661 else {
655- let cU = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
656- let cV = cv
657- let cW = min([(cV * toBigInt(2)), toBigInt(cU)])
658- let cX = (cV + cW)
659- let cY = t(l(invoke(aY, "emit", [toInt(cV)], nil))[0])
660- let cZ = l(invoke(aY, "emit", [toInt(cW)], nil))
661- if ((cZ == cZ))
662+ let cW = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
663+ let cX = cx
664+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
665+ let cZ = (cX + cY)
666+ let da = u(m(invoke(aZ, "emit", [toInt(cX)], nil))[0])
667+ let db = m(invoke(aZ, "emit", [toInt(cY)], nil))
668+ if ((db == db))
662669 then {
663- let da = ((cQ + cV) + cW)
664- let db = (cu + cV)
665- let dc = (cR + cW)
666- let dd = (cS + cv)
667- $Tuple2([StringEntry(cM, toString(da)), StringEntry(cO, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cN, toString(dd)), ScriptTransfer(aD, toInt(cV), cY), ScriptTransfer(aD, toInt(cW), cY), aU("claim", as, at, toInt(cv), cl.transactionId)], toInt(cX))
670+ let dc = ((cS + cX) + cY)
671+ let dd = (cw + cX)
672+ let de = (cT + cY)
673+ let df = (cU + cx)
674+ $Tuple2([StringEntry(cO, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cP, toString(df)), ScriptTransfer(aE, toInt(cX), da), ScriptTransfer(aE, toInt(cY), da), aV("claim", at, au, toInt(cx), cn.transactionId)], toInt(cZ))
668675 }
669676 else throw("Strict value is not equal to itself.")
670677 }
674681
675682
676683
677-@Callable(cl)
678-func claimWxBulkInternalREADONLY (de,df,as,dg) = if ((de == size(df)))
679- then $Tuple2(nil, dg)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
680687 else {
681- let aB = df[de]
682- let dh = split({
683- let di = invoke(this, "claimWxREADONLY", [aB, as], nil)
684- if ($isInstanceOf(di, "String"))
685- then di
686- else throw(($getType(di) + " couldn't be cast to String"))
687- }, e)
688- let dj = dh[3]
689- let dk = dh[4]
690- let dl = (dg :+ makeString(["%d%d", dj, dk], e))
688+ let aC = dh[dg]
689+ let dj = split({
690+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
691+ if ($isInstanceOf(bc, "String"))
692+ then bc
693+ else throw(($getType(bc) + " couldn't be cast to String"))
694+ }, f)
695+ let dk = dj[3]
696+ let dl = dj[4]
691697 let dm = {
692- let di = invoke(this, "claimWxBulkInternalREADONLY", [(de + 1), df, as, dl], nil)
693- if ($isInstanceOf(di, "List[Any]"))
694- then di
695- else throw(($getType(di) + " couldn't be cast to List[Any]"))
698+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
699+ if ($isInstanceOf(bc, "Int"))
700+ then bc
701+ else throw(($getType(bc) + " couldn't be cast to Int"))
696702 }
697- if ((dm == dm))
698- then $Tuple2(nil, dm)
703+ let dn = (di :+ makeString(["%d%d%d", dk, dl, toString(dm)], f))
704+ let do = {
705+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dg + 1), dh, at, dn], nil)
706+ if ($isInstanceOf(bc, "List[Any]"))
707+ then bc
708+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
709+ }
710+ if ((do == do))
711+ then $Tuple2(nil, do)
699712 else throw("Strict value is not equal to itself.")
700713 }
701714
702715
703716
704-@Callable(cl)
705-func claimWxBulkREADONLY (df,as) = {
706- let dl = invoke(this, "claimWxBulkInternalREADONLY", [0, df, as, nil], nil)
707- $Tuple2(nil, dl)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
708721 }
709722
710723
711724
712-@Callable(cl)
713-func claimWxREADONLY (at,as) = {
714- let bY = ar(as, at)
715- let bz = au(at)
716- let cM = av(at, as)
717- let cO = aw(at, as)
718- let bs = az(bY)
719- let bA = az(bz)
720- let cQ = D(this, cM)
721- let cu = D(this, cO)
722- let bx = y(aX, ac(at))
723- let bC = getIntegerValue(aX, ad(bx))
724- let dn = C(aY, am())
725- let bD = C(aY, ao())
726- let do = if ((bD > height))
725+@Callable(cn)
726+func claimWxREADONLY (au,at) = {
727+ let ca = as(at, au)
728+ let bC = av(au)
729+ let cO = aw(au, at)
730+ let cQ = ax(au, at)
731+ let bv = aA(ca)
732+ let bD = aA(bC)
733+ let cS = E(this, cO)
734+ let cw = E(this, cQ)
735+ let bA = z(aY, ad(au))
736+ let bF = getIntegerValue(aY, ae(bA))
737+ let dp = D(aZ, an())
738+ let bG = D(aZ, ap())
739+ let dq = if ((bG > height))
727740 then 0
728- else (height - bD)
729- let dp = fraction((dn * do), bC, f)
730- let dq = fraction(dp, bs, bA)
731- let dr = bU(at, as, bx, 0)
732- let ce = dr._1
733- let cr = dr._2
734- let bT = dr._3
735- let cv = max([(ce - cu), g])
736- let ds = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
737- let cU = max([p(ds[0]), 0])
738- let dt = r(ds[1])
739- let cV = cv
740- let cW = min([(cV * toBigInt(2)), toBigInt(cU)])
741- let cX = (cV + cW)
742- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cX), toString(cQ), toString(cV), toString(cW), "soon"], e))
741+ else (height - bG)
742+ let dr = fraction((dp * dq), bF, g)
743+ let ds = fraction(dr, bv, bD)
744+ let dt = bW(au, at, bA, 0)
745+ let cg = dt._1
746+ let ct = dt._2
747+ let bV = dt._3
748+ let cx = max([(cg - cw), h])
749+ let du = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
750+ let cW = max([q(du[0]), 0])
751+ let dv = s(du[1])
752+ let cX = cx
753+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
754+ let cZ = (cX + cY)
755+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(cZ), toString(cS), toString(cX), toString(cY), "soon"], f))
743756 }
744757
745758
746759
747-@Callable(cl)
748-func stakedByUserREADONLY (at,as) = {
749- let bs = valueOrElse(getInteger(ar(as, at)), 0)
750- $Tuple2(nil, bs)
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
751764 }
752765
753766
754767
755-@Callable(cl)
756-func usersListTraversal (aB) = {
757- let cz = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
758771 then true
759- else cm(cl)
760- if ((cz == cz))
772+ else co(cn)
773+ if ((cB == cB))
761774 then {
762- let be = bc(aB)
763- let du = getString(bb(aB))
764- let bk = getString(bd(be))
765- let n = du
766- if ($isInstanceOf(n, "Unit"))
775+ let bh = bf(aC)
776+ let dw = getString(be(aC))
777+ let bn = getString(bg(bh))
778+ let o = dw
779+ if ($isInstanceOf(o, "Unit"))
767780 then {
768- let dv = bk
769- if ($isInstanceOf(dv, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
770783 then $Tuple2(nil, false)
771- else if ($isInstanceOf(dv, "String"))
784+ else if ($isInstanceOf(dx, "String"))
772785 then {
773- let dw = dv
774- $Tuple2([StringEntry(bb(aB), dw)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
775788 }
776789 else throw("Match error")
777790 }
778- else if ($isInstanceOf(n, "String"))
791+ else if ($isInstanceOf(o, "String"))
779792 then {
780- let aD = n
781- let cu = D(this, aw(aB, aD))
782- let cp = y(aX, ac(aB))
783- let ce = bU(aB, aD, cp, 0)._1
784- let cv = (ce - cu)
785- let cw = true
786- let cx = if ((cv > g))
787- then invoke(this, "claimWxINTERNAL", [aB, aD, cw], nil)
793+ let aE = o
794+ let cw = E(this, ax(aC, aE))
795+ let cr = z(aY, ad(aC))
796+ let cg = bW(aC, aE, cr, 0)._1
797+ let cx = (cg - cw)
798+ let cy = true
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
788801 else unit
789- if ((cx == cx))
802+ if ((cz == cz))
790803 then {
791- let dx = getString(bi(be, aD))
792- let dv = dx
793- if ($isInstanceOf(dv, "Unit"))
794- then $Tuple2([DeleteEntry(bb(aB))], false)
795- else if ($isInstanceOf(dv, "String"))
804+ let dz = getString(bl(bh, aE))
805+ let dx = dz
806+ if ($isInstanceOf(dx, "Unit"))
807+ then $Tuple2([DeleteEntry(be(aC))], false)
808+ else if ($isInstanceOf(dx, "String"))
796809 then {
797- let dy = dv
798- $Tuple2([StringEntry(bb(aB), dy)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
799812 }
800813 else throw("Match error")
801814 }
808821
809822
810823
811-@Callable(cl)
812-func onModifyWeight (at,bx) = if ((cl.caller != aX))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
813826 then throw("permissions denied")
814827 else {
815- let dz = bw(at, bx, 0)
816- let bu = dz._1
817- let bW = dz._2
818- let bX = dz._3
819- bW
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
820833 }
821834
822835
823-@Verifier(dA)
824-func dB () = {
825- let dC = {
826- let n = ch()
827- if ($isInstanceOf(n, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
828841 then {
829- let cn = n
830- cn
842+ let cp = o
843+ cp
831844 }
832- else if ($isInstanceOf(n, "Unit"))
833- then dA.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
834847 else throw("Match error")
835848 }
836- sigVerify(dA.bodyBytes, dA.proofs[0], dC)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
837850 }
838851
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
372+ then i
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,cq,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let bA = az(bz)
455- let cr = bU(at, as, bx, -(aT))._2
456- let be = bc(at)
457- let cs = if (if (bj(be, as))
458- then (aT == bs)
454+func cq (cn,aC,cr,aE,cs,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let bD = aA(bC)
462+ let ct = bW(au, at, bA, -(aU))._2
463+ let bh = bf(au)
464+ let cu = if (if (bm(bh, at))
465+ then (aU == bv)
459466 else false)
460- then bq(be, as)
467+ then bt(bh, at)
461468 else nil
462- let ct = if ((aT == bs))
463- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
469+ let cv = if ((aU == bv))
470+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
464471 else unit
465- if ((ct == ct))
472+ if ((cv == cv))
466473 then {
467- let cu = D(this, aw(at, as))
468- let ce = bU(at, as, bx, 0)._1
469- let cv = (ce - cu)
470- let cw = true
471- let cx = if ((cv > g))
472- then invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
477+ let cy = true
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
473480 else unit
474- if ((cx == cx))
475- then if ((aT > bs))
476- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
477- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cq, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
481+ if ((cz == cz))
482+ then if ((aU > bv))
483+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
484+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cs, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
478485 else throw("Strict value is not equal to itself.")
479486 }
480487 else throw("Strict value is not equal to itself.")
481488 }
482489
483490
484-@Callable(cl)
485-func constructor (cy) = {
486- let cz = cm(cl)
487- if ((cz == cz))
488- then [StringEntry(L(), cy)]
489- else throw("Strict value is not equal to itself.")
490- }
491-
492-
493-
494-@Callable(cl)
495-func constructorV2 (cA) = {
496- let cB = [cm(cl), if ((addressFromString(cA) != unit))
497- then true
498- else "invalid voting emission contract address"]
491+@Callable(cn)
492+func constructor (cA) = {
493+ let cB = co(cn)
499494 if ((cB == cB))
500495 then [StringEntry(M(), cA)]
501496 else throw("Strict value is not equal to itself.")
502497 }
503498
504499
505500
506-@Callable(cl)
507-func setManager (cC) = {
508- let cz = cm(cl)
509- if ((cz == cz))
501+@Callable(cn)
502+func constructorV2 (cC) = {
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
504+ then true
505+ else "invalid voting emission contract address"]
506+ if ((cD == cD))
507+ then [StringEntry(N(), cC)]
508+ else throw("Strict value is not equal to itself.")
509+ }
510+
511+
512+
513+@Callable(cn)
514+func setManager (cE) = {
515+ let cB = co(cn)
516+ if ((cB == cB))
510517 then {
511- let cD = fromBase58String(cC)
512- if ((cD == cD))
513- then [StringEntry(W(), cC)]
518+ let cF = fromBase58String(cE)
519+ if ((cF == cF))
520+ then [StringEntry(X(), cE)]
514521 else throw("Strict value is not equal to itself.")
515522 }
516523 else throw("Strict value is not equal to itself.")
517524 }
518525
519526
520527
521-@Callable(cl)
528+@Callable(cn)
522529 func confirmManager () = {
523- let cE = ci()
524- let cF = if (isDefined(cE))
530+ let cG = ck()
531+ let cH = if (isDefined(cG))
525532 then true
526533 else throw("No pending manager")
527- if ((cF == cF))
534+ if ((cH == cH))
528535 then {
529- let cG = if ((cl.callerPublicKey == value(cE)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
530537 then true
531538 else throw("You are not pending manager")
532- if ((cG == cG))
533- then [StringEntry(V(), toBase58String(value(cE))), DeleteEntry(W())]
539+ if ((cI == cI))
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
534541 else throw("Strict value is not equal to itself.")
535542 }
536543 else throw("Strict value is not equal to itself.")
537544 }
538545
539546
540547
541-@Callable(cl)
542-func stake () = if ((size(cl.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
543550 then throw("invalid payment - exact one payment must be attached")
544551 else {
545- let cH = cl.payments[0]
546- let aB = value(cH.assetId)
547- let at = toBase58String(aB)
548- let aT = cH.amount
549- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
550- let cI = toString(cl.caller)
551- let as = if ((cI == bx))
552- then toString(cl.originCaller)
553- else cI
554- let bY = ar(as, at)
555- let bz = au(at)
556- let bs = az(bY)
557- let ct = if ((bs == 0))
558- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
552+ let cJ = cn.payments[0]
553+ let aC = value(cJ.assetId)
554+ let au = toBase58String(aC)
555+ let aU = cJ.amount
556+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
557+ let cK = toString(cn.caller)
558+ let at = if ((cK == bA))
559+ then toString(cn.originCaller)
560+ else cK
561+ let ca = as(at, au)
562+ let bC = av(au)
563+ let bv = aA(ca)
564+ let cv = if ((bv == 0))
565+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
559566 else unit
560- if ((ct == ct))
567+ if ((cv == cv))
561568 then {
562- let bA = az(bz)
563- let cJ = bU(at, as, bx, aT)
564- let ce = cJ._1
565- let cr = cJ._2
566- let bT = cJ._3
567- let be = bc(at)
568- let cs = if (bj(be, as))
569+ let bD = aA(bC)
570+ let cL = bW(au, at, bA, aU)
571+ let cg = cL._1
572+ let ct = cL._2
573+ let bV = cL._3
574+ let bh = bf(au)
575+ let cu = if (bm(bh, at))
569576 then nil
570- else bn(be, as)
571- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
572579 }
573580 else throw("Strict value is not equal to itself.")
574581 }
575582
576583
577584
578-@Callable(cl)
579-func unstake (at,aT) = {
580- let aB = fromBase58String(at)
581- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
582- let cp = addressFromStringValue(bx)
583- let cK = valueOrElse(getString(cp, Y()), bx)
584- let cI = toString(cl.caller)
585- let aD = if (if ((cI == bx))
585+@Callable(cn)
586+func unstake (au,aU) = {
587+ let aC = fromBase58String(au)
588+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
589+ let cr = addressFromStringValue(bA)
590+ let cM = valueOrElse(getString(cr, Z()), bA)
591+ let cK = toString(cn.caller)
592+ let aE = if (if ((cK == bA))
586593 then true
587- else (cI == cK))
588- then cl.originCaller
589- else cl.caller
590- let cq = cl.caller
591- co(cl, aB, cp, aD, cq, aT)
594+ else (cK == cM))
595+ then cn.originCaller
596+ else cn.caller
597+ let cs = cn.caller
598+ cq(cn, aC, cr, aE, cs, aU)
592599 }
593600
594601
595602
596-@Callable(cl)
597-func unstakeINTERNAL (aB,aT,aD,cq) = {
598- let at = toBase58String(aB)
599- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
600- let cz = if ((cl.caller == cp))
603+@Callable(cn)
604+func unstakeINTERNAL (aC,aU,aE,cs) = {
605+ let au = toBase58String(aC)
606+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
607+ let cB = if ((cn.caller == cr))
601608 then true
602- else cj
603- if ((cz == cz))
604- then co(cl, aB, cp, Address(aD), Address(cq), aT)
609+ else cl
610+ if ((cB == cB))
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
605612 else throw("Strict value is not equal to itself.")
606613 }
607614
608615
609616
610-@Callable(cl)
611-func claimWx (at) = {
612- let as = toString(cl.caller)
613- let cw = true
614- let cL = invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
615- $Tuple2(nil, cL)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
620+ let cy = true
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
616623 }
617624
618625
619626
620-@Callable(cl)
621-func claimWxDoNotThrow (at) = {
622- let as = toString(cl.caller)
623- let cw = false
624- let cL = invoke(this, "claimWxINTERNAL", [at, as, cw], nil)
625- $Tuple2(nil, cL)
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
630+ let cy = false
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
626633 }
627634
628635
629636
630-@Callable(cl)
631-func claimWxINTERNAL (at,as,cw) = {
632- let cz = ck(cl)
633- if ((cz == cz))
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
640+ if ((cB == cB))
634641 then {
635- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
636- let bx = y(aX, ac(at))
637- let cM = av(at, as)
638- let cN = ay(at)
639- let cO = aw(at, as)
640- let cP = ax(at, as)
641- let cQ = D(this, cM)
642- let cu = D(this, cO)
643- let cR = D(this, cP)
644- let cS = D(this, cN)
645- let cT = bU(at, as, bx, 0)
646- let ce = cT._1
647- let cr = cT._2
648- let bT = cT._3
649- let cv = max([(ce - cu), g])
650- if ((g >= cv))
651- then if (cw)
642+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
643+ let bA = z(aY, ad(au))
644+ let cO = aw(au, at)
645+ let cP = az(au)
646+ let cQ = ax(au, at)
647+ let cR = ay(au, at)
648+ let cS = E(this, cO)
649+ let cw = E(this, cQ)
650+ let cT = E(this, cR)
651+ let cU = E(this, cP)
652+ let cV = bW(au, at, bA, 0)
653+ let cg = cV._1
654+ let ct = cV._2
655+ let bV = cV._3
656+ let cx = max([(cg - cw), h])
657+ if ((h >= cx))
658+ then if (cy)
652659 then throw("nothing to claim")
653660 else $Tuple2(nil, 0)
654661 else {
655- let cU = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
656- let cV = cv
657- let cW = min([(cV * toBigInt(2)), toBigInt(cU)])
658- let cX = (cV + cW)
659- let cY = t(l(invoke(aY, "emit", [toInt(cV)], nil))[0])
660- let cZ = l(invoke(aY, "emit", [toInt(cW)], nil))
661- if ((cZ == cZ))
662+ let cW = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
663+ let cX = cx
664+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
665+ let cZ = (cX + cY)
666+ let da = u(m(invoke(aZ, "emit", [toInt(cX)], nil))[0])
667+ let db = m(invoke(aZ, "emit", [toInt(cY)], nil))
668+ if ((db == db))
662669 then {
663- let da = ((cQ + cV) + cW)
664- let db = (cu + cV)
665- let dc = (cR + cW)
666- let dd = (cS + cv)
667- $Tuple2([StringEntry(cM, toString(da)), StringEntry(cO, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cN, toString(dd)), ScriptTransfer(aD, toInt(cV), cY), ScriptTransfer(aD, toInt(cW), cY), aU("claim", as, at, toInt(cv), cl.transactionId)], toInt(cX))
670+ let dc = ((cS + cX) + cY)
671+ let dd = (cw + cX)
672+ let de = (cT + cY)
673+ let df = (cU + cx)
674+ $Tuple2([StringEntry(cO, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cP, toString(df)), ScriptTransfer(aE, toInt(cX), da), ScriptTransfer(aE, toInt(cY), da), aV("claim", at, au, toInt(cx), cn.transactionId)], toInt(cZ))
668675 }
669676 else throw("Strict value is not equal to itself.")
670677 }
671678 }
672679 else throw("Strict value is not equal to itself.")
673680 }
674681
675682
676683
677-@Callable(cl)
678-func claimWxBulkInternalREADONLY (de,df,as,dg) = if ((de == size(df)))
679- then $Tuple2(nil, dg)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
680687 else {
681- let aB = df[de]
682- let dh = split({
683- let di = invoke(this, "claimWxREADONLY", [aB, as], nil)
684- if ($isInstanceOf(di, "String"))
685- then di
686- else throw(($getType(di) + " couldn't be cast to String"))
687- }, e)
688- let dj = dh[3]
689- let dk = dh[4]
690- let dl = (dg :+ makeString(["%d%d", dj, dk], e))
688+ let aC = dh[dg]
689+ let dj = split({
690+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
691+ if ($isInstanceOf(bc, "String"))
692+ then bc
693+ else throw(($getType(bc) + " couldn't be cast to String"))
694+ }, f)
695+ let dk = dj[3]
696+ let dl = dj[4]
691697 let dm = {
692- let di = invoke(this, "claimWxBulkInternalREADONLY", [(de + 1), df, as, dl], nil)
693- if ($isInstanceOf(di, "List[Any]"))
694- then di
695- else throw(($getType(di) + " couldn't be cast to List[Any]"))
698+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
699+ if ($isInstanceOf(bc, "Int"))
700+ then bc
701+ else throw(($getType(bc) + " couldn't be cast to Int"))
696702 }
697- if ((dm == dm))
698- then $Tuple2(nil, dm)
703+ let dn = (di :+ makeString(["%d%d%d", dk, dl, toString(dm)], f))
704+ let do = {
705+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dg + 1), dh, at, dn], nil)
706+ if ($isInstanceOf(bc, "List[Any]"))
707+ then bc
708+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
709+ }
710+ if ((do == do))
711+ then $Tuple2(nil, do)
699712 else throw("Strict value is not equal to itself.")
700713 }
701714
702715
703716
704-@Callable(cl)
705-func claimWxBulkREADONLY (df,as) = {
706- let dl = invoke(this, "claimWxBulkInternalREADONLY", [0, df, as, nil], nil)
707- $Tuple2(nil, dl)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
708721 }
709722
710723
711724
712-@Callable(cl)
713-func claimWxREADONLY (at,as) = {
714- let bY = ar(as, at)
715- let bz = au(at)
716- let cM = av(at, as)
717- let cO = aw(at, as)
718- let bs = az(bY)
719- let bA = az(bz)
720- let cQ = D(this, cM)
721- let cu = D(this, cO)
722- let bx = y(aX, ac(at))
723- let bC = getIntegerValue(aX, ad(bx))
724- let dn = C(aY, am())
725- let bD = C(aY, ao())
726- let do = if ((bD > height))
725+@Callable(cn)
726+func claimWxREADONLY (au,at) = {
727+ let ca = as(at, au)
728+ let bC = av(au)
729+ let cO = aw(au, at)
730+ let cQ = ax(au, at)
731+ let bv = aA(ca)
732+ let bD = aA(bC)
733+ let cS = E(this, cO)
734+ let cw = E(this, cQ)
735+ let bA = z(aY, ad(au))
736+ let bF = getIntegerValue(aY, ae(bA))
737+ let dp = D(aZ, an())
738+ let bG = D(aZ, ap())
739+ let dq = if ((bG > height))
727740 then 0
728- else (height - bD)
729- let dp = fraction((dn * do), bC, f)
730- let dq = fraction(dp, bs, bA)
731- let dr = bU(at, as, bx, 0)
732- let ce = dr._1
733- let cr = dr._2
734- let bT = dr._3
735- let cv = max([(ce - cu), g])
736- let ds = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
737- let cU = max([p(ds[0]), 0])
738- let dt = r(ds[1])
739- let cV = cv
740- let cW = min([(cV * toBigInt(2)), toBigInt(cU)])
741- let cX = (cV + cW)
742- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cX), toString(cQ), toString(cV), toString(cW), "soon"], e))
741+ else (height - bG)
742+ let dr = fraction((dp * dq), bF, g)
743+ let ds = fraction(dr, bv, bD)
744+ let dt = bW(au, at, bA, 0)
745+ let cg = dt._1
746+ let ct = dt._2
747+ let bV = dt._3
748+ let cx = max([(cg - cw), h])
749+ let du = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
750+ let cW = max([q(du[0]), 0])
751+ let dv = s(du[1])
752+ let cX = cx
753+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
754+ let cZ = (cX + cY)
755+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(cZ), toString(cS), toString(cX), toString(cY), "soon"], f))
743756 }
744757
745758
746759
747-@Callable(cl)
748-func stakedByUserREADONLY (at,as) = {
749- let bs = valueOrElse(getInteger(ar(as, at)), 0)
750- $Tuple2(nil, bs)
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
751764 }
752765
753766
754767
755-@Callable(cl)
756-func usersListTraversal (aB) = {
757- let cz = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
758771 then true
759- else cm(cl)
760- if ((cz == cz))
772+ else co(cn)
773+ if ((cB == cB))
761774 then {
762- let be = bc(aB)
763- let du = getString(bb(aB))
764- let bk = getString(bd(be))
765- let n = du
766- if ($isInstanceOf(n, "Unit"))
775+ let bh = bf(aC)
776+ let dw = getString(be(aC))
777+ let bn = getString(bg(bh))
778+ let o = dw
779+ if ($isInstanceOf(o, "Unit"))
767780 then {
768- let dv = bk
769- if ($isInstanceOf(dv, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
770783 then $Tuple2(nil, false)
771- else if ($isInstanceOf(dv, "String"))
784+ else if ($isInstanceOf(dx, "String"))
772785 then {
773- let dw = dv
774- $Tuple2([StringEntry(bb(aB), dw)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
775788 }
776789 else throw("Match error")
777790 }
778- else if ($isInstanceOf(n, "String"))
791+ else if ($isInstanceOf(o, "String"))
779792 then {
780- let aD = n
781- let cu = D(this, aw(aB, aD))
782- let cp = y(aX, ac(aB))
783- let ce = bU(aB, aD, cp, 0)._1
784- let cv = (ce - cu)
785- let cw = true
786- let cx = if ((cv > g))
787- then invoke(this, "claimWxINTERNAL", [aB, aD, cw], nil)
793+ let aE = o
794+ let cw = E(this, ax(aC, aE))
795+ let cr = z(aY, ad(aC))
796+ let cg = bW(aC, aE, cr, 0)._1
797+ let cx = (cg - cw)
798+ let cy = true
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
788801 else unit
789- if ((cx == cx))
802+ if ((cz == cz))
790803 then {
791- let dx = getString(bi(be, aD))
792- let dv = dx
793- if ($isInstanceOf(dv, "Unit"))
794- then $Tuple2([DeleteEntry(bb(aB))], false)
795- else if ($isInstanceOf(dv, "String"))
804+ let dz = getString(bl(bh, aE))
805+ let dx = dz
806+ if ($isInstanceOf(dx, "Unit"))
807+ then $Tuple2([DeleteEntry(be(aC))], false)
808+ else if ($isInstanceOf(dx, "String"))
796809 then {
797- let dy = dv
798- $Tuple2([StringEntry(bb(aB), dy)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
799812 }
800813 else throw("Match error")
801814 }
802815 else throw("Strict value is not equal to itself.")
803816 }
804817 else throw("Match error")
805818 }
806819 else throw("Strict value is not equal to itself.")
807820 }
808821
809822
810823
811-@Callable(cl)
812-func onModifyWeight (at,bx) = if ((cl.caller != aX))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
813826 then throw("permissions denied")
814827 else {
815- let dz = bw(at, bx, 0)
816- let bu = dz._1
817- let bW = dz._2
818- let bX = dz._3
819- bW
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
820833 }
821834
822835
823-@Verifier(dA)
824-func dB () = {
825- let dC = {
826- let n = ch()
827- if ($isInstanceOf(n, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
828841 then {
829- let cn = n
830- cn
842+ let cp = o
843+ cp
831844 }
832- else if ($isInstanceOf(n, "Unit"))
833- then dA.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
834847 else throw("Match error")
835848 }
836- sigVerify(dA.bodyBytes, dA.proofs[0], dC)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
837850 }
838851

github/deemru/w8io/fabc49c 
357.48 ms