tx · 5fmoB7AY8GH5rNgays2T8Ffs8HtCMXcSc3GztBTbif6V

3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp:  -0.03100000 Waves

2022.07.19 13:55 [2146538] smart account 3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp > SELF 0.00000000 Waves

{ "type": 13, "id": "5fmoB7AY8GH5rNgays2T8Ffs8HtCMXcSc3GztBTbif6V", "fee": 3100000, "feeAssetId": null, "timestamp": 1658228158050, "version": 1, "sender": "3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp", "senderPublicKey": "86RHVxKovtU7yKnepY8wKsd8niDxGAsiwuA1XA1DNqrS", "proofs": [ "Q3AAWhiX4S22nbn5LxCxDns4V2BZQHno2Bq2RSf4mz9UUGC3EMyYF42FzMmN4gHmvFR4U9NTnFYDhzthzcqrPYZ" ], "script": "base64:BgJZCAISAwoBCBIDCgEIEgQKAggIEgMKAQgSCQoHARERERgYGBIHCgUREREYGBIHCgUBAQEICBIAEgMKAQgSBAoCCAESBAoCCAESBAoCCAESAwoBCBIDCgEIEgBZAAZTQ0FMRTgACAAFTVVMVDgAgMLXLwAHU0NBTEUxOAASAAZNVUxUMTgJALYCAQCAgJC7utat8A0AA1NFUAICX18ADlBPT0xXRUlHSFRNVUxUBQVNVUxUOAAKemVyb0JpZ0ludAkAtgIBAAAADmlkeFBvb2xBZGRyZXNzAAEADWlkeFBvb2xTdGF0dXMAAgAQaWR4UG9vbExQQXNzZXRJZAADAA1pZHhBbXRBc3NldElkAAQAD2lkeFByaWNlQXNzZXRJZAAFAA5pZHhBbXRBc3NldERjbQAGABBpZHhQcmljZUFzc2V0RGNtAAcADmlkeElBbXRBc3NldElkAAgAEGlkeElQcmljZUFzc2V0SWQACQANaWR4TFBBc3NldERjbQAKAQ9nZXRTdHJpbmdPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQdhZGRyZXNzAgEuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0SW50T3JaZXJvAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBCWFzQW55TGlzdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMeXN0BQckbWF0Y2gwBQp2YWxBbnlMeXN0CQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEIYXNTdHJpbmcBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBEWtleUZhY3RvcnlBZGRyZXNzAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAAEAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAAAgAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAwAVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwAAQAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAABQAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAYAGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAABwAaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAACAENa2V5RmFjdG9yeUNmZwACESVzX19mYWN0b3J5Q29uZmlnARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABEGtleUZhY3RvcnlMcExpc3QAAhAlc19fbHBUb2tlbnNMaXN0ASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABFGtleUZhY3RvcnlQb29sV2VpZ2h0AQ9jb250cmFjdEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUPY29udHJhY3RBZGRyZXNzBQNuaWwFA1NFUAEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARFrZXlGYWN0b3J5QWRkcmVzcwABCnJlYWRMcExpc3QACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARBrZXlGYWN0b3J5THBMaXN0AAIABQNTRVABFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQdmYWN0b3J5CQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABC2tleUJvb3N0Q2ZnAAIKJXNfX2NvbmZpZwEfa2V5Qm9vc3RpbmdMb2NrUGFyYW1Ub3RhbEFtb3VudAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAEoa2V5Qm9vc3RpbmdTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBGmtleUJvb3N0aW5nU3RhdHNMb2Nrc0NvdW50AAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBGmtleUJvb3N0aW5nU3RhdHNVc2Vyc0NvdW50AAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBEmtleVVzZXIyTnVtTWFwcGluZwELdXNlckFkZHJlc3MJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAESa2V5TnVtMlVzZXJNYXBwaW5nAQNudW0JALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFA251bQUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIGYW1vdW50BQNuaWwFA1NFUAEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgVzdGFydAUDbmlsBQNTRVABFGtleUxvY2tQYXJhbUR1cmF0aW9uAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICCGR1cmF0aW9uBQNuaWwFA1NFUAENa2V5TG9ja1BhcmFtSwEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgFrBQNuaWwFA1NFUAENa2V5TG9ja1BhcmFtQgEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgFiBQNuaWwFA1NFUAEVa2V5TG9ja1BhcmFtQnlQZXJpb2RLAgd1c2VyTnVtBnBlcmlvZAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFB3VzZXJOdW0JAMwIAgIBawkAzAgCBQZwZXJpb2QFA25pbAUDU0VQARVrZXlMb2NrUGFyYW1CeVBlcmlvZEICB3VzZXJOdW0GcGVyaW9kCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUHdXNlck51bQkAzAgCAgFiCQDMCAIFBnBlcmlvZAUDbmlsBQNTRVABIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQd1c2VyTnVtCQC5CQIJAMwIAgIeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAEHdXNlck51bQkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAETa2V5VXNlckJvb3N0Q2xhaW1lZAEHdXNlck51bQkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABEWtleVRvdGFsQ2FjaGVkR3d4AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAEPa2V5U3Rha2VkQnlVc2VyAg51c2VyQWRkcmVzc1N0cgxscEFzc2V0SWRTdHIJALkJAgkAzAgCAg4lcyVzJXNfX3N0YWtlZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQ5rZXlTdGFrZWRUb3RhbAEMbHBBc3NldElkU3RyCQCsAgICFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQxscEFzc2V0SWRTdHIBEGtleUNsYWltZWRCeVVzZXICDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQARlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAholcyVzJXNfX2NsYWltZWRCb29zdFJld2FyZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQpyZWFkU3Rha2VkAgtzdGFraW5nRGFwcANrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgULc3Rha2luZ0RhcHAFA2tleQAAAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAIaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgETa2V5RW1pc3Npb25FbmRCbG9jawACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawALZmFjdG9yeURhcHAJARhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAApmYWN0b3J5Q2ZnCQEUcmVhZEZhY3RvcnlDZmdPckZhaWwBBQtmYWN0b3J5RGFwcAAMZW1pc3Npb25EYXBwCQEYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwALc3Rha2luZ0RhcHAJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcADWd3eFJld2FyZERhcHAJARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwAMYm9vc3RpbmdEYXBwCQEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEJbHBBc3NldElkBA5wb29sQWRkcmVzc1N0cgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQlscEFzc2V0SWQEDnBvb2xXZWlnaHRNdWx0BQVNVUxUOAQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEFDnBvb2xBZGRyZXNzU3RyBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABBV3eEVtaXNzaW9uUGVyQmxvY2tNYXgJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJASFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQABA1ib29zdE1heENvZWZmAAMEFnBvb2xXeEVtaXNzaW9uUGVyQmxvY2sJAGkCCQBrAwUSd3hFbWlzc2lvblBlckJsb2NrBQpwb29sV2VpZ2h0BQ5wb29sV2VpZ2h0TXVsdAUNYm9vc3RNYXhDb2VmZgQZcG9vbFd4RW1pc3Npb25QZXJCbG9ja01heAkAawMFFXd4RW1pc3Npb25QZXJCbG9ja01heAUKcG9vbFdlaWdodAUOcG9vbFdlaWdodE11bHQECW1heEZhY3RvcgkAaAIFDWJvb3N0TWF4Q29lZmYFBU1VTFQ4BA10b3RhbExwU3Rha2VkCQEMZ2V0SW50T3JaZXJvAgULc3Rha2luZ0RhcHAJAQ5rZXlTdGFrZWRUb3RhbAEFCWxwQXNzZXRJZAkAzAgCBRZwb29sV3hFbWlzc2lvblBlckJsb2NrCQDMCAIFCW1heEZhY3RvcgkAzAgCBQ10b3RhbExwU3Rha2VkBQNuaWwBGmNhbGNHd3hBbW91bnRTdGFydFJFQURPTkxZAwpsb2NrQW1vdW50DGxvY2tEdXJhdGlvbg9tYXhMb2NrRHVyYXRpb24EB2NvZWZmWDgJAGsDBQxsb2NrRHVyYXRpb24FBU1VTFQ4BQ9tYXhMb2NrRHVyYXRpb24EDmdXeEFtb3VudFN0YXJ0CQBrAwUKbG9ja0Ftb3VudAUHY29lZmZYOAUFTVVMVDgJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IPAWkBC2NvbnN0cnVjdG9yAQ5mYWN0b3J5QWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5QWRkcmVzcwAFDmZhY3RvcnlBZGRyZXNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY3VycmVudFJld2FyZFJhdGVSRUFET05MWQEJbHBBc3NldElkBApyZXdhcmREYXRhCQEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEFCWxwQXNzZXRJZAQSd3hFbWlzc2lvblBlckJsb2NrCQCRAwIFCnJld2FyZERhdGEAAAQJbWF4RmFjdG9yCQCRAwIFCnJld2FyZERhdGEAAQQNdG90YWxMcFN0YWtlZAkAkQMCBQpyZXdhcmREYXRhAAIJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUSd3hFbWlzc2lvblBlckJsb2NrCQDMCAIJAKQDAQUJbWF4RmFjdG9yCQDMCAIJAKQDAQUNdG90YWxMcFN0YWtlZAUDbmlsBQNTRVABaQEdY3VycmVudFVzZXJSZXdhcmRSYXRlUkVBRE9OTFkCCWxwQXNzZXRJZAt1c2VyQWRkcmVzcwQKcmV3YXJkRGF0YQkBGWludGVybmFsQ3VycmVudFJld2FyZFJhdGUBBQlscEFzc2V0SWQEEnd4RW1pc3Npb25QZXJCbG9jawkAkQMCBQpyZXdhcmREYXRhAAAECW1heEZhY3RvcgkAkQMCBQpyZXdhcmREYXRhAAEEDXRvdGFsTHBTdGFrZWQJAJEDAgUKcmV3YXJkRGF0YQACBA5scFN0YWtlZEJ5VXNlcgkBDGdldEludE9yWmVybwIFC3N0YWtpbmdEYXBwCQEPa2V5U3Rha2VkQnlVc2VyAgULdXNlckFkZHJlc3MFCWxwQXNzZXRJZAQNdXNlckNsYWltSW5mbwkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFC3N0YWtpbmdEYXBwAg9jbGFpbVd4UkVBRE9OTFkJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAUDU0VQBA1taW5SZXdhcmRQYXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ11c2VyQ2xhaW1JbmZvAAUCHGNvdWxkbid0IHBhcnNlIG1pblJld2FyZFBhcnQED2Jvb3N0UmV3YXJkUGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNdXNlckNsYWltSW5mbwAGAh5jb3VsZG4ndCBwYXJzZSBib29zdFJld2FyZFBhcnQEBWRlYnVnCQCRAwIFDXVzZXJDbGFpbUluZm8ABwQNYm9vc3RpbmdQb3dlcgMJAAACBQ9ib29zdFJld2FyZFBhcnQAAAkAaAIAAQUFTVVMVDgJAGsDCQBkAgUNbWluUmV3YXJkUGFydAUPYm9vc3RSZXdhcmRQYXJ0BQVNVUxUOAUNbWluUmV3YXJkUGFydAkAlAoCBQNuaWwJALkJAgkAzAgCAgwlZCVkJWQlZCVkJXMJAMwIAgkApAMBBRJ3eEVtaXNzaW9uUGVyQmxvY2sJAMwIAgkApAMBBQltYXhGYWN0b3IJAMwIAgkApAMBBQ10b3RhbExwU3Rha2VkCQDMCAIJAKQDAQUObHBTdGFrZWRCeVVzZXIJAMwIAgkApAMBBQ1ib29zdGluZ1Bvd2VyCQDMCAIFBWRlYnVnBQNuaWwFA1NFUAFpARVjbGFpbWVkUmV3YXJkUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAZscExpc3QJAQpyZWFkTHBMaXN0AAQGcHJlZml4AgolcyVkJWQlZCVzCgEbY2xhaW1lZFJld2FyZEJ5THBBZ2dyZWdhdG9yAglyZXN1bHRTdHIGbmV4dExwBBljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZCQEZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZAIFBm5leHRMcAULdXNlckFkZHJlc3MEG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQkBG2tleUNsYWltZWRCeVVzZXJCb29zdFJld2FyZAIFBm5leHRMcAULdXNlckFkZHJlc3MEEG1pblJld2FyZENsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgULc3Rha2luZ0RhcHAFGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkAAAQSYm9vc3RSZXdhcmRDbGFpbWVkCQELdmFsdWVPckVsc2UCCQCaCAIFC3N0YWtpbmdEYXBwBRtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkAAAQLZ0ZlZUNsYWltZWQAAAkAuQkCCQDMCAIJAKwCAgUGcHJlZml4BQlyZXN1bHRTdHIJAMwIAgUGbmV4dExwCQDMCAIJAKQDAQUQbWluUmV3YXJkQ2xhaW1lZAkAzAgCCQCkAwEFEmJvb3N0UmV3YXJkQ2xhaW1lZAkAzAgCCQCkAwEFC2dGZWVDbGFpbWVkCQDMCAICA2VuZAUDbmlsBQNTRVAEBnJlc3VsdAoAAiRsBQZscExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgIlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEbY2xhaW1lZFJld2FyZEJ5THBBZ2dyZWdhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCUCgIFA25pbAkArAICCQCsAgIFBnJlc3VsdAUDU0VQBQt1c2VyQWRkcmVzcwFpAR1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQcLY3VycmVudEl0ZXIRZGVsdGFXeEFtb3VudEJ1bGsbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrEWRlbHRhTHBBbW91bnRCdWxrEGxwQXNzZXRJZE9wdEJ1bGsSdXNlckFkZHJlc3NPcHRCdWxrBnJlc0FjYwMJAAACBQtjdXJyZW50SXRlcgkAkAMBBRFkZWx0YVd4QW1vdW50QnVsawkAlAoCBQNuaWwFBnJlc0FjYwQNZGVsdGFXeEFtb3VudAkAkQMCBRFkZWx0YVd4QW1vdW50QnVsawULY3VycmVudEl0ZXIEF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQCRAwIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawULY3VycmVudEl0ZXIEDWRlbHRhTHBBbW91bnQJAJEDAgURZGVsdGFMcEFtb3VudEJ1bGsFC2N1cnJlbnRJdGVyBAxscEFzc2V0SWRPcHQJAJEDAgUQbHBBc3NldElkT3B0QnVsawULY3VycmVudEl0ZXIEDnVzZXJBZGRyZXNzT3B0CQCRAwIFEnVzZXJBZGRyZXNzT3B0QnVsawULY3VycmVudEl0ZXIEBGluZm8JALUJAgoAAUAJAPwHBAUEdGhpcwIRY2FsY0Jvb3N0UkVBRE9OTFkJAMwIAgUNZGVsdGFXeEFtb3VudAkAzAgCBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBQ1kZWx0YUxwQW1vdW50CQDMCAIFDGxwQXNzZXRJZE9wdAkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhFjYWxjQm9vc3RSRUFET05MWQkAzAgCBQ1kZWx0YVd4QW1vdW50CQDMCAIFF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQDMCAIFDWRlbHRhTHBBbW91bnQJAMwIAgUMbHBBc3NldElkT3B0CQDMCAIFDnVzZXJBZGRyZXNzT3B0BQNuaWwFA25pbAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQNTRVAEA3JlcwkAzQgCBQZyZXNBY2MFBGluZm8EA2ludgoAAUAJAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFEWRlbHRhV3hBbW91bnRCdWxrCQDMCAIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawkAzAgCBRFkZWx0YUxwQW1vdW50QnVsawkAzAgCBRBscEFzc2V0SWRPcHRCdWxrCQDMCAIFEnVzZXJBZGRyZXNzT3B0QnVsawkAzAgCBQNyZXMFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFEWRlbHRhV3hBbW91bnRCdWxrCQDMCAIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawkAzAgCBRFkZWx0YUxwQW1vdW50QnVsawkAzAgCBRBscEFzc2V0SWRPcHRCdWxrCQDMCAIFEnVzZXJBZGRyZXNzT3B0QnVsawkAzAgCBQNyZXMFA25pbAUDbmlsAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQNpbnYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVY2FsY0Jvb3N0QnVsa1JFQURPTkxZBQ1kZWx0YVd4QW1vdW50F2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzDWRlbHRhTHBBbW91bnQMbHBBc3NldElkT3B0DnVzZXJBZGRyZXNzT3B0BANyZXMJAPwHBAUEdGhpcwIdY2FsY0Jvb3N0QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgAACQDMCAIFDWRlbHRhV3hBbW91bnQJAMwIAgUXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAMwIAgUNZGVsdGFMcEFtb3VudAkAzAgCBQxscEFzc2V0SWRPcHQJAMwIAgUOdXNlckFkZHJlc3NPcHQJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFA3JlcwFpARFjYWxjQm9vc3RSRUFET05MWQUNZGVsdGFXeEFtb3VudBdkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrcw1kZWx0YUxwQW1vdW50DGxwQXNzZXRJZE9wdA51c2VyQWRkcmVzc09wdAQIbWF0aERhcHAFDWd3eFJld2FyZERhcHAECEVNUFRZU1RSAgVlbXB0eQQXbWF4TG9ja0R1cmF0aW9uSW5CbG9ja3MJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQxib29zdGluZ0RhcHAJAQtrZXlCb29zdENmZwAFA1NFUAAEBAxscEFzc2V0SWRTdHIDCQAAAgUMbHBBc3NldElkT3B0AgAFCEVNUFRZU1RSBQxscEFzc2V0SWRPcHQEDnVzZXJBZGRyZXNzU3RyAwkAAAIFDnVzZXJBZGRyZXNzT3B0AgAFCEVNUFRZU1RSBQ51c2VyQWRkcmVzc09wdAQKdXNlck51bVN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQxib29zdGluZ0RhcHAJARJrZXlVc2VyMk51bU1hcHBpbmcBBQ51c2VyQWRkcmVzc09wdAUIRU1QVFlTVFIECnVzZXJBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFCnVzZXJOdW1TdHIAAAQJbG9ja1N0YXJ0CQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQp1c2VyTnVtU3RyBQZoZWlnaHQEDGxvY2tEdXJhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAJARRrZXlMb2NrUGFyYW1EdXJhdGlvbgEFCnVzZXJOdW1TdHIAAAQHbG9ja0VuZAkAZAIFCWxvY2tTdGFydAUMbG9ja0R1cmF0aW9uBBFyZW1haW5pbmdEdXJhdGlvbgkAlgMBCQDMCAIJAGUCBQdsb2NrRW5kBQZoZWlnaHQJAMwIAgAABQNuaWwEDXVzZXJBbW91bnROZXcJAGQCBQp1c2VyQW1vdW50BQ1kZWx0YVd4QW1vdW50BA9sb2NrRHVyYXRpb25OZXcJAJcDAQkAzAgCCQBkAgURcmVtYWluaW5nRHVyYXRpb24FF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQDMCAIFF21heExvY2tEdXJhdGlvbkluQmxvY2tzBQNuaWwEEXVzZXJDdXJyZ1d4QW1vdW50CQEFYXNJbnQBCQCRAwIJAQlhc0FueUxpc3QBCQD8BwQFDGJvb3N0aW5nRGFwcAITZ3d4VXNlckluZm9SRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc1N0cgUDbmlsBQNuaWwAAAQRZ1d4QW1vdW50U3RhcnROZXcJAJEDAgkBGmNhbGNHd3hBbW91bnRTdGFydFJFQURPTkxZAwUNdXNlckFtb3VudE5ldwUPbG9ja0R1cmF0aW9uTmV3BRdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcwAABBNnV3hQYXJhbXNSZXN1bHRMaXN0CQEJYXNBbnlMaXN0AQkA/AcEBQhtYXRoRGFwcAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFEWdXeEFtb3VudFN0YXJ0TmV3CQDMCAIFBmhlaWdodAkAzAgCBQ9sb2NrRHVyYXRpb25OZXcFA25pbAUDbmlsBA1nV3hBbW91bnREaWZmCQBlAgURZ1d4QW1vdW50U3RhcnROZXcFEXVzZXJDdXJyZ1d4QW1vdW50BAFrCQEFYXNJbnQBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAAQBYgkBBWFzSW50AQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAEEBnBlcmlvZAkApAMBCQEFYXNJbnQBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAgQYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAQRdG90YWxDYWNoZWRHd3hLRVkJARFrZXlUb3RhbENhY2hlZEd3eAAEEnVzZXJNYXhCb29zdEludE5ldwkAaQIJAGgCBRFnV3hBbW91bnRTdGFydE5ldwUPbG9ja0R1cmF0aW9uTmV3AAIEEHRvdGFsTWF4Qm9vc3RJbnQJAQxnZXRJbnRPclplcm8CBQxib29zdGluZ0RhcHAFGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQQOdG90YWxDYWNoZWRHd3gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwBRF0b3RhbENhY2hlZEd3eEtFWQAABAVNVUxUMwDoBwQUd3hFbWlzc2lvblBlckJsb2NrWDMJAGgCCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAUFTVVMVDMED3N0YWtlZEJ5VXNlcktFWQkBD2tleVN0YWtlZEJ5VXNlcgIFDnVzZXJBZGRyZXNzU3RyBQxscEFzc2V0SWRTdHIEDnN0YWtlZFRvdGFsS0VZCQEOa2V5U3Rha2VkVG90YWwBBQxscEFzc2V0SWRTdHIEDHN0YWtlZEJ5VXNlcgkBCnJlYWRTdGFrZWQCBQtzdGFraW5nRGFwcAUPc3Rha2VkQnlVc2VyS0VZBAtzdGFrZWRUb3RhbAkBCnJlYWRTdGFrZWQCBQtzdGFraW5nRGFwcAUOc3Rha2VkVG90YWxLRVkED3N0YWtlZEJ5VXNlck5ldwkAZAIFDHN0YWtlZEJ5VXNlcgUNZGVsdGFMcEFtb3VudAQOc3Rha2VkVG90YWxOZXcJAGQCBQtzdGFrZWRUb3RhbAUNZGVsdGFMcEFtb3VudAQKcG9vbFdlaWdodAMJAQIhPQIFDGxwQXNzZXRJZFN0cgUIRU1QVFlTVFIEDnBvb2xBZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgULZmFjdG9yeURhcHAJARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEFDGxwQXNzZXRJZFN0cgkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFDGxwQXNzZXRJZFN0cgkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEFDnBvb2xBZGRyZXNzU3RyAAAEGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwkAawMFFHd4RW1pc3Npb25QZXJCbG9ja1gzBQpwb29sV2VpZ2h0CQBoAgUOUE9PTFdFSUdIVE1VTFQAAwQJd3hQZXJMcFgzAwkBAiE9AgUOc3Rha2VkVG90YWxOZXcAAAkAawMFGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwUFTVVMVDgFDnN0YWtlZFRvdGFsTmV3AAAEEHVzZXJXeFBlckJsb2NrWDMJAGsDBQl3eFBlckxwWDMFD3N0YWtlZEJ5VXNlck5ldwUFTVVMVDgEF2Jvb3N0RW1pc3Npb25QZXJCbG9ja1gzCQBoAgUYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzAAIEFnRtcFVzZXJCb29zdFBlckJsb2NrWDMJAGsDBRFnV3hBbW91bnRTdGFydE5ldwUXYm9vc3RFbWlzc2lvblBlckJsb2NrWDMJAGQCBQ50b3RhbENhY2hlZEd3eAUNZ1d4QW1vdW50RGlmZgQTdXNlckJvb3N0UGVyQmxvY2tYMwkAlwMBCQDMCAIFFnRtcFVzZXJCb29zdFBlckJsb2NrWDMJAMwIAgkAaAIFEHVzZXJXeFBlckJsb2NrWDMAAgUDbmlsBApib29zdENvZWZmAwkAAAIFEHVzZXJXeFBlckJsb2NrWDMAAAkAaAIAAQUFTVVMVDgJAGsDCQBkAgUTdXNlckJvb3N0UGVyQmxvY2tYMwUQdXNlcld4UGVyQmxvY2tYMwUFTVVMVDgFEHVzZXJXeFBlckJsb2NrWDMEBWRlYnVnCQC5CQIJAMwIAgkArAICAg1scEFzc2V0SWRTdHI9BQxscEFzc2V0SWRTdHIJAMwIAgkArAICAg91c2VyQWRkcmVzc1N0cj0FDnVzZXJBZGRyZXNzU3RyCQDMCAIJAKwCAgILdXNlck51bVN0cj0FCnVzZXJOdW1TdHIJAMwIAgkArAICAgt1c2VyQW1vdW50PQkApAMBBQp1c2VyQW1vdW50CQDMCAIJAKwCAgIOdXNlckFtb3VudE5ldz0JAKQDAQUNdXNlckFtb3VudE5ldwkAzAgCCQCsAgICEGxvY2tEdXJhdGlvbk5ldz0JAKQDAQUPbG9ja0R1cmF0aW9uTmV3CQDMCAIJAKwCAgIPZ1d4QW1vdW50U3RhcnQ9CQCkAwEFEWdXeEFtb3VudFN0YXJ0TmV3CQDMCAIJAKwCAgIXdG1wVXNlckJvb3N0UGVyQmxvY2tYMz0JAKQDAQUWdG1wVXNlckJvb3N0UGVyQmxvY2tYMwkAzAgCCQCsAgICEHN0YWtlZEJ5VXNlck5ldz0JAKQDAQUPc3Rha2VkQnlVc2VyTmV3CQDMCAIJAKwCAgIPc3Rha2VkVG90YWxOZXc9CQCkAwEFDnN0YWtlZFRvdGFsTmV3CQDMCAIJAKwCAgILcG9vbFdlaWdodD0JAKQDAQUKcG9vbFdlaWdodAkAzAgCCQCsAgICCnd4UGVyTHBYMz0JAKQDAQUJd3hQZXJMcFgzCQDMCAIJAKwCAgIZcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzPQkApAMBBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAMwIAgkArAICAhF1c2VyV3hQZXJCbG9ja1gzPQkApAMBBRB1c2VyV3hQZXJCbG9ja1gzCQDMCAIJAKwCAgIOZ1d4QW1vdW50RGlmZj0JAKQDAQUNZ1d4QW1vdW50RGlmZgkAzAgCCQCsAgICD3RvdGFsQ2FjaGVkR3d4PQkApAMBBQ50b3RhbENhY2hlZEd3eAkAzAgCCQCsAgICEnVzZXJDdXJyZ1d4QW1vdW50PQkApAMBBRF1c2VyQ3VycmdXeEFtb3VudAUDbmlsAgI6OgkAlAoCBQNuaWwJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBRFnV3hBbW91bnRTdGFydE5ldwkAzAgCCQCkAwEFCmJvb3N0Q29lZmYJAMwIAgUFZGVidWcFA25pbAUDU0VQAWkBF3d4RW1pc3Npb25TdGF0c1JFQURPTkxZAAQHT05FTVVMVAkApAMBBQVNVUxUOAQDT05FAgExBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABBJlbWlzc2lvblN0YXJ0QmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAxwYXNzZWRCbG9ja3MDCQBmAgUSZW1pc3Npb25TdGFydEJsb2NrBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUSZW1pc3Npb25TdGFydEJsb2NrBA50ZWFtRW1EdXJhdGlvbgkAaAIAoAsA7QIECXRlYW1FbU1heAkAaAIAwIjsXwUFTVVMVDgEBnRlYW1FbQMJAGYCBQxwYXNzZWRCbG9ja3MFDnRlYW1FbUR1cmF0aW9uBQl0ZWFtRW1NYXgJAGsDBQl0ZWFtRW1NYXgFDHBhc3NlZEJsb2NrcwUOdGVhbUVtRHVyYXRpb24ED3RvdGFsV3hSZWxlYXNlZAkAZAIJAGgCBRJ3eEVtaXNzaW9uUGVyQmxvY2sFDHBhc3NlZEJsb2NrcwUGdGVhbUVtBA10b3RhbFd4TG9ja2VkCQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwCQEfa2V5Qm9vc3RpbmdMb2NrUGFyYW1Ub3RhbEFtb3VudAAEGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBKGtleUJvb3N0aW5nU3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MABApsb2Nrc0NvdW50CQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwCQEaa2V5Qm9vc3RpbmdTdGF0c0xvY2tzQ291bnQACQCUCgIFA25pbAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUPdG90YWxXeFJlbGVhc2VkCQDMCAIJAKQDAQUNdG90YWxXeExvY2tlZAkAzAgCCQCkAwEFGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkAzAgCCQCkAwEFCmxvY2tzQ291bnQFA25pbAUDU0VQAWkBEXBvb2xTdGF0c1JFQURPTkxZAQdscEFzc2V0BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQdscEFzc2V0BANjZmcJAQlhc0FueUxpc3QBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAQJbHBBc3NldElkCQDZBAEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAphbXRBc3NldElkCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQMcHJpY2VBc3NldElkCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAtpQW10QXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeElBbXRBc3NldElkBA1pUHJpY2VBc3NldElkCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4SVByaWNlQXNzZXRJZAQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BBJhY2NBbXRBc3NldEJhbGFuY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUKYW10QXNzZXRJZAUDbmlsBQNuaWwEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQNuaWwECnByaWNlc0xpc3QDCQAAAgUNcG9vbExQQmFsYW5jZQAACQDMCAIJAKYDAQUKemVyb0JpZ0ludAkAzAgCCQCmAwEFCnplcm9CaWdJbnQJAMwIAgkApgMBBQp6ZXJvQmlnSW50BQNuaWwJAQlhc0FueUxpc3QBCQD8BwQFC3Bvb2xBZGRyZXNzAhljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBRRhY2NQcmljZUFzc2V0QmFsYW5jZQkAzAgCBQ1wb29sTFBCYWxhbmNlBQNuaWwFA25pbAQIY3VyUHJpY2UAAAQPbHBBbXRBc3NldFNoYXJlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAJEDAgUKcHJpY2VzTGlzdAABCQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQRbHBQcmljZUFzc2V0U2hhcmUJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkAkQMCBQpwcmljZXNMaXN0AAIJAMwIAgUFTVVMVDgFA25pbAUDbmlsBApwb29sV2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQtmYWN0b3J5RGFwcAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQkApQgBBQtwb29sQWRkcmVzcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUNcG9vbExQQmFsYW5jZQkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUPbHBBbXRBc3NldFNoYXJlCQDMCAIJAKQDAQURbHBQcmljZUFzc2V0U2hhcmUJAMwIAgkApAMBBQpwb29sV2VpZ2h0BQNuaWwFA1NFUAFpASRwb29sRXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkCB2xwQXNzZXQMaW5BbUFzc2V0QW10BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQdscEFzc2V0BANjZmcJAQlhc0FueUxpc3QBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAQJbHBBc3NldElkCQDZBAEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAxhbUFzc2V0SWRTdHIJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAlhbUFzc2V0SWQJANkEAQUMYW1Bc3NldElkU3RyBAxwckFzc2V0SWRTdHIJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECXByQXNzZXRJZAkA2QQBBQxwckFzc2V0SWRTdHIEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMEDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEEmFjY0FtdEFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxhbUFzc2V0SWRTdHIFA25pbAUDbmlsBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwckFzc2V0SWRTdHIFA25pbAUDbmlsBA5hbXRBc3NldEFtdFgxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBRJhY2NBbXRBc3NldEJhbGFuY2UJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBBBwcmljZUFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBAtjdXJQcmljZVgxOAMJAAACBQ1wb29sTFBCYWxhbmNlAAAFCnplcm9CaWdJbnQJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQUQcHJpY2VBc3NldEFtdFgxOAkAzAgCCQCmAwEFDmFtdEFzc2V0QW10WDE4BQNuaWwFA25pbAQIY3VyUHJpY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQtjdXJQcmljZVgxOAkAzAgCBQVNVUxUOAUDbmlsBQNuaWwED2luQW1Bc3NldEFtdFgxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBQxpbkFtQXNzZXRBbXQJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBA9pblByQXNzZXRBbXRYMTgJALwCAwUPaW5BbUFzc2V0QW10WDE4BQtjdXJQcmljZVgxOAUGTVVMVDE4BAxpblByQXNzZXRBbXQJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQ9pblByQXNzZXRBbXRYMTgJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwEA3JlcwkA/AcEBQtwb29sQWRkcmVzcwIjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAMwIAgIACQDMCAIAoMIeCQDMCAIFDGluQW1Bc3NldEFtdAkAzAgCBQlhbUFzc2V0SWQJAMwIAgUMaW5QckFzc2V0QW10CQDMCAIFCXByQXNzZXRJZAkAzAgCAgAJAMwIAgYJAMwIAgcFA25pbAUDbmlsBA0kdDAyNDE5MDI0NTQzBAckbWF0Y2gwBQNyZXMDAwMJAAECCAUHJG1hdGNoMAJfMQIDSW50AwkAAQIIBQckbWF0Y2gwAl8zAgNJbnQDCQABAggFByRtYXRjaDACXzQCA0ludAMJAAECCAUHJG1hdGNoMAJfNQIDSW50CQABAggFByRtYXRjaDACXzYCA0ludAcHBwcJAAACCQDGCgEFByRtYXRjaDAADQcECWNhbGNMcEFtdAgFByRtYXRjaDACXzEEDGN1clByaWNlQ2FsYwgFByRtYXRjaDACXzMECWFtQmFsYW5jZQgFByRtYXRjaDACXzQECXByQmFsYW5jZQgFByRtYXRjaDACXzUECmxwRW1pc3Npb24IBQckbWF0Y2gwAl82CQCXCgUFCWNhbGNMcEFtdAUMY3VyUHJpY2VDYWxjBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUKbHBFbWlzc2lvbgkAAgECE0NvdWxkbid0IGNhc3QgdHlwZXMECWNhbGNMcEFtdAgFDSR0MDI0MTkwMjQ1NDMCXzEEDGN1clByaWNlQ2FsYwgFDSR0MDI0MTkwMjQ1NDMCXzIECWFtQmFsYW5jZQgFDSR0MDI0MTkwMjQ1NDMCXzMECXByQmFsYW5jZQgFDSR0MDI0MTkwMjQ1NDMCXzQECmxwRW1pc3Npb24IBQ0kdDAyNDE5MDI0NTQzAl81CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQljYWxjTHBBbXQJAMwIAgkApAMBBQhjdXJQcmljZQkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUKcG9vbFN0YXR1cwkAzAgCCQCkAwEFDGluQW1Bc3NldEFtdAkAzAgCCQCkAwEFDGluUHJBc3NldEFtdAUDbmlsBQNTRVABaQEjcG9vbEV2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkCB2xwQXNzZXQMaW5QckFzc2V0QW10BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQdscEFzc2V0BANjZmcJAQlhc0FueUxpc3QBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAQJbHBBc3NldElkCQDZBAEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAxhbUFzc2V0SWRTdHIJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAlhbUFzc2V0SWQJANkEAQUMYW1Bc3NldElkU3RyBAxwckFzc2V0SWRTdHIJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECXByQXNzZXRJZAkA2QQBBQxwckFzc2V0SWRTdHIEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMEDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEDGFtQmFsYW5jZVJhdwkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxhbUFzc2V0SWRTdHIFA25pbAUDbmlsBAxwckJhbGFuY2VSYXcJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUMcHJBc3NldElkU3RyBQNuaWwFA25pbAQPYW1CYWxhbmNlUmF3WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQmFsYW5jZVJhdwkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwED3ByQmFsYW5jZVJhd1gxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBQxwckJhbGFuY2VSYXcJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwEC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAh5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQ9wckJhbGFuY2VSYXdYMTgJAMwIAgkApgMBBQ9hbUJhbGFuY2VSYXdYMTgFA25pbAUDbmlsBAhjdXJQcmljZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFC2N1clByaWNlWDE4CQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQPaW5QckFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDGluUHJBc3NldEFtdAkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQPaW5BbUFzc2V0QW10WDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUGTVVMVDE4BQtjdXJQcmljZVgxOAQMaW5BbUFzc2V0QW10CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQUPaW5BbUFzc2V0QW10WDE4CQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgCgwh4JAMwIAgUMaW5BbUFzc2V0QW10CQDMCAIFCWFtQXNzZXRJZAkAzAgCBQxpblByQXNzZXRBbXQJAMwIAgUJcHJBc3NldElkCQDMCAICAAkAzAgCBgkAzAgCBwUDbmlsBQNuaWwEDSR0MDI3MTE2Mjc0NjkEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzMCA0ludAMJAAECCAUHJG1hdGNoMAJfNAIDSW50AwkAAQIIBQckbWF0Y2gwAl81AgNJbnQJAAECCAUHJG1hdGNoMAJfNgIDSW50BwcHBwkAAAIJAMYKAQUHJG1hdGNoMAANBwQJY2FsY0xwQW10CAUHJG1hdGNoMAJfMQQMY3VyUHJpY2VDYWxjCAUHJG1hdGNoMAJfMwQJYW1CYWxhbmNlCAUHJG1hdGNoMAJfNAQJcHJCYWxhbmNlCAUHJG1hdGNoMAJfNQQKbHBFbWlzc2lvbggFByRtYXRjaDACXzYJAJcKBQUJY2FsY0xwQW10BQxjdXJQcmljZUNhbGMFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQJY2FsY0xwQW10CAUNJHQwMjcxMTYyNzQ2OQJfMQQMY3VyUHJpY2VDYWxjCAUNJHQwMjcxMTYyNzQ2OQJfMgQJYW1CYWxhbmNlCAUNJHQwMjcxMTYyNzQ2OQJfMwQJcHJCYWxhbmNlCAUNJHQwMjcxMTYyNzQ2OQJfNAQKbHBFbWlzc2lvbggFDSR0MDI3MTE2Mjc0NjkCXzUJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpARdwb29sRXZhbHVhdGVHZXRSRUFET05MWQIQcGF5bWVudExwQXNzZXRJZAxwYXltZW50THBBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFEHBheW1lbnRMcEFzc2V0SWQEA3JlcwkA/AcEBQtwb29sQWRkcmVzcwIjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAMwIAgIACQDMCAIFEHBheW1lbnRMcEFzc2V0SWQJAMwIAgUMcGF5bWVudExwQW10CQDMCAIJAKUIAQULcG9vbEFkZHJlc3MFA25pbAUDbmlsBA0kdDAyODE2NDI4NTgxBAckbWF0Y2gwBQNyZXMDAwMJAAECCAUHJG1hdGNoMAJfMQIDSW50AwkAAQIIBQckbWF0Y2gwAl8yAgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAMJAAECCAUHJG1hdGNoMAJfNgIDSW50AwkAAQIIBQckbWF0Y2gwAl83AgNJbnQDCQABAggFByRtYXRjaDACXzgCBlN0cmluZwkAAQIIBQckbWF0Y2gwAl85AgZTdHJpbmcHBwcHBwcJAAACCQDGCgEFByRtYXRjaDAACgcECG91dEFtQW10CAUHJG1hdGNoMAJfMQQIb3V0UHJBbXQIBQckbWF0Y2gwAl8yBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl81BAlwckJhbGFuY2UIBQckbWF0Y2gwAl82BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNwQIY3VyUHJpY2UIBQckbWF0Y2gwAl84BApwb29sU3RhdHVzCAUHJG1hdGNoMAJfOQkAmQoHBQhvdXRBbUFtdAUIb3V0UHJBbXQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uBQhjdXJQcmljZQUKcG9vbFN0YXR1cwkAAgECE0NvdWxkbid0IGNhc3QgdHlwZXMECG91dEFtQW10CAUNJHQwMjgxNjQyODU4MQJfMQQIb3V0UHJBbXQIBQ0kdDAyODE2NDI4NTgxAl8yBAlhbUJhbGFuY2UIBQ0kdDAyODE2NDI4NTgxAl8zBAlwckJhbGFuY2UIBQ0kdDAyODE2NDI4NTgxAl80BApscEVtaXNzaW9uCAUNJHQwMjgxNjQyODU4MQJfNQQIY3VyUHJpY2UIBQ0kdDAyODE2NDI4NTgxAl82BApwb29sU3RhdHVzCAUNJHQwMjgxNjQyODU4MQJfNwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCG91dEFtQW10CQDMCAIJAKQDAQUIb3V0UHJBbXQJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCGN1clByaWNlCQDMCAIFCnBvb2xTdGF0dXMFA25pbAUDU0VQAWkBE2d3eFVzZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBA9nd3hVc2VySW5mb0xJU1QJAQlhc0FueUxpc3QBCQD8BwQFDGJvb3N0aW5nRGFwcAITZ3d4VXNlckluZm9SRUFET05MWQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwECWd3eEFtb3VudAkBBWFzSW50AQkAkQMCBQ9nd3hVc2VySW5mb0xJU1QAAAkAlAoCBQNuaWwJALkJAgkAzAgCAgIlZAkAzAgCCQCkAwEFCWd3eEFtb3VudAUDbmlsBQNTRVABaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXm9Pge/", "chainId": 84, "height": 2146538, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FDjmRK3XcGTcnCMxxTnc69PdUm7exPHepxHPdBS8a6Jj Next: 87p7LY8D2oC3M9Wv1eg3epQQwovFv4GrBaxK5LfrwPCZ Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
385385
386386
387387 @Callable(bt)
388-func calcBoostREADONLY (bX,bY,bZ,ca,cb) = {
389- let cc = aV
390- let cd = "empty"
391- let ce = parseIntValue(split(t(aW, ag()), e)[4])
392- let aG = if ((ca == ""))
393- then cd
394- else ca
395- let aF = if ((cb == ""))
396- then cd
397- else cb
398- let cf = valueOrElse(getString(aW, al(cb)), cd)
399- let cg = valueOrElse(getInteger(aW, ap(cf)), 0)
400- let ch = valueOrElse(getInteger(aW, ar(cf)), height)
401- let bl = valueOrElse(getInteger(aW, as(cf)), 0)
402- let ci = (ch + bl)
403- let cj = max([(ci - height), 0])
404- let ck = (cg + bX)
405- let cl = min([(cj + bY), ce])
406- let cm = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
407- let cn = bj(ck, cl, ce)[0]
408- let co = x(invoke(cc, "calcGwxParamsREADONLY", [cn, height, cl], nil))
409- let cp = (cn - cm)
410- let cq = B(co[0])
411- let cr = B(co[1])
412- let aw = toString(B(co[2]))
413- let cs = aA()
414- let ct = aD()
415- let cu = ((cn * cl) / 2)
416- let cv = v(aW, cs)
417- let cw = valueOrElse(getInteger(aW, ct), 0)
418- let cx = 1000
419- let cy = (w(aU, aN()) * cx)
420- let cz = aE(aF, aG)
421- let cA = aH(aG)
422- let cB = aL(aM, cz)
423- let cC = aL(aM, cA)
424- let cD = (cB + bZ)
425- let cE = (cC + bZ)
426- let bb = if ((aG != cd))
388+func calcBoostBulkInternalREADONLY (bX,bY,bZ,ca,cb,cc,cd) = if ((bX == size(bY)))
389+ then $Tuple2(nil, cd)
390+ else {
391+ let ce = bY[bX]
392+ let cf = bZ[bX]
393+ let cg = ca[bX]
394+ let ch = cb[bX]
395+ let ci = cc[bX]
396+ let cj = split({
397+ let ck = invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, ci], nil)
398+ if ($isInstanceOf(ck, "String"))
399+ then ck
400+ else throw(($getType(invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, ci], nil)) + " couldn't be cast to String"))
401+ }, e)
402+ let cl = (cd :+ cj)
403+ let cm = {
404+ let ck = invoke(this, "claimWxBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, cl], nil)
405+ if ($isInstanceOf(ck, "List[Any]"))
406+ then ck
407+ else throw(($getType(invoke(this, "claimWxBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, cl], nil)) + " couldn't be cast to List[Any]"))
408+ }
409+ if ((cm == cm))
410+ then $Tuple2(nil, cm)
411+ else throw("Strict value is not equal to itself.")
412+ }
413+
414+
415+
416+@Callable(bt)
417+func calcBoostBulkREADONLY (ce,cf,cg,ch,ci) = {
418+ let cl = invoke(this, "calcBoostBulkInternalREADONLY", [0, ce, cf, cg, ch, ci, nil], nil)
419+ $Tuple2(nil, cl)
420+ }
421+
422+
423+
424+@Callable(bt)
425+func calcBoostREADONLY (ce,cf,cg,ch,ci) = {
426+ let cn = aV
427+ let co = "empty"
428+ let cp = parseIntValue(split(t(aW, ag()), e)[4])
429+ let aG = if ((ch == ""))
430+ then co
431+ else ch
432+ let aF = if ((ci == ""))
433+ then co
434+ else ci
435+ let cq = valueOrElse(getString(aW, al(ci)), co)
436+ let cr = valueOrElse(getInteger(aW, ap(cq)), 0)
437+ let cs = valueOrElse(getInteger(aW, ar(cq)), height)
438+ let bl = valueOrElse(getInteger(aW, as(cq)), 0)
439+ let ct = (cs + bl)
440+ let cu = max([(ct - height), 0])
441+ let cv = (cr + ce)
442+ let cw = min([(cu + cf), cp])
443+ let cx = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
444+ let cy = bj(cv, cw, cp)[0]
445+ let cz = x(invoke(cn, "calcGwxParamsREADONLY", [cy, height, cw], nil))
446+ let cA = (cy - cx)
447+ let cB = B(cz[0])
448+ let cC = B(cz[1])
449+ let aw = toString(B(cz[2]))
450+ let cD = aA()
451+ let cE = aD()
452+ let cF = ((cy * cw) / 2)
453+ let cG = v(aW, cD)
454+ let cH = valueOrElse(getInteger(aW, cE), 0)
455+ let cI = 1000
456+ let cJ = (w(aU, aN()) * cI)
457+ let cK = aE(aF, aG)
458+ let cL = aH(aG)
459+ let cM = aL(aM, cK)
460+ let cN = aL(aM, cL)
461+ let cO = (cM + cg)
462+ let cP = (cN + cg)
463+ let bb = if ((aG != co))
427464 then {
428465 let aZ = valueOrErrorMessage(getString(aS, R(aG)), ("unsupported lp asset " + aG))
429466 getIntegerValue(aS, V(aZ))
430467 }
431468 else 0
432- let cF = fraction(cy, bb, (f * 3))
433- let cG = if ((cE != 0))
434- then fraction(cF, b, cE)
469+ let cQ = fraction(cJ, bb, (f * 3))
470+ let cR = if ((cP != 0))
471+ then fraction(cQ, b, cP)
435472 else 0
436- let cH = fraction(cG, cD, b)
437- let cI = (cF * 2)
438- let cJ = fraction(cn, cI, (cw + cp))
439- let cK = min([cJ, (cH * 2)])
440- let cL = if ((cH == 0))
473+ let cS = fraction(cR, cO, b)
474+ let cT = (cQ * 2)
475+ let cU = fraction(cy, cT, (cH + cA))
476+ let cV = min([cU, (cS * 2)])
477+ let cW = if ((cS == 0))
441478 then (1 * b)
442- else fraction((cK + cH), b, cH)
443- let bD = makeString([("lpAssetIdStr=" + aG), ("userAddressStr=" + aF), ("userNumStr=" + cf), ("userAmount=" + toString(cg)), ("userAmountNew=" + toString(ck)), ("lockDurationNew=" + toString(cl)), ("gWxAmountStart=" + toString(cn)), ("tmpUserBoostPerBlockX3=" + toString(cJ)), ("stakedByUserNew=" + toString(cD)), ("stakedTotalNew=" + toString(cE)), ("poolWeight=" + toString(bb)), ("wxPerLpX3=" + toString(cG)), ("poolWxEmissionPerBlockX3=" + toString(cF)), ("userWxPerBlockX3=" + toString(cH)), ("gWxAmountDiff=" + toString(cp)), ("totalCachedGwx=" + toString(cw)), ("userCurrgWxAmount=" + toString(cm))], "::")
444- $Tuple2(nil, makeString(["%d%d%s", toString(cn), toString(cL), bD], e))
479+ else fraction((cV + cS), b, cS)
480+ let bD = makeString([("lpAssetIdStr=" + aG), ("userAddressStr=" + aF), ("userNumStr=" + cq), ("userAmount=" + toString(cr)), ("userAmountNew=" + toString(cv)), ("lockDurationNew=" + toString(cw)), ("gWxAmountStart=" + toString(cy)), ("tmpUserBoostPerBlockX3=" + toString(cU)), ("stakedByUserNew=" + toString(cO)), ("stakedTotalNew=" + toString(cP)), ("poolWeight=" + toString(bb)), ("wxPerLpX3=" + toString(cR)), ("poolWxEmissionPerBlockX3=" + toString(cQ)), ("userWxPerBlockX3=" + toString(cS)), ("gWxAmountDiff=" + toString(cA)), ("totalCachedGwx=" + toString(cH)), ("userCurrgWxAmount=" + toString(cx))], "::")
481+ $Tuple2(nil, makeString(["%d%d%s", toString(cy), toString(cW), bD], e))
445482 }
446483
447484
448485
449486 @Callable(bt)
450487 func wxEmissionStatsREADONLY () = {
451- let cM = toString(b)
452- let cN = "1"
488+ let cX = toString(b)
489+ let cY = "1"
453490 let bc = w(aU, aN())
454- let cO = w(aU, aP())
455- let cP = if ((cO > height))
491+ let cZ = w(aU, aP())
492+ let da = if ((cZ > height))
456493 then 0
457- else (height - cO)
458- let cQ = (1440 * 365)
459- let cR = (201000000 * b)
460- let cS = if ((cP > cQ))
461- then cR
462- else fraction(cR, cP, cQ)
463- let cT = ((bc * cP) + cS)
464- let cU = v(aW, ah())
465- let cV = v(aW, ai())
466- let cW = v(aW, aj())
467- $Tuple2(nil, makeString(["%d%d%d%d", toString(cT), toString(cU), toString(cV), toString(cW)], e))
494+ else (height - cZ)
495+ let db = (1440 * 365)
496+ let dc = (201000000 * b)
497+ let dd = if ((da > db))
498+ then dc
499+ else fraction(dc, da, db)
500+ let de = ((bc * da) + dd)
501+ let df = v(aW, ah())
502+ let dg = v(aW, ai())
503+ let dh = v(aW, aj())
504+ $Tuple2(nil, makeString(["%d%d%d%d", toString(de), toString(df), toString(dg), toString(dh)], e))
468505 }
469506
470507
471508
472509 @Callable(bt)
473-func poolStatsREADONLY (cX) = {
474- let cY = addressFromStringValue(t(aS, U(cX)))
475- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
476- let aY = fromBase58String(D(cZ[j]))
477- let da = D(cZ[k])
478- let db = D(cZ[l])
479- let dc = D(cZ[o])
480- let dd = D(cZ[p])
481- let de = parseIntValue(D(cZ[m]))
482- let df = parseIntValue(D(cZ[n]))
483- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
484- let dh = B(invoke(cY, "getAccBalanceWrapperREADONLY", [da], nil))
485- let di = B(invoke(cY, "getAccBalanceWrapperREADONLY", [db], nil))
486- let dj = if ((dg == 0))
510+func poolStatsREADONLY (di) = {
511+ let dj = addressFromStringValue(t(aS, U(di)))
512+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
513+ let aY = fromBase58String(D(dk[j]))
514+ let dl = D(dk[k])
515+ let dm = D(dk[l])
516+ let dn = D(dk[o])
517+ let do = D(dk[p])
518+ let dp = parseIntValue(D(dk[m]))
519+ let dq = parseIntValue(D(dk[n]))
520+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
521+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dl], nil))
522+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dm], nil))
523+ let du = if ((dr == 0))
487524 then [toString(g), toString(g), toString(g)]
488- else x(invoke(cY, "calcPricesWrapperREADONLY", [dh, di, dg], nil))
489- let dk = 0
490- let dl = B(invoke(cY, "fromX18WrapperREADONLY", [dj[1], b], nil))
491- let dm = B(invoke(cY, "fromX18WrapperREADONLY", [dj[2], b], nil))
492- let bb = getIntegerValue(aS, V(toString(cY)))
493- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dh), toString(di), toString(dg), toString(dk), toString(dl), toString(dm), toString(bb)], e))
525+ else x(invoke(dj, "calcPricesWrapperREADONLY", [ds, dt, dr], nil))
526+ let dv = 0
527+ let dw = B(invoke(dj, "fromX18WrapperREADONLY", [du[1], b], nil))
528+ let dx = B(invoke(dj, "fromX18WrapperREADONLY", [du[2], b], nil))
529+ let bb = getIntegerValue(aS, V(toString(dj)))
530+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ds), toString(dt), toString(dr), toString(dv), toString(dw), toString(dx), toString(bb)], e))
494531 }
495532
496533
497534
498535 @Callable(bt)
499-func poolEvaluatePutByAmountAssetREADONLY (cX,dn) = {
500- let cY = addressFromStringValue(t(aS, U(cX)))
501- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
502- let aY = fromBase58String(D(cZ[j]))
503- let do = D(cZ[k])
504- let dp = fromBase58String(do)
505- let dq = D(cZ[l])
506- let dr = fromBase58String(dq)
507- let de = parseIntValue(D(cZ[m]))
508- let df = parseIntValue(D(cZ[n]))
509- let ds = D(cZ[i])
510- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
511- let dh = B(invoke(cY, "getAccBalanceWrapperREADONLY", [do], nil))
512- let di = B(invoke(cY, "getAccBalanceWrapperREADONLY", [dq], nil))
513- let dt = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dh, de], nil)))
514- let du = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [di, df], nil)))
515- let dv = if ((dg == 0))
536+func poolEvaluatePutByAmountAssetREADONLY (di,dy) = {
537+ let dj = addressFromStringValue(t(aS, U(di)))
538+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
539+ let aY = fromBase58String(D(dk[j]))
540+ let dz = D(dk[k])
541+ let dA = fromBase58String(dz)
542+ let dB = D(dk[l])
543+ let dC = fromBase58String(dB)
544+ let dp = parseIntValue(D(dk[m]))
545+ let dq = parseIntValue(D(dk[n]))
546+ let dD = D(dk[i])
547+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
548+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
549+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
550+ let dE = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [ds, dp], nil)))
551+ let dF = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dt, dq], nil)))
552+ let dG = if ((dr == 0))
516553 then g
517- else parseBigIntValue(D(invoke(cY, "calcPriceBigIntWrapperREADONLY", [toString(du), toString(dt)], nil)))
518- let dk = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dv), b], nil))
519- let dw = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dn, de], nil)))
520- let dx = fraction(dw, dv, d)
521- let dy = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dx), df], nil))
522- let dz = invoke(cY, "estimatePutOperationWrapperREADONLY", ["", 500000, dn, dp, dy, dr, "", true, false], nil)
523- let dA = {
524- let z = dz
525- if (if ($isInstanceOf(z._1, "Int"))
554+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
555+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
556+ let dH = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dy, dp], nil)))
557+ let dI = fraction(dH, dG, d)
558+ let dJ = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dI), dq], nil))
559+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
560+ let dK = {
561+ let z = cl
562+ if (if (if ($isInstanceOf(z._1, "Int"))
526563 then if ($isInstanceOf(z._3, "Int"))
527564 then if ($isInstanceOf(z._4, "Int"))
528565 then if ($isInstanceOf(z._5, "Int"))
531568 else false
532569 else false
533570 else false)
571+ then (size(z) == 13)
572+ else false)
534573 then {
535- let dB = z._1
536- let dC = z._3
537- let dD = z._4
538- let dE = z._5
539- let dF = z._6
540- $Tuple5(dB, dC, dD, dE, dF)
574+ let dL = z._1
575+ let dM = z._3
576+ let dN = z._4
577+ let dO = z._5
578+ let dP = z._6
579+ $Tuple5(dL, dM, dN, dO, dP)
541580 }
542581 else throw("Couldn't cast types")
543582 }
544- let dB = dA._1
545- let dC = dA._2
546- let dD = dA._3
547- let dE = dA._4
548- let dF = dA._5
549- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dB), toString(dk), toString(dD), toString(dE), toString(dF), ds, toString(dn), toString(dy)], e))
583+ let dL = dK._1
584+ let dM = dK._2
585+ let dN = dK._3
586+ let dO = dK._4
587+ let dP = dK._5
588+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
550589 }
551590
552591
553592
554593 @Callable(bt)
555-func poolEvaluatePutByPriceAssetREADONLY (cX,dy) = {
556- let cY = addressFromStringValue(t(aS, U(cX)))
557- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
558- let aY = fromBase58String(D(cZ[j]))
559- let do = D(cZ[k])
560- let dp = fromBase58String(do)
561- let dq = D(cZ[l])
562- let dr = fromBase58String(dq)
563- let de = parseIntValue(D(cZ[m]))
564- let df = parseIntValue(D(cZ[n]))
565- let ds = D(cZ[i])
566- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
567- let dG = B(invoke(cY, "getAccBalanceWrapperREADONLY", [do], nil))
568- let dH = B(invoke(cY, "getAccBalanceWrapperREADONLY", [dq], nil))
569- let dI = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dG, de], nil)))
570- let dJ = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dH, df], nil)))
571- let dv = if ((dg == 0))
594+func poolEvaluatePutByPriceAssetREADONLY (di,dJ) = {
595+ let dj = addressFromStringValue(t(aS, U(di)))
596+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
597+ let aY = fromBase58String(D(dk[j]))
598+ let dz = D(dk[k])
599+ let dA = fromBase58String(dz)
600+ let dB = D(dk[l])
601+ let dC = fromBase58String(dB)
602+ let dp = parseIntValue(D(dk[m]))
603+ let dq = parseIntValue(D(dk[n]))
604+ let dD = D(dk[i])
605+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
606+ let dQ = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
607+ let dR = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
608+ let dS = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dQ, dp], nil)))
609+ let dT = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dR, dq], nil)))
610+ let dG = if ((dr == 0))
572611 then g
573- else parseBigIntValue(D(invoke(cY, "calcPriceBigIntWrapperREADONLY", [toString(dJ), toString(dI)], nil)))
574- let dk = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dv), b], nil))
575- let dx = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dy, df], nil)))
576- let dw = fraction(dx, d, dv)
577- let dn = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dw), de], nil))
578- let dz = invoke(cY, "estimatePutOperationWrapperREADONLY", ["", 500000, dn, dp, dy, dr, "", true, false], nil)
579- let dK = {
580- let z = dz
581- if (if ($isInstanceOf(z._1, "Int"))
612+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dT), toString(dS)], nil)))
613+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
614+ let dI = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dJ, dq], nil)))
615+ let dH = fraction(dI, d, dG)
616+ let dy = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
617+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
618+ let dU = {
619+ let z = cl
620+ if (if (if ($isInstanceOf(z._1, "Int"))
582621 then if ($isInstanceOf(z._3, "Int"))
583622 then if ($isInstanceOf(z._4, "Int"))
584623 then if ($isInstanceOf(z._5, "Int"))
587626 else false
588627 else false
589628 else false)
629+ then (size(z) == 13)
630+ else false)
590631 then {
591- let dB = z._1
592- let dC = z._3
593- let dD = z._4
594- let dE = z._5
595- let dF = z._6
596- $Tuple5(dB, dC, dD, dE, dF)
632+ let dL = z._1
633+ let dM = z._3
634+ let dN = z._4
635+ let dO = z._5
636+ let dP = z._6
637+ $Tuple5(dL, dM, dN, dO, dP)
597638 }
598639 else throw("Couldn't cast types")
599640 }
600- let dB = dK._1
601- let dC = dK._2
602- let dD = dK._3
603- let dE = dK._4
604- let dF = dK._5
605- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dB), toString(dk), toString(dD), toString(dE), toString(dF), ds, toString(dn), toString(dy)], e))
641+ let dL = dU._1
642+ let dM = dU._2
643+ let dN = dU._3
644+ let dO = dU._4
645+ let dP = dU._5
646+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
606647 }
607648
608649
609650
610651 @Callable(bt)
611-func poolEvaluateGetREADONLY (dL,dM) = {
612- let cY = addressFromStringValue(t(aS, U(dL)))
613- let dz = invoke(cY, "estimateGetOperationWrapperREADONLY", ["", dL, dM, toString(cY)], nil)
614- let dN = {
615- let z = dz
616- if (if ($isInstanceOf(z._1, "Int"))
652+func poolEvaluateGetREADONLY (dV,dW) = {
653+ let dj = addressFromStringValue(t(aS, U(dV)))
654+ let cl = invoke(dj, "estimateGetOperationWrapperREADONLY", ["", dV, dW, toString(dj)], nil)
655+ let dX = {
656+ let z = cl
657+ if (if (if ($isInstanceOf(z._1, "Int"))
617658 then if ($isInstanceOf(z._2, "Int"))
618659 then if ($isInstanceOf(z._5, "Int"))
619660 then if ($isInstanceOf(z._6, "Int"))
626667 else false
627668 else false
628669 else false)
670+ then (size(z) == 10)
671+ else false)
629672 then {
630- let dO = z._1
631- let dP = z._2
632- let dD = z._5
633- let dE = z._6
634- let dF = z._7
635- let dk = z._8
636- let ds = z._9
637- $Tuple7(dO, dP, dD, dE, dF, dk, ds)
673+ let dY = z._1
674+ let dZ = z._2
675+ let dN = z._5
676+ let dO = z._6
677+ let dP = z._7
678+ let dv = z._8
679+ let dD = z._9
680+ $Tuple7(dY, dZ, dN, dO, dP, dv, dD)
638681 }
639682 else throw("Couldn't cast types")
640683 }
641- let dO = dN._1
642- let dP = dN._2
643- let dD = dN._3
644- let dE = dN._4
645- let dF = dN._5
646- let dk = dN._6
647- let ds = dN._7
648- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dO), toString(dP), toString(dD), toString(dE), toString(dF), dk, ds], e))
684+ let dY = dX._1
685+ let dZ = dX._2
686+ let dN = dX._3
687+ let dO = dX._4
688+ let dP = dX._5
689+ let dv = dX._6
690+ let dD = dX._7
691+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dY), toString(dZ), toString(dN), toString(dO), toString(dP), dv, dD], e))
649692 }
650693
651694
652695
653696 @Callable(bt)
654697 func gwxUserInfoREADONLY (am) = {
655- let dQ = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
656- let dR = B(dQ[0])
657- $Tuple2(nil, makeString(["%d", toString(dR)], e))
698+ let ea = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
699+ let eb = B(ea[0])
700+ $Tuple2(nil, makeString(["%d", toString(eb)], e))
658701 }
659702
660703
661704
662705 @Callable(bt)
663-func setManager (dS) = {
706+func setManager (ec) = {
664707 let bx = bs(bt)
665708 if ((bx == bx))
666709 then {
667- let dT = fromBase58String(dS)
668- if ((dT == dT))
669- then [StringEntry(H(), dS)]
710+ let ed = fromBase58String(ec)
711+ if ((ed == ed))
712+ then [StringEntry(H(), ec)]
670713 else throw("Strict value is not equal to itself.")
671714 }
672715 else throw("Strict value is not equal to itself.")
676719
677720 @Callable(bt)
678721 func confirmManager () = {
679- let dU = br()
680- let dV = if (isDefined(dU))
722+ let ee = br()
723+ let ef = if (isDefined(ee))
681724 then true
682725 else throw("No pending manager")
683- if ((dV == dV))
726+ if ((ef == ef))
684727 then {
685- let dW = if ((bt.callerPublicKey == value(dU)))
728+ let eg = if ((bt.callerPublicKey == value(ee)))
686729 then true
687730 else throw("You are not pending manager")
688- if ((dW == dW))
689- then [StringEntry(G(), toBase58String(value(dU))), DeleteEntry(H())]
731+ if ((eg == eg))
732+ then [StringEntry(G(), toBase58String(value(ee))), DeleteEntry(H())]
690733 else throw("Strict value is not equal to itself.")
691734 }
692735 else throw("Strict value is not equal to itself.")
693736 }
694737
695738
696-@Verifier(dX)
697-func dY () = {
698- let dZ = {
739+@Verifier(eh)
740+func ei () = {
741+ let ej = {
699742 let z = bp()
700743 if ($isInstanceOf(z, "ByteVector"))
701744 then {
703746 bv
704747 }
705748 else if ($isInstanceOf(z, "Unit"))
706- then dX.senderPublicKey
749+ then eh.senderPublicKey
707750 else throw("Match error")
708751 }
709- sigVerify(dX.bodyBytes, dX.proofs[0], dZ)
752+ sigVerify(eh.bodyBytes, eh.proofs[0], ej)
710753 }
711754
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
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
1616 let g = toBigInt(0)
1717
1818 let h = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = 5
2727
2828 let m = 6
2929
3030 let n = 7
3131
3232 let o = 8
3333
3434 let p = 9
3535
3636 let q = 10
3737
3838 func r (s) = valueOrErrorMessage(getString(s), (("mandatory this." + s) + " is not defined"))
3939
4040
4141 func t (u,s) = valueOrErrorMessage(getString(u, s), (((("mandatory " + toString(u)) + ".") + s) + " is not defined"))
4242
4343
4444 func v (u,s) = valueOrElse(getInteger(u, s), 0)
4545
4646
4747 func w (u,s) = valueOrErrorMessage(getInteger(u, s), (("mandatory this." + s) + " is not defined"))
4848
4949
5050 func x (y) = {
5151 let z = y
5252 if ($isInstanceOf(z, "List[Any]"))
5353 then {
5454 let A = z
5555 A
5656 }
5757 else throw("fail to cast into List[Any]")
5858 }
5959
6060
6161 func B (y) = {
6262 let z = y
6363 if ($isInstanceOf(z, "Int"))
6464 then {
6565 let C = z
6666 C
6767 }
6868 else throw("fail to cast into Int")
6969 }
7070
7171
7272 func D (y) = {
7373 let z = y
7474 if ($isInstanceOf(z, "String"))
7575 then {
7676 let E = z
7777 E
7878 }
7979 else throw("fail to cast into String")
8080 }
8181
8282
8383 func F () = "%s%s__config__factoryAddress"
8484
8585
8686 func G () = "%s__managerPublicKey"
8787
8888
8989 func H () = "%s__pendingManagerPublicKey"
9090
9191
9292 let I = 1
9393
9494 let J = 2
9595
9696 let K = 3
9797
9898 let L = 4
9999
100100 let M = 5
101101
102102 let N = 6
103103
104104 let O = 7
105105
106106 let P = 8
107107
108108 func Q () = "%s__factoryConfig"
109109
110110
111111 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
112112
113113
114114 func T () = "%s__lpTokensList"
115115
116116
117117 func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
118118
119119
120120 func V (W) = makeString(["%s%s", "poolWeight", W], e)
121121
122122
123123 func X () = addressFromStringValue(r(F()))
124124
125125
126126 func Y () = split(valueOrElse(getString(X(), T()), ""), e)
127127
128128
129129 func Z (aa) = split(t(aa, Q()), e)
130130
131131
132132 func ab (ac) = addressFromStringValue(ac[J])
133133
134134
135135 func ad (ac) = addressFromStringValue(ac[M])
136136
137137
138138 func ae (ac) = addressFromStringValue(ac[I])
139139
140140
141141 func af (ac) = addressFromStringValue(ac[P])
142142
143143
144144 func ag () = "%s__config"
145145
146146
147147 func ah () = "%s%s__stats__activeTotalLocked"
148148
149149
150150 func ai () = "%s%s__stats__locksDurationSumInBlocks"
151151
152152
153153 func aj () = "%s%s__stats__locksCount"
154154
155155
156156 func ak () = "%s%s__stats__activeUsersCount"
157157
158158
159159 func al (am) = makeString(["%s%s%s__mapping__user2num", am], e)
160160
161161
162162 func an (ao) = makeString(["%s%s%s__mapping__num2user", ao], e)
163163
164164
165165 func ap (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], e)
166166
167167
168168 func ar (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], e)
169169
170170
171171 func as (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], e)
172172
173173
174174 func at (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], e)
175175
176176
177177 func au (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], e)
178178
179179
180180 func av (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aw], e)
181181
182182
183183 func ax (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aw], e)
184184
185185
186186 func ay (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], e)
187187
188188
189189 func az (aq) = makeString(["%s%d__maxBoostInt", aq], e)
190190
191191
192192 func aA () = "%s%s__maxBoostInt__total"
193193
194194
195195 func aB (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], e)
196196
197197
198198 func aC (aq) = makeString(["%s%d__userBoostClaimed", aq], e)
199199
200200
201201 func aD () = "%s%s__gwxCached__total"
202202
203203
204204 func aE (aF,aG) = makeString(["%s%s%s__staked", aF, aG], e)
205205
206206
207207 func aH (aG) = ("%s%s%s__staked__total__" + aG)
208208
209209
210210 func aI (aG,aF) = makeString(["%s%s%s__claimed", aF, aG], e)
211211
212212
213213 func aJ (aG,aF) = makeString(["%s%s%s__claimedMinReward", aF, aG], e)
214214
215215
216216 func aK (aG,aF) = makeString(["%s%s%s__claimedBoostReward", aF, aG], e)
217217
218218
219219 func aL (aM,s) = valueOrElse(getInteger(aM, s), 0)
220220
221221
222222 func aN () = "%s%s__ratePerBlock__current"
223223
224224
225225 func aO () = "%s%s__ratePerBlockMax__current"
226226
227227
228228 func aP () = "%s%s__emission__startBlock"
229229
230230
231231 func aQ () = "%s%s__emission__duration"
232232
233233
234234 func aR () = "%s%s__emission__endBlock"
235235
236236
237237 let aS = X()
238238
239239 let aT = Z(aS)
240240
241241 let aU = ad(aT)
242242
243243 let aM = ae(aT)
244244
245245 let aV = af(aT)
246246
247247 let aW = ab(aT)
248248
249249 func aX (aY) = {
250250 let aZ = t(aS, U(aY))
251251 let ba = b
252252 let bb = getIntegerValue(aS, V(aZ))
253253 let bc = w(aU, aN())
254254 let bd = w(aU, aO())
255255 let be = 3
256256 let bf = (fraction(bc, bb, ba) / be)
257257 let bg = fraction(bd, bb, ba)
258258 let bh = (be * b)
259259 let bi = v(aM, aH(aY))
260260 [bf, bh, bi]
261261 }
262262
263263
264264 func bj (bk,bl,bm) = {
265265 let bn = fraction(bl, b, bm)
266266 let bo = fraction(bk, bn, b)
267267 [bo]
268268 }
269269
270270
271271 func bp () = {
272272 let z = getString(G())
273273 if ($isInstanceOf(z, "String"))
274274 then {
275275 let bq = z
276276 fromBase58String(bq)
277277 }
278278 else if ($isInstanceOf(z, "Unit"))
279279 then unit
280280 else throw("Match error")
281281 }
282282
283283
284284 func br () = {
285285 let z = getString(H())
286286 if ($isInstanceOf(z, "String"))
287287 then {
288288 let bq = z
289289 fromBase58String(bq)
290290 }
291291 else if ($isInstanceOf(z, "Unit"))
292292 then unit
293293 else throw("Match error")
294294 }
295295
296296
297297 func bs (bt) = {
298298 let bu = throw("Permission denied")
299299 let z = bp()
300300 if ($isInstanceOf(z, "ByteVector"))
301301 then {
302302 let bv = z
303303 if ((bt.callerPublicKey == bv))
304304 then true
305305 else bu
306306 }
307307 else if ($isInstanceOf(z, "Unit"))
308308 then if ((bt.caller == this))
309309 then true
310310 else bu
311311 else throw("Match error")
312312 }
313313
314314
315315 @Callable(bt)
316316 func constructor (bw) = {
317317 let bx = bs(bt)
318318 if ((bx == bx))
319319 then [StringEntry(F(), bw)]
320320 else throw("Strict value is not equal to itself.")
321321 }
322322
323323
324324
325325 @Callable(bt)
326326 func currentRewardRateREADONLY (aY) = {
327327 let by = aX(aY)
328328 let bc = by[0]
329329 let bh = by[1]
330330 let bi = by[2]
331331 $Tuple2(nil, makeString(["%d%d%d", toString(bc), toString(bh), toString(bi)], e))
332332 }
333333
334334
335335
336336 @Callable(bt)
337337 func currentUserRewardRateREADONLY (aY,am) = {
338338 let by = aX(aY)
339339 let bc = by[0]
340340 let bh = by[1]
341341 let bi = by[2]
342342 let bz = v(aM, aE(am, aY))
343343 let bA = split(D(invoke(aM, "claimWxREADONLY", [aY, am], nil)), e)
344344 let bB = valueOrErrorMessage(parseInt(bA[5]), "couldn't parse minRewardPart")
345345 let bC = valueOrErrorMessage(parseInt(bA[6]), "couldn't parse boostRewardPart")
346346 let bD = bA[7]
347347 let bE = if ((bC == 0))
348348 then (1 * b)
349349 else fraction((bB + bC), b, bB)
350350 $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bc), toString(bh), toString(bi), toString(bz), toString(bE), bD], e))
351351 }
352352
353353
354354
355355 @Callable(bt)
356356 func claimedRewardREADONLY (am) = {
357357 let bF = Y()
358358 let bG = "%s%d%d%d%s"
359359 func bH (bI,bJ) = {
360360 let bK = aJ(bJ, am)
361361 let bL = aK(bJ, am)
362362 let bM = valueOrElse(getInteger(aM, bK), 0)
363363 let bN = valueOrElse(getInteger(aM, bL), 0)
364364 let bO = 0
365365 makeString([(bG + bI), bJ, toString(bM), toString(bN), toString(bO), "end"], e)
366366 }
367367
368368 let bP = {
369369 let bQ = bF
370370 let bR = size(bQ)
371371 let bS = "%s"
372372 func bT (bU,bV) = if ((bV >= bR))
373373 then bU
374374 else bH(bU, bQ[bV])
375375
376376 func bW (bU,bV) = if ((bV >= bR))
377377 then bU
378378 else throw("List size exceeds 10")
379379
380380 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
381381 }
382382 $Tuple2(nil, ((bP + e) + am))
383383 }
384384
385385
386386
387387 @Callable(bt)
388-func calcBoostREADONLY (bX,bY,bZ,ca,cb) = {
389- let cc = aV
390- let cd = "empty"
391- let ce = parseIntValue(split(t(aW, ag()), e)[4])
392- let aG = if ((ca == ""))
393- then cd
394- else ca
395- let aF = if ((cb == ""))
396- then cd
397- else cb
398- let cf = valueOrElse(getString(aW, al(cb)), cd)
399- let cg = valueOrElse(getInteger(aW, ap(cf)), 0)
400- let ch = valueOrElse(getInteger(aW, ar(cf)), height)
401- let bl = valueOrElse(getInteger(aW, as(cf)), 0)
402- let ci = (ch + bl)
403- let cj = max([(ci - height), 0])
404- let ck = (cg + bX)
405- let cl = min([(cj + bY), ce])
406- let cm = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
407- let cn = bj(ck, cl, ce)[0]
408- let co = x(invoke(cc, "calcGwxParamsREADONLY", [cn, height, cl], nil))
409- let cp = (cn - cm)
410- let cq = B(co[0])
411- let cr = B(co[1])
412- let aw = toString(B(co[2]))
413- let cs = aA()
414- let ct = aD()
415- let cu = ((cn * cl) / 2)
416- let cv = v(aW, cs)
417- let cw = valueOrElse(getInteger(aW, ct), 0)
418- let cx = 1000
419- let cy = (w(aU, aN()) * cx)
420- let cz = aE(aF, aG)
421- let cA = aH(aG)
422- let cB = aL(aM, cz)
423- let cC = aL(aM, cA)
424- let cD = (cB + bZ)
425- let cE = (cC + bZ)
426- let bb = if ((aG != cd))
388+func calcBoostBulkInternalREADONLY (bX,bY,bZ,ca,cb,cc,cd) = if ((bX == size(bY)))
389+ then $Tuple2(nil, cd)
390+ else {
391+ let ce = bY[bX]
392+ let cf = bZ[bX]
393+ let cg = ca[bX]
394+ let ch = cb[bX]
395+ let ci = cc[bX]
396+ let cj = split({
397+ let ck = invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, ci], nil)
398+ if ($isInstanceOf(ck, "String"))
399+ then ck
400+ else throw(($getType(invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, ci], nil)) + " couldn't be cast to String"))
401+ }, e)
402+ let cl = (cd :+ cj)
403+ let cm = {
404+ let ck = invoke(this, "claimWxBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, cl], nil)
405+ if ($isInstanceOf(ck, "List[Any]"))
406+ then ck
407+ else throw(($getType(invoke(this, "claimWxBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, cl], nil)) + " couldn't be cast to List[Any]"))
408+ }
409+ if ((cm == cm))
410+ then $Tuple2(nil, cm)
411+ else throw("Strict value is not equal to itself.")
412+ }
413+
414+
415+
416+@Callable(bt)
417+func calcBoostBulkREADONLY (ce,cf,cg,ch,ci) = {
418+ let cl = invoke(this, "calcBoostBulkInternalREADONLY", [0, ce, cf, cg, ch, ci, nil], nil)
419+ $Tuple2(nil, cl)
420+ }
421+
422+
423+
424+@Callable(bt)
425+func calcBoostREADONLY (ce,cf,cg,ch,ci) = {
426+ let cn = aV
427+ let co = "empty"
428+ let cp = parseIntValue(split(t(aW, ag()), e)[4])
429+ let aG = if ((ch == ""))
430+ then co
431+ else ch
432+ let aF = if ((ci == ""))
433+ then co
434+ else ci
435+ let cq = valueOrElse(getString(aW, al(ci)), co)
436+ let cr = valueOrElse(getInteger(aW, ap(cq)), 0)
437+ let cs = valueOrElse(getInteger(aW, ar(cq)), height)
438+ let bl = valueOrElse(getInteger(aW, as(cq)), 0)
439+ let ct = (cs + bl)
440+ let cu = max([(ct - height), 0])
441+ let cv = (cr + ce)
442+ let cw = min([(cu + cf), cp])
443+ let cx = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
444+ let cy = bj(cv, cw, cp)[0]
445+ let cz = x(invoke(cn, "calcGwxParamsREADONLY", [cy, height, cw], nil))
446+ let cA = (cy - cx)
447+ let cB = B(cz[0])
448+ let cC = B(cz[1])
449+ let aw = toString(B(cz[2]))
450+ let cD = aA()
451+ let cE = aD()
452+ let cF = ((cy * cw) / 2)
453+ let cG = v(aW, cD)
454+ let cH = valueOrElse(getInteger(aW, cE), 0)
455+ let cI = 1000
456+ let cJ = (w(aU, aN()) * cI)
457+ let cK = aE(aF, aG)
458+ let cL = aH(aG)
459+ let cM = aL(aM, cK)
460+ let cN = aL(aM, cL)
461+ let cO = (cM + cg)
462+ let cP = (cN + cg)
463+ let bb = if ((aG != co))
427464 then {
428465 let aZ = valueOrErrorMessage(getString(aS, R(aG)), ("unsupported lp asset " + aG))
429466 getIntegerValue(aS, V(aZ))
430467 }
431468 else 0
432- let cF = fraction(cy, bb, (f * 3))
433- let cG = if ((cE != 0))
434- then fraction(cF, b, cE)
469+ let cQ = fraction(cJ, bb, (f * 3))
470+ let cR = if ((cP != 0))
471+ then fraction(cQ, b, cP)
435472 else 0
436- let cH = fraction(cG, cD, b)
437- let cI = (cF * 2)
438- let cJ = fraction(cn, cI, (cw + cp))
439- let cK = min([cJ, (cH * 2)])
440- let cL = if ((cH == 0))
473+ let cS = fraction(cR, cO, b)
474+ let cT = (cQ * 2)
475+ let cU = fraction(cy, cT, (cH + cA))
476+ let cV = min([cU, (cS * 2)])
477+ let cW = if ((cS == 0))
441478 then (1 * b)
442- else fraction((cK + cH), b, cH)
443- let bD = makeString([("lpAssetIdStr=" + aG), ("userAddressStr=" + aF), ("userNumStr=" + cf), ("userAmount=" + toString(cg)), ("userAmountNew=" + toString(ck)), ("lockDurationNew=" + toString(cl)), ("gWxAmountStart=" + toString(cn)), ("tmpUserBoostPerBlockX3=" + toString(cJ)), ("stakedByUserNew=" + toString(cD)), ("stakedTotalNew=" + toString(cE)), ("poolWeight=" + toString(bb)), ("wxPerLpX3=" + toString(cG)), ("poolWxEmissionPerBlockX3=" + toString(cF)), ("userWxPerBlockX3=" + toString(cH)), ("gWxAmountDiff=" + toString(cp)), ("totalCachedGwx=" + toString(cw)), ("userCurrgWxAmount=" + toString(cm))], "::")
444- $Tuple2(nil, makeString(["%d%d%s", toString(cn), toString(cL), bD], e))
479+ else fraction((cV + cS), b, cS)
480+ let bD = makeString([("lpAssetIdStr=" + aG), ("userAddressStr=" + aF), ("userNumStr=" + cq), ("userAmount=" + toString(cr)), ("userAmountNew=" + toString(cv)), ("lockDurationNew=" + toString(cw)), ("gWxAmountStart=" + toString(cy)), ("tmpUserBoostPerBlockX3=" + toString(cU)), ("stakedByUserNew=" + toString(cO)), ("stakedTotalNew=" + toString(cP)), ("poolWeight=" + toString(bb)), ("wxPerLpX3=" + toString(cR)), ("poolWxEmissionPerBlockX3=" + toString(cQ)), ("userWxPerBlockX3=" + toString(cS)), ("gWxAmountDiff=" + toString(cA)), ("totalCachedGwx=" + toString(cH)), ("userCurrgWxAmount=" + toString(cx))], "::")
481+ $Tuple2(nil, makeString(["%d%d%s", toString(cy), toString(cW), bD], e))
445482 }
446483
447484
448485
449486 @Callable(bt)
450487 func wxEmissionStatsREADONLY () = {
451- let cM = toString(b)
452- let cN = "1"
488+ let cX = toString(b)
489+ let cY = "1"
453490 let bc = w(aU, aN())
454- let cO = w(aU, aP())
455- let cP = if ((cO > height))
491+ let cZ = w(aU, aP())
492+ let da = if ((cZ > height))
456493 then 0
457- else (height - cO)
458- let cQ = (1440 * 365)
459- let cR = (201000000 * b)
460- let cS = if ((cP > cQ))
461- then cR
462- else fraction(cR, cP, cQ)
463- let cT = ((bc * cP) + cS)
464- let cU = v(aW, ah())
465- let cV = v(aW, ai())
466- let cW = v(aW, aj())
467- $Tuple2(nil, makeString(["%d%d%d%d", toString(cT), toString(cU), toString(cV), toString(cW)], e))
494+ else (height - cZ)
495+ let db = (1440 * 365)
496+ let dc = (201000000 * b)
497+ let dd = if ((da > db))
498+ then dc
499+ else fraction(dc, da, db)
500+ let de = ((bc * da) + dd)
501+ let df = v(aW, ah())
502+ let dg = v(aW, ai())
503+ let dh = v(aW, aj())
504+ $Tuple2(nil, makeString(["%d%d%d%d", toString(de), toString(df), toString(dg), toString(dh)], e))
468505 }
469506
470507
471508
472509 @Callable(bt)
473-func poolStatsREADONLY (cX) = {
474- let cY = addressFromStringValue(t(aS, U(cX)))
475- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
476- let aY = fromBase58String(D(cZ[j]))
477- let da = D(cZ[k])
478- let db = D(cZ[l])
479- let dc = D(cZ[o])
480- let dd = D(cZ[p])
481- let de = parseIntValue(D(cZ[m]))
482- let df = parseIntValue(D(cZ[n]))
483- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
484- let dh = B(invoke(cY, "getAccBalanceWrapperREADONLY", [da], nil))
485- let di = B(invoke(cY, "getAccBalanceWrapperREADONLY", [db], nil))
486- let dj = if ((dg == 0))
510+func poolStatsREADONLY (di) = {
511+ let dj = addressFromStringValue(t(aS, U(di)))
512+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
513+ let aY = fromBase58String(D(dk[j]))
514+ let dl = D(dk[k])
515+ let dm = D(dk[l])
516+ let dn = D(dk[o])
517+ let do = D(dk[p])
518+ let dp = parseIntValue(D(dk[m]))
519+ let dq = parseIntValue(D(dk[n]))
520+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
521+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dl], nil))
522+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dm], nil))
523+ let du = if ((dr == 0))
487524 then [toString(g), toString(g), toString(g)]
488- else x(invoke(cY, "calcPricesWrapperREADONLY", [dh, di, dg], nil))
489- let dk = 0
490- let dl = B(invoke(cY, "fromX18WrapperREADONLY", [dj[1], b], nil))
491- let dm = B(invoke(cY, "fromX18WrapperREADONLY", [dj[2], b], nil))
492- let bb = getIntegerValue(aS, V(toString(cY)))
493- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dh), toString(di), toString(dg), toString(dk), toString(dl), toString(dm), toString(bb)], e))
525+ else x(invoke(dj, "calcPricesWrapperREADONLY", [ds, dt, dr], nil))
526+ let dv = 0
527+ let dw = B(invoke(dj, "fromX18WrapperREADONLY", [du[1], b], nil))
528+ let dx = B(invoke(dj, "fromX18WrapperREADONLY", [du[2], b], nil))
529+ let bb = getIntegerValue(aS, V(toString(dj)))
530+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ds), toString(dt), toString(dr), toString(dv), toString(dw), toString(dx), toString(bb)], e))
494531 }
495532
496533
497534
498535 @Callable(bt)
499-func poolEvaluatePutByAmountAssetREADONLY (cX,dn) = {
500- let cY = addressFromStringValue(t(aS, U(cX)))
501- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
502- let aY = fromBase58String(D(cZ[j]))
503- let do = D(cZ[k])
504- let dp = fromBase58String(do)
505- let dq = D(cZ[l])
506- let dr = fromBase58String(dq)
507- let de = parseIntValue(D(cZ[m]))
508- let df = parseIntValue(D(cZ[n]))
509- let ds = D(cZ[i])
510- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
511- let dh = B(invoke(cY, "getAccBalanceWrapperREADONLY", [do], nil))
512- let di = B(invoke(cY, "getAccBalanceWrapperREADONLY", [dq], nil))
513- let dt = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dh, de], nil)))
514- let du = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [di, df], nil)))
515- let dv = if ((dg == 0))
536+func poolEvaluatePutByAmountAssetREADONLY (di,dy) = {
537+ let dj = addressFromStringValue(t(aS, U(di)))
538+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
539+ let aY = fromBase58String(D(dk[j]))
540+ let dz = D(dk[k])
541+ let dA = fromBase58String(dz)
542+ let dB = D(dk[l])
543+ let dC = fromBase58String(dB)
544+ let dp = parseIntValue(D(dk[m]))
545+ let dq = parseIntValue(D(dk[n]))
546+ let dD = D(dk[i])
547+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
548+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
549+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
550+ let dE = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [ds, dp], nil)))
551+ let dF = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dt, dq], nil)))
552+ let dG = if ((dr == 0))
516553 then g
517- else parseBigIntValue(D(invoke(cY, "calcPriceBigIntWrapperREADONLY", [toString(du), toString(dt)], nil)))
518- let dk = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dv), b], nil))
519- let dw = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dn, de], nil)))
520- let dx = fraction(dw, dv, d)
521- let dy = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dx), df], nil))
522- let dz = invoke(cY, "estimatePutOperationWrapperREADONLY", ["", 500000, dn, dp, dy, dr, "", true, false], nil)
523- let dA = {
524- let z = dz
525- if (if ($isInstanceOf(z._1, "Int"))
554+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
555+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
556+ let dH = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dy, dp], nil)))
557+ let dI = fraction(dH, dG, d)
558+ let dJ = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dI), dq], nil))
559+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
560+ let dK = {
561+ let z = cl
562+ if (if (if ($isInstanceOf(z._1, "Int"))
526563 then if ($isInstanceOf(z._3, "Int"))
527564 then if ($isInstanceOf(z._4, "Int"))
528565 then if ($isInstanceOf(z._5, "Int"))
529566 then $isInstanceOf(z._6, "Int")
530567 else false
531568 else false
532569 else false
533570 else false)
571+ then (size(z) == 13)
572+ else false)
534573 then {
535- let dB = z._1
536- let dC = z._3
537- let dD = z._4
538- let dE = z._5
539- let dF = z._6
540- $Tuple5(dB, dC, dD, dE, dF)
574+ let dL = z._1
575+ let dM = z._3
576+ let dN = z._4
577+ let dO = z._5
578+ let dP = z._6
579+ $Tuple5(dL, dM, dN, dO, dP)
541580 }
542581 else throw("Couldn't cast types")
543582 }
544- let dB = dA._1
545- let dC = dA._2
546- let dD = dA._3
547- let dE = dA._4
548- let dF = dA._5
549- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dB), toString(dk), toString(dD), toString(dE), toString(dF), ds, toString(dn), toString(dy)], e))
583+ let dL = dK._1
584+ let dM = dK._2
585+ let dN = dK._3
586+ let dO = dK._4
587+ let dP = dK._5
588+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
550589 }
551590
552591
553592
554593 @Callable(bt)
555-func poolEvaluatePutByPriceAssetREADONLY (cX,dy) = {
556- let cY = addressFromStringValue(t(aS, U(cX)))
557- let cZ = x(invoke(cY, "getPoolConfigWrapperREADONLY", nil, nil))
558- let aY = fromBase58String(D(cZ[j]))
559- let do = D(cZ[k])
560- let dp = fromBase58String(do)
561- let dq = D(cZ[l])
562- let dr = fromBase58String(dq)
563- let de = parseIntValue(D(cZ[m]))
564- let df = parseIntValue(D(cZ[n]))
565- let ds = D(cZ[i])
566- let dg = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
567- let dG = B(invoke(cY, "getAccBalanceWrapperREADONLY", [do], nil))
568- let dH = B(invoke(cY, "getAccBalanceWrapperREADONLY", [dq], nil))
569- let dI = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dG, de], nil)))
570- let dJ = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dH, df], nil)))
571- let dv = if ((dg == 0))
594+func poolEvaluatePutByPriceAssetREADONLY (di,dJ) = {
595+ let dj = addressFromStringValue(t(aS, U(di)))
596+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
597+ let aY = fromBase58String(D(dk[j]))
598+ let dz = D(dk[k])
599+ let dA = fromBase58String(dz)
600+ let dB = D(dk[l])
601+ let dC = fromBase58String(dB)
602+ let dp = parseIntValue(D(dk[m]))
603+ let dq = parseIntValue(D(dk[n]))
604+ let dD = D(dk[i])
605+ let dr = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
606+ let dQ = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
607+ let dR = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
608+ let dS = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dQ, dp], nil)))
609+ let dT = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dR, dq], nil)))
610+ let dG = if ((dr == 0))
572611 then g
573- else parseBigIntValue(D(invoke(cY, "calcPriceBigIntWrapperREADONLY", [toString(dJ), toString(dI)], nil)))
574- let dk = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dv), b], nil))
575- let dx = parseBigIntValue(D(invoke(cY, "toX18WrapperREADONLY", [dy, df], nil)))
576- let dw = fraction(dx, d, dv)
577- let dn = B(invoke(cY, "fromX18WrapperREADONLY", [toString(dw), de], nil))
578- let dz = invoke(cY, "estimatePutOperationWrapperREADONLY", ["", 500000, dn, dp, dy, dr, "", true, false], nil)
579- let dK = {
580- let z = dz
581- if (if ($isInstanceOf(z._1, "Int"))
612+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dT), toString(dS)], nil)))
613+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
614+ let dI = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dJ, dq], nil)))
615+ let dH = fraction(dI, d, dG)
616+ let dy = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
617+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
618+ let dU = {
619+ let z = cl
620+ if (if (if ($isInstanceOf(z._1, "Int"))
582621 then if ($isInstanceOf(z._3, "Int"))
583622 then if ($isInstanceOf(z._4, "Int"))
584623 then if ($isInstanceOf(z._5, "Int"))
585624 then $isInstanceOf(z._6, "Int")
586625 else false
587626 else false
588627 else false
589628 else false)
629+ then (size(z) == 13)
630+ else false)
590631 then {
591- let dB = z._1
592- let dC = z._3
593- let dD = z._4
594- let dE = z._5
595- let dF = z._6
596- $Tuple5(dB, dC, dD, dE, dF)
632+ let dL = z._1
633+ let dM = z._3
634+ let dN = z._4
635+ let dO = z._5
636+ let dP = z._6
637+ $Tuple5(dL, dM, dN, dO, dP)
597638 }
598639 else throw("Couldn't cast types")
599640 }
600- let dB = dK._1
601- let dC = dK._2
602- let dD = dK._3
603- let dE = dK._4
604- let dF = dK._5
605- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dB), toString(dk), toString(dD), toString(dE), toString(dF), ds, toString(dn), toString(dy)], e))
641+ let dL = dU._1
642+ let dM = dU._2
643+ let dN = dU._3
644+ let dO = dU._4
645+ let dP = dU._5
646+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
606647 }
607648
608649
609650
610651 @Callable(bt)
611-func poolEvaluateGetREADONLY (dL,dM) = {
612- let cY = addressFromStringValue(t(aS, U(dL)))
613- let dz = invoke(cY, "estimateGetOperationWrapperREADONLY", ["", dL, dM, toString(cY)], nil)
614- let dN = {
615- let z = dz
616- if (if ($isInstanceOf(z._1, "Int"))
652+func poolEvaluateGetREADONLY (dV,dW) = {
653+ let dj = addressFromStringValue(t(aS, U(dV)))
654+ let cl = invoke(dj, "estimateGetOperationWrapperREADONLY", ["", dV, dW, toString(dj)], nil)
655+ let dX = {
656+ let z = cl
657+ if (if (if ($isInstanceOf(z._1, "Int"))
617658 then if ($isInstanceOf(z._2, "Int"))
618659 then if ($isInstanceOf(z._5, "Int"))
619660 then if ($isInstanceOf(z._6, "Int"))
620661 then if ($isInstanceOf(z._7, "Int"))
621662 then if ($isInstanceOf(z._8, "String"))
622663 then $isInstanceOf(z._9, "String")
623664 else false
624665 else false
625666 else false
626667 else false
627668 else false
628669 else false)
670+ then (size(z) == 10)
671+ else false)
629672 then {
630- let dO = z._1
631- let dP = z._2
632- let dD = z._5
633- let dE = z._6
634- let dF = z._7
635- let dk = z._8
636- let ds = z._9
637- $Tuple7(dO, dP, dD, dE, dF, dk, ds)
673+ let dY = z._1
674+ let dZ = z._2
675+ let dN = z._5
676+ let dO = z._6
677+ let dP = z._7
678+ let dv = z._8
679+ let dD = z._9
680+ $Tuple7(dY, dZ, dN, dO, dP, dv, dD)
638681 }
639682 else throw("Couldn't cast types")
640683 }
641- let dO = dN._1
642- let dP = dN._2
643- let dD = dN._3
644- let dE = dN._4
645- let dF = dN._5
646- let dk = dN._6
647- let ds = dN._7
648- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dO), toString(dP), toString(dD), toString(dE), toString(dF), dk, ds], e))
684+ let dY = dX._1
685+ let dZ = dX._2
686+ let dN = dX._3
687+ let dO = dX._4
688+ let dP = dX._5
689+ let dv = dX._6
690+ let dD = dX._7
691+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dY), toString(dZ), toString(dN), toString(dO), toString(dP), dv, dD], e))
649692 }
650693
651694
652695
653696 @Callable(bt)
654697 func gwxUserInfoREADONLY (am) = {
655- let dQ = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
656- let dR = B(dQ[0])
657- $Tuple2(nil, makeString(["%d", toString(dR)], e))
698+ let ea = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
699+ let eb = B(ea[0])
700+ $Tuple2(nil, makeString(["%d", toString(eb)], e))
658701 }
659702
660703
661704
662705 @Callable(bt)
663-func setManager (dS) = {
706+func setManager (ec) = {
664707 let bx = bs(bt)
665708 if ((bx == bx))
666709 then {
667- let dT = fromBase58String(dS)
668- if ((dT == dT))
669- then [StringEntry(H(), dS)]
710+ let ed = fromBase58String(ec)
711+ if ((ed == ed))
712+ then [StringEntry(H(), ec)]
670713 else throw("Strict value is not equal to itself.")
671714 }
672715 else throw("Strict value is not equal to itself.")
673716 }
674717
675718
676719
677720 @Callable(bt)
678721 func confirmManager () = {
679- let dU = br()
680- let dV = if (isDefined(dU))
722+ let ee = br()
723+ let ef = if (isDefined(ee))
681724 then true
682725 else throw("No pending manager")
683- if ((dV == dV))
726+ if ((ef == ef))
684727 then {
685- let dW = if ((bt.callerPublicKey == value(dU)))
728+ let eg = if ((bt.callerPublicKey == value(ee)))
686729 then true
687730 else throw("You are not pending manager")
688- if ((dW == dW))
689- then [StringEntry(G(), toBase58String(value(dU))), DeleteEntry(H())]
731+ if ((eg == eg))
732+ then [StringEntry(G(), toBase58String(value(ee))), DeleteEntry(H())]
690733 else throw("Strict value is not equal to itself.")
691734 }
692735 else throw("Strict value is not equal to itself.")
693736 }
694737
695738
696-@Verifier(dX)
697-func dY () = {
698- let dZ = {
739+@Verifier(eh)
740+func ei () = {
741+ let ej = {
699742 let z = bp()
700743 if ($isInstanceOf(z, "ByteVector"))
701744 then {
702745 let bv = z
703746 bv
704747 }
705748 else if ($isInstanceOf(z, "Unit"))
706- then dX.senderPublicKey
749+ then eh.senderPublicKey
707750 else throw("Match error")
708751 }
709- sigVerify(dX.bodyBytes, dX.proofs[0], dZ)
752+ sigVerify(eh.bodyBytes, eh.proofs[0], ej)
710753 }
711754

github/deemru/w8io/169f3d6 
167.09 ms