tx · EbzDBzCUkdbZn2mDaY84vdeDZ3rt6tNknu8bv1GXu6ud

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.03500000 Waves

2022.06.29 14:20 [2117661] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "EbzDBzCUkdbZn2mDaY84vdeDZ3rt6tNknu8bv1GXu6ud", "fee": 3500000, "feeAssetId": null, "timestamp": 1656501552671, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "273FH13j1fEe3KLofQrDwVS6yhKvkBy72SMqdVmKCGUac7E75dZ8H9uXkkPJkb3obEEpJh4R9oVbBky93NEz4P7t" ], "script": "base64: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YXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAQAAAAV2YWx1ZQAAAAEJAAGoAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAKZGVmYXVsdFZhbAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAFdG9YMTgAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkAATwAAAADCQABNgAAAAEFAAAAB29yaWdWYWwFAAAABk1VTFQxOAkAATYAAAABBQAAAA1vcmlnU2NhbGVNdWx0AQAAAAdmcm9tWDE4AAAAAgAAAAN2YWwAAAAPcmVzdWx0U2NhbGVNdWx0CQABoAAAAAEJAAE8AAAAAwUAAAADdmFsCQABNgAAAAEFAAAAD3Jlc3VsdFNjYWxlTXVsdAUAAAAGTVVMVDE4AQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAAAAAAAAAAAAQAAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAAAAAAAAAAAAgAAAAAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAAAAAAAAAAMAAAAAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAAAAAAAAAABAAAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAAAAAAAAAABQAAAAAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAAAAAAAAAAGAAAAABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAAAAAAAAAAHAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAUa2V5TWlncmF0b3JQdWJsaWNLZXkAAAAAAgAAABUlc19fbWlncmF0b3JQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAABZrZXlTdGFibGVQb29sQWRkb25BZGRyAAAAAAIAAAAXJXNfX3N0YWJsZVBvb2xBZGRvbkFkZHIBAAAAGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAECVzX19scFRva2Vuc0xpc3QBAAAAJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAUa2V5RmFjdG9yeVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAKcG9vbFdlaWdodAkABEwAAAACBQAAAA9jb250cmFjdEFkZHJlc3MFAAAAA25pbAUAAAADU0VQAQAAAApyZWFkTHBMaXN0AAAAAQAAAAdmYWN0b3J5CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHZmFjdG9yeQkBAAAAEGtleUZhY3RvcnlMcExpc3QAAAAAAgAAAAAFAAAAA1NFUAEAAAAUcmVhZEZhY3RvcnlDZmdPckZhaWwAAAABAAAAB2ZhY3RvcnkJAAS1AAAAAgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAAAAAIFAAAAB2ZhY3RvcnkJAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAUAAAADU0VQAQAAABhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAEAAAAYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHABAAAAF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAIAAAAbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQAAACFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQAAAAAAgAAAB4lcyVzX19yYXRlUGVyQmxvY2tNYXhfX2N1cnJlbnQBAAAAFWtleUVtaXNzaW9uU3RhcnRCbG9jawAAAAACAAAAGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQAAABtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MAAAAAAgAAABglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAAAAE2tleUVtaXNzaW9uRW5kQmxvY2sAAAAAAgAAABglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAAAAD2tleVN0YWtlZEJ5VXNlcgAAAAIAAAAOdXNlckFkZHJlc3NTdHIAAAAMbHBBc3NldElkU3RyCQAEuQAAAAIJAARMAAAAAgIAAAAOJXMlcyVzX19zdGFrZWQJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIJAARMAAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwFAAAAA1NFUAEAAAAOa2V5U3Rha2VkVG90YWwAAAABAAAADGxwQXNzZXRJZFN0cgkAASwAAAACAgAAABclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUAAAAMbHBB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dGl2ZSgxMDYyKQAAAAEFAAAADmZhY3RvcnlBZGRyZXNzAAAAAApmYWN0b3J5Q2ZnCQEAAAAUcmVhZEZhY3RvcnlDZmdPckZhaWwAAAABBQAAAA9mYWN0b3J5Q29udHJhY3QAAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABBQAAAApmYWN0b3J5Q2ZnAAAAABBib29zdGluZ0NvbnRyYWN0CQEAAAAYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAAAAAQUAAAAKZmFjdG9yeUNmZwEAAAAbY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0AAAABAAAAAxzdGFrZWRCeVVzZXIAAAAmd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRPclplcm8AAAASd3hQZXJMcEludGVncmFsTmV3AAAAGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZAwMJAAAAAAAAAgUAAAAmd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRPclplcm8FAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAMc3Rha2VkQnlVc2VyBQAAAAp6ZXJvQmlnSW50BwUAAAAKemVyb0JpZ0ludAMJAAAAAAAAAgUAAAAMc3Rha2VkQnlVc2VyBQAAAAp6ZXJvQmlnSW50BQAAABJ3eFBlckxwSW50ZWdyYWxOZXcDAwkAAT8AAAACBQAAACZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwUAAAAKemVyb0JpZ0ludAkAAT8AAAACBQAAAAxzdGFrZWRCeVVzZXIFAAAACnplcm9CaWdJbnQHCQEAAAAFdmFsdWUAAAABCQABqAAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzBQAAABp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkAAAIAAAABAgAAAC1jYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3Q6IHVuZXhwZWN0ZWQgc3RhdGUBAAAAFHJlZnJlc2hQb29sSU5URUdSQUxTAAAAAwAAAAxscEFzc2V0SWRTdHIAAAAOcG9vbEFkZHJlc3NTdHIAAAANbHBEZWx0YUFtb3VudAQAAAAOc3Rha2VkVG90YWxLRVkJAQAAAA5rZXlTdGFrZWRUb3RhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAALc3Rha2VkVG90YWwJAAE2AAAAAQkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA5zdGFrZWRUb3RhbEtFWQQAAAASbm9uWmVyb1N0YWtlZFRvdGFsAwkAAAAAAAACBQAAAAtzdGFrZWRUb3RhbAUAAAAKemVyb0JpZ0ludAUAAAAJb25lQmlnSW50BQAAAAtzdGFrZWRUb3RhbAQAAAAKcG9vbFdlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAUa2V5RmFjdG9yeVBvb2xXZWlnaHQAAAABBQAAAA5wb29sQWRkcmVzc1N0cgQAAAASZW1pc3Npb25TdGFydEJsb2NrCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAFWtleUVtaXNzaW9uU3RhcnRCbG9jawAAAAAEAAAABU1VTFQzAAAAAAAAAAPoBAAAABR3eEVtaXNzaW9uUGVyQmxvY2tYMwkAAGgAAAACCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAAAAAFAAAABU1VTFQzBAAAABhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAABrAAAAAwUAAAAUd3hFbWlzc2lvblBlckJsb2NrWDMFAAAACnBvb2xXZWlnaHQJAABoAAAAAgUAAAAOUE9PTFdFSUdIVE1VTFQAAAAAAAAAAAMEAAAAEnd4UGVyTHBJbnRlZ3JhbEtFWQkBAAAAEmtleVd4UGVyTHBJbnRlZ3JhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQkBAAAAH2tleVd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAACnd4UGVyTHBLRVkJAQAAAAprZXlXeFBlckxwAAAAAQUAAAAMbHBBc3NldElkU3RyBAAAABx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0CQEAAAAPZ2V0SW50T3JEZWZhdWx0AAAAAwUAAAAEdGhpcwUAAAAfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQUAAAASZW1pc3Npb25TdGFydEJsb2NrBAAAAA93eFBlckxwSW50ZWdyYWwJAQAAABlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAAAAAgUAAAAEdGhpcwUAAAASd3hQZXJMcEludGVncmFsS0VZBAAAAA93eFBlckxwT3JaZXJvWDMAAAAAAAAAAAAEAAAAAmRoCQABlgAAAAEJAARMAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAAAl3eFBlckxwWDMDCQEAAAACIT0AAAACBQAAAA93eFBlckxwT3JaZXJvWDMAAAAAAAAAAAAJAAE2AAAAAQUAAAAPd3hQZXJMcE9yWmVyb1gzCQABPAAAAAMJAAE2AAAAAQUAAAAYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQABNgAAAAEFAAAABU1VTFQ4BQAAABJub25aZXJvU3Rha2VkVG90YWwEAAAADnN0YWtlZFRvdGFsTmV3CQABNwAAAAIFAAAAC3N0YWtlZFRvdGFsCQABNgAAAAEFAAAADWxwRGVsdGFBbW91bnQEAAAAFW5vblplcm9TdGFrZWRUb3RhbE5ldwMJAAAAAAAAAgUAAAAOc3Rha2VkVG90YWxOZXcFAAAACnplcm9CaWdJbnQFAAAACW9uZUJpZ0ludAUAAAAOc3Rha2VkVG90YWxOZXcEAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwkAATcAAAACBQAAAA93eFBlckxwSW50ZWdyYWwJAAE5AAAAAgUAAAAJd3hQZXJMcFgzCQABNgAAAAEFAAAAAmRoBAAAAAx3eFBlckxwWDNOZXcJAAE6AAAAAgkAATYAAAABBQAAABhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMFAAAAFW5vblplcm9TdGFrZWRUb3RhbE5ldwQAAAAfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodE5ldwUAAAAGaGVpZ2h0BAAAAAVkZWJ1ZwkABLkAAAACCQAETAAAAAIJAAGmAAAAAQUAAAASd3hQZXJMcEludGVncmFsTmV3CQAETAAAAAICAAAAA2RoPQkABEwAAAACCQABpAAAAAEFAAAAAmRoCQAETAAAAAICAAAACnd4UGVyTHBYMz0JAARMAAAAAgkAAaYAAAABBQAAAAl3eFBlckxwWDMJAARMAAAAAgIAAAAMc3Rha2VkVG90YWw9CQAETAAAAAIJAAGmAAAAAQUAAAALc3Rha2VkVG90YWwJAARMAAAAAgkAAaQAAAABBQAAABhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAARMAAAAAgkAAaQAAAABBQAAABR3eEVtaXNzaW9uUGVyQmxvY2tYMwkABEwAAAACAgAAAAtwb29sV2VpZ2h0PQkABEwAAAACCQABpAAAAAEFAAAACnBvb2xXZWlnaHQFAAAAA25pbAIAAAACOjoJAAUVAAAAAwUAAAASd3hQZXJMcEludGVncmFsTmV3CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEnd4UGVyTHBJbnRlZ3JhbEtFWQkAAaYAAAABBQAAABJ3eFBlckxwSW50ZWdyYWxOZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkFAAAAH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKd3hQZXJMcEtFWQkAAaYAAAABBQAAAAx3eFBlckxwWDNOZXcFAAAAA25pbAUAAAAFZGVidWcBAAAAEHJlZnJlc2hJTlRFR1JBTFMAAAAEAAAADGxwQXNzZXRJZFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA5wb29sQWRkcmVzc1N0cgAAAA1scERlbHRhQW1vdW50BAAAAA0kdDAxMTUwNjExNjI4CQEAAAAUcmVmcmVzaFBvb2xJTlRFR1JBTFMAAAADBQAAAAxscEFzc2V0SWRTdHIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAA1scERlbHRhQW1vdW50BAAAABJ3eFBlckxwSW50ZWdyYWxOZXcIBQAAAA0kdDAxMTUwNjExNjI4AAAAAl8xBAAAABFwb29sSW50ZWdyYWxTVEFURQgFAAAADSR0MDExNTA2MTE2MjgAAAACXzIEAAAACXBvb2xERUJVRwgFAAAADSR0MDExNTA2MTE2MjgAAAACXzMEAAAABU1VTFQzAAAAAAAAAAPoBAAAAA9zdGFrZWRCeVVzZXJLRVkJAQAAAA9rZXlTdGFrZWRCeVVzZXIAAAACBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAMbHBBc3NldElkU3RyBAAAAAxzdGFrZWRCeVVzZXIJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAPc3Rha2VkQnlVc2VyS0VZBAAAABB3eFRvQ2xhaW1Vc2VyS0VZCQEAAAAQa2V5V3hUb0NsYWltVXNlcgAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIEAAAAI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZCQEAAAAja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAABp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkBAAAAGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0AAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgQAAAANd3hUb0NsYWltVXNlcgkBAAAAGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8AAAACBQAAAAR0aGlzBQAAABB3eFRvQ2xhaW1Vc2VyS0VZBAAAACZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZBAAAABd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkBAAAAG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAAAAAQJAAE2AAAAAQUAAAAMc3Rha2VkQnlVc2VyCQABNgAAAAEFAAAAJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBQAAABJ3eFBlckxwSW50ZWdyYWxOZXcFAAAAGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZBAAAAAZNVUxUMTEJAABoAAAAAgUAAAAFTVVMVDgFAAAABU1VTFQzBAAAABB3eFRvQ2xhaW1Vc2VyTmV3CQABmAAAAAEJAARMAAAAAgkAATcAAAACBQAAAA13eFRvQ2xhaW1Vc2VyCQABPAAAAAMJAAE4AAAAAgUAAAASd3hQZXJMcEludGVncmFsTmV3BQAAABd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkAATYAAAABBQAAAAxzdGFrZWRCeVVzZXIJAAE2AAAAAQUAAAAGTVVMVDExCQAETAAAAAIFAAAACnplcm9CaWdJbnQFAAAAA25pbAQAAAAad3hQZXJMcEludGVncmFsVXNlckxhc3ROZXcFAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwQAAAAjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXcFAAAABmhlaWdodAQAAAAFZGVidWcJAAS5AAAAAgkABEwAAAACAgAAAA13eFRvQ2xhaW1Vc2VyCQAETAAAAAIJAAGmAAAAAQUAAAANd3hUb0NsYWltVXNlcgkABEwAAAACAgAAAAx3eFBlckxwSW50ZWcJAARMAAAAAgkAAaQAAAABBQAAACZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwkABEwAAAACAgAAAA50aGlzLmdldFN0cmluZwkABEwAAAACCQABpgAAAAEJAQAAAAV2YWx1ZQAAAAEJAAGoAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMFAAAAGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZCQAETAAAAAICAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwkABEwAAAACCQABpgAAAAEFAAAAEnd4UGVyTHBJbnRlZ3JhbE5ldwkABEwAAAACAgAAABB3eFRvQ2xhaW1Vc2VyTmV3CQAETAAAAAIJAAGmAAAAAQUAAAAQd3hUb0NsYWltVXNlck5ldwkABEwAAAACAgAAABd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkABEwAAAACCQABpgAAAAEFAAAAF3d4UGVy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b3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAFc3Rha2UAAAAAAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAADRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACWxwQXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAxscEFzc2V0SWRTdHIJAAJYAAAAAQUAAAAJbHBBc3NldElkBAAAAAZhbW91bnQIBQAAAANwbXQAAAAGYW1vdW50BAAAAA5wb29sQWRkcmVzc1N0cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAAAAAQUAAAAMbHBBc3NldElkU3RyCQABLAAAAAICAAAAFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUAAAAMbHBBc3NldElkU3RyBAAAAAljYWxsZXJTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyQWRkcmVzc1N0cgMJAAAAAAAAAgUAAAAJY2FsbGVyU3RyBQAAAA5wb29sQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAACWNhbGxlclN0cgQAAAAPc3Rha2VkQnlVc2VyS0VZCQEAAAAPa2V5U3Rha2VkQnlVc2VyAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgQAAAAOc3Rha2VkVG90YWxLRVkJAQAAAA5rZXlTdGFrZWRUb3RhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAMc3Rha2VkQnlVc2VyCQEAAAAKcmVhZFN0YWtlZAAAAAEFAAAAD3N0YWtlZEJ5VXNlcktFWQQAAAALc3Rha2VkVG90YWwJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAOc3Rha2VkVG90YWxLRVkEAAAADSR0MDE2MTk2MTYzMTMJAQAAABByZWZyZXNoSU5URUdSQUxTAAAABAUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAOcG9vbEFkZHJlc3NTdHIFAAAABmFtb3VudAQAAAAQd3hUb0NsYWltVXNlck5ldwgFAAAADSR0MDE2MTk2MTYzMTMAAAACXzEEAAAADWludGVncmFsU1RBVEUIBQAAAA0kdDAxNjE5NjE2MzEzAAAAAl8yBAAAAAVkZWJ1ZwgFAAAADSR0MDE2MTk2MTYzMTMAAAACXzMJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPc3Rha2VkQnlVc2VyS0VZCQAAZAAAAAIFAAAADHN0YWtlZEJ5VXNlcgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5zdGFrZWRUb3RhbEtFWQkAAGQAAAACBQAAAAtzdGFrZWRUb3RhbAUAAAAGYW1vdW50CQAETAAAAAIJAQAAABVPcGVyYXRpb25IaXN0b3J5RW50cnkAAAAFAgAAAAVzdGFrZQUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgUAAAAGYW1vdW50CAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAADWludGVncmFsU1RBVEUAAAABaQEAAAAHdW5zdGFrZQAAAAIAAAAMbHBBc3NldElkU3RyAAAABmFtb3VudAQAAAAJbHBBc3NldElkCQACWQAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAOcG9vbEFkZHJlc3NTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwAAAAEFAAAADGxwQXNzZXRJZFN0cgkAASwAAAACAgAAABV1bnN1cHBvcnRlZCBscCBhc3NldCAFAAAADGxwQXNzZXRJZFN0cgQAAAAJcG9vbEFkZG9uCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABZrZXlTdGFibGVQb29sQWRkb25BZGRyAAAAAAUAAAAOcG9vbEFkZHJlc3NTdHIEAAAACWNhbGxlclN0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADnVzZXJBZGRyZXNzU3RyAwMJAAAAAAAAAgUAAAAJY2FsbGVyU3RyBQAAAA5wb29sQWRkcmVzc1N0cgYJAAAAAAAAAgUAAAAJY2FsbGVyU3RyBQAAAAlwb29sQWRkb24JAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAljYWxsZXJTdHIEAAAAD3N0YWtlZEJ5VXNlcktFWQkBAAAAD2tleVN0YWtlZEJ5VXNlcgAAAAIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIEAAAADnN0YWtlZFRvdGFsS0VZCQEAAAAOa2V5U3Rha2VkVG90YWwAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAADHN0YWtlZEJ5VXNlcgkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA9zdGFrZWRCeVVzZXJLRVkEAAAAC3N0YWtlZFRvdGFsCQEAAAAKcmVhZFN0YWtlZAAAAAEFAAAADnN0YWtlZFRvdGFsS0VZBAAAAA0kdDAxNzQ1MDE3NTY4CQEAAAAQcmVmcmVzaElOVEVHUkFMUwAAAAQFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADnBvb2xBZGRyZXNzU3RyCQEAAAABLQAAAAEFAAAABmFtb3VudAQAAAAQd3hUb0NsYWltVXNlck5ldwgFAAAADSR0MDE3NDUwMTc1NjgAAAACXzEEAAAADWludGVncmFsU1RBVEUIBQAAAA0kdDAxNzQ1MDE3NTY4AAAAAl8yBAAAAAVkZWJ1ZwgFAAAADSR0MDE3NDUwMTc1NjgAAAACXzMDCQAAZgAAAAIFAAAABmFtb3VudAUAAAAMc3Rha2VkQnlVc2VyCQAAAgAAAAECAAAAJHBhc3NlZCBhbW91bnQgaXMgbGVzcyB0aGVuIGF2YWlsYWJsZQkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9zdGFrZWRCeVVzZXJLRVkJAABlAAAAAgUAAAAMc3Rha2VkQnlVc2VyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADnN0YWtlZFRvdGFsS0VZCQAAZQAAAAIFAAAAC3N0YWtlZFRvdGFsBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAACWxwQXNzZXRJZAkABEwAAAACCQEAAAAVT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABQIAAAAHdW5zdGFrZQUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgUAAAAGYW1vdW50CAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAADWludGVncmFsU1RBVEUAAAABaQEAAAAHY2xhaW1XeAAAAAEAAAAMbHBBc3NldElkU3RyBAAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADnBvb2xBZGRyZXNzU3RyCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABBQAAAAxscEFzc2V0SWRTdHIEAAAAEGNsYWltZWRCeVVzZXJLRVkJAQAAABBrZXlDbGFpbWVkQnlVc2VyAAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgQAAAAPY2xhaW1lZFRvdGFsS0VZCQEAAAAPa2V5Q2xhaW1lZFRvdGFsAAAAAQUAAAAMbHBBc3NldElkU3RyBAAAABljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZCQEAAAAZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZAAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIEAAAAG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQkBAAAAG2tleUNsYWltZWRCeVVzZXJCb29zdFJld2FyZAAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIEAAAADWNsYWltZWRCeVVzZXIJAQAAABlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAQY2xhaW1lZEJ5VXNlcktFWQQAAAAWY2xhaW1lZEJ5VXNlck1pblJld2FyZAkBAAAAGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8AAAACBQAAAAR0aGlzBQAAABljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZBAAAABhjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQJAQAAABlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZBAAAAAxjbGFpbWVkVG90YWwJAQAAABlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAPY2xhaW1lZFRvdGFsS0VZBAAAAA0kdDAxODgxMjE4OTI0CQEAAAAQcmVmcmVzaElOVEVHUkFMUwAAAAQFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADnBvb2xBZGRyZXNzU3RyAAAAAAAAAAAABAAAABB3eFRvQ2xhaW1Vc2VyTmV3CAUAAAANJHQwMTg4MTIxODkyNAAAAAJfMQQAAAANaW50ZWdyYWxTVEFURQgFAAAADSR0MDE4ODEyMTg5MjQAAAACXzIEAAAABWRlYnVnCAUAAAANJHQwMTg4MTIxODkyNAAAAAJfMwQAAAAQYXZhaWxhYmxlVG9DbGFpbQkAAZgAAAABCQAETAAAAAIJAAE4AAAAAgUAAAAQd3hUb0NsYWltVXNlck5ldwUAAAANY2xhaW1lZEJ5VXNlcgkABEwAAAACBQAAAAp6ZXJvQmlnSW50BQAAAANuaWwDCQABQAAAAAIFAAAACnplcm9CaWdJbnQFAAAAEGF2YWlsYWJsZVRvQ2xhaW0JAAACAAAAAQIAAAAQbm90aGluZyB0byBjbGFpbQQAAAASd3hBbW91bnRCb29zdFRvdGFsCQABlgAAAAEJAARMAAAAAgkBAAAABWFzSW50AAAAAQkAAZEAAAACCQEAAAAJYXNBbnlMaXN0AAAAAQkAA/wAAAAEBQAAABBib29zdGluZ0NvbnRyYWN0AgAAAAxjbGFpbVd4Qm9vc3QJAARMAAAAAgUAAAAMbHBBc3NldElkU3RyCQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAkABEwAAAACAAAAAAAAAAAABQAAAANuaWwEAAAADW1pblJld2FyZFBhcnQFAAAAEGF2YWlsYWJsZVRvQ2xhaW0EAAAAD2Jvb3N0UmV3YXJkUGFydAkAAZkAAAABCQAETAAAAAIJAAE5AAAAAgUAAAANbWluUmV3YXJkUGFydAkAATYAAAABAAAAAAAAAAACCQAETAAAAAIJAAE2AAAAAQUAAAASd3hBbW91bnRCb29zdFRvdGFsBQAAAANuaWwEAAAACXd4QXNzZXRJZAkBAAAADGFzQnl0ZVZlY3RvcgAAAAEJAAGRAAAAAgkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAQZW1pc3Npb25Db250cmFjdAIAAAAEZW1pdAkABEwAAAACCQABoAAAAAEFAAAADW1pblJld2FyZFBhcnQFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAABAAAAAllbWl0Qm9vc3QJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAAEGVtaXNzaW9uQ29udHJhY3QCAAAABGVtaXQJAARMAAAAAgkAAaAAAAABBQAAAA9ib29zdFJld2FyZFBhcnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAllbWl0Qm9vc3QFAAAACWVtaXRCb29zdAQAAAASY2xhaW1lZEJ5VXNlclZhbHVlCQABNwAAAAIFAAAADWNsYWltZWRCeVVzZXIFAAAAEGF2YWlsYWJsZVRvQ2xhaW0EAAAAHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydAkAATcAAAACBQAAABZjbGFpbWVkQnlVc2VyTWluUmV3YXJkBQAAAA1taW5SZXdhcmRQYXJ0BAAAACtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0CQABNwAAAAIFAAAAFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQFAAAADW1pblJld2FyZFBhcnQEAAAAIGNsYWltZWRUb3RhbFBsdXNBdmFpbGFibGVUb0NsYWltCQABNwAAAAIFAAAAFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQFAAAADW1pblJld2FyZFBhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAQY2xhaW1lZEJ5VXNlcktFWQkAAaYAAAABBQAAABJjbGFpbWVkQnlVc2VyVmFsdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQkAAaYAAAABBQAAAB5jbGFpbWVkQnlVc2VyTWluUmV3YXJkUGx1c1BhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZCQABpgAAAAEFAAAAK2NsYWltZWRCeVVzZXJCb29zdFJld2FyZFBsdXNCb29zdFJld2FyZFBhcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPY2xhaW1lZFRvdGFsS0VZCQABpgAAAAEFAAAAIGNsYWltZWRUb3RhbFBsdXNBdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzCQABoAAAAAEFAAAADW1pblJld2FyZFBhcnQFAAAACXd4QXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwkAAaAAAAABBQAAAA9ib29zdFJld2FyZFBhcnQFAAAACXd4QXNzZXRJZAkABEwAAAACCQEAAAAVT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABQIAAAAFY2xhaW0FAAAADnVzZXJBZGRyZXNzU3RyBQAAAAxscEFzc2V0SWRTdHIJAAGgAAAAAQUAAAAQYXZhaWxhYmxlVG9DbGFpbQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA9jbGFpbVd4UkVBRE9OTFkAAAACAAAADGxwQXNzZXRJZFN0cgAAAA51c2VyQWRkcmVzc1N0cgQAAAAPc3Rha2VkQnlVc2VyS0VZCQEAAAAPa2V5U3Rha2VkQnlVc2VyAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADGxwQXNzZXRJZFN0cgQAAAAOc3Rha2VkVG90YWxLRVkJAQAAAA5rZXlTdGFrZWRUb3RhbAAAAAEFAAAADGxwQXNzZXRJZFN0cgQAAAAQY2xhaW1lZEJ5VXNlcktFWQkBAAAAEGtleUNsYWltZWRCeVVzZXIAAAACBQAAAAxscEFzc2V0SWRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBAAAAAxzdGFrZWRCeVVzZXIJAQAAAApyZWFkU3Rha2VkAAAAAQUAAAAPc3Rha2VkQnlVc2VyS0VZBAAAAAtzdGFrZWRUb3RhbAkBAAAACnJlYWRTdGFrZWQAAAABBQAAAA5zdGFrZWRUb3RhbEtFWQQAAAANY2xhaW1lZEJ5VXNlcgkBAAAAGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8AAAACBQAAAAR0aGlzBQAAABBjbGFpbWVkQnlVc2VyS0VZBAAAAA5wb29sQWRkcmVzc1N0cgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQUAAAAMbHBBc3NldElkU3RyBAAAAApwb29sV2VpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABRrZXlGYWN0b3J5UG9vbFdlaWdodAAAAAEFAAAADnBvb2xBZGRyZXNzU3RyBAAAABJ3eEVtaXNzaW9uUGVyQmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAQAAAASZW1pc3Npb25TdGFydEJsb2NrCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAFWtleUVtaXNzaW9uU3RhcnRCbG9jawAAAAAEAAAADHBhc3NlZEJsb2NrcwMJAABmAAAAAgUAAAASZW1pc3Npb25TdGFydEJsb2NrBQAAAAZoZWlnaHQAAAAAAAAAAAAJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJlbWlzc2lvblN0YXJ0QmxvY2sEAAAADnBvb2xXeEVtaXNzaW9uCQAAawAAAAMJAABoAAAAAgUAAAASd3hFbWlzc2lvblBlckJsb2NrBQAAAAxwYXNzZWRCbG9ja3MFAAAACnBvb2xXZWlnaHQFAAAADlBPT0xXRUlHSFRNVUxUBAAAAAx1c2VyV3hSZXdhcmQJAABrAAAAAwUAAAAOcG9vbFd4RW1pc3Npb24FAAAADHN0YWtlZEJ5VXNlcgUAAAALc3Rha2VkVG90YWwEAAAADSR0MDIxNTY2MjE2NzgJAQAAABByZWZyZXNoSU5URUdSQUxTAAAABAUAAAAMbHBBc3NldElkU3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAOcG9vbEFkZHJlc3NTdHIAAAAAAAAAAAAEAAAAEHd4VG9DbGFpbVVzZXJOZXcIBQAAAA0kdDAyMTU2NjIxNjc4AAAAAl8xBAAAAA1pbnRlZ3JhbFNUQVRFCAUAAAANJHQwMjE1NjYyMTY3OAAAAAJfMgQAAAAFZGVidWcIBQAAAA0kdDAyMTU2NjIxNjc4AAAAAl8zBAAAABBhdmFpbGFibGVUb0NsYWltCQABmAAAAAEJAARMAAAAAgkAATgAAAACBQAAABB3eFRvQ2xhaW1Vc2VyTmV3BQAAAA1jbGFpbWVkQnlVc2VyCQAETAAAAAIFAAAACnplcm9CaWdJbnQFAAAAA25pbAQAAAAOYm9vc3RJbnZSZXN1bHQJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAAEGJvb3N0aW5nQ29udHJhY3QCAAAAFGNsYWltV3hCb29zdFJFQURPTkxZCQAETAAAAAIFAAAADGxwQXNzZXRJZFN0cgkABEwAAAACBQAAAA51c2VyQWRkcmVzc1N0cgUAAAADbmlsBQAAAANuaWwEAAAAEnd4QW1vdW50Qm9vc3RUb3RhbAkAAZYAAAABCQAETAAAAAIJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAOYm9vc3RJbnZSZXN1bHQAAAAAAAAAAAAJAARMAAAAAgAAAAAA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", "height": 2117661, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2d6bLXky5ew8shWypfaoKRMWAdjLP6iYm4VAi58pCxiw Next: HTtb3AVFg57jWBJV2kbAbbFj2DStxb7vC3wXeNvnwqTc 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 (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
7980
8081
81-func D () = "%s%s__config__factoryAddress"
82+func B (t,u,y) = {
83+ let k = getString(t, u)
84+ if ($isInstanceOf(k, "String"))
85+ then {
86+ let C = k
87+ value(parseBigInt(C))
88+ }
89+ else if ($isInstanceOf(k, "Unit"))
90+ then y
91+ else throw("Match error")
92+ }
8293
8394
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"
95+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
9996
10097
101-func M () = "%s__managerPublicKey"
98+func G (j,H) = toInt(fraction(j, toBigInt(H), d))
10299
103100
104-func N () = "%s__migratorPublicKey"
101+func I () = "%s%s__config__factoryAddress"
105102
106103
107-func O () = "%s__pendingManagerPublicKey"
104+let J = 1
105+
106+let K = 2
107+
108+let L = 3
109+
110+let M = 4
111+
112+let N = 5
113+
114+let O = 6
115+
116+let P = 7
117+
118+func Q () = "%s__factoryConfig"
108119
109120
110-func P () = "%s__stablePoolAddonAddr"
121+func R () = "%s__managerPublicKey"
111122
112123
113-func Q (R) = makeString(["%s%s%s", R, "mappings__lpAsset2PoolContract"], e)
124+func S () = "%s__migratorPublicKey"
114125
115126
116-func S () = "%s__lpTokensList"
127+func T () = "%s__pendingManagerPublicKey"
117128
118129
119-func T (R) = makeString(["%s%s%s", R, "mappings__lpAsset2PoolContract"], e)
130+func U () = "%s__stablePoolAddonAddr"
120131
121132
122-func U (V) = makeString(["%s%s", "poolWeight", V], e)
133+func V (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
123134
124135
125-func W (X) = split(valueOrElse(getString(X, S()), ""), e)
136+func X () = "%s__lpTokensList"
126137
127138
128-func Y (X) = split(s(X, L()), e)
139+func Y (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
129140
130141
131-func Z (aa) = addressFromStringValue(aa[F])
142+func Z (aa) = makeString(["%s%s", "poolWeight", aa], e)
132143
133144
134-func ab (aa) = addressFromStringValue(aa[I])
145+func ab (ac) = split(valueOrElse(getString(ac, X()), ""), e)
135146
136147
137-func ac (aa) = addressFromStringValue(aa[E])
148+func ad (ac) = split(v(ac, Q()), e)
138149
139150
140-func ad () = "%s%s__ratePerBlock__current"
151+func ae (af) = addressFromStringValue(af[K])
141152
142153
143-func ae () = "%s%s__ratePerBlockMax__current"
154+func ag (af) = addressFromStringValue(af[N])
144155
145156
146-func af () = "%s%s__emission__startBlock"
157+func ah (af) = addressFromStringValue(af[J])
147158
148159
149-func ag () = "%s%s__emission__duration"
160+func ai () = "%s%s__ratePerBlock__current"
150161
151162
152-func ah () = "%s%s__emission__endBlock"
163+func aj () = "%s%s__ratePerBlockMax__current"
153164
154165
155-func ai (aj,ak) = makeString(["%s%s%s__staked", aj, ak], e)
166+func ak () = "%s%s__emission__startBlock"
156167
157168
158-func al (ak) = ("%s%s%s__staked__total__" + ak)
169+func al () = "%s%s__emission__duration"
159170
160171
161-func am (ak,aj) = makeString(["%s%s%s__claimed", aj, ak], e)
172+func am () = "%s%s__emission__endBlock"
162173
163174
164-func an (ak,aj) = makeString(["%s%s%s__claimedMinReward", aj, ak], e)
175+func an (ao,ap) = makeString(["%s%s%s__staked", ao, ap], e)
165176
166177
167-func ao (ak,aj) = makeString(["%s%s%s__claimedBoostReward", aj, ak], e)
178+func aq (ap) = ("%s%s%s__staked__total__" + ap)
168179
169180
170-func ap (ak) = makeString(["%s%s%s__claimed", "total", ak], e)
181+func ar (ap,ao) = makeString(["%s%s%s__claimed", ao, ap], e)
171182
172183
173-func aq (r) = valueOrElse(getInteger(this, r), 0)
184+func as (ap,ao) = makeString(["%s%s%s__claimedMinReward", ao, ap], e)
174185
175186
176-func ar (as) = makeString(["%s%s%s", as, "total", "bal"], e)
187+func at (ap,ao) = makeString(["%s%s%s__claimedBoostReward", ao, ap], e)
177188
178189
179-func at (as,au) = makeString(["%s%s%s", as, au, "bal"], e)
190+func au (ap) = makeString(["%s%s%s__claimed__total", ap], e)
180191
181192
182-func av (as) = makeString(["%s%s%s", as, "total", "balINT"], e)
193+func av (u) = valueOrElse(getInteger(this, u), 0)
183194
184195
185-func aw (as,au) = makeString(["%s%s%s", as, au, "balINT"], e)
196+func aw (ax) = makeString(["%s%s%s", ax, "total", "bal"], e)
186197
187198
188-func ax (as) = makeString(["%s%s%s", as, "total", "lastUpd"], e)
199+func ay (ax,az) = makeString(["%s%s%s", ax, az, "bal"], e)
189200
190201
191-func ay (as,au) = makeString(["%s%s%s", as, au, "lastUpd"], e)
202+func aA (ax) = makeString(["%s%s%s", ax, "total", "balINT"], e)
192203
193204
194-func az (as) = makeString(["%s%s%s%s", as, "common", "lpInt"], e)
205+func aB (ax,az) = makeString(["%s%s%s", ax, az, "balINT"], e)
195206
196207
197-func aA (as) = makeString(["%s%s%s%s", as, "common", "lpIntH"], e)
208+func aC (ax) = makeString(["%s%s%s", ax, "total", "lastUpd"], e)
198209
199210
200-func aB (as,au) = makeString(["%s%s%s%s", as, au, "lpInt"], e)
211+func aD (ax,az) = makeString(["%s%s%s", ax, az, "lastUpd"], e)
201212
202213
203-func aC (as,au) = makeString(["%s%s%s%s", as, au, "lpIntH"], e)
214+func aE (ax) = makeString(["%s%s%s%s", ax, "common", "lpInt"], e)
204215
205216
206-func aD (as) = makeString(["%s", as, "wxPerLp"], e)
217+func aF (ax) = makeString(["%s%s%s%s", ax, "common", "lpIntH"], e)
207218
208219
209-func aE (as) = makeString(["%s", as, "wxPerLpX18"], e)
220+func aG (ax,az) = makeString(["%s%s%s%s", ax, az, "lpInt"], e)
210221
211222
212-func aF (as,au) = makeString(["%s%s%s%s", as, au, "uIntL"], e)
223+func aH (ax,az) = makeString(["%s%s%s%s", ax, az, "lpIntH"], e)
213224
214225
215-func aG (aH,au,aI) = makeString(["%s%s%s%s__history", aH, au, aI], e)
226+func aI (ax) = makeString(["%s", ax, "wxPerLp"], e)
216227
217228
218-func aJ (au,as,aH,aK) = makeString(["%s%s%s%d%d%d", au, as, aH, toString(height), toString(lastBlock.timestamp), toString(aK)], e)
229+func aJ (ax) = makeString(["%s", ax, "wxPerLpX18"], e)
219230
220231
221-func aL (aH,au,as,aK,aM) = StringEntry(aG(aH, au, toBase58String(aM)), aJ(au, as, aH, aK))
232+func aK (ax,az) = makeString(["%s%s%s%s", ax, az, "uIntL"], e)
222233
223234
224-let aN = q(D())
235+func aL (aM,az,aN) = makeString(["%s%s%s%s__history", aM, az, aN], e)
225236
226-let aO = addressFromStringValue(aN)
227237
228-let aa = Y(aO)
238+func aO (az,ax,aM,aP) = makeString(["%s%s%s%d%d%d", az, ax, aM, toString(height), toString(lastBlock.timestamp), toString(aP)], e)
229239
230-let aP = ab(aa)
231240
232-let aQ = Z(aa)
241+func aQ (aM,az,ax,aP,aR) = StringEntry(aL(aM, az, toBase58String(aR)), aO(az, ax, aM, aP))
233242
234-func aR (aS,aT,aU,aV) = if (if ((aT == 0))
235- then (aS > 0)
243+
244+let aS = s(this, I())
245+
246+let aT = addressFromStringValue(aS)
247+
248+let af = ad(aT)
249+
250+let aU = ag(af)
251+
252+let aV = ae(af)
253+
254+func aW (aX,aY,aZ,ba) = if (if ((aY == g))
255+ then (aX > g)
236256 else false)
237- then 0
238- else if ((aS == 0))
239- then aU
240- else if (if ((aT > 0))
241- then (aS > 0)
257+ then g
258+ else if ((aX == g))
259+ then aZ
260+ else if (if ((aY > g))
261+ then (aX > g)
242262 else false)
243- then x(this, aV)
263+ then value(parseBigInt(s(this, ba)))
244264 else throw("calcWxPerLpIntegralUserLast: unexpected state")
245265
246266
247-func aW (ak,aX,aY) = {
248- let aZ = al(ak)
249- let ba = aq(aZ)
250- let bb = getIntegerValue(aO, U(aX))
251- let bc = x(aP, af())
252- let bd = 1000
253- let be = (x(aP, ad()) * bd)
254- let bf = fraction(be, bb, (f * 3))
255- let bg = az(ak)
256- let bh = aA(ak)
257- let bi = aD(ak)
258- let bj = v(this, bh, bc)
259- let bk = u(this, bg)
260- let bl = 0
261- let bm = max([(height - bj), 0])
262- let bn = if ((bl != 0))
263- then bl
264- else fraction(bf, b, ba)
265- let bo = (ba + aY)
266- let aU = (bk + (bn * bm))
267- let bp = (bf / bo)
268- let bq = height
269- let br = makeString([toString(aU), "dh=", toString(bm), "wxPerLpX3=", toString(bn), "stakedTotal=", toString(ba), toString(bf), toString(be), "poolWeight=", toString(bb)], "::")
270- $Tuple3(aU, [IntegerEntry(bg, aU), IntegerEntry(bh, bq), IntegerEntry(bi, bp)], br)
267+func bb (ap,bc,bd) = {
268+ let be = aq(ap)
269+ let bf = toBigInt(av(be))
270+ let bg = if ((bf == g))
271+ then h
272+ else bf
273+ let bh = getIntegerValue(aT, Z(bc))
274+ let bi = z(aU, ak())
275+ let bj = 1000
276+ let bk = (z(aU, ai()) * bj)
277+ let bl = fraction(bk, bh, (f * 3))
278+ let bm = aE(ap)
279+ let bn = aF(ap)
280+ let bo = aI(ap)
281+ let bp = x(this, bn, bi)
282+ let bq = A(this, bm)
283+ let br = 0
284+ let bs = max([(height - bp), 0])
285+ let bt = if ((br != 0))
286+ then toBigInt(br)
287+ else fraction(toBigInt(bl), toBigInt(b), bg)
288+ let bu = (bf + toBigInt(bd))
289+ let bv = if ((bu == g))
290+ then h
291+ else bu
292+ let aZ = (bq + (bt * toBigInt(bs)))
293+ let bw = (toBigInt(bl) / bv)
294+ let bx = height
295+ let by = makeString([toString(aZ), "dh=", toString(bs), "wxPerLpX3=", toString(bt), "stakedTotal=", toString(bf), toString(bl), toString(bk), "poolWeight=", toString(bh)], "::")
296+ $Tuple3(aZ, [StringEntry(bm, toString(aZ)), IntegerEntry(bn, bx), StringEntry(bo, toString(bw))], by)
271297 }
272298
273299
274-func bs (ak,aj,aX,aY) = {
275- let bt = aW(ak, aX, aY)
276- let aU = bt._1
277- let bu = bt._2
278- let bv = bt._3
279- let bd = 1000
280- let bw = ai(aj, ak)
281- let aS = aq(bw)
282- let bx = aB(ak, aj)
283- let by = aC(ak, aj)
284- let aV = aF(ak, aj)
285- let bz = u(this, bx)
286- let aT = u(this, by)
287- let bA = aR(aS, aT, aU, aV)
288- let bB = (bz + fraction((aU - bA), aS, (b * bd)))
289- let bC = aU
290- let bD = height
291- let br = makeString(["wxToClaimUser", toString(bz), "wxPerLpInteg", toString(aT), "wxPerLpIntegralNew", toString(aU), "wxToClaimUserNew", toString(bB), "wxPerLpIntegralUserLast", toString(bA), toString(aS), "poolDEBUG=", bv, "height=", toString(height)], "::")
292- $Tuple3(bB, (bu ++ [IntegerEntry(bx, bB), IntegerEntry(by, bD), IntegerEntry(aV, bC)]), br)
300+func bz (ap,ao,bc,bd) = {
301+ let bA = bb(ap, bc, bd)
302+ let aZ = bA._1
303+ let bB = bA._2
304+ let bC = bA._3
305+ let bj = 1000
306+ let bD = an(ao, ap)
307+ let aX = av(bD)
308+ let bE = aG(ap, ao)
309+ let bF = aH(ap, ao)
310+ let ba = aK(ap, ao)
311+ let bG = A(this, bE)
312+ let aY = w(this, bF)
313+ let bH = aW(toBigInt(aX), toBigInt(aY), aZ, ba)
314+ let bI = (b * bj)
315+ let bJ = max([(bG + fraction((aZ - bH), toBigInt(aX), toBigInt(bI))), g])
316+ let bK = aZ
317+ let bL = height
318+ let by = makeString(["wxToClaimUser", toString(bG), "wxPerLpInteg", toString(aY), "this.getString", toString(value(parseBigInt(s(this, ba)))), "wxPerLpIntegralNew", toString(aZ), "wxToClaimUserNew", toString(bJ), "wxPerLpIntegralUserLast", toString(bH), toString(aX), "poolDEBUG=", bC, "height=", toString(height)], "::")
319+ $Tuple3(bJ, (bB ++ [StringEntry(bE, toString(bJ)), IntegerEntry(bF, bL), StringEntry(ba, toString(bK))]), by)
293320 }
294321
295322
296-func bE () = {
297- let i = getString(M())
298- if ($isInstanceOf(i, "String"))
323+func bM () = {
324+ let k = getString(R())
325+ if ($isInstanceOf(k, "String"))
299326 then {
300- let bF = i
301- fromBase58String(bF)
327+ let C = k
328+ fromBase58String(C)
302329 }
303- else if ($isInstanceOf(i, "Unit"))
330+ else if ($isInstanceOf(k, "Unit"))
304331 then unit
305332 else throw("Match error")
306333 }
307334
308335
309-func bG () = {
310- let i = getString(N())
311- if ($isInstanceOf(i, "String"))
336+func bN () = {
337+ let k = getString(S())
338+ if ($isInstanceOf(k, "String"))
312339 then {
313- let bF = i
314- fromBase58String(bF)
340+ let C = k
341+ fromBase58String(C)
315342 }
316- else if ($isInstanceOf(i, "Unit"))
343+ else if ($isInstanceOf(k, "Unit"))
317344 then unit
318345 else throw("Match error")
319346 }
320347
321348
322-func bH () = {
323- let i = getString(O())
324- if ($isInstanceOf(i, "String"))
349+func bO () = {
350+ let k = getString(T())
351+ if ($isInstanceOf(k, "String"))
325352 then {
326- let bF = i
327- fromBase58String(bF)
353+ let C = k
354+ fromBase58String(C)
328355 }
329- else if ($isInstanceOf(i, "Unit"))
356+ else if ($isInstanceOf(k, "Unit"))
330357 then unit
331358 else throw("Match error")
332359 }
333360
334361
335-func bI (bJ) = {
336- let bK = throw("Permission denied")
337- let i = bE()
338- if ($isInstanceOf(i, "ByteVector"))
362+func bP (bQ) = {
363+ let bR = throw("Permission denied")
364+ let k = bM()
365+ if ($isInstanceOf(k, "ByteVector"))
339366 then {
340- let bL = i
341- if ((bJ.callerPublicKey == bL))
367+ let bS = k
368+ if ((bQ.callerPublicKey == bS))
342369 then true
343- else bK
370+ else bR
344371 }
345- else if ($isInstanceOf(i, "Unit"))
346- then if ((bJ.caller == this))
372+ else if ($isInstanceOf(k, "Unit"))
373+ then if ((bQ.caller == this))
347374 then true
348- else bK
375+ else bR
349376 else throw("Match error")
350377 }
351378
352379
353-@Callable(bJ)
354-func constructor (bM) = {
355- let bN = bI(bJ)
356- if ((bN == bN))
357- then [StringEntry(D(), bM)]
380+@Callable(bQ)
381+func constructor (bT) = {
382+ let bU = bP(bQ)
383+ if ((bU == bU))
384+ then [StringEntry(I(), bT)]
358385 else throw("Strict value is not equal to itself.")
359386 }
360387
361388
362389
363-@Callable(bJ)
364-func setManager (bO) = {
365- let bN = bI(bJ)
366- if ((bN == bN))
390+@Callable(bQ)
391+func setManager (bV) = {
392+ let bU = bP(bQ)
393+ if ((bU == bU))
367394 then {
368- let bP = fromBase58String(bO)
369- if ((bP == bP))
370- then [StringEntry(O(), bO)]
395+ let bW = fromBase58String(bV)
396+ if ((bW == bW))
397+ then [StringEntry(T(), bV)]
371398 else throw("Strict value is not equal to itself.")
372399 }
373400 else throw("Strict value is not equal to itself.")
375402
376403
377404
378-@Callable(bJ)
405+@Callable(bQ)
379406 func confirmManager () = {
380- let bQ = bH()
381- let bR = if (isDefined(bQ))
407+ let bX = bO()
408+ let bY = if (isDefined(bX))
382409 then true
383410 else throw("No pending manager")
384- if ((bR == bR))
411+ if ((bY == bY))
385412 then {
386- let bS = if ((bJ.callerPublicKey == value(bQ)))
413+ let bZ = if ((bQ.callerPublicKey == value(bX)))
387414 then true
388415 else throw("You are not pending manager")
389- if ((bS == bS))
390- then [StringEntry(M(), toBase58String(value(bQ))), DeleteEntry(O())]
416+ if ((bZ == bZ))
417+ then [StringEntry(R(), toBase58String(value(bX))), DeleteEntry(T())]
391418 else throw("Strict value is not equal to itself.")
392419 }
393420 else throw("Strict value is not equal to itself.")
395422
396423
397424
398-@Callable(bJ)
399-func stake () = if ((size(bJ.payments) != 1))
425+@Callable(bQ)
426+func stake () = if ((size(bQ.payments) != 1))
400427 then throw("invalid payment - exact one payment must be attached")
401428 else {
402- let bT = bJ.payments[0]
403- let as = value(bT.assetId)
404- let ak = toBase58String(as)
405- let aK = bT.amount
406- let aX = valueOrErrorMessage(getString(aO, Q(ak)), ("unsupported lp asset " + ak))
407- let bU = toString(bJ.caller)
408- let aj = if ((bU == aX))
409- then toString(bJ.originCaller)
410- else bU
411- let bw = ai(aj, ak)
412- let aZ = al(ak)
413- let aS = aq(bw)
414- let ba = aq(aZ)
415- let bV = bs(ak, aj, aX, aK)
416- let bB = bV._1
417- let bW = bV._2
418- let br = bV._3
419- ([IntegerEntry(bw, (aS + aK)), IntegerEntry(aZ, (ba + aK)), aL("stake", aj, ak, aK, bJ.transactionId)] ++ bW)
429+ let ca = bQ.payments[0]
430+ let ax = value(ca.assetId)
431+ let ap = toBase58String(ax)
432+ let aP = ca.amount
433+ let bc = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
434+ let cb = toString(bQ.caller)
435+ let ao = if ((cb == bc))
436+ then toString(bQ.originCaller)
437+ else cb
438+ let bD = an(ao, ap)
439+ let be = aq(ap)
440+ let aX = av(bD)
441+ let bf = av(be)
442+ let cc = bz(ap, ao, bc, aP)
443+ let bJ = cc._1
444+ let cd = cc._2
445+ let by = cc._3
446+ ([IntegerEntry(bD, (aX + aP)), IntegerEntry(be, (bf + aP)), aQ("stake", ao, ap, aP, bQ.transactionId)] ++ cd)
420447 }
421448
422449
423450
424-@Callable(bJ)
425-func unstake (ak,aK) = {
426- let as = fromBase58String(ak)
427- let aX = valueOrErrorMessage(getString(aO, Q(ak)), ("unsupported lp asset " + ak))
428- let bX = valueOrElse(getString(this, P()), aX)
429- let bU = toString(bJ.caller)
430- let aj = if (if ((bU == aX))
451+@Callable(bQ)
452+func unstake (ap,aP) = {
453+ let ax = fromBase58String(ap)
454+ let bc = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
455+ let ce = valueOrElse(getString(this, U()), bc)
456+ let cb = toString(bQ.caller)
457+ let ao = if (if ((cb == bc))
431458 then true
432- else (bU == bX))
433- then toString(bJ.originCaller)
434- else bU
435- let bw = ai(aj, ak)
436- let aZ = al(ak)
437- let aS = aq(bw)
438- let ba = aq(aZ)
439- let bY = bs(ak, aj, aX, -(aK))
440- let bB = bY._1
441- let bW = bY._2
442- let br = bY._3
443- if ((aK > aS))
459+ else (cb == ce))
460+ then toString(bQ.originCaller)
461+ else cb
462+ let bD = an(ao, ap)
463+ let be = aq(ap)
464+ let aX = av(bD)
465+ let bf = av(be)
466+ let cf = bz(ap, ao, bc, -(aP))
467+ let bJ = cf._1
468+ let cd = cf._2
469+ let by = cf._3
470+ if ((aP > aX))
444471 then throw("passed amount is less then available")
445- else ([IntegerEntry(bw, (aS - aK)), IntegerEntry(aZ, (ba - aK)), ScriptTransfer(bJ.caller, aK, as), aL("unstake", aj, ak, aK, bJ.transactionId)] ++ bW)
472+ else ([IntegerEntry(bD, (aX - aP)), IntegerEntry(be, (bf - aP)), ScriptTransfer(bQ.caller, aP, ax), aQ("unstake", ao, ap, aP, bQ.transactionId)] ++ cd)
446473 }
447474
448475
449476
450-@Callable(bJ)
451-func claimWx (ak) = {
452- let au = bJ.caller
453- let aj = toString(bJ.caller)
454- let aX = s(aO, T(ak))
455- let bZ = am(ak, aj)
456- let ca = ap(ak)
457- let cb = an(ak, aj)
458- let cc = ao(ak, aj)
459- let cd = u(this, bZ)
460- let ce = u(this, cb)
461- let cf = u(this, cc)
462- let cg = u(this, ca)
463- let ch = bs(ak, aj, aX, 0)
464- let bB = ch._1
465- let bW = ch._2
466- let br = ch._3
467- let ci = (bB - cd)
468- if ((0 >= ci))
477+@Callable(bQ)
478+func claimWx (ap) = {
479+ let az = bQ.caller
480+ let ao = toString(bQ.caller)
481+ let bc = v(aT, Y(ap))
482+ let cg = ar(ap, ao)
483+ let ch = au(ap)
484+ let ci = as(ap, ao)
485+ let cj = at(ap, ao)
486+ let ck = A(this, cg)
487+ let cl = A(this, ci)
488+ let cm = A(this, cj)
489+ let cn = A(this, ch)
490+ let co = bz(ap, ao, bc, 0)
491+ let bJ = co._1
492+ let cd = co._2
493+ let by = co._3
494+ let cp = max([(bJ - ck), g])
495+ if ((g >= cp))
469496 then throw("nothing to claim")
470497 else {
471- let cj = k(g(invoke(aQ, "claimWxBoost", [ak, aj], nil))[0])
472- let ck = ci
473- let cl = min([(ck * 2), cj])
474- let cm = o(g(invoke(aP, "emit", [ck], nil))[0])
475- let cn = g(invoke(aP, "emit", [cl], nil))
476- if ((cn == cn))
477- then [IntegerEntry(bZ, (cd + ci)), IntegerEntry(cb, (ce + ck)), IntegerEntry(cc, (cf + cl)), IntegerEntry(ca, (cg + ci)), ScriptTransfer(au, ck, cm), ScriptTransfer(au, cl, cm), aL("claim", aj, ak, ci, bJ.transactionId)]
498+ let cq = max([m(i(invoke(aV, "claimWxBoost", [ap, ao], nil))[0]), 0])
499+ let cr = cp
500+ let cs = min([(cr * toBigInt(2)), toBigInt(cq)])
501+ let ct = q(i(invoke(aU, "emit", [toInt(cr)], nil))[0])
502+ let cu = i(invoke(aU, "emit", [toInt(cs)], nil))
503+ if ((cu == cu))
504+ then {
505+ let cv = (ck + cp)
506+ let cw = (cl + cr)
507+ let cx = (cl + cr)
508+ let cy = (cl + cr)
509+[StringEntry(cg, toString(cv)), StringEntry(ci, toString(cw)), StringEntry(cj, toString(cx)), StringEntry(ch, toString(cy)), ScriptTransfer(az, toInt(cr), ct), ScriptTransfer(az, toInt(cs), ct), aQ("claim", ao, ap, toInt(cp), bQ.transactionId)]
510+ }
478511 else throw("Strict value is not equal to itself.")
479512 }
480513 }
481514
482515
483516
484-@Callable(bJ)
485-func claimWxREADONLY (ak,aj) = {
486- let bw = ai(aj, ak)
487- let aZ = al(ak)
488- let bZ = am(ak, aj)
489- let aS = aq(bw)
490- let ba = aq(aZ)
491- let cd = u(this, bZ)
492- let aX = s(aO, T(ak))
493- let bb = getIntegerValue(aO, U(aX))
494- let co = x(aP, ad())
495- let bc = x(aP, af())
496- let cp = if ((bc > height))
517+@Callable(bQ)
518+func claimWxREADONLY (ap,ao) = {
519+ let bD = an(ao, ap)
520+ let be = aq(ap)
521+ let cg = ar(ap, ao)
522+ let aX = av(bD)
523+ let bf = av(be)
524+ let ck = A(this, cg)
525+ let bc = v(aT, Y(ap))
526+ let bh = getIntegerValue(aT, Z(bc))
527+ let cz = z(aU, ai())
528+ let bi = z(aU, ak())
529+ let cA = if ((bi > height))
497530 then 0
498- else (height - bc)
499- let cq = fraction((co * cp), bb, f)
500- let cr = fraction(cq, aS, ba)
501- let cs = bs(ak, aj, aX, 0)
502- let bB = cs._1
503- let bW = cs._2
504- let br = cs._3
505- let ci = (bB - cd)
506- let ct = g(invoke(aQ, "claimWxBoostREADONLY", [ak, aj], nil))
507- let cj = k(ct[0])
508- let cu = m(ct[1])
509- let ck = ci
510- let cl = min([(ck * 2), cj])
511- let cv = (ck + cl)
512- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ak, aj, toString(cv), toString(cd), toString(ck), toString(cl), ((((br + "::") + toString(cr)) + "::BOOSTDEBUG::") + cu)], e))
531+ else (height - bi)
532+ let cB = fraction((cz * cA), bh, f)
533+ let cC = fraction(cB, aX, bf)
534+ let cD = bz(ap, ao, bc, 0)
535+ let bJ = cD._1
536+ let cd = cD._2
537+ let by = cD._3
538+ let cp = max([(bJ - ck), g])
539+ let cE = i(invoke(aV, "claimWxBoostREADONLY", [ap, ao], nil))
540+ let cq = max([m(cE[0]), 0])
541+ let cF = o(cE[1])
542+ let cr = cp
543+ let cs = min([(cr * toBigInt(2)), toBigInt(cq)])
544+ let cG = (cr + cs)
545+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ap, ao, toString(cG), toString(ck), toString(cr), toString(cs), ((((by + "::") + toString(cC)) + "::BOOSTDEBUG::") + cF)], e))
513546 }
514547
515548
516549
517-@Callable(bJ)
518-func onModifyWeight (ak,aX) = if ((bJ.caller != aO))
550+@Callable(bQ)
551+func onModifyWeight (ap,bc) = if ((bQ.caller != aT))
519552 then throw("permissions denied")
520553 else {
521- let cw = aW(ak, aX, 0)
522- let aU = cw._1
523- let bu = cw._2
524- let bv = cw._3
525- bu
554+ let cH = bb(ap, bc, 0)
555+ let aZ = cH._1
556+ let bB = cH._2
557+ let bC = cH._3
558+ bB
526559 }
527560
528561
529-@Verifier(cx)
530-func cy () = {
531- let cz = {
532- let i = bE()
533- if ($isInstanceOf(i, "ByteVector"))
562+@Verifier(cI)
563+func cJ () = {
564+ let cK = {
565+ let k = bM()
566+ if ($isInstanceOf(k, "ByteVector"))
534567 then {
535- let bL = i
536- bL
568+ let bS = k
569+ bS
537570 }
538- else if ($isInstanceOf(i, "Unit"))
539- then cx.senderPublicKey
571+ else if ($isInstanceOf(k, "Unit"))
572+ then cI.senderPublicKey
540573 else throw("Match error")
541574 }
542- let cA = {
543- let i = bG()
544- if ($isInstanceOf(i, "ByteVector"))
575+ let cL = {
576+ let k = bN()
577+ if ($isInstanceOf(k, "ByteVector"))
545578 then {
546- let bL = i
547- bL
579+ let bS = k
580+ bS
548581 }
549- else if ($isInstanceOf(i, "Unit"))
550- then cx.senderPublicKey
582+ else if ($isInstanceOf(k, "Unit"))
583+ then cI.senderPublicKey
551584 else throw("Match error")
552585 }
553- if (sigVerify(cx.bodyBytes, cx.proofs[0], cz))
586+ if (sigVerify(cI.bodyBytes, cI.proofs[0], cK))
554587 then true
555- else sigVerify(cx.bodyBytes, cx.proofs[0], cA)
588+ else sigVerify(cI.bodyBytes, cI.proofs[0], cL)
556589 }
557590
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 (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
7980
8081
81-func D () = "%s%s__config__factoryAddress"
82+func B (t,u,y) = {
83+ let k = getString(t, u)
84+ if ($isInstanceOf(k, "String"))
85+ then {
86+ let C = k
87+ value(parseBigInt(C))
88+ }
89+ else if ($isInstanceOf(k, "Unit"))
90+ then y
91+ else throw("Match error")
92+ }
8293
8394
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"
95+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
9996
10097
101-func M () = "%s__managerPublicKey"
98+func G (j,H) = toInt(fraction(j, toBigInt(H), d))
10299
103100
104-func N () = "%s__migratorPublicKey"
101+func I () = "%s%s__config__factoryAddress"
105102
106103
107-func O () = "%s__pendingManagerPublicKey"
104+let J = 1
105+
106+let K = 2
107+
108+let L = 3
109+
110+let M = 4
111+
112+let N = 5
113+
114+let O = 6
115+
116+let P = 7
117+
118+func Q () = "%s__factoryConfig"
108119
109120
110-func P () = "%s__stablePoolAddonAddr"
121+func R () = "%s__managerPublicKey"
111122
112123
113-func Q (R) = makeString(["%s%s%s", R, "mappings__lpAsset2PoolContract"], e)
124+func S () = "%s__migratorPublicKey"
114125
115126
116-func S () = "%s__lpTokensList"
127+func T () = "%s__pendingManagerPublicKey"
117128
118129
119-func T (R) = makeString(["%s%s%s", R, "mappings__lpAsset2PoolContract"], e)
130+func U () = "%s__stablePoolAddonAddr"
120131
121132
122-func U (V) = makeString(["%s%s", "poolWeight", V], e)
133+func V (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
123134
124135
125-func W (X) = split(valueOrElse(getString(X, S()), ""), e)
136+func X () = "%s__lpTokensList"
126137
127138
128-func Y (X) = split(s(X, L()), e)
139+func Y (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
129140
130141
131-func Z (aa) = addressFromStringValue(aa[F])
142+func Z (aa) = makeString(["%s%s", "poolWeight", aa], e)
132143
133144
134-func ab (aa) = addressFromStringValue(aa[I])
145+func ab (ac) = split(valueOrElse(getString(ac, X()), ""), e)
135146
136147
137-func ac (aa) = addressFromStringValue(aa[E])
148+func ad (ac) = split(v(ac, Q()), e)
138149
139150
140-func ad () = "%s%s__ratePerBlock__current"
151+func ae (af) = addressFromStringValue(af[K])
141152
142153
143-func ae () = "%s%s__ratePerBlockMax__current"
154+func ag (af) = addressFromStringValue(af[N])
144155
145156
146-func af () = "%s%s__emission__startBlock"
157+func ah (af) = addressFromStringValue(af[J])
147158
148159
149-func ag () = "%s%s__emission__duration"
160+func ai () = "%s%s__ratePerBlock__current"
150161
151162
152-func ah () = "%s%s__emission__endBlock"
163+func aj () = "%s%s__ratePerBlockMax__current"
153164
154165
155-func ai (aj,ak) = makeString(["%s%s%s__staked", aj, ak], e)
166+func ak () = "%s%s__emission__startBlock"
156167
157168
158-func al (ak) = ("%s%s%s__staked__total__" + ak)
169+func al () = "%s%s__emission__duration"
159170
160171
161-func am (ak,aj) = makeString(["%s%s%s__claimed", aj, ak], e)
172+func am () = "%s%s__emission__endBlock"
162173
163174
164-func an (ak,aj) = makeString(["%s%s%s__claimedMinReward", aj, ak], e)
175+func an (ao,ap) = makeString(["%s%s%s__staked", ao, ap], e)
165176
166177
167-func ao (ak,aj) = makeString(["%s%s%s__claimedBoostReward", aj, ak], e)
178+func aq (ap) = ("%s%s%s__staked__total__" + ap)
168179
169180
170-func ap (ak) = makeString(["%s%s%s__claimed", "total", ak], e)
181+func ar (ap,ao) = makeString(["%s%s%s__claimed", ao, ap], e)
171182
172183
173-func aq (r) = valueOrElse(getInteger(this, r), 0)
184+func as (ap,ao) = makeString(["%s%s%s__claimedMinReward", ao, ap], e)
174185
175186
176-func ar (as) = makeString(["%s%s%s", as, "total", "bal"], e)
187+func at (ap,ao) = makeString(["%s%s%s__claimedBoostReward", ao, ap], e)
177188
178189
179-func at (as,au) = makeString(["%s%s%s", as, au, "bal"], e)
190+func au (ap) = makeString(["%s%s%s__claimed__total", ap], e)
180191
181192
182-func av (as) = makeString(["%s%s%s", as, "total", "balINT"], e)
193+func av (u) = valueOrElse(getInteger(this, u), 0)
183194
184195
185-func aw (as,au) = makeString(["%s%s%s", as, au, "balINT"], e)
196+func aw (ax) = makeString(["%s%s%s", ax, "total", "bal"], e)
186197
187198
188-func ax (as) = makeString(["%s%s%s", as, "total", "lastUpd"], e)
199+func ay (ax,az) = makeString(["%s%s%s", ax, az, "bal"], e)
189200
190201
191-func ay (as,au) = makeString(["%s%s%s", as, au, "lastUpd"], e)
202+func aA (ax) = makeString(["%s%s%s", ax, "total", "balINT"], e)
192203
193204
194-func az (as) = makeString(["%s%s%s%s", as, "common", "lpInt"], e)
205+func aB (ax,az) = makeString(["%s%s%s", ax, az, "balINT"], e)
195206
196207
197-func aA (as) = makeString(["%s%s%s%s", as, "common", "lpIntH"], e)
208+func aC (ax) = makeString(["%s%s%s", ax, "total", "lastUpd"], e)
198209
199210
200-func aB (as,au) = makeString(["%s%s%s%s", as, au, "lpInt"], e)
211+func aD (ax,az) = makeString(["%s%s%s", ax, az, "lastUpd"], e)
201212
202213
203-func aC (as,au) = makeString(["%s%s%s%s", as, au, "lpIntH"], e)
214+func aE (ax) = makeString(["%s%s%s%s", ax, "common", "lpInt"], e)
204215
205216
206-func aD (as) = makeString(["%s", as, "wxPerLp"], e)
217+func aF (ax) = makeString(["%s%s%s%s", ax, "common", "lpIntH"], e)
207218
208219
209-func aE (as) = makeString(["%s", as, "wxPerLpX18"], e)
220+func aG (ax,az) = makeString(["%s%s%s%s", ax, az, "lpInt"], e)
210221
211222
212-func aF (as,au) = makeString(["%s%s%s%s", as, au, "uIntL"], e)
223+func aH (ax,az) = makeString(["%s%s%s%s", ax, az, "lpIntH"], e)
213224
214225
215-func aG (aH,au,aI) = makeString(["%s%s%s%s__history", aH, au, aI], e)
226+func aI (ax) = makeString(["%s", ax, "wxPerLp"], e)
216227
217228
218-func aJ (au,as,aH,aK) = makeString(["%s%s%s%d%d%d", au, as, aH, toString(height), toString(lastBlock.timestamp), toString(aK)], e)
229+func aJ (ax) = makeString(["%s", ax, "wxPerLpX18"], e)
219230
220231
221-func aL (aH,au,as,aK,aM) = StringEntry(aG(aH, au, toBase58String(aM)), aJ(au, as, aH, aK))
232+func aK (ax,az) = makeString(["%s%s%s%s", ax, az, "uIntL"], e)
222233
223234
224-let aN = q(D())
235+func aL (aM,az,aN) = makeString(["%s%s%s%s__history", aM, az, aN], e)
225236
226-let aO = addressFromStringValue(aN)
227237
228-let aa = Y(aO)
238+func aO (az,ax,aM,aP) = makeString(["%s%s%s%d%d%d", az, ax, aM, toString(height), toString(lastBlock.timestamp), toString(aP)], e)
229239
230-let aP = ab(aa)
231240
232-let aQ = Z(aa)
241+func aQ (aM,az,ax,aP,aR) = StringEntry(aL(aM, az, toBase58String(aR)), aO(az, ax, aM, aP))
233242
234-func aR (aS,aT,aU,aV) = if (if ((aT == 0))
235- then (aS > 0)
243+
244+let aS = s(this, I())
245+
246+let aT = addressFromStringValue(aS)
247+
248+let af = ad(aT)
249+
250+let aU = ag(af)
251+
252+let aV = ae(af)
253+
254+func aW (aX,aY,aZ,ba) = if (if ((aY == g))
255+ then (aX > g)
236256 else false)
237- then 0
238- else if ((aS == 0))
239- then aU
240- else if (if ((aT > 0))
241- then (aS > 0)
257+ then g
258+ else if ((aX == g))
259+ then aZ
260+ else if (if ((aY > g))
261+ then (aX > g)
242262 else false)
243- then x(this, aV)
263+ then value(parseBigInt(s(this, ba)))
244264 else throw("calcWxPerLpIntegralUserLast: unexpected state")
245265
246266
247-func aW (ak,aX,aY) = {
248- let aZ = al(ak)
249- let ba = aq(aZ)
250- let bb = getIntegerValue(aO, U(aX))
251- let bc = x(aP, af())
252- let bd = 1000
253- let be = (x(aP, ad()) * bd)
254- let bf = fraction(be, bb, (f * 3))
255- let bg = az(ak)
256- let bh = aA(ak)
257- let bi = aD(ak)
258- let bj = v(this, bh, bc)
259- let bk = u(this, bg)
260- let bl = 0
261- let bm = max([(height - bj), 0])
262- let bn = if ((bl != 0))
263- then bl
264- else fraction(bf, b, ba)
265- let bo = (ba + aY)
266- let aU = (bk + (bn * bm))
267- let bp = (bf / bo)
268- let bq = height
269- let br = makeString([toString(aU), "dh=", toString(bm), "wxPerLpX3=", toString(bn), "stakedTotal=", toString(ba), toString(bf), toString(be), "poolWeight=", toString(bb)], "::")
270- $Tuple3(aU, [IntegerEntry(bg, aU), IntegerEntry(bh, bq), IntegerEntry(bi, bp)], br)
267+func bb (ap,bc,bd) = {
268+ let be = aq(ap)
269+ let bf = toBigInt(av(be))
270+ let bg = if ((bf == g))
271+ then h
272+ else bf
273+ let bh = getIntegerValue(aT, Z(bc))
274+ let bi = z(aU, ak())
275+ let bj = 1000
276+ let bk = (z(aU, ai()) * bj)
277+ let bl = fraction(bk, bh, (f * 3))
278+ let bm = aE(ap)
279+ let bn = aF(ap)
280+ let bo = aI(ap)
281+ let bp = x(this, bn, bi)
282+ let bq = A(this, bm)
283+ let br = 0
284+ let bs = max([(height - bp), 0])
285+ let bt = if ((br != 0))
286+ then toBigInt(br)
287+ else fraction(toBigInt(bl), toBigInt(b), bg)
288+ let bu = (bf + toBigInt(bd))
289+ let bv = if ((bu == g))
290+ then h
291+ else bu
292+ let aZ = (bq + (bt * toBigInt(bs)))
293+ let bw = (toBigInt(bl) / bv)
294+ let bx = height
295+ let by = makeString([toString(aZ), "dh=", toString(bs), "wxPerLpX3=", toString(bt), "stakedTotal=", toString(bf), toString(bl), toString(bk), "poolWeight=", toString(bh)], "::")
296+ $Tuple3(aZ, [StringEntry(bm, toString(aZ)), IntegerEntry(bn, bx), StringEntry(bo, toString(bw))], by)
271297 }
272298
273299
274-func bs (ak,aj,aX,aY) = {
275- let bt = aW(ak, aX, aY)
276- let aU = bt._1
277- let bu = bt._2
278- let bv = bt._3
279- let bd = 1000
280- let bw = ai(aj, ak)
281- let aS = aq(bw)
282- let bx = aB(ak, aj)
283- let by = aC(ak, aj)
284- let aV = aF(ak, aj)
285- let bz = u(this, bx)
286- let aT = u(this, by)
287- let bA = aR(aS, aT, aU, aV)
288- let bB = (bz + fraction((aU - bA), aS, (b * bd)))
289- let bC = aU
290- let bD = height
291- let br = makeString(["wxToClaimUser", toString(bz), "wxPerLpInteg", toString(aT), "wxPerLpIntegralNew", toString(aU), "wxToClaimUserNew", toString(bB), "wxPerLpIntegralUserLast", toString(bA), toString(aS), "poolDEBUG=", bv, "height=", toString(height)], "::")
292- $Tuple3(bB, (bu ++ [IntegerEntry(bx, bB), IntegerEntry(by, bD), IntegerEntry(aV, bC)]), br)
300+func bz (ap,ao,bc,bd) = {
301+ let bA = bb(ap, bc, bd)
302+ let aZ = bA._1
303+ let bB = bA._2
304+ let bC = bA._3
305+ let bj = 1000
306+ let bD = an(ao, ap)
307+ let aX = av(bD)
308+ let bE = aG(ap, ao)
309+ let bF = aH(ap, ao)
310+ let ba = aK(ap, ao)
311+ let bG = A(this, bE)
312+ let aY = w(this, bF)
313+ let bH = aW(toBigInt(aX), toBigInt(aY), aZ, ba)
314+ let bI = (b * bj)
315+ let bJ = max([(bG + fraction((aZ - bH), toBigInt(aX), toBigInt(bI))), g])
316+ let bK = aZ
317+ let bL = height
318+ let by = makeString(["wxToClaimUser", toString(bG), "wxPerLpInteg", toString(aY), "this.getString", toString(value(parseBigInt(s(this, ba)))), "wxPerLpIntegralNew", toString(aZ), "wxToClaimUserNew", toString(bJ), "wxPerLpIntegralUserLast", toString(bH), toString(aX), "poolDEBUG=", bC, "height=", toString(height)], "::")
319+ $Tuple3(bJ, (bB ++ [StringEntry(bE, toString(bJ)), IntegerEntry(bF, bL), StringEntry(ba, toString(bK))]), by)
293320 }
294321
295322
296-func bE () = {
297- let i = getString(M())
298- if ($isInstanceOf(i, "String"))
323+func bM () = {
324+ let k = getString(R())
325+ if ($isInstanceOf(k, "String"))
299326 then {
300- let bF = i
301- fromBase58String(bF)
327+ let C = k
328+ fromBase58String(C)
302329 }
303- else if ($isInstanceOf(i, "Unit"))
330+ else if ($isInstanceOf(k, "Unit"))
304331 then unit
305332 else throw("Match error")
306333 }
307334
308335
309-func bG () = {
310- let i = getString(N())
311- if ($isInstanceOf(i, "String"))
336+func bN () = {
337+ let k = getString(S())
338+ if ($isInstanceOf(k, "String"))
312339 then {
313- let bF = i
314- fromBase58String(bF)
340+ let C = k
341+ fromBase58String(C)
315342 }
316- else if ($isInstanceOf(i, "Unit"))
343+ else if ($isInstanceOf(k, "Unit"))
317344 then unit
318345 else throw("Match error")
319346 }
320347
321348
322-func bH () = {
323- let i = getString(O())
324- if ($isInstanceOf(i, "String"))
349+func bO () = {
350+ let k = getString(T())
351+ if ($isInstanceOf(k, "String"))
325352 then {
326- let bF = i
327- fromBase58String(bF)
353+ let C = k
354+ fromBase58String(C)
328355 }
329- else if ($isInstanceOf(i, "Unit"))
356+ else if ($isInstanceOf(k, "Unit"))
330357 then unit
331358 else throw("Match error")
332359 }
333360
334361
335-func bI (bJ) = {
336- let bK = throw("Permission denied")
337- let i = bE()
338- if ($isInstanceOf(i, "ByteVector"))
362+func bP (bQ) = {
363+ let bR = throw("Permission denied")
364+ let k = bM()
365+ if ($isInstanceOf(k, "ByteVector"))
339366 then {
340- let bL = i
341- if ((bJ.callerPublicKey == bL))
367+ let bS = k
368+ if ((bQ.callerPublicKey == bS))
342369 then true
343- else bK
370+ else bR
344371 }
345- else if ($isInstanceOf(i, "Unit"))
346- then if ((bJ.caller == this))
372+ else if ($isInstanceOf(k, "Unit"))
373+ then if ((bQ.caller == this))
347374 then true
348- else bK
375+ else bR
349376 else throw("Match error")
350377 }
351378
352379
353-@Callable(bJ)
354-func constructor (bM) = {
355- let bN = bI(bJ)
356- if ((bN == bN))
357- then [StringEntry(D(), bM)]
380+@Callable(bQ)
381+func constructor (bT) = {
382+ let bU = bP(bQ)
383+ if ((bU == bU))
384+ then [StringEntry(I(), bT)]
358385 else throw("Strict value is not equal to itself.")
359386 }
360387
361388
362389
363-@Callable(bJ)
364-func setManager (bO) = {
365- let bN = bI(bJ)
366- if ((bN == bN))
390+@Callable(bQ)
391+func setManager (bV) = {
392+ let bU = bP(bQ)
393+ if ((bU == bU))
367394 then {
368- let bP = fromBase58String(bO)
369- if ((bP == bP))
370- then [StringEntry(O(), bO)]
395+ let bW = fromBase58String(bV)
396+ if ((bW == bW))
397+ then [StringEntry(T(), bV)]
371398 else throw("Strict value is not equal to itself.")
372399 }
373400 else throw("Strict value is not equal to itself.")
374401 }
375402
376403
377404
378-@Callable(bJ)
405+@Callable(bQ)
379406 func confirmManager () = {
380- let bQ = bH()
381- let bR = if (isDefined(bQ))
407+ let bX = bO()
408+ let bY = if (isDefined(bX))
382409 then true
383410 else throw("No pending manager")
384- if ((bR == bR))
411+ if ((bY == bY))
385412 then {
386- let bS = if ((bJ.callerPublicKey == value(bQ)))
413+ let bZ = if ((bQ.callerPublicKey == value(bX)))
387414 then true
388415 else throw("You are not pending manager")
389- if ((bS == bS))
390- then [StringEntry(M(), toBase58String(value(bQ))), DeleteEntry(O())]
416+ if ((bZ == bZ))
417+ then [StringEntry(R(), toBase58String(value(bX))), DeleteEntry(T())]
391418 else throw("Strict value is not equal to itself.")
392419 }
393420 else throw("Strict value is not equal to itself.")
394421 }
395422
396423
397424
398-@Callable(bJ)
399-func stake () = if ((size(bJ.payments) != 1))
425+@Callable(bQ)
426+func stake () = if ((size(bQ.payments) != 1))
400427 then throw("invalid payment - exact one payment must be attached")
401428 else {
402- let bT = bJ.payments[0]
403- let as = value(bT.assetId)
404- let ak = toBase58String(as)
405- let aK = bT.amount
406- let aX = valueOrErrorMessage(getString(aO, Q(ak)), ("unsupported lp asset " + ak))
407- let bU = toString(bJ.caller)
408- let aj = if ((bU == aX))
409- then toString(bJ.originCaller)
410- else bU
411- let bw = ai(aj, ak)
412- let aZ = al(ak)
413- let aS = aq(bw)
414- let ba = aq(aZ)
415- let bV = bs(ak, aj, aX, aK)
416- let bB = bV._1
417- let bW = bV._2
418- let br = bV._3
419- ([IntegerEntry(bw, (aS + aK)), IntegerEntry(aZ, (ba + aK)), aL("stake", aj, ak, aK, bJ.transactionId)] ++ bW)
429+ let ca = bQ.payments[0]
430+ let ax = value(ca.assetId)
431+ let ap = toBase58String(ax)
432+ let aP = ca.amount
433+ let bc = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
434+ let cb = toString(bQ.caller)
435+ let ao = if ((cb == bc))
436+ then toString(bQ.originCaller)
437+ else cb
438+ let bD = an(ao, ap)
439+ let be = aq(ap)
440+ let aX = av(bD)
441+ let bf = av(be)
442+ let cc = bz(ap, ao, bc, aP)
443+ let bJ = cc._1
444+ let cd = cc._2
445+ let by = cc._3
446+ ([IntegerEntry(bD, (aX + aP)), IntegerEntry(be, (bf + aP)), aQ("stake", ao, ap, aP, bQ.transactionId)] ++ cd)
420447 }
421448
422449
423450
424-@Callable(bJ)
425-func unstake (ak,aK) = {
426- let as = fromBase58String(ak)
427- let aX = valueOrErrorMessage(getString(aO, Q(ak)), ("unsupported lp asset " + ak))
428- let bX = valueOrElse(getString(this, P()), aX)
429- let bU = toString(bJ.caller)
430- let aj = if (if ((bU == aX))
451+@Callable(bQ)
452+func unstake (ap,aP) = {
453+ let ax = fromBase58String(ap)
454+ let bc = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
455+ let ce = valueOrElse(getString(this, U()), bc)
456+ let cb = toString(bQ.caller)
457+ let ao = if (if ((cb == bc))
431458 then true
432- else (bU == bX))
433- then toString(bJ.originCaller)
434- else bU
435- let bw = ai(aj, ak)
436- let aZ = al(ak)
437- let aS = aq(bw)
438- let ba = aq(aZ)
439- let bY = bs(ak, aj, aX, -(aK))
440- let bB = bY._1
441- let bW = bY._2
442- let br = bY._3
443- if ((aK > aS))
459+ else (cb == ce))
460+ then toString(bQ.originCaller)
461+ else cb
462+ let bD = an(ao, ap)
463+ let be = aq(ap)
464+ let aX = av(bD)
465+ let bf = av(be)
466+ let cf = bz(ap, ao, bc, -(aP))
467+ let bJ = cf._1
468+ let cd = cf._2
469+ let by = cf._3
470+ if ((aP > aX))
444471 then throw("passed amount is less then available")
445- else ([IntegerEntry(bw, (aS - aK)), IntegerEntry(aZ, (ba - aK)), ScriptTransfer(bJ.caller, aK, as), aL("unstake", aj, ak, aK, bJ.transactionId)] ++ bW)
472+ else ([IntegerEntry(bD, (aX - aP)), IntegerEntry(be, (bf - aP)), ScriptTransfer(bQ.caller, aP, ax), aQ("unstake", ao, ap, aP, bQ.transactionId)] ++ cd)
446473 }
447474
448475
449476
450-@Callable(bJ)
451-func claimWx (ak) = {
452- let au = bJ.caller
453- let aj = toString(bJ.caller)
454- let aX = s(aO, T(ak))
455- let bZ = am(ak, aj)
456- let ca = ap(ak)
457- let cb = an(ak, aj)
458- let cc = ao(ak, aj)
459- let cd = u(this, bZ)
460- let ce = u(this, cb)
461- let cf = u(this, cc)
462- let cg = u(this, ca)
463- let ch = bs(ak, aj, aX, 0)
464- let bB = ch._1
465- let bW = ch._2
466- let br = ch._3
467- let ci = (bB - cd)
468- if ((0 >= ci))
477+@Callable(bQ)
478+func claimWx (ap) = {
479+ let az = bQ.caller
480+ let ao = toString(bQ.caller)
481+ let bc = v(aT, Y(ap))
482+ let cg = ar(ap, ao)
483+ let ch = au(ap)
484+ let ci = as(ap, ao)
485+ let cj = at(ap, ao)
486+ let ck = A(this, cg)
487+ let cl = A(this, ci)
488+ let cm = A(this, cj)
489+ let cn = A(this, ch)
490+ let co = bz(ap, ao, bc, 0)
491+ let bJ = co._1
492+ let cd = co._2
493+ let by = co._3
494+ let cp = max([(bJ - ck), g])
495+ if ((g >= cp))
469496 then throw("nothing to claim")
470497 else {
471- let cj = k(g(invoke(aQ, "claimWxBoost", [ak, aj], nil))[0])
472- let ck = ci
473- let cl = min([(ck * 2), cj])
474- let cm = o(g(invoke(aP, "emit", [ck], nil))[0])
475- let cn = g(invoke(aP, "emit", [cl], nil))
476- if ((cn == cn))
477- then [IntegerEntry(bZ, (cd + ci)), IntegerEntry(cb, (ce + ck)), IntegerEntry(cc, (cf + cl)), IntegerEntry(ca, (cg + ci)), ScriptTransfer(au, ck, cm), ScriptTransfer(au, cl, cm), aL("claim", aj, ak, ci, bJ.transactionId)]
498+ let cq = max([m(i(invoke(aV, "claimWxBoost", [ap, ao], nil))[0]), 0])
499+ let cr = cp
500+ let cs = min([(cr * toBigInt(2)), toBigInt(cq)])
501+ let ct = q(i(invoke(aU, "emit", [toInt(cr)], nil))[0])
502+ let cu = i(invoke(aU, "emit", [toInt(cs)], nil))
503+ if ((cu == cu))
504+ then {
505+ let cv = (ck + cp)
506+ let cw = (cl + cr)
507+ let cx = (cl + cr)
508+ let cy = (cl + cr)
509+[StringEntry(cg, toString(cv)), StringEntry(ci, toString(cw)), StringEntry(cj, toString(cx)), StringEntry(ch, toString(cy)), ScriptTransfer(az, toInt(cr), ct), ScriptTransfer(az, toInt(cs), ct), aQ("claim", ao, ap, toInt(cp), bQ.transactionId)]
510+ }
478511 else throw("Strict value is not equal to itself.")
479512 }
480513 }
481514
482515
483516
484-@Callable(bJ)
485-func claimWxREADONLY (ak,aj) = {
486- let bw = ai(aj, ak)
487- let aZ = al(ak)
488- let bZ = am(ak, aj)
489- let aS = aq(bw)
490- let ba = aq(aZ)
491- let cd = u(this, bZ)
492- let aX = s(aO, T(ak))
493- let bb = getIntegerValue(aO, U(aX))
494- let co = x(aP, ad())
495- let bc = x(aP, af())
496- let cp = if ((bc > height))
517+@Callable(bQ)
518+func claimWxREADONLY (ap,ao) = {
519+ let bD = an(ao, ap)
520+ let be = aq(ap)
521+ let cg = ar(ap, ao)
522+ let aX = av(bD)
523+ let bf = av(be)
524+ let ck = A(this, cg)
525+ let bc = v(aT, Y(ap))
526+ let bh = getIntegerValue(aT, Z(bc))
527+ let cz = z(aU, ai())
528+ let bi = z(aU, ak())
529+ let cA = if ((bi > height))
497530 then 0
498- else (height - bc)
499- let cq = fraction((co * cp), bb, f)
500- let cr = fraction(cq, aS, ba)
501- let cs = bs(ak, aj, aX, 0)
502- let bB = cs._1
503- let bW = cs._2
504- let br = cs._3
505- let ci = (bB - cd)
506- let ct = g(invoke(aQ, "claimWxBoostREADONLY", [ak, aj], nil))
507- let cj = k(ct[0])
508- let cu = m(ct[1])
509- let ck = ci
510- let cl = min([(ck * 2), cj])
511- let cv = (ck + cl)
512- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ak, aj, toString(cv), toString(cd), toString(ck), toString(cl), ((((br + "::") + toString(cr)) + "::BOOSTDEBUG::") + cu)], e))
531+ else (height - bi)
532+ let cB = fraction((cz * cA), bh, f)
533+ let cC = fraction(cB, aX, bf)
534+ let cD = bz(ap, ao, bc, 0)
535+ let bJ = cD._1
536+ let cd = cD._2
537+ let by = cD._3
538+ let cp = max([(bJ - ck), g])
539+ let cE = i(invoke(aV, "claimWxBoostREADONLY", [ap, ao], nil))
540+ let cq = max([m(cE[0]), 0])
541+ let cF = o(cE[1])
542+ let cr = cp
543+ let cs = min([(cr * toBigInt(2)), toBigInt(cq)])
544+ let cG = (cr + cs)
545+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ap, ao, toString(cG), toString(ck), toString(cr), toString(cs), ((((by + "::") + toString(cC)) + "::BOOSTDEBUG::") + cF)], e))
513546 }
514547
515548
516549
517-@Callable(bJ)
518-func onModifyWeight (ak,aX) = if ((bJ.caller != aO))
550+@Callable(bQ)
551+func onModifyWeight (ap,bc) = if ((bQ.caller != aT))
519552 then throw("permissions denied")
520553 else {
521- let cw = aW(ak, aX, 0)
522- let aU = cw._1
523- let bu = cw._2
524- let bv = cw._3
525- bu
554+ let cH = bb(ap, bc, 0)
555+ let aZ = cH._1
556+ let bB = cH._2
557+ let bC = cH._3
558+ bB
526559 }
527560
528561
529-@Verifier(cx)
530-func cy () = {
531- let cz = {
532- let i = bE()
533- if ($isInstanceOf(i, "ByteVector"))
562+@Verifier(cI)
563+func cJ () = {
564+ let cK = {
565+ let k = bM()
566+ if ($isInstanceOf(k, "ByteVector"))
534567 then {
535- let bL = i
536- bL
568+ let bS = k
569+ bS
537570 }
538- else if ($isInstanceOf(i, "Unit"))
539- then cx.senderPublicKey
571+ else if ($isInstanceOf(k, "Unit"))
572+ then cI.senderPublicKey
540573 else throw("Match error")
541574 }
542- let cA = {
543- let i = bG()
544- if ($isInstanceOf(i, "ByteVector"))
575+ let cL = {
576+ let k = bN()
577+ if ($isInstanceOf(k, "ByteVector"))
545578 then {
546- let bL = i
547- bL
579+ let bS = k
580+ bS
548581 }
549- else if ($isInstanceOf(i, "Unit"))
550- then cx.senderPublicKey
582+ else if ($isInstanceOf(k, "Unit"))
583+ then cI.senderPublicKey
551584 else throw("Match error")
552585 }
553- if (sigVerify(cx.bodyBytes, cx.proofs[0], cz))
586+ if (sigVerify(cI.bodyBytes, cI.proofs[0], cK))
554587 then true
555- else sigVerify(cx.bodyBytes, cx.proofs[0], cA)
588+ else sigVerify(cI.bodyBytes, cI.proofs[0], cL)
556589 }
557590

github/deemru/w8io/169f3d6 
306.79 ms