tx · 3sHCqqxA8CHzqLKjCc3Je6s1Ed1ZYyQN2y4FXV7hEMn2

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.03500000 Waves

2022.06.09 17:32 [2088966] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "3sHCqqxA8CHzqLKjCc3Je6s1Ed1ZYyQN2y4FXV7hEMn2", "fee": 3500000, "feeAssetId": null, "timestamp": 1654785130625, "version": 1, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "216Bp3LCgmRxPgY9gFg4VJZtUKy35VUVxhMXPcBjwxundcw1Boay4YEcgBeSZaPNp1jktVpedTzuLqqSZjcGBErs" ], "script": "base64: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TVVMVDE4AQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAAAAAAAAAAAAQAAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAAAAAAAAAAAAgAAAAAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAAAAAAAAAAMAAAAAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAAAAAAAAAABAAAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAAAAAAAAAABQAAAAAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAAAAAAAAAAGAAAAABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAAAAAAAAAAHAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAAAAFmtleVN0YWJsZVBvb2xBZGRvbkFkZHIAAAAAAgAAABclc19fc3RhYmxlUG9vbEFkZG9uQWRkcgEAAAAaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABBrZXlGYWN0b3J5THBMaXN0AAAAAAIAAAAQJXNfX2xwVG9rZW5zTGlzdAEAAAAma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABRrZXlGYWN0b3J5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAApwb29sV2VpZ2h0CQAETAAAAAIFAAAAD2NvbnRyYWN0QWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAACnJlYWRMcExpc3QAAAABAAAAB2ZhY3RvcnkJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAdmYWN0b3J5CQEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAAAUAAAADU0VQAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEAAAAHZmFjdG9yeQkABLUAAAACCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAAAAAgUAAAAHZmFjdG9yeQkBAAAADWtleUZhY3RvcnlDZmcAAAAABQAAAANTRVABAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAAAgAAABslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAAAAIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAAAAAACAAAAHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAIAAAAaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAAAAG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawEAAAAPa2V5U3Rha2VkQnlVc2VyAAAAAgAAAA51c2VyQWRkcmVzc1N0cgAAAAxscEFzc2V0SWRTdHIJAAS5AAAAAgkABEwAAAACAgAAAA4lcyVzJXNfX3N0YWtlZAkABEwAAAACBQAAAA51c2VyQWRkcmVzc1N0cgkABEwAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAAA25pbAUAAAADU0VQAQAAAA5rZXlTdGFrZWRUb3RhbAAAAAEAAAAMbHBBc3NldElkU3RyCQABLAAAAAICAAAAFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQAAAAxscEFzc2V0SWRTdHIBAAAAEGtleUNsYWltZWRCeVVzZXIAAAACAAAADGxwQXNzZXRJZFN0cgAAAA51c2VyQWRkcmVzc1N0cgkABLkAAAACCQAETAAAAAICAAAADyVzJXMlc19fY2xhaW1lZAkABEwAAAACBQAAAA51c2VyQWRkcmVzc1N0cgkABEwAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAAA25pbAUAAAADU0VQAQAAABlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkAAAAAgAAAAxscEFzc2V0SWRTdHIAAAAOdXNlckFkZHJlc3NTdHIJAAS5AAAAAgkABEwAAAACAgAAABglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIJAARMAAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwFAAAAA1NFUAEAAAAba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkAAAAAgAAAAxscEFzc2V0SWRTdHIAAAAOdXNlckFkZHJlc3NTdHIJAAS5AAAAAgkABEwAAAACAgAA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AAZoZWlnaHQJAARMAAAAAgkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAABmFtb3VudAUAAAADbmlsBQAAAANTRVABAAAAFU9wZXJhdGlvbkhpc3RvcnlFbnRyeQAAAAUAAAAEdHlwZQAAAAt1c2VyQWRkcmVzcwAAAAlscEFzc2V0SWQAAAAGYW1vdW50AAAABHR4SWQJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAAAAAwUAAAAEdHlwZQUAAAALdXNlckFkZHJlc3MJAAJYAAAAAQUAAAAEdHhJZAkBAAAAE2Zvcm1hdEhpc3RvcnlSZWNvcmQAAAAEBQAAAAt1c2VyQWRkcmVzcwUAAAAJbHBBc3NldElkBQAAAAR0eXBlBQAAAAZhbW91bnQAAAAADmZhY3RvcnlBZGRyZXNzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAEWtleUZhY3RvcnlBZGRyZXNzAAAAAAAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA5mYWN0b3J5QWRkcmVzcwAAAAAKZmFjdG9yeUNmZwkBAAAAFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0AAAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAAAAAQUAAAAKZmFjdG9yeUNmZwAAAAAQYm9vc3RpbmdDb250cmFjdAkBAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcBAAAAG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAAAAAQAAAAMc3Rha2VkQnlVc2VyAAAAJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwAAABp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQMDCQAAAAAAAAIFAAAAJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAADHN0YWtlZEJ5VXNlcgUAAAAKemVyb0JpZ0ludAcFAAAACnplcm9CaWdJbnQDCQAAAAAAAAIFAAAADHN0YWtlZEJ5VXNlcgUAAAAKemVyb0JpZ0ludAUAAAASd3hQZXJMcEludGVncmFsTmV3AwMJAAE/AAAAAgUAAAAmd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRPclplcm8FAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAMc3Rha2VkQnlVc2VyBQAAAAp6ZXJvQmlnSW50BwkBAAAABXZhbHVlAAAAAQkAAagAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwUAAAAad3hQZXJMcEludGVncmFsVXNlckxhc3RLRVkJAAACAAAAAQIAAAAtY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0OiB1bmV4cGVjdGVkIHN0YXRlAQAAABRyZWZyZXNoUG9vbElOVEVHUkFMUwAAAAMAAAAMbHBBc3NldElkU3RyAAAADnBvb2xBZGRyZXNzU3RyAAAADWxwRGVsdGFBbW91bnQEAAAADnN0YWtlZFRvdGFsS0VZCQEAAAAOa2V5U3Rha2VkVG90YWwAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAAC3N0YWtlZFRvdGFsCQABNgAAAAEJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAOc3Rha2VkVG90YWxLRVkEAAAAEm5vblplcm9TdGFrZWRUb3RhbAMJAAAAAAAAAgUAAAALc3Rha2VkVG90YWwFAAAACnplcm9CaWdJbnQFAAAACW9uZUJpZ0ludAUAAAALc3Rha2VkVG90YWwEAAAACnBvb2xXZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAFGtleUZhY3RvcnlQb29sV2VpZ2h0AAAAAQUAAAAOcG9vbEFkZHJlc3NTdHIEAAAAEmVtaXNzaW9uU3RhcnRCbG9jawkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABAAAAAVNVUxUMwAAAAAAAAAD6AQAAAAUd3hFbWlzc2lvblBlckJsb2NrWDMJAABoAAAAAgkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAABQAAAAVNVUxUMwQAAAAYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQAAawAAAAMFAAAAFHd4RW1pc3Npb25QZXJCbG9ja1gzBQAAAApwb29sV2VpZ2h0CQAAaAAAAAIFAAAADlBPT0xXRUlHSFRNVUxUAAAAAAAAAAADBAAAABJ3eFBlckxwSW50ZWdyYWxLRVkJAQAAABJrZXlXeFBlckxwSW50ZWdyYWwAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAAH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkJAQAAAB9rZXlXeFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0AAAAAQUAAAAMbHBBc3NldElkU3RyBAAAAAp3eFBlckxwS0VZCQEAAAAKa2V5V3hQZXJMcAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAcd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodAkBAAAAD2dldEludE9yRGVmYXVsdAAAAAMFAAAABHRoaXMFAAAAH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkFAAAAEmVtaXNzaW9uU3RhcnRCbG9jawQAAAAPd3hQZXJMcEludGVncmFsCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAASd3hQZXJMcEludGVncmFsS0VZBAAAAA93eFBlckxwT3JaZXJvWDMAAAAAAAAAAAAEAAAAAmRoCQABlgAAAAEJAARMAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAAAl3eFBlckxwWDMDCQEAAAACIT0AAAACBQAAAA93eFBlckxwT3JaZXJvWDMAAAAAAAAAAAAJAAE2AAAAAQUAAAAPd3hQZXJMcE9yWmVyb1gzCQABPAAAAAMJAAE2AAAAAQUAAAAYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQABNgAAAAEFAAAABU1VTFQ4BQAAABJub25aZXJvU3Rha2VkVG90YWwEAAAADnN0YWtlZFRvdGFsTmV3CQABNwAAAAIFAAAAC3N0YWtlZFRvdGFsCQABNgAAAAEFAAAADWxwRGVsdGFBbW91bnQEAAAAFW5vblplcm9TdGFrZWRUb3RhbE5ldwMJAAAAAAAAAgUAAAAOc3Rha2VkVG90YWxOZXcFAAAACnplcm9CaWdJbnQFAAAACW9uZUJpZ0ludAUAAAAOc3Rha2VkVG90YWxOZXcEAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwkAATcAAAACCQABNgAAAAEFAAAAD3d4UGVyTHBJbnRlZ3JhbAkAATkAAAACBQAAAAl3eFBlckxwWDMJAAE2AAAAAQUAAAACZGgEAAAADHd4UGVyTHBYM05ldwkAAToAAAACCQABNgAAAAEFAAAAGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwUAAAAVbm9uWmVyb1N0YWtlZFRvdGFsTmV3BAAAAB93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0TmV3BQAAAAZoZWlnaHQEAAAABWRlYnVnCQAEuQAAAAIJAARMAAAAAgkAAaYAAAABBQAAABJ3eFBlckxwSW50ZWdyYWxOZXcJAARMAAAAAgkAAaQAAAABBQAAAAJkaAkABEwAAAACCQABpgAAAAEFAAAACXd4UGVyTHBYMwkABEwAAAACCQABpgAAAAEFAAAAC3N0YWtlZFRvdGFsCQAETAAAAAIJAAGkAAAAAQUAAAAYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQAETAAAAAIJAAGkAAAAAQUAAAAUd3hFbWlzc2lvblBlckJsb2NrWDMJAARMAAAAAgkAAaQAAAABBQAAAApwb29sV2VpZ2h0BQAAAANuaWwCAAAAAjo6CQAFFQAAAAMFAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJ3eFBlckxwSW50ZWdyYWxLRVkJAAGmAAAAAQUAAAASd3hQZXJMcEludGVncmFsTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAB93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0S0VZBQAAAB93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0TmV3CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACnd4UGVyTHBLRVkJAAGmAAAAAQUAAAAMd3hQZXJMcFgzTmV3BQAAAANuaWwFAAAABWRlYnVnAQAAABByZWZyZXNoSU5URUdSQUxTAAAABAAAAAxscEFzc2V0SWRTdHIAAAAOdXNlckFkZHJlc3NTdHIAAAAOcG9vbEFkZHJlc3NTdHIAAAANbHBEZWx0YUFtb3VudAQAAAANJHQwMTA5OTUxMTExNwkBAAAAFHJlZnJlc2hQb29sSU5URUdSQUxTAAAAAwUAAAAMbHBBc3NldElkU3RyBQAAAA5wb29sQWRkcmVzc1N0cgUAAAANbHBEZWx0YUFtb3VudAQAAAASd3hQZXJMcEludGVncmFsTmV3CAUAAAANJHQwMTA5OTUxMTExNwAAAAJfMQQAAAARcG9vbEludGVncmFsU1RBVEUIBQAAAA0kdDAxMDk5NTExMTE3AAAAAl8yBAAAAAlwb29sREVCVUcIBQAAAA0kdDAxMDk5NTExMTE3AAAAAl8zBAAAAAVNVUxUMwAAAAAAAAAD6AQAAAAPc3Rha2VkQnlVc2VyS0VZCQEAAAAPa2V5U3Rha2VkQnlVc2VyAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgQAAAAMc3Rha2VkQnlVc2VyCQEAAAAKcmVhZFN0YWtlZAAAAAEFAAAAD3N0YWtlZEJ5VXNlcktFWQQAAAAQd3hUb0NsYWltVXNlcktFWQkBAAAAEGtleVd4VG9DbGFpbVVzZXIAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAACN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodEtFWQkBAAAAI2tleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0AAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgQAAAAad3hQZXJMcEludGVncmFsVXNlckxhc3RLRVkJAQAAABprZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIEAAAADXd4VG9DbGFpbVVzZXIJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABB3eFRvQ2xhaW1Vc2VyS0VZBAAAACZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZBAAAABd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkBAAAAG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAAAAAQJAAE2AAAAAQUAAAAMc3Rha2VkQnlVc2VyCQABNgAAAAEFAAAAJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBQAAABJ3eFBlckxwSW50ZWdyYWxOZXcFAAAAGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZBAAAAAZNVUxUMTEJAABoAAAAAgUAAAAFTVVMVDgFAAAABU1VTFQzBAAAABB3eFRvQ2xhaW1Vc2VyTmV3CQABNwAAAAIJAAE2AAAAAQUAAAANd3hUb0NsYWltVXNlcgkAATwAAAADCQABOAAAAAIFAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwUAAAAXd3hQZXJMcEludGVncmFsVXNlckxhc3QJAAE2AAAAAQUAAAAMc3Rha2VkQnlVc2VyCQABNgAAAAEFAAAABk1VTFQxMQQAAAAad3hQZXJMcEludGVncmFsVXNlckxhc3ROZXcFAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwQAAAAjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXcFAAAABmhlaWdodAQAAAAFZGVidWcJAAS5AAAAAgkABEwAAAACCQABpgAAAAEFAAAAEHd4VG9DbGFpbVVzZXJOZXcJAARMAAAAAgkAAaYAAAABBQAAABd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkABEwAAAACCQABpAAAAAEFAAAADHN0YWtlZEJ5VXNlcgkABEwAAAACBQAAAAlwb29sREVCVUcJAARMAAAAAgkAAaQAAAABBQAAAAZoZWlnaHQFAAAAA25pbAIAAAACOjoJAAUVAAAAAwUAAAAQd3hUb0NsYWltVXNlck5ldwkABE4AAAACBQAAABFwb29sSW50ZWdyYWxTVEFURQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABB3eFRvQ2xhaW1Vc2VyS0VZCQABpgAAAAEFAAAAEHd4VG9DbGFpbVVzZXJOZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZBQAAACN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE5ldwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkAAaYAAAABBQAAABp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldwUAAAADbmlsBQAAAAVkZWJ1ZwEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAEdW5pdAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAttdXN0TWFuYWdlcgAAAAEAAAABaQQAAAACcGQJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDADCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAACcGsGBQAAAAJwZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgUAAAACcGQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAIAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAQAAABFmYWN0b3J5QWRkcmVzc1N0cgQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5RmFjdG9yeUFkZHJlc3MAAAAABQAAABFmYWN0b3J5QWRkcmVzc1N0cgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAABXN0YWtlAAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAA0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAlscEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAMbHBBc3NldElkU3RyCQACWAAAAAEFAAAACWxwQXNzZXRJZAQAAAAGYW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAOcG9vbEFkZHJlc3NTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwAAAAEFAAAADGxwQXNzZXRJZFN0cgkAASwAAAACAgAAABV1bnN1cHBvcnRlZCBscCBhc3NldCAFAAAADGxwQXNzZXRJZFN0cgQAAAAJY2FsbGVyU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAOdXNlckFkZHJlc3NTdHIDCQAAAAAAAAIFAAAACWNhbGxlclN0cgUAAAAOcG9vbEFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAljYWxsZXJTdHIEAAAAD3N0YWtlZEJ5VXNlcktFWQkBAAAAD2tleVN0YWtlZEJ5VXNlcgAAAAIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIEAAAADnN0YWtlZFRvdGFsS0VZCQEAAAAOa2V5U3Rha2VkVG90YWwAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAADHN0YWtlZEJ5VXNlcgkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA9zdGFrZWRCeVVzZXJLRVkEAAAAC3N0YWtlZFRvdGFsCQEAAAAKcmVhZFN0YWtlZAAAAAEFAAAADnN0YWtlZFRvdGFsS0VZBAAAAA0kdDAxNTE0ODE1MjY1CQEAAAAQcmVmcmVzaElOVEVHUkFMUwAAAAQFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAAZhbW91bnQEAAAAEHd4VG9DbGFpbVVzZXJOZXcIBQAAAA0kdDAxNTE0ODE1MjY1AAAAAl8xBAAAAA1pbnRlZ3JhbFNUQVRFCAUAAAANJHQwMTUxNDgxNTI2NQAAAAJfMgQAAAAFZGVidWcIBQAAAA0kdDAxNTE0ODE1MjY1AAAAAl8zCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD3N0YWtlZEJ5VXNlcktFWQkAAGQAAAACBQAAAAxzdGFrZWRCeVVzZXIFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOc3Rha2VkVG90YWxLRVkJAABkAAAAAgUAAAALc3Rha2VkVG90YWwFAAAABmFtb3VudAkABEwAAAACCQEAAAAVT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABQIAAAAFc3Rha2UFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIFAAAABmFtb3VudAgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAADbmlsBQAAAA1pbnRlZ3JhbFNUQVRFAAAAAWkBAAAAB3Vuc3Rha2UAAAACAAAADGxwQXNzZXRJZFN0cgAAAAZhbW91bnQEAAAACWxwQXNzZXRJZAkAAlkAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAADnBvb2xBZGRyZXNzU3RyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcAAAABBQAAAAxscEFzc2V0SWRTdHIJAAEsAAAAAgIAAAAVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQAAAAxscEFzc2V0SWRTdHIEAAAACXBvb2xBZGRvbgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAWa2V5U3RhYmxlUG9vbEFkZG9uQWRkcgAAAAAFAAAADnBvb2xBZGRyZXNzU3RyBAAAAAljYWxsZXJTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyQWRkcmVzc1N0cgMDCQAAAAAAAAIFAAAACWNhbGxlclN0cgUAAAAOcG9vbEFkZHJlc3NTdHIGCQAAAAAAAAIFAAAACWNhbGxlclN0cgUAAAAJcG9vbEFkZG9uCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAJY2FsbGVyU3RyBAAAAA9zdGFrZWRCeVVzZXJLRVkJAQAAAA9rZXlTdGFrZWRCeVVzZXIAAAACBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAMbHBBc3NldElkU3RyBAAAAA5zdGFrZWRUb3RhbEtFWQkBAAAADmtleVN0YWtlZFRvdGFsAAAAAQUAAAAMbHBBc3NldElkU3RyBAAAAAxzdGFrZWRCeVVzZXIJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAPc3Rha2VkQnlVc2VyS0VZBAAAAAtzdGFrZWRUb3RhbAkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA5zdGFrZWRUb3RhbEtFWQQAAAANJHQwMTY0MDIxNjUyMAkBAAAAEHJlZnJlc2hJTlRFR1JBTFMAAAAEBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA5wb29sQWRkcmVzc1N0cgkBAAAAAS0AAAABBQAAAAZhbW91bnQEAAAAEHd4VG9DbGFpbVVzZXJOZXcIBQAAAA0kdDAxNjQwMjE2NTIwAAAAAl8xBAAAAA1pbnRlZ3JhbFNUQVRFCAUAAAANJHQwMTY0MDIxNjUyMAAAAAJfMgQAAAAFZGVidWcIBQAAAA0kdDAxNjQwMjE2NTIwAAAAAl8zAwkAAGYAAAACBQAAAAZhbW91bnQFAAAADHN0YWtlZEJ5VXNlcgkAAAIAAAABAgAAACRwYXNzZWQgYW1vdW50IGlzIGxlc3MgdGhlbiBhdmFpbGFibGUJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPc3Rha2VkQnlVc2VyS0VZCQAAZQAAAAIFAAAADHN0YWtlZEJ5VXNlcgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5zdGFrZWRUb3RhbEtFWQkAAGUAAAACBQAAAAtzdGFrZWRUb3RhbAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAAlscEFzc2V0SWQJAARMAAAAAgkBAAAAFU9wZXJhdGlvbkhpc3RvcnlFbnRyeQAAAAUCAAAAB3Vuc3Rha2UFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIFAAAABmFtb3VudAgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAADbmlsBQAAAA1pbnRlZ3JhbFNUQVRFAAAAAWkBAAAAB2NsYWltV3gAAAABAAAADGxwQXNzZXRJZFN0cgQAAAALdXNlckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAOdXNlckFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA5wb29sQWRkcmVzc1N0cgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQUAAAAMbHBBc3NldElkU3RyBAAAABBjbGFpbWVkQnlVc2VyS0VZCQEAAAAQa2V5Q2xhaW1lZEJ5VXNlcgAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIEAAAAD2NsYWltZWRUb3RhbEtFWQkBAAAAD2tleUNsYWltZWRUb3RhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQkBAAAAGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAABtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkJAQAAABtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAAA1jbGFpbWVkQnlVc2VyCQABNgAAAAEJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABBjbGFpbWVkQnlVc2VyS0VZBAAAABZjbGFpbWVkQnlVc2VyTWluUmV3YXJkCQABNgAAAAEJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZBAAAABhjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQJAAE2AAAAAQkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQQAAAAMY2xhaW1lZFRvdGFsCQABNgAAAAEJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAAA9jbGFpbWVkVG90YWxLRVkEAAAADSR0MDE3NzU2MTc4NjgJAQAAABByZWZyZXNoSU5URUdSQUxTAAAABAUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAOcG9vbEFkZHJlc3NTdHIAAAAAAAAAAAAEAAAAEHd4VG9DbGFpbVVzZXJOZXcIBQAAAA0kdDAxNzc1NjE3ODY4AAAAAl8xBAAAAA1pbnRlZ3JhbFNUQVRFCAUAAAANJHQwMTc3NTYxNzg2OAAAAAJfMgQAAAAFZGVidWcIBQAAAA0kdDAxNzc1NjE3ODY4AAAAAl8zBAAAABBhdmFpbGFibGVUb0NsYWltCQABOAAAAAIFAAAAEHd4VG9DbGFpbVVzZXJOZXcFAAAADWNsYWltZWRCeVVzZXIDCQABQAAAAAIFAAAACnplcm9CaWdJbnQFAAAAEGF2YWlsYWJsZVRvQ2xhaW0JAAACAAAAAQIAAAAQbm90aGluZyB0byBjbGFpbQQAAAASd3hBbW91bnRCb29zdFRvdGFsCQEAAAAFYXNJbnQAAAABCQABkQAAAAIJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAAEGJvb3N0aW5nQ29udHJhY3QCAAAADGNsYWltV3hCb29zdAkABEwAAAACBQAAAAxscEFzc2V0SWRTdHIJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAABAAAAA1taW5SZXdhcmRQYXJ0BQAAABBhdmFpbGFibGVUb0NsYWltBAAAAA9ib29zdFJld2FyZFBhcnQJAAGZAAAAAQkABEwAAAACCQABOQAAAAIFAAAADW1pblJld2FyZFBhcnQJAAE2AAAAAQAAAAAAAAAAAgkABEwAAAACCQABNgAAAAEFAAAAEnd4QW1vdW50Qm9vc3RUb3RhbAUAAAADbmlsBAAAAAl3eEFzc2V0SWQJAQAAAAxhc0J5dGVWZWN0b3IAAAABCQABkQAAAAIJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAAEGVtaXNzaW9uQ29udHJhY3QCAAAABGVtaXQJAARMAAAAAgUAAAANbWluUmV3YXJkUGFydAUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAAEAAAACWVtaXRCb29zdAkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAQZW1pc3Npb25Db250cmFjdAIAAAAEZW1pdAkABEwAAAACBQAAAA9ib29zdFJld2FyZFBhcnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAllbWl0Qm9vc3QFAAAACWVtaXRCb29zdAQAAAASY2xhaW1lZEJ5VXNlclZhbHVlCQABNwAAAAIFAAAADWNsYWltZWRCeVVzZXIFAAAAEGF2YWlsYWJsZVRvQ2xhaW0EAAAAHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydAkAATcAAAACBQAAABZjbGFpbWVkQnlVc2VyTWluUmV3YXJkBQAAAA1taW5SZXdhcmRQYXJ0BAAAACtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0CQABNwAAAAIFAAAAFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQFAAAADW1pblJld2FyZFBhcnQEAAAAIGNsYWltZWRUb3RhbFBsdXNBdmFpbGFibGVUb0NsYWltCQABNwAAAAIFAAAAFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQFAAAADW1pblJld2FyZFBhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAQY2xhaW1lZEJ5VXNlcktFWQkAAaYAAAABBQAAABJjbGFpbWVkQnlVc2VyVmFsdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQkAAaYAAAABBQAAAB5jbGFpbWVkQnlVc2VyTWluUmV3YXJkUGx1c1BhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZCQABpgAAAAEFAAAAK2NsYWltZWRCeVVzZXJCb29zdFJld2FyZFBsdXNCb29zdFJld2FyZFBhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPY2xhaW1lZFRvdGFsS0VZCQABpgAAAAEFAAAAIGNsYWltZWRUb3RhbFBsdXNBdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzCQABoAAAAAEFAAAADW1pblJld2FyZFBhcnQFAAAACXd4QXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwkAAaAAAAABBQAAAA9ib29zdFJld2FyZFBhcnQFAAAACXd4QXNzZXRJZAkABEwAAAACCQEAAAAVT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABQIAAAAFY2xhaW0FAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIJAAGgAAAAAQUAAAAQYXZhaWxhYmxlVG9DbGFpbQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA9jbGFpbVd4UkVBRE9OTFkAAAACAAAADGxwQXNzZXRJZFN0cgAAAA51c2VyQWRkcmVzc1N0cgQAAAAPc3Rha2VkQnlVc2VyS0VZCQEAAAAPa2V5U3Rha2VkQnlVc2VyAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgQAAAAOc3Rha2VkVG90YWxLRVkJAQAAAA5rZXlTdGFrZWRUb3RhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAQY2xhaW1lZEJ5VXNlcktFWQkBAAAAEGtleUNsYWltZWRCeVVzZXIAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAAAxzdGFrZWRCeVVzZXIJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAPc3Rha2VkQnlVc2VyS0VZBAAAAAtzdGFrZWRUb3RhbAkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA5zdGFrZWRUb3RhbEtFWQQAAAANY2xhaW1lZEJ5VXNlcgkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAEGNsYWltZWRCeVVzZXJLRVkEAAAADnBvb2xBZGRyZXNzU3RyCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAACnBvb2xXZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAFGtleUZhY3RvcnlQb29sV2VpZ2h0AAAAAQUAAAAOcG9vbEFkZHJlc3NTdHIEAAAAEnd4RW1pc3Npb25QZXJCbG9jawkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAABAAAABJlbWlzc2lvblN0YXJ0QmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAQAAAAMcGFzc2VkQmxvY2tzAwkAAGYAAAACBQAAABJlbWlzc2lvblN0YXJ0QmxvY2sFAAAABmhlaWdodAAAAAAAAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmVtaXNzaW9uU3RhcnRCbG9jawQAAAAOcG9vbFd4RW1pc3Npb24JAABrAAAAAwkAAGgAAAACBQAAABJ3eEVtaXNzaW9uUGVyQmxvY2sFAAAADHBhc3NlZEJsb2NrcwUAAAAKcG9vbFdlaWdodAUAAAAOUE9PTFdFSUdIVE1VTFQEAAAADHVzZXJXeFJld2FyZAkAAGsAAAADBQAAAA5wb29sV3hFbWlzc2lvbgUAAAAMc3Rha2VkQnlVc2VyBQAAAAtzdGFrZWRUb3RhbAQAAAANJHQwMjA0NTMyMDU2NQkBAAAAEHJlZnJlc2hJTlRFR1JBTFMAAAAEBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA5wb29sQWRkcmVzc1N0cgAAAAAAAAAAAAQAAAAQd3hUb0NsYWltVXNlck5ldwgFAAAADSR0MDIwNDUzMjA1NjUAAAACXzEEAAAADWludGVncmFsU1RBVEUIBQAAAA0kdDAyMDQ1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", "chainId": 84, "height": 2088966, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HDCgDEvvd9RTLBaFdh2itGe2NRHQzF9QEavsHP4ajjX4 Next: EG8Pa4vwYdYUGZw84wiFyDVuNWEjKxsX2P9Ay8UjjZ5u Diff:
OldNewDifferences
1313
1414 let f = b
1515
16-func g (h) = {
17- let i = h
18- if ($isInstanceOf(i, "List[Any]"))
16+let g = toBigInt(0)
17+
18+let h = toBigInt(1)
19+
20+func i (j) = {
21+ let k = j
22+ if ($isInstanceOf(k, "List[Any]"))
1923 then {
20- let j = i
21- j
24+ let l = k
25+ l
2226 }
2327 else throw("fail to cast into List[Any]")
2428 }
2529
2630
27-func k (h) = {
28- let i = h
29- if ($isInstanceOf(i, "Int"))
31+func m (j) = {
32+ let k = j
33+ if ($isInstanceOf(k, "Int"))
3034 then {
31- let l = i
32- l
33- }
34- else throw("fail to cast into Int")
35- }
36-
37-
38-func m (h) = {
39- let i = h
40- if ($isInstanceOf(i, "String"))
41- then {
42- let n = i
35+ let n = k
4336 n
4437 }
4538 else throw("fail to cast into Int")
4639 }
4740
4841
49-func o (h) = {
50- let i = h
51- if ($isInstanceOf(i, "ByteVector"))
42+func o (j) = {
43+ let k = j
44+ if ($isInstanceOf(k, "String"))
5245 then {
53- let p = i
46+ let p = k
5447 p
5548 }
5649 else throw("fail to cast into Int")
5750 }
5851
5952
60-func q (r) = valueOrErrorMessage(getString(r), (("mandatory this." + r) + " is not defined"))
53+func q (j) = {
54+ let k = j
55+ if ($isInstanceOf(k, "ByteVector"))
56+ then {
57+ let r = k
58+ r
59+ }
60+ else throw("fail to cast into Int")
61+ }
6162
6263
63-func s (t,r) = valueOrErrorMessage(getString(t, r), (((("mandatory " + toString(t)) + ".") + r) + " is not defined"))
64+func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
6465
6566
66-func u (t,r) = valueOrElse(getInteger(t, r), 0)
67+func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
6768
6869
69-func v (t,r,w) = valueOrElse(getInteger(t, r), w)
70+func w (t,u) = valueOrElse(getInteger(t, u), 0)
7071
7172
72-func x (t,r) = valueOrErrorMessage(getInteger(t, r), (("mandatory this." + r) + " is not defined"))
73+func x (t,u,y) = valueOrElse(getInteger(t, u), y)
7374
7475
75-func y (z,A) = fraction(toBigInt(z), d, toBigInt(A))
76+func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
7677
7778
78-func B (h,C) = toInt(fraction(h, toBigInt(C), d))
79+func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
7980
8081
81-func D () = "%s%s__config__factoryAddress"
82+func D (j,E) = toInt(fraction(j, toBigInt(E), d))
8283
8384
84-let E = 1
85-
86-let F = 2
87-
88-let G = 3
89-
90-let H = 4
91-
92-let I = 5
93-
94-let J = 6
95-
96-let K = 7
97-
98-func L () = "%s__factoryConfig"
85+func F () = "%s%s__config__factoryAddress"
9986
10087
101-func M () = "%s__managerPublicKey"
88+let G = 1
89+
90+let H = 2
91+
92+let I = 3
93+
94+let J = 4
95+
96+let K = 5
97+
98+let L = 6
99+
100+let M = 7
101+
102+func N () = "%s__factoryConfig"
102103
103104
104-func N () = "%s__pendingManagerPublicKey"
105+func O () = "%s__managerPublicKey"
105106
106107
107-func O () = "%s__stablePoolAddonAddr"
108+func P () = "%s__pendingManagerPublicKey"
108109
109110
110-func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
111+func Q () = "%s__stablePoolAddonAddr"
111112
112113
113-func R () = "%s__lpTokensList"
114+func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
114115
115116
116-func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
117+func T () = "%s__lpTokensList"
117118
118119
119-func T (U) = makeString(["%s%s", "poolWeight", U], e)
120+func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
120121
121122
122-func V (W) = split(valueOrElse(getString(W, R()), ""), e)
123+func V (W) = makeString(["%s%s", "poolWeight", W], e)
123124
124125
125-func X (W) = split(s(W, L()), e)
126+func X (Y) = split(valueOrElse(getString(Y, T()), ""), e)
126127
127128
128-func Y (Z) = addressFromStringValue(Z[F])
129+func Z (Y) = split(v(Y, N()), e)
129130
130131
131-func aa (Z) = addressFromStringValue(Z[I])
132+func aa (ab) = addressFromStringValue(ab[H])
132133
133134
134-func ab (Z) = addressFromStringValue(Z[E])
135+func ac (ab) = addressFromStringValue(ab[K])
135136
136137
137-func ac () = "%s%s__ratePerBlock__current"
138+func ad (ab) = addressFromStringValue(ab[G])
138139
139140
140-func ad () = "%s%s__ratePerBlockMax__current"
141+func ae () = "%s%s__ratePerBlock__current"
141142
142143
143-func ae () = "%s%s__emission__startBlock"
144+func af () = "%s%s__ratePerBlockMax__current"
144145
145146
146-func af () = "%s%s__emission__duration"
147+func ag () = "%s%s__emission__startBlock"
147148
148149
149-func ag () = "%s%s__emission__endBlock"
150+func ah () = "%s%s__emission__duration"
150151
151152
152-func ah (ai,aj) = makeString(["%s%s%s__staked", ai, aj], e)
153+func ai () = "%s%s__emission__endBlock"
153154
154155
155-func ak (aj) = ("%s%s%s__staked__total__" + aj)
156+func aj (ak,al) = makeString(["%s%s%s__staked", ak, al], e)
156157
157158
158-func al (aj,ai) = makeString(["%s%s%s__claimed", ai, aj], e)
159+func am (al) = ("%s%s%s__staked__total__" + al)
159160
160161
161-func am (aj,ai) = makeString(["%s%s%s__claimedMinReward", ai, aj], e)
162+func an (al,ak) = makeString(["%s%s%s__claimed", ak, al], e)
162163
163164
164-func an (aj,ai) = makeString(["%s%s%s__claimedBoostReward", ai, aj], e)
165+func ao (al,ak) = makeString(["%s%s%s__claimedMinReward", ak, al], e)
165166
166167
167-func ao (aj) = makeString(["%s%s%s__claimed", "total", aj], e)
168+func ap (al,ak) = makeString(["%s%s%s__claimedBoostReward", ak, al], e)
168169
169170
170-func ap (r) = valueOrElse(getInteger(this, r), 0)
171+func aq (al) = makeString(["%s%s%s__claimed", "total", al], e)
171172
172173
173-func aq (ar) = makeString(["%s%s%s", ar, "total", "bal"], e)
174+func ar (u) = valueOrElse(getInteger(this, u), 0)
174175
175176
176-func as (ar,at) = makeString(["%s%s%s", ar, at, "bal"], e)
177+func as (at) = makeString(["%s%s%s", at, "total", "bal"], e)
177178
178179
179-func au (ar) = makeString(["%s%s%s", ar, "total", "balINT"], e)
180+func au (at,av) = makeString(["%s%s%s", at, av, "bal"], e)
180181
181182
182-func av (ar,at) = makeString(["%s%s%s", ar, at, "balINT"], e)
183+func aw (at) = makeString(["%s%s%s", at, "total", "balINT"], e)
183184
184185
185-func aw (ar) = makeString(["%s%s%s", ar, "total", "lastUpd"], e)
186+func ax (at,av) = makeString(["%s%s%s", at, av, "balINT"], e)
186187
187188
188-func ax (ar,at) = makeString(["%s%s%s", ar, at, "lastUpd"], e)
189+func ay (at) = makeString(["%s%s%s", at, "total", "lastUpd"], e)
189190
190191
191-func ay (ar) = makeString(["%s%s%s%s", ar, "common", "lpInt"], e)
192+func az (at,av) = makeString(["%s%s%s", at, av, "lastUpd"], e)
192193
193194
194-func az (ar) = makeString(["%s%s%s%s", ar, "common", "lpIntH"], e)
195+func aA (at) = makeString(["%s%s%s%s", at, "common", "lpInt"], e)
195196
196197
197-func aA (ar,at) = makeString(["%s%s%s%s", ar, at, "lpInt"], e)
198+func aB (at) = makeString(["%s%s%s%s", at, "common", "lpIntH"], e)
198199
199200
200-func aB (ar,at) = makeString(["%s%s%s%s", ar, at, "lpIntH"], e)
201+func aC (at,av) = makeString(["%s%s%s%s", at, av, "lpInt"], e)
201202
202203
203-func aC (ar) = makeString(["%s", ar, "wxPerLp"], e)
204+func aD (at,av) = makeString(["%s%s%s%s", at, av, "lpIntH"], e)
204205
205206
206-func aD (ar) = makeString(["%s", ar, "wxPerLpX18"], e)
207+func aE (at) = makeString(["%s", at, "wxPerLp"], e)
207208
208209
209-func aE (ar,at) = makeString(["%s%s%s%s", ar, at, "uIntL"], e)
210+func aF (at) = makeString(["%s", at, "wxPerLpX18"], e)
210211
211212
212-func aF (aG,at,aH) = makeString(["%s%s%s%s__history", aG, at, aH], e)
213+func aG (at,av) = makeString(["%s%s%s%s", at, av, "uIntL"], e)
213214
214215
215-func aI (at,ar,aG,aJ) = makeString(["%s%s%s%d%d%d", at, ar, aG, toString(height), toString(lastBlock.timestamp), toString(aJ)], e)
216+func aH (aI,av,aJ) = makeString(["%s%s%s%s__history", aI, av, aJ], e)
216217
217218
218-func aK (aG,at,ar,aJ,aL) = StringEntry(aF(aG, at, toBase58String(aL)), aI(at, ar, aG, aJ))
219+func aK (av,at,aI,aL) = makeString(["%s%s%s%d%d%d", av, at, aI, toString(height), toString(lastBlock.timestamp), toString(aL)], e)
219220
220221
221-let aM = q(D())
222+func aM (aI,av,at,aL,aN) = StringEntry(aH(aI, av, toBase58String(aN)), aK(av, at, aI, aL))
222223
223-let aN = addressFromStringValue(aM)
224224
225-let Z = X(aN)
225+let aO = s(this, F())
226226
227-let aO = aa(Z)
227+let aP = addressFromStringValue(aO)
228228
229-let aP = Y(Z)
229+let ab = Z(aP)
230230
231-func aQ (aR,aS,aT,aU) = if (if ((aS == 0))
232- then (aR > 0)
231+let aQ = ac(ab)
232+
233+let aR = aa(ab)
234+
235+func aS (aT,aU,aV,aW) = if (if ((aU == g))
236+ then (aT > g)
233237 else false)
234- then 0
235- else if ((aR == 0))
236- then aT
237- else if (if ((aS > 0))
238- then (aR > 0)
238+ then g
239+ else if ((aT == g))
240+ then aV
241+ else if (if ((aU > g))
242+ then (aT > g)
239243 else false)
240- then x(this, aU)
244+ then value(parseBigInt(s(this, aW)))
241245 else throw("calcWxPerLpIntegralUserLast: unexpected state")
242246
243247
244-func aV (aj,aW,aX) = {
245- let aY = ak(aj)
246- let aZ = ap(aY)
247- let ba = getIntegerValue(aN, T(aW))
248- let bb = x(aO, ae())
249- let bc = 1000
250- let bd = (x(aO, ac()) * bc)
251- let be = fraction(bd, ba, (f * 3))
252- let bf = ay(aj)
253- let bg = az(aj)
254- let bh = aC(aj)
255- let bi = v(this, bg, bb)
256- let bj = u(this, bf)
257- let bk = 0
258- let bl = max([(height - bi), 0])
259- let bm = if ((bk != 0))
260- then bk
261- else fraction(be, b, aZ)
262- let bn = (aZ + aX)
263- let aT = (bj + (bm * bl))
264- let bo = (be / bn)
265- let bp = height
266- let bq = makeString([toString(aT), toString(bl), toString(bm), toString(aZ), toString(be), toString(bd), toString(ba)], "::")
267- $Tuple3(aT, [IntegerEntry(bf, aT), IntegerEntry(bg, bp), IntegerEntry(bh, bo)], bq)
248+func aX (al,aY,aZ) = {
249+ let ba = am(al)
250+ let bb = toBigInt(ar(ba))
251+ let bc = if ((bb == g))
252+ then h
253+ else bb
254+ let bd = getIntegerValue(aP, V(aY))
255+ let be = z(aQ, ag())
256+ let bf = 1000
257+ let bg = (z(aQ, ae()) * bf)
258+ let bh = fraction(bg, bd, (f * 3))
259+ let bi = aA(al)
260+ let bj = aB(al)
261+ let bk = aE(al)
262+ let bl = x(this, bj, be)
263+ let bm = w(this, bi)
264+ let bn = 0
265+ let bo = max([(height - bl), 0])
266+ let bp = if ((bn != 0))
267+ then toBigInt(bn)
268+ else fraction(toBigInt(bh), toBigInt(b), bc)
269+ let bq = (bb + toBigInt(aZ))
270+ let br = if ((bq == g))
271+ then h
272+ else bq
273+ let aV = (toBigInt(bm) + (bp * toBigInt(bo)))
274+ let bs = (toBigInt(bh) / br)
275+ let bt = height
276+ let bu = makeString([toString(aV), toString(bo), toString(bp), toString(bb), toString(bh), toString(bg), toString(bd)], "::")
277+ $Tuple3(aV, [StringEntry(bi, toString(aV)), IntegerEntry(bj, bt), StringEntry(bk, toString(bs))], bu)
268278 }
269279
270280
271-func br (aj,ai,aW,aX) = {
272- let bs = aV(aj, aW, aX)
273- let aT = bs._1
274- let bt = bs._2
275- let bu = bs._3
276- let bc = 1000
277- let bv = ah(ai, aj)
278- let aR = ap(bv)
279- let bw = aA(aj, ai)
280- let bx = aB(aj, ai)
281- let aU = aE(aj, ai)
282- let by = u(this, bw)
283- let aS = u(this, bx)
284- let bz = aQ(aR, aS, aT, aU)
285- let bA = (by + fraction((aT - bz), aR, (b * bc)))
286- let bB = aT
287- let bC = height
288- let bq = makeString([toString(bA), toString(bz), toString(aR), bu, toString(height)], "::")
289- $Tuple3(bA, (bt ++ [IntegerEntry(bw, bA), IntegerEntry(bx, bC), IntegerEntry(aU, bB)]), bq)
281+func bv (al,ak,aY,aZ) = {
282+ let bw = aX(al, aY, aZ)
283+ let aV = bw._1
284+ let bx = bw._2
285+ let by = bw._3
286+ let bf = 1000
287+ let bz = aj(ak, al)
288+ let aT = ar(bz)
289+ let bA = aC(al, ak)
290+ let bB = aD(al, ak)
291+ let aW = aG(al, ak)
292+ let bC = w(this, bA)
293+ let aU = w(this, bB)
294+ let bD = aS(toBigInt(aT), toBigInt(aU), aV, aW)
295+ let bE = (b * bf)
296+ let bF = (toBigInt(bC) + fraction((aV - bD), toBigInt(aT), toBigInt(bE)))
297+ let bG = aV
298+ let bH = height
299+ let bu = makeString([toString(bF), toString(bD), toString(aT), by, toString(height)], "::")
300+ $Tuple3(bF, (bx ++ [StringEntry(bA, toString(bF)), IntegerEntry(bB, bH), StringEntry(aW, toString(bG))]), bu)
290301 }
291302
292303
293-func bD () = {
294- let i = getString(M())
295- if ($isInstanceOf(i, "String"))
304+func bI () = {
305+ let k = getString(O())
306+ if ($isInstanceOf(k, "String"))
296307 then {
297- let bE = i
298- fromBase58String(bE)
308+ let bJ = k
309+ fromBase58String(bJ)
299310 }
300- else if ($isInstanceOf(i, "Unit"))
311+ else if ($isInstanceOf(k, "Unit"))
301312 then unit
302313 else throw("Match error")
303314 }
304315
305316
306-func bF () = {
307- let i = getString(N())
308- if ($isInstanceOf(i, "String"))
317+func bK () = {
318+ let k = getString(P())
319+ if ($isInstanceOf(k, "String"))
309320 then {
310- let bE = i
311- fromBase58String(bE)
321+ let bJ = k
322+ fromBase58String(bJ)
312323 }
313- else if ($isInstanceOf(i, "Unit"))
324+ else if ($isInstanceOf(k, "Unit"))
314325 then unit
315326 else throw("Match error")
316327 }
317328
318329
319-func bG (bH) = {
320- let bI = throw("Permission denied")
321- let i = bD()
322- if ($isInstanceOf(i, "ByteVector"))
330+func bL (bM) = {
331+ let bN = throw("Permission denied")
332+ let k = bI()
333+ if ($isInstanceOf(k, "ByteVector"))
323334 then {
324- let bJ = i
325- if ((bH.callerPublicKey == bJ))
335+ let bO = k
336+ if ((bM.callerPublicKey == bO))
326337 then true
327- else bI
338+ else bN
328339 }
329- else if ($isInstanceOf(i, "Unit"))
330- then if ((bH.caller == this))
340+ else if ($isInstanceOf(k, "Unit"))
341+ then if ((bM.caller == this))
331342 then true
332- else bI
343+ else bN
333344 else throw("Match error")
334345 }
335346
336347
337-@Callable(bH)
338-func constructor (bK) = {
339- let bL = bG(bH)
340- if ((bL == bL))
341- then [StringEntry(D(), bK)]
348+@Callable(bM)
349+func constructor (bP) = {
350+ let bQ = bL(bM)
351+ if ((bQ == bQ))
352+ then [StringEntry(F(), bP)]
342353 else throw("Strict value is not equal to itself.")
343354 }
344355
345356
346357
347-@Callable(bH)
348-func setManager (bM) = {
349- let bL = bG(bH)
350- if ((bL == bL))
358+@Callable(bM)
359+func setManager (bR) = {
360+ let bQ = bL(bM)
361+ if ((bQ == bQ))
351362 then {
352- let bN = fromBase58String(bM)
353- if ((bN == bN))
354- then [StringEntry(N(), bM)]
363+ let bS = fromBase58String(bR)
364+ if ((bS == bS))
365+ then [StringEntry(P(), bR)]
355366 else throw("Strict value is not equal to itself.")
356367 }
357368 else throw("Strict value is not equal to itself.")
359370
360371
361372
362-@Callable(bH)
373+@Callable(bM)
363374 func confirmManager () = {
364- let bO = bF()
365- let bP = if (isDefined(bO))
375+ let bT = bK()
376+ let bU = if (isDefined(bT))
366377 then true
367378 else throw("No pending manager")
368- if ((bP == bP))
379+ if ((bU == bU))
369380 then {
370- let bQ = if ((bH.callerPublicKey == value(bO)))
381+ let bV = if ((bM.callerPublicKey == value(bT)))
371382 then true
372383 else throw("You are not pending manager")
373- if ((bQ == bQ))
374- then [StringEntry(M(), toBase58String(value(bO))), DeleteEntry(N())]
384+ if ((bV == bV))
385+ then [StringEntry(O(), toBase58String(value(bT))), DeleteEntry(P())]
375386 else throw("Strict value is not equal to itself.")
376387 }
377388 else throw("Strict value is not equal to itself.")
379390
380391
381392
382-@Callable(bH)
383-func stake () = if ((size(bH.payments) != 1))
393+@Callable(bM)
394+func stake () = if ((size(bM.payments) != 1))
384395 then throw("invalid payment - exact one payment must be attached")
385396 else {
386- let bR = bH.payments[0]
387- let ar = value(bR.assetId)
388- let aj = toBase58String(ar)
389- let aJ = bR.amount
390- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
391- let bS = toString(bH.caller)
392- let ai = if ((bS == aW))
393- then toString(bH.originCaller)
394- else bS
395- let bv = ah(ai, aj)
396- let aY = ak(aj)
397- let aR = ap(bv)
398- let aZ = ap(aY)
399- let bT = br(aj, ai, aW, aJ)
400- let bA = bT._1
401- let bU = bT._2
402- let bq = bT._3
403- ([IntegerEntry(bv, (aR + aJ)), IntegerEntry(aY, (aZ + aJ)), aK("stake", ai, aj, aJ, bH.transactionId)] ++ bU)
397+ let bW = bM.payments[0]
398+ let at = value(bW.assetId)
399+ let al = toBase58String(at)
400+ let aL = bW.amount
401+ let aY = valueOrErrorMessage(getString(aP, R(al)), ("unsupported lp asset " + al))
402+ let bX = toString(bM.caller)
403+ let ak = if ((bX == aY))
404+ then toString(bM.originCaller)
405+ else bX
406+ let bz = aj(ak, al)
407+ let ba = am(al)
408+ let aT = ar(bz)
409+ let bb = ar(ba)
410+ let bY = bv(al, ak, aY, aL)
411+ let bF = bY._1
412+ let bZ = bY._2
413+ let bu = bY._3
414+ ([IntegerEntry(bz, (aT + aL)), IntegerEntry(ba, (bb + aL)), aM("stake", ak, al, aL, bM.transactionId)] ++ bZ)
404415 }
405416
406417
407418
408-@Callable(bH)
409-func unstake (aj,aJ) = {
410- let ar = fromBase58String(aj)
411- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
412- let bV = valueOrElse(getString(this, O()), aW)
413- let bS = toString(bH.caller)
414- let ai = if (if ((bS == aW))
419+@Callable(bM)
420+func unstake (al,aL) = {
421+ let at = fromBase58String(al)
422+ let aY = valueOrErrorMessage(getString(aP, R(al)), ("unsupported lp asset " + al))
423+ let ca = valueOrElse(getString(this, Q()), aY)
424+ let bX = toString(bM.caller)
425+ let ak = if (if ((bX == aY))
415426 then true
416- else (bS == bV))
417- then toString(bH.originCaller)
418- else bS
419- let bv = ah(ai, aj)
420- let aY = ak(aj)
421- let aR = ap(bv)
422- let aZ = ap(aY)
423- let bW = br(aj, ai, aW, -(aJ))
424- let bA = bW._1
425- let bU = bW._2
426- let bq = bW._3
427- if ((aJ > aR))
427+ else (bX == ca))
428+ then toString(bM.originCaller)
429+ else bX
430+ let bz = aj(ak, al)
431+ let ba = am(al)
432+ let aT = ar(bz)
433+ let bb = ar(ba)
434+ let cb = bv(al, ak, aY, -(aL))
435+ let bF = cb._1
436+ let bZ = cb._2
437+ let bu = cb._3
438+ if ((aL > aT))
428439 then throw("passed amount is less then available")
429- else ([IntegerEntry(bv, (aR - aJ)), IntegerEntry(aY, (aZ - aJ)), ScriptTransfer(bH.caller, aJ, ar), aK("unstake", ai, aj, aJ, bH.transactionId)] ++ bU)
440+ else ([IntegerEntry(bz, (aT - aL)), IntegerEntry(ba, (bb - aL)), ScriptTransfer(bM.caller, aL, at), aM("unstake", ak, al, aL, bM.transactionId)] ++ bZ)
430441 }
431442
432443
433444
434-@Callable(bH)
435-func claimWx (aj) = {
436- let at = bH.caller
437- let ai = toString(bH.caller)
438- let aW = s(aN, S(aj))
439- let bX = al(aj, ai)
440- let bY = ao(aj)
441- let bZ = am(aj, ai)
442- let ca = an(aj, ai)
443- let cb = u(this, bX)
444- let cc = u(this, bZ)
445- let cd = u(this, ca)
446- let ce = u(this, bY)
447- let cf = br(aj, ai, aW, 0)
448- let bA = cf._1
449- let bU = cf._2
450- let bq = cf._3
451- let cg = (bA - cb)
452- if ((0 >= cg))
445+@Callable(bM)
446+func claimWx (al) = {
447+ let av = bM.caller
448+ let ak = toString(bM.caller)
449+ let aY = v(aP, U(al))
450+ let cc = an(al, ak)
451+ let cd = aq(al)
452+ let ce = ao(al, ak)
453+ let cf = ap(al, ak)
454+ let cg = toBigInt(w(this, cc))
455+ let ch = toBigInt(w(this, ce))
456+ let ci = toBigInt(w(this, cf))
457+ let cj = toBigInt(w(this, cd))
458+ let ck = bv(al, ak, aY, 0)
459+ let bF = ck._1
460+ let bZ = ck._2
461+ let bu = ck._3
462+ let cl = (bF - cg)
463+ if ((g >= cl))
453464 then throw("nothing to claim")
454465 else {
455- let ch = k(g(invoke(aP, "claimWxBoost", [aj, ai], nil))[0])
456- let ci = cg
457- let cj = min([(ci * 2), ch])
458- let ck = o(g(invoke(aO, "emit", [ci], nil))[0])
459- let cl = g(invoke(aO, "emit", [cj], nil))
460- if ((cl == cl))
461- then [IntegerEntry(bX, (cb + cg)), IntegerEntry(bZ, (cc + ci)), IntegerEntry(ca, (cd + cj)), IntegerEntry(bY, (ce + cg)), ScriptTransfer(at, ci, ck), ScriptTransfer(at, cj, ck), aK("claim", ai, aj, cg, bH.transactionId)]
466+ let cm = m(i(invoke(aR, "claimWxBoost", [al, ak], nil))[0])
467+ let cn = cl
468+ let co = min([(cn * toBigInt(2)), toBigInt(cm)])
469+ let cp = q(i(invoke(aQ, "emit", [cn], nil))[0])
470+ let cq = i(invoke(aQ, "emit", [co], nil))
471+ if ((cq == cq))
472+ then {
473+ let cr = (cg + cl)
474+ let cs = (ch + cn)
475+ let ct = (ch + cn)
476+ let cu = (ch + cn)
477+[StringEntry(cc, toString(cr)), StringEntry(ce, toString(cs)), StringEntry(cf, toString(ct)), StringEntry(cd, toString(cu)), ScriptTransfer(av, toInt(cn), cp), ScriptTransfer(av, toInt(co), cp), aM("claim", ak, al, toInt(cl), bM.transactionId)]
478+ }
462479 else throw("Strict value is not equal to itself.")
463480 }
464481 }
465482
466483
467484
468-@Callable(bH)
469-func claimWxREADONLY (aj,ai) = {
470- let bv = ah(ai, aj)
471- let aY = ak(aj)
472- let bX = al(aj, ai)
473- let aR = ap(bv)
474- let aZ = ap(aY)
475- let cb = u(this, bX)
476- let aW = s(aN, S(aj))
477- let ba = getIntegerValue(aN, T(aW))
478- let cm = x(aO, ac())
479- let bb = x(aO, ae())
480- let cn = if ((bb > height))
485+@Callable(bM)
486+func claimWxREADONLY (al,ak) = {
487+ let bz = aj(ak, al)
488+ let ba = am(al)
489+ let cc = an(al, ak)
490+ let aT = ar(bz)
491+ let bb = ar(ba)
492+ let cg = w(this, cc)
493+ let aY = v(aP, U(al))
494+ let bd = getIntegerValue(aP, V(aY))
495+ let cv = z(aQ, ae())
496+ let be = z(aQ, ag())
497+ let cw = if ((be > height))
481498 then 0
482- else (height - bb)
483- let co = fraction((cm * cn), ba, f)
484- let cp = fraction(co, aR, aZ)
485- let cq = br(aj, ai, aW, 0)
486- let bA = cq._1
487- let bU = cq._2
488- let bq = cq._3
489- let cg = (bA - cb)
490- let cr = g(invoke(aP, "claimWxBoostREADONLY", [aj, ai], nil))
491- let ch = k(cr[0])
492- let cs = m(cr[1])
493- let ci = cg
494- let cj = min([(ci * 2), ch])
495- let ct = (ci + cj)
496- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aj, ai, toString(ct), toString(cb), toString(ci), toString(cj), ((((bq + "::") + toString(cp)) + "::BOOSTDEBUG::") + cs)], e))
499+ else (height - be)
500+ let cx = fraction((cv * cw), bd, f)
501+ let cy = fraction(cx, aT, bb)
502+ let cz = bv(al, ak, aY, 0)
503+ let bF = cz._1
504+ let bZ = cz._2
505+ let bu = cz._3
506+ let cl = (bF - toBigInt(cg))
507+ let cA = i(invoke(aR, "claimWxBoostREADONLY", [al, ak], nil))
508+ let cm = m(cA[0])
509+ let cB = o(cA[1])
510+ let cn = cl
511+ let co = min([(cn * toBigInt(2)), toBigInt(cm)])
512+ let cC = (cn + co)
513+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", al, ak, toString(cC), toString(cg), toString(cn), toString(co), ((((bu + "::") + toString(cy)) + "::BOOSTDEBUG::") + cB)], e))
497514 }
498515
499516
500517
501-@Callable(bH)
502-func onModifyWeight (aj,aW) = if ((bH.caller != aN))
518+@Callable(bM)
519+func onModifyWeight (al,aY) = if ((bM.caller != aP))
503520 then throw("permissions denied")
504521 else {
505- let cu = aV(aj, aW, 0)
506- let aT = cu._1
507- let bt = cu._2
508- let bu = cu._3
509- bt
522+ let cD = aX(al, aY, 0)
523+ let aV = cD._1
524+ let bx = cD._2
525+ let by = cD._3
526+ bx
510527 }
511528
512529
513-@Verifier(cv)
514-func cw () = {
515- let cx = {
516- let i = bD()
517- if ($isInstanceOf(i, "ByteVector"))
530+@Verifier(cE)
531+func cF () = {
532+ let cG = {
533+ let k = bI()
534+ if ($isInstanceOf(k, "ByteVector"))
518535 then {
519- let bJ = i
520- bJ
536+ let bO = k
537+ bO
521538 }
522- else if ($isInstanceOf(i, "Unit"))
523- then cv.senderPublicKey
539+ else if ($isInstanceOf(k, "Unit"))
540+ then cE.senderPublicKey
524541 else throw("Match error")
525542 }
526- sigVerify(cv.bodyBytes, cv.proofs[0], cx)
543+ sigVerify(cE.bodyBytes, cE.proofs[0], cG)
527544 }
528545
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
16-func g (h) = {
17- let i = h
18- if ($isInstanceOf(i, "List[Any]"))
16+let g = toBigInt(0)
17+
18+let h = toBigInt(1)
19+
20+func i (j) = {
21+ let k = j
22+ if ($isInstanceOf(k, "List[Any]"))
1923 then {
20- let j = i
21- j
24+ let l = k
25+ l
2226 }
2327 else throw("fail to cast into List[Any]")
2428 }
2529
2630
27-func k (h) = {
28- let i = h
29- if ($isInstanceOf(i, "Int"))
31+func m (j) = {
32+ let k = j
33+ if ($isInstanceOf(k, "Int"))
3034 then {
31- let l = i
32- l
33- }
34- else throw("fail to cast into Int")
35- }
36-
37-
38-func m (h) = {
39- let i = h
40- if ($isInstanceOf(i, "String"))
41- then {
42- let n = i
35+ let n = k
4336 n
4437 }
4538 else throw("fail to cast into Int")
4639 }
4740
4841
49-func o (h) = {
50- let i = h
51- if ($isInstanceOf(i, "ByteVector"))
42+func o (j) = {
43+ let k = j
44+ if ($isInstanceOf(k, "String"))
5245 then {
53- let p = i
46+ let p = k
5447 p
5548 }
5649 else throw("fail to cast into Int")
5750 }
5851
5952
60-func q (r) = valueOrErrorMessage(getString(r), (("mandatory this." + r) + " is not defined"))
53+func q (j) = {
54+ let k = j
55+ if ($isInstanceOf(k, "ByteVector"))
56+ then {
57+ let r = k
58+ r
59+ }
60+ else throw("fail to cast into Int")
61+ }
6162
6263
63-func s (t,r) = valueOrErrorMessage(getString(t, r), (((("mandatory " + toString(t)) + ".") + r) + " is not defined"))
64+func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
6465
6566
66-func u (t,r) = valueOrElse(getInteger(t, r), 0)
67+func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
6768
6869
69-func v (t,r,w) = valueOrElse(getInteger(t, r), w)
70+func w (t,u) = valueOrElse(getInteger(t, u), 0)
7071
7172
72-func x (t,r) = valueOrErrorMessage(getInteger(t, r), (("mandatory this." + r) + " is not defined"))
73+func x (t,u,y) = valueOrElse(getInteger(t, u), y)
7374
7475
75-func y (z,A) = fraction(toBigInt(z), d, toBigInt(A))
76+func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
7677
7778
78-func B (h,C) = toInt(fraction(h, toBigInt(C), d))
79+func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
7980
8081
81-func D () = "%s%s__config__factoryAddress"
82+func D (j,E) = toInt(fraction(j, toBigInt(E), d))
8283
8384
84-let E = 1
85-
86-let F = 2
87-
88-let G = 3
89-
90-let H = 4
91-
92-let I = 5
93-
94-let J = 6
95-
96-let K = 7
97-
98-func L () = "%s__factoryConfig"
85+func F () = "%s%s__config__factoryAddress"
9986
10087
101-func M () = "%s__managerPublicKey"
88+let G = 1
89+
90+let H = 2
91+
92+let I = 3
93+
94+let J = 4
95+
96+let K = 5
97+
98+let L = 6
99+
100+let M = 7
101+
102+func N () = "%s__factoryConfig"
102103
103104
104-func N () = "%s__pendingManagerPublicKey"
105+func O () = "%s__managerPublicKey"
105106
106107
107-func O () = "%s__stablePoolAddonAddr"
108+func P () = "%s__pendingManagerPublicKey"
108109
109110
110-func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
111+func Q () = "%s__stablePoolAddonAddr"
111112
112113
113-func R () = "%s__lpTokensList"
114+func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
114115
115116
116-func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
117+func T () = "%s__lpTokensList"
117118
118119
119-func T (U) = makeString(["%s%s", "poolWeight", U], e)
120+func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
120121
121122
122-func V (W) = split(valueOrElse(getString(W, R()), ""), e)
123+func V (W) = makeString(["%s%s", "poolWeight", W], e)
123124
124125
125-func X (W) = split(s(W, L()), e)
126+func X (Y) = split(valueOrElse(getString(Y, T()), ""), e)
126127
127128
128-func Y (Z) = addressFromStringValue(Z[F])
129+func Z (Y) = split(v(Y, N()), e)
129130
130131
131-func aa (Z) = addressFromStringValue(Z[I])
132+func aa (ab) = addressFromStringValue(ab[H])
132133
133134
134-func ab (Z) = addressFromStringValue(Z[E])
135+func ac (ab) = addressFromStringValue(ab[K])
135136
136137
137-func ac () = "%s%s__ratePerBlock__current"
138+func ad (ab) = addressFromStringValue(ab[G])
138139
139140
140-func ad () = "%s%s__ratePerBlockMax__current"
141+func ae () = "%s%s__ratePerBlock__current"
141142
142143
143-func ae () = "%s%s__emission__startBlock"
144+func af () = "%s%s__ratePerBlockMax__current"
144145
145146
146-func af () = "%s%s__emission__duration"
147+func ag () = "%s%s__emission__startBlock"
147148
148149
149-func ag () = "%s%s__emission__endBlock"
150+func ah () = "%s%s__emission__duration"
150151
151152
152-func ah (ai,aj) = makeString(["%s%s%s__staked", ai, aj], e)
153+func ai () = "%s%s__emission__endBlock"
153154
154155
155-func ak (aj) = ("%s%s%s__staked__total__" + aj)
156+func aj (ak,al) = makeString(["%s%s%s__staked", ak, al], e)
156157
157158
158-func al (aj,ai) = makeString(["%s%s%s__claimed", ai, aj], e)
159+func am (al) = ("%s%s%s__staked__total__" + al)
159160
160161
161-func am (aj,ai) = makeString(["%s%s%s__claimedMinReward", ai, aj], e)
162+func an (al,ak) = makeString(["%s%s%s__claimed", ak, al], e)
162163
163164
164-func an (aj,ai) = makeString(["%s%s%s__claimedBoostReward", ai, aj], e)
165+func ao (al,ak) = makeString(["%s%s%s__claimedMinReward", ak, al], e)
165166
166167
167-func ao (aj) = makeString(["%s%s%s__claimed", "total", aj], e)
168+func ap (al,ak) = makeString(["%s%s%s__claimedBoostReward", ak, al], e)
168169
169170
170-func ap (r) = valueOrElse(getInteger(this, r), 0)
171+func aq (al) = makeString(["%s%s%s__claimed", "total", al], e)
171172
172173
173-func aq (ar) = makeString(["%s%s%s", ar, "total", "bal"], e)
174+func ar (u) = valueOrElse(getInteger(this, u), 0)
174175
175176
176-func as (ar,at) = makeString(["%s%s%s", ar, at, "bal"], e)
177+func as (at) = makeString(["%s%s%s", at, "total", "bal"], e)
177178
178179
179-func au (ar) = makeString(["%s%s%s", ar, "total", "balINT"], e)
180+func au (at,av) = makeString(["%s%s%s", at, av, "bal"], e)
180181
181182
182-func av (ar,at) = makeString(["%s%s%s", ar, at, "balINT"], e)
183+func aw (at) = makeString(["%s%s%s", at, "total", "balINT"], e)
183184
184185
185-func aw (ar) = makeString(["%s%s%s", ar, "total", "lastUpd"], e)
186+func ax (at,av) = makeString(["%s%s%s", at, av, "balINT"], e)
186187
187188
188-func ax (ar,at) = makeString(["%s%s%s", ar, at, "lastUpd"], e)
189+func ay (at) = makeString(["%s%s%s", at, "total", "lastUpd"], e)
189190
190191
191-func ay (ar) = makeString(["%s%s%s%s", ar, "common", "lpInt"], e)
192+func az (at,av) = makeString(["%s%s%s", at, av, "lastUpd"], e)
192193
193194
194-func az (ar) = makeString(["%s%s%s%s", ar, "common", "lpIntH"], e)
195+func aA (at) = makeString(["%s%s%s%s", at, "common", "lpInt"], e)
195196
196197
197-func aA (ar,at) = makeString(["%s%s%s%s", ar, at, "lpInt"], e)
198+func aB (at) = makeString(["%s%s%s%s", at, "common", "lpIntH"], e)
198199
199200
200-func aB (ar,at) = makeString(["%s%s%s%s", ar, at, "lpIntH"], e)
201+func aC (at,av) = makeString(["%s%s%s%s", at, av, "lpInt"], e)
201202
202203
203-func aC (ar) = makeString(["%s", ar, "wxPerLp"], e)
204+func aD (at,av) = makeString(["%s%s%s%s", at, av, "lpIntH"], e)
204205
205206
206-func aD (ar) = makeString(["%s", ar, "wxPerLpX18"], e)
207+func aE (at) = makeString(["%s", at, "wxPerLp"], e)
207208
208209
209-func aE (ar,at) = makeString(["%s%s%s%s", ar, at, "uIntL"], e)
210+func aF (at) = makeString(["%s", at, "wxPerLpX18"], e)
210211
211212
212-func aF (aG,at,aH) = makeString(["%s%s%s%s__history", aG, at, aH], e)
213+func aG (at,av) = makeString(["%s%s%s%s", at, av, "uIntL"], e)
213214
214215
215-func aI (at,ar,aG,aJ) = makeString(["%s%s%s%d%d%d", at, ar, aG, toString(height), toString(lastBlock.timestamp), toString(aJ)], e)
216+func aH (aI,av,aJ) = makeString(["%s%s%s%s__history", aI, av, aJ], e)
216217
217218
218-func aK (aG,at,ar,aJ,aL) = StringEntry(aF(aG, at, toBase58String(aL)), aI(at, ar, aG, aJ))
219+func aK (av,at,aI,aL) = makeString(["%s%s%s%d%d%d", av, at, aI, toString(height), toString(lastBlock.timestamp), toString(aL)], e)
219220
220221
221-let aM = q(D())
222+func aM (aI,av,at,aL,aN) = StringEntry(aH(aI, av, toBase58String(aN)), aK(av, at, aI, aL))
222223
223-let aN = addressFromStringValue(aM)
224224
225-let Z = X(aN)
225+let aO = s(this, F())
226226
227-let aO = aa(Z)
227+let aP = addressFromStringValue(aO)
228228
229-let aP = Y(Z)
229+let ab = Z(aP)
230230
231-func aQ (aR,aS,aT,aU) = if (if ((aS == 0))
232- then (aR > 0)
231+let aQ = ac(ab)
232+
233+let aR = aa(ab)
234+
235+func aS (aT,aU,aV,aW) = if (if ((aU == g))
236+ then (aT > g)
233237 else false)
234- then 0
235- else if ((aR == 0))
236- then aT
237- else if (if ((aS > 0))
238- then (aR > 0)
238+ then g
239+ else if ((aT == g))
240+ then aV
241+ else if (if ((aU > g))
242+ then (aT > g)
239243 else false)
240- then x(this, aU)
244+ then value(parseBigInt(s(this, aW)))
241245 else throw("calcWxPerLpIntegralUserLast: unexpected state")
242246
243247
244-func aV (aj,aW,aX) = {
245- let aY = ak(aj)
246- let aZ = ap(aY)
247- let ba = getIntegerValue(aN, T(aW))
248- let bb = x(aO, ae())
249- let bc = 1000
250- let bd = (x(aO, ac()) * bc)
251- let be = fraction(bd, ba, (f * 3))
252- let bf = ay(aj)
253- let bg = az(aj)
254- let bh = aC(aj)
255- let bi = v(this, bg, bb)
256- let bj = u(this, bf)
257- let bk = 0
258- let bl = max([(height - bi), 0])
259- let bm = if ((bk != 0))
260- then bk
261- else fraction(be, b, aZ)
262- let bn = (aZ + aX)
263- let aT = (bj + (bm * bl))
264- let bo = (be / bn)
265- let bp = height
266- let bq = makeString([toString(aT), toString(bl), toString(bm), toString(aZ), toString(be), toString(bd), toString(ba)], "::")
267- $Tuple3(aT, [IntegerEntry(bf, aT), IntegerEntry(bg, bp), IntegerEntry(bh, bo)], bq)
248+func aX (al,aY,aZ) = {
249+ let ba = am(al)
250+ let bb = toBigInt(ar(ba))
251+ let bc = if ((bb == g))
252+ then h
253+ else bb
254+ let bd = getIntegerValue(aP, V(aY))
255+ let be = z(aQ, ag())
256+ let bf = 1000
257+ let bg = (z(aQ, ae()) * bf)
258+ let bh = fraction(bg, bd, (f * 3))
259+ let bi = aA(al)
260+ let bj = aB(al)
261+ let bk = aE(al)
262+ let bl = x(this, bj, be)
263+ let bm = w(this, bi)
264+ let bn = 0
265+ let bo = max([(height - bl), 0])
266+ let bp = if ((bn != 0))
267+ then toBigInt(bn)
268+ else fraction(toBigInt(bh), toBigInt(b), bc)
269+ let bq = (bb + toBigInt(aZ))
270+ let br = if ((bq == g))
271+ then h
272+ else bq
273+ let aV = (toBigInt(bm) + (bp * toBigInt(bo)))
274+ let bs = (toBigInt(bh) / br)
275+ let bt = height
276+ let bu = makeString([toString(aV), toString(bo), toString(bp), toString(bb), toString(bh), toString(bg), toString(bd)], "::")
277+ $Tuple3(aV, [StringEntry(bi, toString(aV)), IntegerEntry(bj, bt), StringEntry(bk, toString(bs))], bu)
268278 }
269279
270280
271-func br (aj,ai,aW,aX) = {
272- let bs = aV(aj, aW, aX)
273- let aT = bs._1
274- let bt = bs._2
275- let bu = bs._3
276- let bc = 1000
277- let bv = ah(ai, aj)
278- let aR = ap(bv)
279- let bw = aA(aj, ai)
280- let bx = aB(aj, ai)
281- let aU = aE(aj, ai)
282- let by = u(this, bw)
283- let aS = u(this, bx)
284- let bz = aQ(aR, aS, aT, aU)
285- let bA = (by + fraction((aT - bz), aR, (b * bc)))
286- let bB = aT
287- let bC = height
288- let bq = makeString([toString(bA), toString(bz), toString(aR), bu, toString(height)], "::")
289- $Tuple3(bA, (bt ++ [IntegerEntry(bw, bA), IntegerEntry(bx, bC), IntegerEntry(aU, bB)]), bq)
281+func bv (al,ak,aY,aZ) = {
282+ let bw = aX(al, aY, aZ)
283+ let aV = bw._1
284+ let bx = bw._2
285+ let by = bw._3
286+ let bf = 1000
287+ let bz = aj(ak, al)
288+ let aT = ar(bz)
289+ let bA = aC(al, ak)
290+ let bB = aD(al, ak)
291+ let aW = aG(al, ak)
292+ let bC = w(this, bA)
293+ let aU = w(this, bB)
294+ let bD = aS(toBigInt(aT), toBigInt(aU), aV, aW)
295+ let bE = (b * bf)
296+ let bF = (toBigInt(bC) + fraction((aV - bD), toBigInt(aT), toBigInt(bE)))
297+ let bG = aV
298+ let bH = height
299+ let bu = makeString([toString(bF), toString(bD), toString(aT), by, toString(height)], "::")
300+ $Tuple3(bF, (bx ++ [StringEntry(bA, toString(bF)), IntegerEntry(bB, bH), StringEntry(aW, toString(bG))]), bu)
290301 }
291302
292303
293-func bD () = {
294- let i = getString(M())
295- if ($isInstanceOf(i, "String"))
304+func bI () = {
305+ let k = getString(O())
306+ if ($isInstanceOf(k, "String"))
296307 then {
297- let bE = i
298- fromBase58String(bE)
308+ let bJ = k
309+ fromBase58String(bJ)
299310 }
300- else if ($isInstanceOf(i, "Unit"))
311+ else if ($isInstanceOf(k, "Unit"))
301312 then unit
302313 else throw("Match error")
303314 }
304315
305316
306-func bF () = {
307- let i = getString(N())
308- if ($isInstanceOf(i, "String"))
317+func bK () = {
318+ let k = getString(P())
319+ if ($isInstanceOf(k, "String"))
309320 then {
310- let bE = i
311- fromBase58String(bE)
321+ let bJ = k
322+ fromBase58String(bJ)
312323 }
313- else if ($isInstanceOf(i, "Unit"))
324+ else if ($isInstanceOf(k, "Unit"))
314325 then unit
315326 else throw("Match error")
316327 }
317328
318329
319-func bG (bH) = {
320- let bI = throw("Permission denied")
321- let i = bD()
322- if ($isInstanceOf(i, "ByteVector"))
330+func bL (bM) = {
331+ let bN = throw("Permission denied")
332+ let k = bI()
333+ if ($isInstanceOf(k, "ByteVector"))
323334 then {
324- let bJ = i
325- if ((bH.callerPublicKey == bJ))
335+ let bO = k
336+ if ((bM.callerPublicKey == bO))
326337 then true
327- else bI
338+ else bN
328339 }
329- else if ($isInstanceOf(i, "Unit"))
330- then if ((bH.caller == this))
340+ else if ($isInstanceOf(k, "Unit"))
341+ then if ((bM.caller == this))
331342 then true
332- else bI
343+ else bN
333344 else throw("Match error")
334345 }
335346
336347
337-@Callable(bH)
338-func constructor (bK) = {
339- let bL = bG(bH)
340- if ((bL == bL))
341- then [StringEntry(D(), bK)]
348+@Callable(bM)
349+func constructor (bP) = {
350+ let bQ = bL(bM)
351+ if ((bQ == bQ))
352+ then [StringEntry(F(), bP)]
342353 else throw("Strict value is not equal to itself.")
343354 }
344355
345356
346357
347-@Callable(bH)
348-func setManager (bM) = {
349- let bL = bG(bH)
350- if ((bL == bL))
358+@Callable(bM)
359+func setManager (bR) = {
360+ let bQ = bL(bM)
361+ if ((bQ == bQ))
351362 then {
352- let bN = fromBase58String(bM)
353- if ((bN == bN))
354- then [StringEntry(N(), bM)]
363+ let bS = fromBase58String(bR)
364+ if ((bS == bS))
365+ then [StringEntry(P(), bR)]
355366 else throw("Strict value is not equal to itself.")
356367 }
357368 else throw("Strict value is not equal to itself.")
358369 }
359370
360371
361372
362-@Callable(bH)
373+@Callable(bM)
363374 func confirmManager () = {
364- let bO = bF()
365- let bP = if (isDefined(bO))
375+ let bT = bK()
376+ let bU = if (isDefined(bT))
366377 then true
367378 else throw("No pending manager")
368- if ((bP == bP))
379+ if ((bU == bU))
369380 then {
370- let bQ = if ((bH.callerPublicKey == value(bO)))
381+ let bV = if ((bM.callerPublicKey == value(bT)))
371382 then true
372383 else throw("You are not pending manager")
373- if ((bQ == bQ))
374- then [StringEntry(M(), toBase58String(value(bO))), DeleteEntry(N())]
384+ if ((bV == bV))
385+ then [StringEntry(O(), toBase58String(value(bT))), DeleteEntry(P())]
375386 else throw("Strict value is not equal to itself.")
376387 }
377388 else throw("Strict value is not equal to itself.")
378389 }
379390
380391
381392
382-@Callable(bH)
383-func stake () = if ((size(bH.payments) != 1))
393+@Callable(bM)
394+func stake () = if ((size(bM.payments) != 1))
384395 then throw("invalid payment - exact one payment must be attached")
385396 else {
386- let bR = bH.payments[0]
387- let ar = value(bR.assetId)
388- let aj = toBase58String(ar)
389- let aJ = bR.amount
390- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
391- let bS = toString(bH.caller)
392- let ai = if ((bS == aW))
393- then toString(bH.originCaller)
394- else bS
395- let bv = ah(ai, aj)
396- let aY = ak(aj)
397- let aR = ap(bv)
398- let aZ = ap(aY)
399- let bT = br(aj, ai, aW, aJ)
400- let bA = bT._1
401- let bU = bT._2
402- let bq = bT._3
403- ([IntegerEntry(bv, (aR + aJ)), IntegerEntry(aY, (aZ + aJ)), aK("stake", ai, aj, aJ, bH.transactionId)] ++ bU)
397+ let bW = bM.payments[0]
398+ let at = value(bW.assetId)
399+ let al = toBase58String(at)
400+ let aL = bW.amount
401+ let aY = valueOrErrorMessage(getString(aP, R(al)), ("unsupported lp asset " + al))
402+ let bX = toString(bM.caller)
403+ let ak = if ((bX == aY))
404+ then toString(bM.originCaller)
405+ else bX
406+ let bz = aj(ak, al)
407+ let ba = am(al)
408+ let aT = ar(bz)
409+ let bb = ar(ba)
410+ let bY = bv(al, ak, aY, aL)
411+ let bF = bY._1
412+ let bZ = bY._2
413+ let bu = bY._3
414+ ([IntegerEntry(bz, (aT + aL)), IntegerEntry(ba, (bb + aL)), aM("stake", ak, al, aL, bM.transactionId)] ++ bZ)
404415 }
405416
406417
407418
408-@Callable(bH)
409-func unstake (aj,aJ) = {
410- let ar = fromBase58String(aj)
411- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
412- let bV = valueOrElse(getString(this, O()), aW)
413- let bS = toString(bH.caller)
414- let ai = if (if ((bS == aW))
419+@Callable(bM)
420+func unstake (al,aL) = {
421+ let at = fromBase58String(al)
422+ let aY = valueOrErrorMessage(getString(aP, R(al)), ("unsupported lp asset " + al))
423+ let ca = valueOrElse(getString(this, Q()), aY)
424+ let bX = toString(bM.caller)
425+ let ak = if (if ((bX == aY))
415426 then true
416- else (bS == bV))
417- then toString(bH.originCaller)
418- else bS
419- let bv = ah(ai, aj)
420- let aY = ak(aj)
421- let aR = ap(bv)
422- let aZ = ap(aY)
423- let bW = br(aj, ai, aW, -(aJ))
424- let bA = bW._1
425- let bU = bW._2
426- let bq = bW._3
427- if ((aJ > aR))
427+ else (bX == ca))
428+ then toString(bM.originCaller)
429+ else bX
430+ let bz = aj(ak, al)
431+ let ba = am(al)
432+ let aT = ar(bz)
433+ let bb = ar(ba)
434+ let cb = bv(al, ak, aY, -(aL))
435+ let bF = cb._1
436+ let bZ = cb._2
437+ let bu = cb._3
438+ if ((aL > aT))
428439 then throw("passed amount is less then available")
429- else ([IntegerEntry(bv, (aR - aJ)), IntegerEntry(aY, (aZ - aJ)), ScriptTransfer(bH.caller, aJ, ar), aK("unstake", ai, aj, aJ, bH.transactionId)] ++ bU)
440+ else ([IntegerEntry(bz, (aT - aL)), IntegerEntry(ba, (bb - aL)), ScriptTransfer(bM.caller, aL, at), aM("unstake", ak, al, aL, bM.transactionId)] ++ bZ)
430441 }
431442
432443
433444
434-@Callable(bH)
435-func claimWx (aj) = {
436- let at = bH.caller
437- let ai = toString(bH.caller)
438- let aW = s(aN, S(aj))
439- let bX = al(aj, ai)
440- let bY = ao(aj)
441- let bZ = am(aj, ai)
442- let ca = an(aj, ai)
443- let cb = u(this, bX)
444- let cc = u(this, bZ)
445- let cd = u(this, ca)
446- let ce = u(this, bY)
447- let cf = br(aj, ai, aW, 0)
448- let bA = cf._1
449- let bU = cf._2
450- let bq = cf._3
451- let cg = (bA - cb)
452- if ((0 >= cg))
445+@Callable(bM)
446+func claimWx (al) = {
447+ let av = bM.caller
448+ let ak = toString(bM.caller)
449+ let aY = v(aP, U(al))
450+ let cc = an(al, ak)
451+ let cd = aq(al)
452+ let ce = ao(al, ak)
453+ let cf = ap(al, ak)
454+ let cg = toBigInt(w(this, cc))
455+ let ch = toBigInt(w(this, ce))
456+ let ci = toBigInt(w(this, cf))
457+ let cj = toBigInt(w(this, cd))
458+ let ck = bv(al, ak, aY, 0)
459+ let bF = ck._1
460+ let bZ = ck._2
461+ let bu = ck._3
462+ let cl = (bF - cg)
463+ if ((g >= cl))
453464 then throw("nothing to claim")
454465 else {
455- let ch = k(g(invoke(aP, "claimWxBoost", [aj, ai], nil))[0])
456- let ci = cg
457- let cj = min([(ci * 2), ch])
458- let ck = o(g(invoke(aO, "emit", [ci], nil))[0])
459- let cl = g(invoke(aO, "emit", [cj], nil))
460- if ((cl == cl))
461- then [IntegerEntry(bX, (cb + cg)), IntegerEntry(bZ, (cc + ci)), IntegerEntry(ca, (cd + cj)), IntegerEntry(bY, (ce + cg)), ScriptTransfer(at, ci, ck), ScriptTransfer(at, cj, ck), aK("claim", ai, aj, cg, bH.transactionId)]
466+ let cm = m(i(invoke(aR, "claimWxBoost", [al, ak], nil))[0])
467+ let cn = cl
468+ let co = min([(cn * toBigInt(2)), toBigInt(cm)])
469+ let cp = q(i(invoke(aQ, "emit", [cn], nil))[0])
470+ let cq = i(invoke(aQ, "emit", [co], nil))
471+ if ((cq == cq))
472+ then {
473+ let cr = (cg + cl)
474+ let cs = (ch + cn)
475+ let ct = (ch + cn)
476+ let cu = (ch + cn)
477+[StringEntry(cc, toString(cr)), StringEntry(ce, toString(cs)), StringEntry(cf, toString(ct)), StringEntry(cd, toString(cu)), ScriptTransfer(av, toInt(cn), cp), ScriptTransfer(av, toInt(co), cp), aM("claim", ak, al, toInt(cl), bM.transactionId)]
478+ }
462479 else throw("Strict value is not equal to itself.")
463480 }
464481 }
465482
466483
467484
468-@Callable(bH)
469-func claimWxREADONLY (aj,ai) = {
470- let bv = ah(ai, aj)
471- let aY = ak(aj)
472- let bX = al(aj, ai)
473- let aR = ap(bv)
474- let aZ = ap(aY)
475- let cb = u(this, bX)
476- let aW = s(aN, S(aj))
477- let ba = getIntegerValue(aN, T(aW))
478- let cm = x(aO, ac())
479- let bb = x(aO, ae())
480- let cn = if ((bb > height))
485+@Callable(bM)
486+func claimWxREADONLY (al,ak) = {
487+ let bz = aj(ak, al)
488+ let ba = am(al)
489+ let cc = an(al, ak)
490+ let aT = ar(bz)
491+ let bb = ar(ba)
492+ let cg = w(this, cc)
493+ let aY = v(aP, U(al))
494+ let bd = getIntegerValue(aP, V(aY))
495+ let cv = z(aQ, ae())
496+ let be = z(aQ, ag())
497+ let cw = if ((be > height))
481498 then 0
482- else (height - bb)
483- let co = fraction((cm * cn), ba, f)
484- let cp = fraction(co, aR, aZ)
485- let cq = br(aj, ai, aW, 0)
486- let bA = cq._1
487- let bU = cq._2
488- let bq = cq._3
489- let cg = (bA - cb)
490- let cr = g(invoke(aP, "claimWxBoostREADONLY", [aj, ai], nil))
491- let ch = k(cr[0])
492- let cs = m(cr[1])
493- let ci = cg
494- let cj = min([(ci * 2), ch])
495- let ct = (ci + cj)
496- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aj, ai, toString(ct), toString(cb), toString(ci), toString(cj), ((((bq + "::") + toString(cp)) + "::BOOSTDEBUG::") + cs)], e))
499+ else (height - be)
500+ let cx = fraction((cv * cw), bd, f)
501+ let cy = fraction(cx, aT, bb)
502+ let cz = bv(al, ak, aY, 0)
503+ let bF = cz._1
504+ let bZ = cz._2
505+ let bu = cz._3
506+ let cl = (bF - toBigInt(cg))
507+ let cA = i(invoke(aR, "claimWxBoostREADONLY", [al, ak], nil))
508+ let cm = m(cA[0])
509+ let cB = o(cA[1])
510+ let cn = cl
511+ let co = min([(cn * toBigInt(2)), toBigInt(cm)])
512+ let cC = (cn + co)
513+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", al, ak, toString(cC), toString(cg), toString(cn), toString(co), ((((bu + "::") + toString(cy)) + "::BOOSTDEBUG::") + cB)], e))
497514 }
498515
499516
500517
501-@Callable(bH)
502-func onModifyWeight (aj,aW) = if ((bH.caller != aN))
518+@Callable(bM)
519+func onModifyWeight (al,aY) = if ((bM.caller != aP))
503520 then throw("permissions denied")
504521 else {
505- let cu = aV(aj, aW, 0)
506- let aT = cu._1
507- let bt = cu._2
508- let bu = cu._3
509- bt
522+ let cD = aX(al, aY, 0)
523+ let aV = cD._1
524+ let bx = cD._2
525+ let by = cD._3
526+ bx
510527 }
511528
512529
513-@Verifier(cv)
514-func cw () = {
515- let cx = {
516- let i = bD()
517- if ($isInstanceOf(i, "ByteVector"))
530+@Verifier(cE)
531+func cF () = {
532+ let cG = {
533+ let k = bI()
534+ if ($isInstanceOf(k, "ByteVector"))
518535 then {
519- let bJ = i
520- bJ
536+ let bO = k
537+ bO
521538 }
522- else if ($isInstanceOf(i, "Unit"))
523- then cv.senderPublicKey
539+ else if ($isInstanceOf(k, "Unit"))
540+ then cE.senderPublicKey
524541 else throw("Match error")
525542 }
526- sigVerify(cv.bodyBytes, cv.proofs[0], cx)
543+ sigVerify(cE.bodyBytes, cE.proofs[0], cG)
527544 }
528545

github/deemru/w8io/169f3d6 
249.49 ms