tx · 3yBbKiKDUpNAtZACL4HVHF6SMqsrmv2iy6o8cKLsKwsg

3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW:  -0.03000000 Waves

2022.11.04 12:20 [3367558] smart account 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > SELF 0.00000000 Waves

{ "type": 13, "id": "3yBbKiKDUpNAtZACL4HVHF6SMqsrmv2iy6o8cKLsKwsg", "fee": 3000000, "feeAssetId": null, "timestamp": 1667552606830, "version": 1, "sender": "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW", "senderPublicKey": "6tusy8LfPEh2eoAsxHwZZn6cw8DBMGTHAce3gqLXwQxC", "proofs": [ "38xNK1SrxvYGhZmF42jTBwp8CCX1e1v7fYU8mf36xDncnEQAkUAFkToSf7ws5JMQ6TpZdPGD5mFQa5nDJxqRSFBW" ], "script": "base64:BgJgCAISAwoBCBIDCgEIEgQKAggIEgkKBwEREREYCBgSBwoFERERGAgSBwoFAQEBCAgSABIDCgEIEgQKAggBEgQKAggBEgQKAggBEgMKAQgSBQoDARgYEgMKARgSAwoBCBIAXAAGU0NBTEU4AAgABU1VTFQ4AIDC1y8AB1NDQUxFMTgAEgAGTVVMVDE4CQC2AgEAgICQu7rWrfANAANTRVACAl9fAA5QT09MV0VJR0hUTVVMVAUFTVVMVDgACnplcm9CaWdJbnQJALYCAQAAAA5pZHhQb29sQWRkcmVzcwABAA1pZHhQb29sU3RhdHVzAAIAEGlkeFBvb2xMUEFzc2V0SWQAAwANaWR4QW10QXNzZXRJZAAEAA9pZHhQcmljZUFzc2V0SWQABQAOaWR4QW10QXNzZXREY20ABgAQaWR4UHJpY2VBc3NldERjbQAHAA5pZHhJQW10QXNzZXRJZAAIABBpZHhJUHJpY2VBc3NldElkAAkADWlkeExQQXNzZXREY20ACgEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQNrZXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldEludE9yWmVybwIHYWRkcmVzcwNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUHYWRkcmVzcwUDa2V5AAABDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQlhc0FueUxpc3QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55THlzdAUHJG1hdGNoMAUKdmFsQW55THlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCGFzU3RyaW5nAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nARFrZXlGYWN0b3J5QWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAABABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAIAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAMAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAEABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAUAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAGABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAcAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAAgBDWtleUZhY3RvcnlDZmcAAhElc19fZmFjdG9yeUNvbmZpZwEaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARBrZXlGYWN0b3J5THBMaXN0AAIQJXNfX2xwVG9rZW5zTGlzdAEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARRrZXlGYWN0b3J5UG9vbFdlaWdodAEPY29udHJhY3RBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFD2NvbnRyYWN0QWRkcmVzcwUDbmlsBQNTRVABGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBCQERa2V5RmFjdG9yeUFkZHJlc3MAAQpyZWFkTHBMaXN0AAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJARhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwACQEQa2V5RmFjdG9yeUxwTGlzdAACAAUDU0VQARRyZWFkRmFjdG9yeUNmZ09yRmFpbAEHZmFjdG9yeQkAtQkCCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgUHZmFjdG9yeQkBDWtleUZhY3RvcnlDZmcABQNTRVABGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQtrZXlCb29zdENmZwACCiVzX19jb25maWcBH2tleUJvb3N0aW5nTG9ja1BhcmFtVG90YWxBbW91bnQAAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBKGtleUJvb3N0aW5nU3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MAAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzARprZXlCb29zdGluZ1N0YXRzTG9ja3NDb3VudAACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50ARprZXlCb29zdGluZ1N0YXRzVXNlcnNDb3VudAACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50ARJrZXlVc2VyMk51bU1hcHBpbmcBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABEmtleU51bTJVc2VyTWFwcGluZwEDbnVtCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQNudW0FA25pbAUDU0VQARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICBmFtb3VudAUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIFc3RhcnQFA25pbAUDU0VQARRrZXlMb2NrUGFyYW1EdXJhdGlvbgEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAghkdXJhdGlvbgUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUsBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBawUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUIBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgUDbmlsBQNTRVABFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwIHdXNlck51bQZwZXJpb2QJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQd1c2VyTnVtCQDMCAICAWsJAMwIAgUGcGVyaW9kBQNuaWwFA1NFUAEVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAgd1c2VyTnVtBnBlcmlvZAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgkAzAgCBQZwZXJpb2QFA25pbAUDU0VQASBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAEXa2V5VXNlck1heEJvb3N0SU5URUdSQUwBB3VzZXJOdW0JALkJAgkAzAgCAhElcyVkX19tYXhCb29zdEludAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAIYJXMlc19fbWF4Qm9vc3RJbnRfX3RvdGFsASFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwBB3VzZXJOdW0JALkJAgkAzAgCAiQlcyVkX191c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABE2tleVVzZXJCb29zdENsYWltZWQBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARFrZXlUb3RhbENhY2hlZEd3eAACFiVzJXNfX2d3eENhY2hlZF9fdG90YWwBD2tleVN0YWtlZEJ5VXNlcgIOdXNlckFkZHJlc3NTdHIMbHBBc3NldElkU3RyCQC5CQIJAMwIAgIOJXMlcyVzX19zdGFrZWQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEOa2V5U3Rha2VkVG90YWwBDGxwQXNzZXRJZFN0cgkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUMbHBBc3NldElkU3RyARBrZXlDbGFpbWVkQnlVc2VyAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAg8lcyVzJXNfX2NsYWltZWQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZAIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIYJXMlcyVzX19jbGFpbWVkTWluUmV3YXJkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABG2tleUNsYWltZWRCeVVzZXJCb29zdFJld2FyZAIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEKcmVhZFN0YWtlZAILc3Rha2luZ0RhcHADa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFC3N0YWtpbmdEYXBwBQNrZXkAAAEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50ASFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQAAh4lcyVzX19yYXRlUGVyQmxvY2tNYXhfX2N1cnJlbnQBFWtleUVtaXNzaW9uU3RhcnRCbG9jawACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrARtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BE2tleUVtaXNzaW9uRW5kQmxvY2sAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBDGtleUFkZG9uQWRkcgACDSVzX19hZGRvbkFkZHIBCmdldFBvb2xGZWUBC3Bvb2xBZGRyZXNzBApmZWVEZWZhdWx0CQBrAwAFBQVNVUxUOACQTgQGa2V5RmVlAgclc19fZmVlCQELdmFsdWVPckVsc2UCCQCaCAIFC3Bvb2xBZGRyZXNzBQZrZXlGZWUFCmZlZURlZmF1bHQAC2ZhY3RvcnlEYXBwCQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAAKZmFjdG9yeUNmZwkBFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQULZmFjdG9yeURhcHAADGVtaXNzaW9uRGFwcAkBGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcAC3N0YWtpbmdEYXBwCQEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAA1nd3hSZXdhcmREYXBwCQEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcADGJvb3N0aW5nRGFwcAkBGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcBGWludGVybmFsQ3VycmVudFJld2FyZFJhdGUBCWxwQXNzZXRJZAQOcG9vbEFkZHJlc3NTdHIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkBA5wb29sV2VpZ2h0TXVsdAUFTVVMVDgECnBvb2xXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2ZhY3RvcnlEYXBwCQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBBQ5wb29sQWRkcmVzc1N0cgQSd3hFbWlzc2lvblBlckJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQVd3hFbWlzc2lvblBlckJsb2NrTWF4CQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAQNYm9vc3RNYXhDb2VmZgADBBZwb29sV3hFbWlzc2lvblBlckJsb2NrCQBpAgkAawMFEnd4RW1pc3Npb25QZXJCbG9jawUKcG9vbFdlaWdodAUOcG9vbFdlaWdodE11bHQFDWJvb3N0TWF4Q29lZmYEGXBvb2xXeEVtaXNzaW9uUGVyQmxvY2tNYXgJAGsDBRV3eEVtaXNzaW9uUGVyQmxvY2tNYXgFCnBvb2xXZWlnaHQFDnBvb2xXZWlnaHRNdWx0BAltYXhGYWN0b3IJAGgCBQ1ib29zdE1heENvZWZmBQVNVUxUOAQNdG90YWxMcFN0YWtlZAkBDGdldEludE9yWmVybwIFC3N0YWtpbmdEYXBwCQEOa2V5U3Rha2VkVG90YWwBBQlscEFzc2V0SWQJAMwIAgUWcG9vbFd4RW1pc3Npb25QZXJCbG9jawkAzAgCBQltYXhGYWN0b3IJAMwIAgUNdG90YWxMcFN0YWtlZAUDbmlsARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMKbG9ja0Ftb3VudAxsb2NrRHVyYXRpb24PbWF4TG9ja0R1cmF0aW9uBAdjb2VmZlg4CQBrAwUMbG9ja0R1cmF0aW9uBQVNVUxUOAUPbWF4TG9ja0R1cmF0aW9uBA5nV3hBbW91bnRTdGFydAkAawMFCmxvY2tBbW91bnQFB2NvZWZmWDgFBU1VTFQ4CQDMCAIFDmdXeEFtb3VudFN0YXJ0BQNuaWwBBmdldEtleQMEYWRkcgNrZXkEdHlwZQMJAAACBQR0eXBlAgZzdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBGFkZHIFA2tleQMJAAACBQR0eXBlAgdpbnRlZ2VyCQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBGFkZHIFA2tleQMJAAACBQR0eXBlAgdib29sZWFuCQClAwEJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBGFkZHIFA2tleQkAAgECLXVua25vd24gdHlwZS4gZXhwZWN0ZWQgc3RyaW5nL2ludGVnZXIvYm9vbGVhbgEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IQAWkBC2NvbnN0cnVjdG9yAQ5mYWN0b3J5QWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5QWRkcmVzcwAFDmZhY3RvcnlBZGRyZXNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY3VycmVudFJld2FyZFJhdGVSRUFET05MWQEJbHBBc3NldElkBApyZXdhcmREYXRhCQEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEFCWxwQXNzZXRJZAQSd3hFbWlzc2lvblBlckJsb2NrCQCRAwIFCnJld2FyZERhdGEAAAQJbWF4RmFjdG9yCQCRAwIFCnJld2FyZERhdGEAAQQNdG90YWxMcFN0YWtlZAkAkQMCBQpyZXdhcmREYXRhAAIJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUSd3hFbWlzc2lvblBlckJsb2NrCQDMCAIJAKQDAQUJbWF4RmFjdG9yCQDMCAIJAKQDAQUNdG90YWxMcFN0YWtlZAUDbmlsBQNTRVABaQEdY3VycmVudFVzZXJSZXdhcmRSYXRlUkVBRE9OTFkCCWxwQXNzZXRJZAt1c2VyQWRkcmVzcwQKcmV3YXJkRGF0YQkBGWludGVybmFsQ3VycmVudFJld2FyZFJhdGUBBQlscEFzc2V0SWQEEnd4RW1pc3Npb25QZXJCbG9jawkAkQMCBQpyZXdhcmREYXRhAAAECW1heEZhY3RvcgkAkQMCBQpyZXdhcmREYXRhAAEEDXRvdGFsTHBTdGFrZWQJAJEDAgUKcmV3YXJkRGF0YQACBA5scFN0YWtlZEJ5VXNlcgkBDGdldEludE9yWmVybwIFC3N0YWtpbmdEYXBwCQEPa2V5U3Rha2VkQnlVc2VyAgULdXNlckFkZHJlc3MFCWxwQXNzZXRJZAQNdXNlckNsYWltSW5mbwkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFC3N0YWtpbmdEYXBwAg9jbGFpbVd4UkVBRE9OTFkJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAUDU0VQBA1taW5SZXdhcmRQYXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ11c2VyQ2xhaW1JbmZvAAUCHGNvdWxkbid0IHBhcnNlIG1pblJld2FyZFBhcnQED2Jvb3N0UmV3YXJkUGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNdXNlckNsYWltSW5mbwAGAh5jb3VsZG4ndCBwYXJzZSBib29zdFJld2FyZFBhcnQEBWRlYnVnCQCRAwIFDXVzZXJDbGFpbUluZm8ABwQNYm9vc3RpbmdQb3dlcgMJAAACBQ9ib29zdFJld2FyZFBhcnQAAAkAaAIAAQUFTVVMVDgJAGsDCQBkAgUNbWluUmV3YXJkUGFydAUPYm9vc3RSZXdhcmRQYXJ0BQVNVUxUOAUNbWluUmV3YXJkUGFydAkAlAoCBQNuaWwJALkJAgkAzAgCAgwlZCVkJWQlZCVkJXMJAMwIAgkApAMBBRJ3eEVtaXNzaW9uUGVyQmxvY2sJAMwIAgkApAMBBQltYXhGYWN0b3IJAMwIAgkApAMBBQ10b3RhbExwU3Rha2VkCQDMCAIJAKQDAQUObHBTdGFrZWRCeVVzZXIJAMwIAgkApAMBBQ1ib29zdGluZ1Bvd2VyCQDMCAIFBWRlYnVnBQNuaWwFA1NFUAFpAR1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQcLY3VycmVudEl0ZXIRZGVsdGFXeEFtb3VudEJ1bGsbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrEWRlbHRhTHBBbW91bnRCdWxrEGxwQXNzZXRJZE9wdEJ1bGsOdXNlckFkZHJlc3NPcHQGcmVzQWNjAwkAAAIFC2N1cnJlbnRJdGVyCQCQAwEFEWRlbHRhV3hBbW91bnRCdWxrCQCUCgIFA25pbAUGcmVzQWNjBA1kZWx0YVd4QW1vdW50CQCRAwIFEWRlbHRhV3hBbW91bnRCdWxrBQtjdXJyZW50SXRlcgQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAJEDAgUbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrBQtjdXJyZW50SXRlcgQNZGVsdGFMcEFtb3VudAkAkQMCBRFkZWx0YUxwQW1vdW50QnVsawULY3VycmVudEl0ZXIEDGxwQXNzZXRJZE9wdAkAkQMCBRBscEFzc2V0SWRPcHRCdWxrBQtjdXJyZW50SXRlcgQEaW5mbwoAAUAJAPwHBAUEdGhpcwIRY2FsY0Jvb3N0UkVBRE9OTFkJAMwIAgUNZGVsdGFXeEFtb3VudAkAzAgCBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBQ1kZWx0YUxwQW1vdW50CQDMCAIFDGxwQXNzZXRJZE9wdAkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBANyZXMJAM0IAgUGcmVzQWNjBQRpbmZvBANpbnYKAAFACQD8BwQFBHRoaXMCHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFEWRlbHRhV3hBbW91bnRCdWxrCQDMCAIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawkAzAgCBRFkZWx0YUxwQW1vdW50QnVsawkAzAgCBRBscEFzc2V0SWRPcHRCdWxrCQDMCAIFDnVzZXJBZGRyZXNzT3B0CQDMCAIFA3JlcwUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUDaW52CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWNhbGNCb29zdEJ1bGtSRUFET05MWQUNZGVsdGFXeEFtb3VudBdkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrcw1kZWx0YUxwQW1vdW50DGxwQXNzZXRJZE9wdA51c2VyQWRkcmVzc09wdAQDcmVzCQD8BwQFBHRoaXMCHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQ1kZWx0YVd4QW1vdW50CQDMCAIFF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQDMCAIFDWRlbHRhTHBBbW91bnQJAMwIAgUMbHBBc3NldElkT3B0CQDMCAIFDnVzZXJBZGRyZXNzT3B0CQDMCAIFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQNyZXMBaQERY2FsY0Jvb3N0UkVBRE9OTFkFDWRlbHRhV3hBbW91bnQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MNZGVsdGFMcEFtb3VudAxscEFzc2V0SWRPcHQOdXNlckFkZHJlc3NPcHQECG1hdGhEYXBwBQ1nd3hSZXdhcmREYXBwBAhFTVBUWVNUUgIFZW1wdHkEF21heExvY2tEdXJhdGlvbkluQmxvY2tzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgUMYm9vc3RpbmdEYXBwCQELa2V5Qm9vc3RDZmcABQNTRVAABAQMbHBBc3NldElkU3RyAwkAAAIFDGxwQXNzZXRJZE9wdAIABQhFTVBUWVNUUgUMbHBBc3NldElkT3B0BA51c2VyQWRkcmVzc1N0cgMJAAACBQ51c2VyQWRkcmVzc09wdAIABQhFTVBUWVNUUgUOdXNlckFkZHJlc3NPcHQECnVzZXJOdW1TdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYm9vc3RpbmdEYXBwCQESa2V5VXNlcjJOdW1NYXBwaW5nAQUOdXNlckFkZHJlc3NPcHQFCEVNUFRZU1RSBAp1c2VyQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQp1c2VyTnVtU3RyAAAECWxvY2tTdGFydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQUKdXNlck51bVN0cgUGaGVpZ2h0BAxsb2NrRHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwCQEUa2V5TG9ja1BhcmFtRHVyYXRpb24BBQp1c2VyTnVtU3RyAAAEB2xvY2tFbmQJAGQCBQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgQRcmVtYWluaW5nRHVyYXRpb24JAJYDAQkAzAgCCQBlAgUHbG9ja0VuZAUGaGVpZ2h0CQDMCAIAAAUDbmlsBA11c2VyQW1vdW50TmV3CQBkAgUKdXNlckFtb3VudAUNZGVsdGFXeEFtb3VudAQPbG9ja0R1cmF0aW9uTmV3CQCXAwEJAMwIAgkAZAIFEXJlbWFpbmluZ0R1cmF0aW9uBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBRdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcwUDbmlsBBF1c2VyQ3VycmdXeEFtb3VudAkBBWFzSW50AQkAkQMCCQEJYXNBbnlMaXN0AQkA/AcEBQxib29zdGluZ0RhcHACE2d3eFVzZXJJbmZvUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIFA25pbAUDbmlsAAAEEWdXeEFtb3VudFN0YXJ0TmV3CQCRAwIJARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMFDXVzZXJBbW91bnROZXcFD2xvY2tEdXJhdGlvbk5ldwUXbWF4TG9ja0R1cmF0aW9uSW5CbG9ja3MAAAQTZ1d4UGFyYW1zUmVzdWx0TGlzdAkBCWFzQW55TGlzdAEJAPwHBAUIbWF0aERhcHACFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBRFnV3hBbW91bnRTdGFydE5ldwkAzAgCBQZoZWlnaHQJAMwIAgUPbG9ja0R1cmF0aW9uTmV3BQNuaWwFA25pbAQNZ1d4QW1vdW50RGlmZgkAZQIFEWdXeEFtb3VudFN0YXJ0TmV3BRF1c2VyQ3VycmdXeEFtb3VudAQBawkBBWFzSW50AQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAAEAWIJAQVhc0ludAEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAABBAZwZXJpb2QJAKQDAQkBBWFzSW50AQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAIEGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAAEEXRvdGFsQ2FjaGVkR3d4S0VZCQERa2V5VG90YWxDYWNoZWRHd3gABBJ1c2VyTWF4Qm9vc3RJbnROZXcJAGkCCQBoAgURZ1d4QW1vdW50U3RhcnROZXcFD2xvY2tEdXJhdGlvbk5ldwACBBB0b3RhbE1heEJvb3N0SW50CQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEDnRvdGFsQ2FjaGVkR3d4CQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAURdG90YWxDYWNoZWRHd3hLRVkAAAQFTVVMVDMA6AcEFHd4RW1pc3Npb25QZXJCbG9ja1gzCQBoAgkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAFBU1VTFQzBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFD3N0YWtlZEJ5VXNlcktFWQQLc3Rha2VkVG90YWwJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFDnN0YWtlZFRvdGFsS0VZBA9zdGFrZWRCeVVzZXJOZXcJAGQCBQxzdGFrZWRCeVVzZXIFDWRlbHRhTHBBbW91bnQEDnN0YWtlZFRvdGFsTmV3CQBkAgULc3Rha2VkVG90YWwFDWRlbHRhTHBBbW91bnQECnBvb2xXZWlnaHQDCQECIT0CBQxscEFzc2V0SWRTdHIFCEVNUFRZU1RSBA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFC2ZhY3RvcnlEYXBwCQEaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcBBQxscEFzc2V0SWRTdHIJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQxscEFzc2V0SWRTdHIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2ZhY3RvcnlEYXBwCQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBBQ5wb29sQWRkcmVzc1N0cgAABBhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAGsDBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwUKcG9vbFdlaWdodAkAaAIFDlBPT0xXRUlHSFRNVUxUAAMECXd4UGVyTHBYMwMJAQIhPQIFDnN0YWtlZFRvdGFsTmV3AAAJAGsDBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMFBU1VTFQ4BQ5zdGFrZWRUb3RhbE5ldwAABBB1c2VyV3hQZXJCbG9ja1gzCQBrAwUJd3hQZXJMcFgzBQ9zdGFrZWRCeVVzZXJOZXcFBU1VTFQ4BBdib29zdEVtaXNzaW9uUGVyQmxvY2tYMwkAaAIFGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwACBBZ0bXBVc2VyQm9vc3RQZXJCbG9ja1gzCQBrAwURZ1d4QW1vdW50U3RhcnROZXcFF2Jvb3N0RW1pc3Npb25QZXJCbG9ja1gzCQBkAgUOdG90YWxDYWNoZWRHd3gFDWdXeEFtb3VudERpZmYEE3VzZXJCb29zdFBlckJsb2NrWDMJAJcDAQkAzAgCBRZ0bXBVc2VyQm9vc3RQZXJCbG9ja1gzCQDMCAIJAGgCBRB1c2VyV3hQZXJCbG9ja1gzAAIFA25pbAQKYm9vc3RDb2VmZgMJAAACBRB1c2VyV3hQZXJCbG9ja1gzAAAJAGgCAAEFBU1VTFQ4CQBrAwkAZAIFE3VzZXJCb29zdFBlckJsb2NrWDMFEHVzZXJXeFBlckJsb2NrWDMFBU1VTFQ4BRB1c2VyV3hQZXJCbG9ja1gzCQCUCgIFA25pbAkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFEWdXeEFtb3VudFN0YXJ0TmV3CQDMCAIJAKQDAQUKYm9vc3RDb2VmZgkAzAgCAgFkBQNuaWwFA1NFUAFpARd3eEVtaXNzaW9uU3RhdHNSRUFET05MWQAEB09ORU1VTFQJAKQDAQUFTVVMVDgEA09ORQIBMQQSd3hFbWlzc2lvblBlckJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQSZW1pc3Npb25TdGFydEJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAQMcGFzc2VkQmxvY2tzAwkAZgIFEmVtaXNzaW9uU3RhcnRCbG9jawUGaGVpZ2h0AAAJAGUCBQZoZWlnaHQFEmVtaXNzaW9uU3RhcnRCbG9jawQOdGVhbUVtRHVyYXRpb24JAGgCAKALAO0CBAl0ZWFtRW1NYXgJAGgCAMCI7F8FBU1VTFQ4BAZ0ZWFtRW0DCQBmAgUMcGFzc2VkQmxvY2tzBQ50ZWFtRW1EdXJhdGlvbgUJdGVhbUVtTWF4CQBrAwUJdGVhbUVtTWF4BQxwYXNzZWRCbG9ja3MFDnRlYW1FbUR1cmF0aW9uBA90b3RhbFd4UmVsZWFzZWQJAGQCCQBoAgUSd3hFbWlzc2lvblBlckJsb2NrBQxwYXNzZWRCbG9ja3MFBnRlYW1FbQQNdG90YWxXeExvY2tlZAkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBH2tleUJvb3N0aW5nTG9ja1BhcmFtVG90YWxBbW91bnQABBhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MJAQxnZXRJbnRPclplcm8CBQxib29zdGluZ0RhcHAJAShrZXlCb29zdGluZ1N0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAAQKbG9ja3NDb3VudAkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBGmtleUJvb3N0aW5nU3RhdHNMb2Nrc0NvdW50AAkAlAoCBQNuaWwJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFD3RvdGFsV3hSZWxlYXNlZAkAzAgCCQCkAwEFDXRvdGFsV3hMb2NrZWQJAMwIAgkApAMBBRhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MJAMwIAgkApAMBBQpsb2Nrc0NvdW50BQNuaWwFA1NFUAFpARFwb29sU3RhdHNSRUFET05MWQEHbHBBc3NldAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUHbHBBc3NldAQDY2ZnCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwECWxwQXNzZXRJZAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQKYW10QXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQEDHByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQLaUFtdEFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhJQW10QXNzZXRJZAQNaVByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeElQcmljZUFzc2V0SWQEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFCmFtdEFzc2V0SWQFA25pbAUDbmlsBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsBApwcmljZXNMaXN0AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAkAzAgCCQCmAwEFCnplcm9CaWdJbnQJAMwIAgkApgMBBQp6ZXJvQmlnSW50CQDMCAIJAKYDAQUKemVyb0JpZ0ludAUDbmlsCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQkAzAgCBRJhY2NBbXRBc3NldEJhbGFuY2UJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcG9vbExQQmFsYW5jZQUDbmlsBQNuaWwECGN1clByaWNlAAAED2xwQW10QXNzZXRTaGFyZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCRAwIFCnByaWNlc0xpc3QAAQkAzAgCBQVNVUxUOAUDbmlsBQNuaWwEEWxwUHJpY2VBc3NldFNoYXJlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAJEDAgUKcHJpY2VzTGlzdAACCQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEJAKUIAQULcG9vbEFkZHJlc3MEA2ZlZQkBCmdldFBvb2xGZWUBBQtwb29sQWRkcmVzcwQecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQtmYWN0b3J5RGFwcAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFC3Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQdcG9vbE9uZVRva2VuT3BlcmF0aW9uc0VuYWJsZWQJAQEhAQUecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQCUCgIFA25pbAkAuQkCCQDMCAICEiVkJWQlZCVkJWQlZCVkJWQlcwkAzAgCCQCkAwEFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUNcG9vbExQQmFsYW5jZQkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUPbHBBbXRBc3NldFNoYXJlCQDMCAIJAKQDAQURbHBQcmljZUFzc2V0U2hhcmUJAMwIAgkApAMBBQpwb29sV2VpZ2h0CQDMCAIJAKQDAQUDZmVlCQDMCAIJAKUDAQUdcG9vbE9uZVRva2VuT3BlcmF0aW9uc0VuYWJsZWQFA25pbAUDU0VQAWkBJHBvb2xFdmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQIHbHBBc3NldAxpbkFtQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDHByQXNzZXRJZFN0cgUDbmlsBQNuaWwEDmFtdEFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwEEHByaWNlQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwEC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAh5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBRBwcmljZUFzc2V0QW10WDE4CQDMCAIJAKYDAQUOYW10QXNzZXRBbXRYMTgFA25pbAUDbmlsBAhjdXJQcmljZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFC2N1clByaWNlWDE4CQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQPaW5BbUFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDGluQW1Bc3NldEFtdAkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwED2luUHJBc3NldEFtdFgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQZNVUxUMTgEDGluUHJBc3NldEFtdAkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD2luUHJBc3NldEFtdFgxOAkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgCgwh4JAMwIAgUMaW5BbUFzc2V0QW10CQDMCAIFCWFtQXNzZXRJZAkAzAgCBQxpblByQXNzZXRBbXQJAMwIAgUJcHJBc3NldElkCQDMCAICAAkAzAgCBgkAzAgCBwUDbmlsBQNuaWwEDSR0MDIyNjk5MjMwNTIEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzMCA0ludAMJAAECCAUHJG1hdGNoMAJfNAIDSW50AwkAAQIIBQckbWF0Y2gwAl81AgNJbnQJAAECCAUHJG1hdGNoMAJfNgIDSW50BwcHBwkAAAIJAMYKAQUHJG1hdGNoMAANBwQJY2FsY0xwQW10CAUHJG1hdGNoMAJfMQQMY3VyUHJpY2VDYWxjCAUHJG1hdGNoMAJfMwQJYW1CYWxhbmNlCAUHJG1hdGNoMAJfNAQJcHJCYWxhbmNlCAUHJG1hdGNoMAJfNQQKbHBFbWlzc2lvbggFByRtYXRjaDACXzYJAJcKBQUJY2FsY0xwQW10BQxjdXJQcmljZUNhbGMFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQJY2FsY0xwQW10CAUNJHQwMjI2OTkyMzA1MgJfMQQMY3VyUHJpY2VDYWxjCAUNJHQwMjI2OTkyMzA1MgJfMgQJYW1CYWxhbmNlCAUNJHQwMjI2OTkyMzA1MgJfMwQJcHJCYWxhbmNlCAUNJHQwMjI2OTkyMzA1MgJfNAQKbHBFbWlzc2lvbggFDSR0MDIyNjk5MjMwNTICXzUJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpASNwb29sRXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQIHbHBBc3NldAxpblByQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQMYW1CYWxhbmNlUmF3CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEDHByQmFsYW5jZVJhdwkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwckFzc2V0SWRTdHIFA25pbAUDbmlsBA9hbUJhbGFuY2VSYXdYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMYW1CYWxhbmNlUmF3CQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQPcHJCYWxhbmNlUmF3WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDHByQmFsYW5jZVJhdwkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD3ByQmFsYW5jZVJhd1gxOAkAzAgCCQCmAwEFD2FtQmFsYW5jZVJhd1gxOAUDbmlsBQNuaWwECGN1clByaWNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQULY3VyUHJpY2VYMTgJAMwIAgUFTVVMVDgFA25pbAUDbmlsBA9pblByQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMaW5QckFzc2V0QW10CQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBA9pbkFtQXNzZXRBbXRYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQZNVUxUMTgFC2N1clByaWNlWDE4BAxpbkFtQXNzZXRBbXQJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQ9pbkFtQXNzZXRBbXRYMTgJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBANyZXMJAPwHBAULcG9vbEFkZHJlc3MCI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQDMCAICAAkAzAgCAKDCHgkAzAgCBQxpbkFtQXNzZXRBbXQJAMwIAgUJYW1Bc3NldElkCQDMCAIFDGluUHJBc3NldEFtdAkAzAgCBQlwckFzc2V0SWQJAMwIAgIACQDMCAIGCQDMCAIHBQNuaWwFA25pbAQNJHQwMjU2MjUyNTk3OAQHJG1hdGNoMAUDcmVzAwMDCQABAggFByRtYXRjaDACXzECA0ludAMJAAECCAUHJG1hdGNoMAJfMwIDSW50AwkAAQIIBQckbWF0Y2gwAl80AgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAkAAQIIBQckbWF0Y2gwAl82AgNJbnQHBwcHCQAAAgkAxgoBBQckbWF0Y2gwAA0HBAljYWxjTHBBbXQIBQckbWF0Y2gwAl8xBAxjdXJQcmljZUNhbGMIBQckbWF0Y2gwAl8zBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl80BAlwckJhbGFuY2UIBQckbWF0Y2gwAl81BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNgkAlwoFBQljYWxjTHBBbXQFDGN1clByaWNlQ2FsYwUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24JAAIBAhNDb3VsZG4ndCBjYXN0IHR5cGVzBAljYWxjTHBBbXQIBQ0kdDAyNTYyNTI1OTc4Al8xBAxjdXJQcmljZUNhbGMIBQ0kdDAyNTYyNTI1OTc4Al8yBAlhbUJhbGFuY2UIBQ0kdDAyNTYyNTI1OTc4Al8zBAlwckJhbGFuY2UIBQ0kdDAyNTYyNTI1OTc4Al80BApscEVtaXNzaW9uCAUNJHQwMjU2MjUyNTk3OAJfNQkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBF3Bvb2xFdmFsdWF0ZUdldFJFQURPTkxZAhBwYXltZW50THBBc3NldElkDHBheW1lbnRMcEFtdAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUQcGF5bWVudExwQXNzZXRJZAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgUQcGF5bWVudExwQXNzZXRJZAkAzAgCBQxwYXltZW50THBBbXQJAMwIAgkApQgBBQtwb29sQWRkcmVzcwUDbmlsBQNuaWwEDSR0MDI2NjczMjcwOTAEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzICA0ludAMJAAECCAUHJG1hdGNoMAJfNQIDSW50AwkAAQIIBQckbWF0Y2gwAl82AgNJbnQDCQABAggFByRtYXRjaDACXzcCA0ludAMJAAECCAUHJG1hdGNoMAJfOAIGU3RyaW5nCQABAggFByRtYXRjaDACXzkCBlN0cmluZwcHBwcHBwkAAAIJAMYKAQUHJG1hdGNoMAAKBwQIb3V0QW1BbXQIBQckbWF0Y2gwAl8xBAhvdXRQckFtdAgFByRtYXRjaDACXzIECWFtQmFsYW5jZQgFByRtYXRjaDACXzUECXByQmFsYW5jZQgFByRtYXRjaDACXzYECmxwRW1pc3Npb24IBQckbWF0Y2gwAl83BAhjdXJQcmljZQgFByRtYXRjaDACXzgECnBvb2xTdGF0dXMIBQckbWF0Y2gwAl85CQCZCgcFCG91dEFtQW10BQhvdXRQckFtdAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24FCGN1clByaWNlBQpwb29sU3RhdHVzCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQIb3V0QW1BbXQIBQ0kdDAyNjY3MzI3MDkwAl8xBAhvdXRQckFtdAgFDSR0MDI2NjczMjcwOTACXzIECWFtQmFsYW5jZQgFDSR0MDI2NjczMjcwOTACXzMECXByQmFsYW5jZQgFDSR0MDI2NjczMjcwOTACXzQECmxwRW1pc3Npb24IBQ0kdDAyNjY3MzI3MDkwAl81BAhjdXJQcmljZQgFDSR0MDI2NjczMjcwOTACXzYECnBvb2xTdGF0dXMIBQ0kdDAyNjY3MzI3MDkwAl83CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUIb3V0QW1BbXQJAMwIAgkApAMBBQhvdXRQckFtdAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUIY3VyUHJpY2UJAMwIAgUKcG9vbFN0YXR1cwUDbmlsBQNTRVABaQETZ3d4VXNlckluZm9SRUFET05MWQELdXNlckFkZHJlc3MED2d3eFVzZXJJbmZvTElTVAkBCWFzQW55TGlzdAEJAPwHBAUMYm9vc3RpbmdEYXBwAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAQJZ3d4QW1vdW50CQEFYXNJbnQBCQCRAwIFD2d3eFVzZXJJbmZvTElTVAAACQCUCgIFA25pbAkAuQkCCQDMCAICAiVkCQDMCAIJAKQDAQUJZ3d4QW1vdW50BQNuaWwFA1NFUAFpARNnZXRLZXlzQnVsa0ludGVybmFsAwtjdXJyZW50SXRlcgRrZXlzBnJlc0FjYwMJAAACBQtjdXJyZW50SXRlcgkAkAMBBQRrZXlzCQCUCgIFA25pbAUGcmVzQWNjBAFrCQC1CQIJAJEDAgUEa2V5cwULY3VycmVudEl0ZXICAisrBARhZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAWsAAAQDa2V5CQCRAwIFAWsAAQQEdHlwZQkAkQMCBQFrAAIEA3ZhbAkBBmdldEtleQMFBGFkZHIFA2tleQUEdHlwZQQDcmVzCQDNCAIFBnJlc0FjYwUDdmFsBANpbnYJAPwHBAUEdGhpcwITZ2V0S2V5c0J1bGtJbnRlcm5hbAkAzAgCCQBkAgULY3VycmVudEl0ZXIAAQkAzAgCBQRrZXlzCQDMCAIFA3JlcwUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQNpbnYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZ2V0S2V5c0J1bGsBBGtleXMEA3JlcwkA/AcEBQR0aGlzAhNnZXRLZXlzQnVsa0ludGVybmFsCQDMCAIAAAkAzAgCBQRrZXlzCQDMCAIFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQNyZXMBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkaBcyd", "chainId": 87, "height": 3367558, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2asjbz1NJ2YEKZH81Bq1JK4C4SjXYzgGe58sH4XJmsuo Next: 8VYd6U1cnAzHNCMrBhWjkMtDVbBMhKExuNc3uQbNKDQe Diff:
OldNewDifferences
278278 }
279279
280280
281-func bu () = {
281+func bu (bv,s,bw) = if ((bw == "string"))
282+ then getStringValue(bv, s)
283+ else if ((bw == "integer"))
284+ then toString(getIntegerValue(bv, s))
285+ else if ((bw == "boolean"))
286+ then toString(getBooleanValue(bv, s))
287+ else throw("unknown type. expected string/integer/boolean")
288+
289+
290+func bx () = {
282291 let z = getString(G())
283292 if ($isInstanceOf(z, "String"))
284293 then {
285- let bv = z
286- fromBase58String(bv)
294+ let by = z
295+ fromBase58String(by)
287296 }
288297 else if ($isInstanceOf(z, "Unit"))
289298 then unit
291300 }
292301
293302
294-func bw () = {
303+func bz () = {
295304 let z = getString(H())
296305 if ($isInstanceOf(z, "String"))
297306 then {
298- let bv = z
299- fromBase58String(bv)
307+ let by = z
308+ fromBase58String(by)
300309 }
301310 else if ($isInstanceOf(z, "Unit"))
302311 then unit
304313 }
305314
306315
307-func bx (by) = {
308- let bz = throw("Permission denied")
309- let z = bu()
316+func bA (bB) = {
317+ let bC = throw("Permission denied")
318+ let z = bx()
310319 if ($isInstanceOf(z, "ByteVector"))
311320 then {
312- let bA = z
313- if ((by.callerPublicKey == bA))
321+ let bD = z
322+ if ((bB.callerPublicKey == bD))
314323 then true
315- else bz
324+ else bC
316325 }
317326 else if ($isInstanceOf(z, "Unit"))
318- then if ((by.caller == this))
327+ then if ((bB.caller == this))
319328 then true
320- else bz
329+ else bC
321330 else throw("Match error")
322331 }
323332
324333
325-@Callable(by)
326-func constructor (bB) = {
327- let bC = bx(by)
328- if ((bC == bC))
329- then [StringEntry(F(), bB)]
334+@Callable(bB)
335+func constructor (bE) = {
336+ let bF = bA(bB)
337+ if ((bF == bF))
338+ then [StringEntry(F(), bE)]
330339 else throw("Strict value is not equal to itself.")
331340 }
332341
333342
334343
335-@Callable(by)
344+@Callable(bB)
336345 func currentRewardRateREADONLY (bd) = {
337- let bD = bc(bd)
338- let bh = bD[0]
339- let bm = bD[1]
340- let bn = bD[2]
346+ let bG = bc(bd)
347+ let bh = bG[0]
348+ let bm = bG[1]
349+ let bn = bG[2]
341350 $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
342351 }
343352
344353
345354
346-@Callable(by)
355+@Callable(bB)
347356 func currentUserRewardRateREADONLY (bd,am) = {
348- let bD = bc(bd)
349- let bh = bD[0]
350- let bm = bD[1]
351- let bn = bD[2]
352- let bE = v(aM, aE(am, bd))
353- let bF = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
354- let bG = valueOrErrorMessage(parseInt(bF[5]), "couldn't parse minRewardPart")
355- let bH = valueOrErrorMessage(parseInt(bF[6]), "couldn't parse boostRewardPart")
356- let bI = bF[7]
357- let bJ = if ((bH == 0))
357+ let bG = bc(bd)
358+ let bh = bG[0]
359+ let bm = bG[1]
360+ let bn = bG[2]
361+ let bH = v(aM, aE(am, bd))
362+ let bI = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
363+ let bJ = valueOrErrorMessage(parseInt(bI[5]), "couldn't parse minRewardPart")
364+ let bK = valueOrErrorMessage(parseInt(bI[6]), "couldn't parse boostRewardPart")
365+ let bL = bI[7]
366+ let bM = if ((bK == 0))
358367 then (1 * b)
359- else fraction((bG + bH), b, bG)
360- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bE), toString(bJ), bI], e))
368+ else fraction((bJ + bK), b, bJ)
369+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bH), toString(bM), bL], e))
361370 }
362371
363372
364373
365-@Callable(by)
366-func calcBoostBulkInternalREADONLY (bK,bL,bM,bN,bO,bP,bQ) = if ((bK == size(bL)))
367- then $Tuple2(nil, bQ)
374+@Callable(bB)
375+func calcBoostBulkInternalREADONLY (bN,bO,bP,bQ,bR,bS,bT) = if ((bN == size(bO)))
376+ then $Tuple2(nil, bT)
368377 else {
369- let bR = bL[bK]
370- let bS = bM[bK]
371- let bT = bN[bK]
372- let bU = bO[bK]
373- let bV = {
374- let bW = invoke(this, "calcBoostREADONLY", [bR, bS, bT, bU, bP], nil)
375- if ($isInstanceOf(bW, "String"))
376- then bW
377- else throw(($getType(bW) + " couldn't be cast to String"))
378+ let bU = bO[bN]
379+ let bV = bP[bN]
380+ let bW = bQ[bN]
381+ let bX = bR[bN]
382+ let bY = {
383+ let bZ = invoke(this, "calcBoostREADONLY", [bU, bV, bW, bX, bS], nil)
384+ if ($isInstanceOf(bZ, "String"))
385+ then bZ
386+ else throw(($getType(bZ) + " couldn't be cast to String"))
378387 }
379- let bX = (bQ :+ bV)
380- let bY = {
381- let bW = invoke(this, "calcBoostBulkInternalREADONLY", [(bK + 1), bL, bM, bN, bO, bP, bX], nil)
382- if ($isInstanceOf(bW, "List[Any]"))
383- then bW
384- else throw(($getType(bW) + " couldn't be cast to List[Any]"))
388+ let ca = (bT :+ bY)
389+ let cb = {
390+ let bZ = invoke(this, "calcBoostBulkInternalREADONLY", [(bN + 1), bO, bP, bQ, bR, bS, ca], nil)
391+ if ($isInstanceOf(bZ, "List[Any]"))
392+ then bZ
393+ else throw(($getType(bZ) + " couldn't be cast to List[Any]"))
385394 }
386- if ((bY == bY))
387- then $Tuple2(nil, bY)
395+ if ((cb == cb))
396+ then $Tuple2(nil, cb)
388397 else throw("Strict value is not equal to itself.")
389398 }
390399
391400
392401
393-@Callable(by)
394-func calcBoostBulkREADONLY (bR,bS,bT,bU,bP) = {
395- let bX = invoke(this, "calcBoostBulkInternalREADONLY", [0, bR, bS, bT, bU, bP, nil], nil)
396- $Tuple2(nil, bX)
402+@Callable(bB)
403+func calcBoostBulkREADONLY (bU,bV,bW,bX,bS) = {
404+ let ca = invoke(this, "calcBoostBulkInternalREADONLY", [0, bU, bV, bW, bX, bS, nil], nil)
405+ $Tuple2(nil, ca)
397406 }
398407
399408
400409
401-@Callable(by)
402-func calcBoostREADONLY (bR,bS,bT,bU,bP) = {
403- let bZ = ba
404- let ca = "empty"
405- let cb = parseIntValue(split(t(bb, ag()), e)[4])
406- let aG = if ((bU == ""))
407- then ca
408- else bU
409- let aF = if ((bP == ""))
410- then ca
411- else bP
412- let cc = valueOrElse(getString(bb, al(bP)), ca)
413- let cd = valueOrElse(getInteger(bb, ap(cc)), 0)
414- let ce = valueOrElse(getInteger(bb, ar(cc)), height)
415- let bq = valueOrElse(getInteger(bb, as(cc)), 0)
416- let cf = (ce + bq)
417- let cg = max([(cf - height), 0])
418- let ch = (cd + bR)
419- let ci = min([(cg + bS), cb])
420- let cj = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
421- let ck = bo(ch, ci, cb)[0]
422- let cl = x(invoke(bZ, "calcGwxParamsREADONLY", [ck, height, ci], nil))
423- let cm = (ck - cj)
424- let cn = B(cl[0])
425- let co = B(cl[1])
426- let aw = toString(B(cl[2]))
427- let cp = aA()
428- let cq = aD()
429- let cr = ((ck * ci) / 2)
430- let cs = v(bb, cp)
431- let ct = valueOrElse(getInteger(bb, cq), 0)
432- let cu = 1000
433- let cv = (w(aZ, aN()) * cu)
434- let cw = aE(aF, aG)
435- let cx = aH(aG)
436- let cy = aL(aM, cw)
437- let cz = aL(aM, cx)
438- let cA = (cy + bT)
439- let cB = (cz + bT)
440- let bg = if ((aG != ca))
410+@Callable(bB)
411+func calcBoostREADONLY (bU,bV,bW,bX,bS) = {
412+ let cc = ba
413+ let cd = "empty"
414+ let ce = parseIntValue(split(t(bb, ag()), e)[4])
415+ let aG = if ((bX == ""))
416+ then cd
417+ else bX
418+ let aF = if ((bS == ""))
419+ then cd
420+ else bS
421+ let cf = valueOrElse(getString(bb, al(bS)), cd)
422+ let cg = valueOrElse(getInteger(bb, ap(cf)), 0)
423+ let ch = valueOrElse(getInteger(bb, ar(cf)), height)
424+ let bq = valueOrElse(getInteger(bb, as(cf)), 0)
425+ let ci = (ch + bq)
426+ let cj = max([(ci - height), 0])
427+ let ck = (cg + bU)
428+ let cl = min([(cj + bV), ce])
429+ let cm = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
430+ let cn = bo(ck, cl, ce)[0]
431+ let co = x(invoke(cc, "calcGwxParamsREADONLY", [cn, height, cl], nil))
432+ let cp = (cn - cm)
433+ let cq = B(co[0])
434+ let cr = B(co[1])
435+ let aw = toString(B(co[2]))
436+ let cs = aA()
437+ let ct = aD()
438+ let cu = ((cn * cl) / 2)
439+ let cv = v(bb, cs)
440+ let cw = valueOrElse(getInteger(bb, ct), 0)
441+ let cx = 1000
442+ let cy = (w(aZ, aN()) * cx)
443+ let cz = aE(aF, aG)
444+ let cA = aH(aG)
445+ let cB = aL(aM, cz)
446+ let cC = aL(aM, cA)
447+ let cD = (cB + bW)
448+ let cE = (cC + bW)
449+ let bg = if ((aG != cd))
441450 then {
442451 let be = valueOrErrorMessage(getString(aX, R(aG)), ("unsupported lp asset " + aG))
443452 getIntegerValue(aX, V(be))
444453 }
445454 else 0
446- let cC = fraction(cv, bg, (f * 3))
447- let cD = if ((cB != 0))
448- then fraction(cC, b, cB)
455+ let cF = fraction(cy, bg, (f * 3))
456+ let cG = if ((cE != 0))
457+ then fraction(cF, b, cE)
449458 else 0
450- let cE = fraction(cD, cA, b)
451- let cF = (cC * 2)
452- let cG = fraction(ck, cF, (ct + cm))
453- let cH = min([cG, (cE * 2)])
454- let cI = if ((cE == 0))
459+ let cH = fraction(cG, cD, b)
460+ let cI = (cF * 2)
461+ let cJ = fraction(cn, cI, (cw + cp))
462+ let cK = min([cJ, (cH * 2)])
463+ let cL = if ((cH == 0))
455464 then (1 * b)
456- else fraction((cH + cE), b, cE)
457- $Tuple2(nil, makeString(["%d%d%s", toString(ck), toString(cI), "d"], e))
465+ else fraction((cK + cH), b, cH)
466+ $Tuple2(nil, makeString(["%d%d%s", toString(cn), toString(cL), "d"], e))
458467 }
459468
460469
461470
462-@Callable(by)
471+@Callable(bB)
463472 func wxEmissionStatsREADONLY () = {
464- let cJ = toString(b)
465- let cK = "1"
473+ let cM = toString(b)
474+ let cN = "1"
466475 let bh = w(aZ, aN())
467- let cL = w(aZ, aP())
468- let cM = if ((cL > height))
476+ let cO = w(aZ, aP())
477+ let cP = if ((cO > height))
469478 then 0
470- else (height - cL)
471- let cN = (1440 * 365)
472- let cO = (201000000 * b)
473- let cP = if ((cM > cN))
474- then cO
475- else fraction(cO, cM, cN)
476- let cQ = ((bh * cM) + cP)
477- let cR = v(bb, ah())
478- let cS = v(bb, ai())
479- let cT = v(bb, aj())
480- $Tuple2(nil, makeString(["%d%d%d%d", toString(cQ), toString(cR), toString(cS), toString(cT)], e))
479+ else (height - cO)
480+ let cQ = (1440 * 365)
481+ let cR = (201000000 * b)
482+ let cS = if ((cP > cQ))
483+ then cR
484+ else fraction(cR, cP, cQ)
485+ let cT = ((bh * cP) + cS)
486+ let cU = v(bb, ah())
487+ let cV = v(bb, ai())
488+ let cW = v(bb, aj())
489+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cT), toString(cU), toString(cV), toString(cW)], e))
481490 }
482491
483492
484493
485-@Callable(by)
486-func poolStatsREADONLY (cU) = {
487- let aU = addressFromStringValue(t(aX, U(cU)))
488- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
489- let bd = fromBase58String(D(cV[j]))
490- let cW = D(cV[k])
491- let cX = D(cV[l])
492- let cY = D(cV[o])
493- let cZ = D(cV[p])
494- let da = parseIntValue(D(cV[m]))
495- let db = parseIntValue(D(cV[n]))
496- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
497- let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cW], nil))
498- let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cX], nil))
499- let df = if ((dc == 0))
494+@Callable(bB)
495+func poolStatsREADONLY (cX) = {
496+ let aU = addressFromStringValue(t(aX, U(cX)))
497+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
498+ let bd = fromBase58String(D(cY[j]))
499+ let cZ = D(cY[k])
500+ let da = D(cY[l])
501+ let db = D(cY[o])
502+ let dc = D(cY[p])
503+ let dd = parseIntValue(D(cY[m]))
504+ let de = parseIntValue(D(cY[n]))
505+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
506+ let dg = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cZ], nil))
507+ let dh = B(invoke(aU, "getAccBalanceWrapperREADONLY", [da], nil))
508+ let di = if ((df == 0))
500509 then [toString(g), toString(g), toString(g)]
501- else x(invoke(aU, "calcPricesWrapperREADONLY", [dd, de, dc], nil))
502- let dg = 0
503- let dh = B(invoke(aU, "fromX18WrapperREADONLY", [df[1], b], nil))
504- let di = B(invoke(aU, "fromX18WrapperREADONLY", [df[2], b], nil))
510+ else x(invoke(aU, "calcPricesWrapperREADONLY", [dg, dh, df], nil))
511+ let dj = 0
512+ let dk = B(invoke(aU, "fromX18WrapperREADONLY", [di[1], b], nil))
513+ let dl = B(invoke(aU, "fromX18WrapperREADONLY", [di[2], b], nil))
505514 let bg = getIntegerValue(aX, V(toString(aU)))
506- let dj = aT(aU)
507- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dd), toString(de), toString(dc), toString(dg), toString(dh), toString(di), toString(bg), toString(dj)], e))
515+ let dm = aT(aU)
516+ let dn = {
517+ let bZ = invoke(aX, "isPoolOneTokenOperationsDisabledREADONLY", [toString(aU)], nil)
518+ if ($isInstanceOf(bZ, "Boolean"))
519+ then bZ
520+ else throw(($getType(bZ) + " couldn't be cast to Boolean"))
521+ }
522+ let do = !(dn)
523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dg), toString(dh), toString(df), toString(dj), toString(dk), toString(dl), toString(bg), toString(dm), toString(do)], e))
508524 }
509525
510526
511527
512-@Callable(by)
513-func poolEvaluatePutByAmountAssetREADONLY (cU,dk) = {
514- let aU = addressFromStringValue(t(aX, U(cU)))
515- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
516- let bd = fromBase58String(D(cV[j]))
517- let dl = D(cV[k])
518- let dm = fromBase58String(dl)
519- let dn = D(cV[l])
520- let do = fromBase58String(dn)
521- let da = parseIntValue(D(cV[m]))
522- let db = parseIntValue(D(cV[n]))
523- let dp = D(cV[i])
524- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
525- let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
526- let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
527- let dq = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dd, da], nil)))
528- let dr = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [de, db], nil)))
529- let ds = if ((dc == 0))
528+@Callable(bB)
529+func poolEvaluatePutByAmountAssetREADONLY (cX,dp) = {
530+ let aU = addressFromStringValue(t(aX, U(cX)))
531+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
532+ let bd = fromBase58String(D(cY[j]))
533+ let dq = D(cY[k])
534+ let dr = fromBase58String(dq)
535+ let ds = D(cY[l])
536+ let dt = fromBase58String(ds)
537+ let dd = parseIntValue(D(cY[m]))
538+ let de = parseIntValue(D(cY[n]))
539+ let du = D(cY[i])
540+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
541+ let dg = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dq], nil))
542+ let dh = B(invoke(aU, "getAccBalanceWrapperREADONLY", [ds], nil))
543+ let dv = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dg, dd], nil)))
544+ let dw = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dh, de], nil)))
545+ let dx = if ((df == 0))
530546 then g
531- else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil)))
532- let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
533- let dt = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dk, da], nil)))
534- let du = fraction(dt, ds, d)
535- let dv = B(invoke(aU, "fromX18WrapperREADONLY", [toString(du), db], nil))
536- let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
537- let dw = {
538- let z = bX
547+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dw), toString(dv)], nil)))
548+ let dj = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dx), b], nil))
549+ let dy = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dp, dd], nil)))
550+ let dz = fraction(dy, dx, d)
551+ let dA = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dz), de], nil))
552+ let ca = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dp, dr, dA, dt, "", true, false], nil)
553+ let dB = {
554+ let z = ca
539555 if (if (if ($isInstanceOf(z._1, "Int"))
540556 then if ($isInstanceOf(z._3, "Int"))
541557 then if ($isInstanceOf(z._4, "Int"))
548564 then (size(z) == 13)
549565 else false)
550566 then {
551- let dx = z._1
552- let dy = z._3
553- let dz = z._4
554- let dA = z._5
555- let dB = z._6
556- $Tuple5(dx, dy, dz, dA, dB)
567+ let dC = z._1
568+ let dD = z._3
569+ let dE = z._4
570+ let dF = z._5
571+ let dG = z._6
572+ $Tuple5(dC, dD, dE, dF, dG)
557573 }
558574 else throw("Couldn't cast types")
559575 }
560- let dx = dw._1
561- let dy = dw._2
562- let dz = dw._3
563- let dA = dw._4
564- let dB = dw._5
565- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
576+ let dC = dB._1
577+ let dD = dB._2
578+ let dE = dB._3
579+ let dF = dB._4
580+ let dG = dB._5
581+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dj), toString(dE), toString(dF), toString(dG), du, toString(dp), toString(dA)], e))
566582 }
567583
568584
569585
570-@Callable(by)
571-func poolEvaluatePutByPriceAssetREADONLY (cU,dv) = {
572- let aU = addressFromStringValue(t(aX, U(cU)))
573- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
574- let bd = fromBase58String(D(cV[j]))
575- let dl = D(cV[k])
576- let dm = fromBase58String(dl)
577- let dn = D(cV[l])
578- let do = fromBase58String(dn)
579- let da = parseIntValue(D(cV[m]))
580- let db = parseIntValue(D(cV[n]))
581- let dp = D(cV[i])
582- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
583- let dC = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
584- let dD = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
585- let dE = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dC, da], nil)))
586- let dF = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dD, db], nil)))
587- let ds = if ((dc == 0))
586+@Callable(bB)
587+func poolEvaluatePutByPriceAssetREADONLY (cX,dA) = {
588+ let aU = addressFromStringValue(t(aX, U(cX)))
589+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
590+ let bd = fromBase58String(D(cY[j]))
591+ let dq = D(cY[k])
592+ let dr = fromBase58String(dq)
593+ let ds = D(cY[l])
594+ let dt = fromBase58String(ds)
595+ let dd = parseIntValue(D(cY[m]))
596+ let de = parseIntValue(D(cY[n]))
597+ let du = D(cY[i])
598+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
599+ let dH = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dq], nil))
600+ let dI = B(invoke(aU, "getAccBalanceWrapperREADONLY", [ds], nil))
601+ let dJ = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dH, dd], nil)))
602+ let dK = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dI, de], nil)))
603+ let dx = if ((df == 0))
588604 then g
589- else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
590- let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
591- let du = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dv, db], nil)))
592- let dt = fraction(du, d, ds)
593- let dk = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dt), da], nil))
594- let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
595- let dG = {
596- let z = bX
605+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dK), toString(dJ)], nil)))
606+ let dj = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dx), b], nil))
607+ let dz = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dA, de], nil)))
608+ let dy = fraction(dz, d, dx)
609+ let dp = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dy), dd], nil))
610+ let ca = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dp, dr, dA, dt, "", true, false], nil)
611+ let dL = {
612+ let z = ca
597613 if (if (if ($isInstanceOf(z._1, "Int"))
598614 then if ($isInstanceOf(z._3, "Int"))
599615 then if ($isInstanceOf(z._4, "Int"))
606622 then (size(z) == 13)
607623 else false)
608624 then {
609- let dx = z._1
610- let dy = z._3
611- let dz = z._4
612- let dA = z._5
613- let dB = z._6
614- $Tuple5(dx, dy, dz, dA, dB)
625+ let dC = z._1
626+ let dD = z._3
627+ let dE = z._4
628+ let dF = z._5
629+ let dG = z._6
630+ $Tuple5(dC, dD, dE, dF, dG)
615631 }
616632 else throw("Couldn't cast types")
617633 }
618- let dx = dG._1
619- let dy = dG._2
620- let dz = dG._3
621- let dA = dG._4
622- let dB = dG._5
623- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
634+ let dC = dL._1
635+ let dD = dL._2
636+ let dE = dL._3
637+ let dF = dL._4
638+ let dG = dL._5
639+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dj), toString(dE), toString(dF), toString(dG), du, toString(dp), toString(dA)], e))
624640 }
625641
626642
627643
628-@Callable(by)
629-func poolEvaluateGetREADONLY (dH,dI) = {
630- let aU = addressFromStringValue(t(aX, U(dH)))
631- let bX = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(aU)], nil)
632- let dJ = {
633- let z = bX
644+@Callable(bB)
645+func poolEvaluateGetREADONLY (dM,dN) = {
646+ let aU = addressFromStringValue(t(aX, U(dM)))
647+ let ca = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dM, dN, toString(aU)], nil)
648+ let dO = {
649+ let z = ca
634650 if (if (if ($isInstanceOf(z._1, "Int"))
635651 then if ($isInstanceOf(z._2, "Int"))
636652 then if ($isInstanceOf(z._5, "Int"))
647663 then (size(z) == 10)
648664 else false)
649665 then {
650- let dK = z._1
651- let dL = z._2
652- let dz = z._5
653- let dA = z._6
654- let dB = z._7
655- let dg = z._8
656- let dp = z._9
657- $Tuple7(dK, dL, dz, dA, dB, dg, dp)
666+ let dP = z._1
667+ let dQ = z._2
668+ let dE = z._5
669+ let dF = z._6
670+ let dG = z._7
671+ let dj = z._8
672+ let du = z._9
673+ $Tuple7(dP, dQ, dE, dF, dG, dj, du)
658674 }
659675 else throw("Couldn't cast types")
660676 }
661- let dK = dJ._1
662- let dL = dJ._2
663- let dz = dJ._3
664- let dA = dJ._4
665- let dB = dJ._5
666- let dg = dJ._6
667- let dp = dJ._7
668- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dg, dp], e))
677+ let dP = dO._1
678+ let dQ = dO._2
679+ let dE = dO._3
680+ let dF = dO._4
681+ let dG = dO._5
682+ let dj = dO._6
683+ let du = dO._7
684+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dP), toString(dQ), toString(dE), toString(dF), toString(dG), dj, du], e))
669685 }
670686
671687
672688
673-@Callable(by)
689+@Callable(bB)
674690 func gwxUserInfoREADONLY (am) = {
675- let dM = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
676- let dN = B(dM[0])
677- $Tuple2(nil, makeString(["%d", toString(dN)], e))
691+ let dR = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
692+ let dS = B(dR[0])
693+ $Tuple2(nil, makeString(["%d", toString(dS)], e))
678694 }
679695
680696
681697
682-@Callable(by)
683-func unstakeAndGetOneTknV2 (aU,dO,dP,dQ) = {
684- let bY = invoke(addressFromStringValue(aU), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil)
685- if ((bY == bY))
686- then $Tuple2(nil, unit)
687- else throw("Strict value is not equal to itself.")
698+@Callable(bB)
699+func getKeysBulkInternal (bN,dT,bT) = if ((bN == size(dT)))
700+ then $Tuple2(nil, bT)
701+ else {
702+ let cq = split(dT[bN], "++")
703+ let bv = addressFromStringValue(cq[0])
704+ let s = cq[1]
705+ let bw = cq[2]
706+ let y = bu(bv, s, bw)
707+ let ca = (bT :+ y)
708+ let cb = invoke(this, "getKeysBulkInternal", [(bN + 1), dT, ca], nil)
709+ if ((cb == cb))
710+ then $Tuple2(nil, cb)
711+ else throw("Strict value is not equal to itself.")
712+ }
713+
714+
715+
716+@Callable(bB)
717+func getKeysBulk (dT) = {
718+ let ca = invoke(this, "getKeysBulkInternal", [0, dT, nil], nil)
719+ $Tuple2(nil, ca)
688720 }
689721
690722
691723
692-@Callable(by)
693-func setManager (dR) = {
694- let bC = bx(by)
695- if ((bC == bC))
724+@Callable(bB)
725+func setManager (dU) = {
726+ let bF = bA(bB)
727+ if ((bF == bF))
696728 then {
697- let dS = fromBase58String(dR)
698- if ((dS == dS))
699- then [StringEntry(H(), dR)]
729+ let dV = fromBase58String(dU)
730+ if ((dV == dV))
731+ then [StringEntry(H(), dU)]
700732 else throw("Strict value is not equal to itself.")
701733 }
702734 else throw("Strict value is not equal to itself.")
704736
705737
706738
707-@Callable(by)
739+@Callable(bB)
708740 func confirmManager () = {
709- let dT = bw()
710- let dU = if (isDefined(dT))
741+ let dW = bz()
742+ let dX = if (isDefined(dW))
711743 then true
712744 else throw("No pending manager")
713- if ((dU == dU))
745+ if ((dX == dX))
714746 then {
715- let dV = if ((by.callerPublicKey == value(dT)))
747+ let dY = if ((bB.callerPublicKey == value(dW)))
716748 then true
717749 else throw("You are not pending manager")
718- if ((dV == dV))
719- then [StringEntry(G(), toBase58String(value(dT))), DeleteEntry(H())]
750+ if ((dY == dY))
751+ then [StringEntry(G(), toBase58String(value(dW))), DeleteEntry(H())]
720752 else throw("Strict value is not equal to itself.")
721753 }
722754 else throw("Strict value is not equal to itself.")
723755 }
724756
725757
726-@Verifier(dW)
727-func dX () = {
728- let dY = {
729- let z = bu()
758+@Verifier(dZ)
759+func ea () = {
760+ let eb = {
761+ let z = bx()
730762 if ($isInstanceOf(z, "ByteVector"))
731763 then {
732- let bA = z
733- bA
764+ let bD = z
765+ bD
734766 }
735767 else if ($isInstanceOf(z, "Unit"))
736- then dW.senderPublicKey
768+ then dZ.senderPublicKey
737769 else throw("Match error")
738770 }
739- sigVerify(dW.bodyBytes, dW.proofs[0], dY)
771+ sigVerify(dZ.bodyBytes, dZ.proofs[0], eb)
740772 }
741773
Full:
OldNewDifferences
11 {-# 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 func aS () = "%s__addonAddr"
238238
239239
240240 func aT (aU) = {
241241 let aV = fraction(5, b, 10000)
242242 let aW = "%s__fee"
243243 valueOrElse(getInteger(aU, aW), aV)
244244 }
245245
246246
247247 let aX = X()
248248
249249 let aY = Z(aX)
250250
251251 let aZ = ad(aY)
252252
253253 let aM = ae(aY)
254254
255255 let ba = af(aY)
256256
257257 let bb = ab(aY)
258258
259259 func bc (bd) = {
260260 let be = t(aX, U(bd))
261261 let bf = b
262262 let bg = getIntegerValue(aX, V(be))
263263 let bh = w(aZ, aN())
264264 let bi = w(aZ, aO())
265265 let bj = 3
266266 let bk = (fraction(bh, bg, bf) / bj)
267267 let bl = fraction(bi, bg, bf)
268268 let bm = (bj * b)
269269 let bn = v(aM, aH(bd))
270270 [bk, bm, bn]
271271 }
272272
273273
274274 func bo (bp,bq,br) = {
275275 let bs = fraction(bq, b, br)
276276 let bt = fraction(bp, bs, b)
277277 [bt]
278278 }
279279
280280
281-func bu () = {
281+func bu (bv,s,bw) = if ((bw == "string"))
282+ then getStringValue(bv, s)
283+ else if ((bw == "integer"))
284+ then toString(getIntegerValue(bv, s))
285+ else if ((bw == "boolean"))
286+ then toString(getBooleanValue(bv, s))
287+ else throw("unknown type. expected string/integer/boolean")
288+
289+
290+func bx () = {
282291 let z = getString(G())
283292 if ($isInstanceOf(z, "String"))
284293 then {
285- let bv = z
286- fromBase58String(bv)
294+ let by = z
295+ fromBase58String(by)
287296 }
288297 else if ($isInstanceOf(z, "Unit"))
289298 then unit
290299 else throw("Match error")
291300 }
292301
293302
294-func bw () = {
303+func bz () = {
295304 let z = getString(H())
296305 if ($isInstanceOf(z, "String"))
297306 then {
298- let bv = z
299- fromBase58String(bv)
307+ let by = z
308+ fromBase58String(by)
300309 }
301310 else if ($isInstanceOf(z, "Unit"))
302311 then unit
303312 else throw("Match error")
304313 }
305314
306315
307-func bx (by) = {
308- let bz = throw("Permission denied")
309- let z = bu()
316+func bA (bB) = {
317+ let bC = throw("Permission denied")
318+ let z = bx()
310319 if ($isInstanceOf(z, "ByteVector"))
311320 then {
312- let bA = z
313- if ((by.callerPublicKey == bA))
321+ let bD = z
322+ if ((bB.callerPublicKey == bD))
314323 then true
315- else bz
324+ else bC
316325 }
317326 else if ($isInstanceOf(z, "Unit"))
318- then if ((by.caller == this))
327+ then if ((bB.caller == this))
319328 then true
320- else bz
329+ else bC
321330 else throw("Match error")
322331 }
323332
324333
325-@Callable(by)
326-func constructor (bB) = {
327- let bC = bx(by)
328- if ((bC == bC))
329- then [StringEntry(F(), bB)]
334+@Callable(bB)
335+func constructor (bE) = {
336+ let bF = bA(bB)
337+ if ((bF == bF))
338+ then [StringEntry(F(), bE)]
330339 else throw("Strict value is not equal to itself.")
331340 }
332341
333342
334343
335-@Callable(by)
344+@Callable(bB)
336345 func currentRewardRateREADONLY (bd) = {
337- let bD = bc(bd)
338- let bh = bD[0]
339- let bm = bD[1]
340- let bn = bD[2]
346+ let bG = bc(bd)
347+ let bh = bG[0]
348+ let bm = bG[1]
349+ let bn = bG[2]
341350 $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
342351 }
343352
344353
345354
346-@Callable(by)
355+@Callable(bB)
347356 func currentUserRewardRateREADONLY (bd,am) = {
348- let bD = bc(bd)
349- let bh = bD[0]
350- let bm = bD[1]
351- let bn = bD[2]
352- let bE = v(aM, aE(am, bd))
353- let bF = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
354- let bG = valueOrErrorMessage(parseInt(bF[5]), "couldn't parse minRewardPart")
355- let bH = valueOrErrorMessage(parseInt(bF[6]), "couldn't parse boostRewardPart")
356- let bI = bF[7]
357- let bJ = if ((bH == 0))
357+ let bG = bc(bd)
358+ let bh = bG[0]
359+ let bm = bG[1]
360+ let bn = bG[2]
361+ let bH = v(aM, aE(am, bd))
362+ let bI = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
363+ let bJ = valueOrErrorMessage(parseInt(bI[5]), "couldn't parse minRewardPart")
364+ let bK = valueOrErrorMessage(parseInt(bI[6]), "couldn't parse boostRewardPart")
365+ let bL = bI[7]
366+ let bM = if ((bK == 0))
358367 then (1 * b)
359- else fraction((bG + bH), b, bG)
360- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bE), toString(bJ), bI], e))
368+ else fraction((bJ + bK), b, bJ)
369+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bH), toString(bM), bL], e))
361370 }
362371
363372
364373
365-@Callable(by)
366-func calcBoostBulkInternalREADONLY (bK,bL,bM,bN,bO,bP,bQ) = if ((bK == size(bL)))
367- then $Tuple2(nil, bQ)
374+@Callable(bB)
375+func calcBoostBulkInternalREADONLY (bN,bO,bP,bQ,bR,bS,bT) = if ((bN == size(bO)))
376+ then $Tuple2(nil, bT)
368377 else {
369- let bR = bL[bK]
370- let bS = bM[bK]
371- let bT = bN[bK]
372- let bU = bO[bK]
373- let bV = {
374- let bW = invoke(this, "calcBoostREADONLY", [bR, bS, bT, bU, bP], nil)
375- if ($isInstanceOf(bW, "String"))
376- then bW
377- else throw(($getType(bW) + " couldn't be cast to String"))
378+ let bU = bO[bN]
379+ let bV = bP[bN]
380+ let bW = bQ[bN]
381+ let bX = bR[bN]
382+ let bY = {
383+ let bZ = invoke(this, "calcBoostREADONLY", [bU, bV, bW, bX, bS], nil)
384+ if ($isInstanceOf(bZ, "String"))
385+ then bZ
386+ else throw(($getType(bZ) + " couldn't be cast to String"))
378387 }
379- let bX = (bQ :+ bV)
380- let bY = {
381- let bW = invoke(this, "calcBoostBulkInternalREADONLY", [(bK + 1), bL, bM, bN, bO, bP, bX], nil)
382- if ($isInstanceOf(bW, "List[Any]"))
383- then bW
384- else throw(($getType(bW) + " couldn't be cast to List[Any]"))
388+ let ca = (bT :+ bY)
389+ let cb = {
390+ let bZ = invoke(this, "calcBoostBulkInternalREADONLY", [(bN + 1), bO, bP, bQ, bR, bS, ca], nil)
391+ if ($isInstanceOf(bZ, "List[Any]"))
392+ then bZ
393+ else throw(($getType(bZ) + " couldn't be cast to List[Any]"))
385394 }
386- if ((bY == bY))
387- then $Tuple2(nil, bY)
395+ if ((cb == cb))
396+ then $Tuple2(nil, cb)
388397 else throw("Strict value is not equal to itself.")
389398 }
390399
391400
392401
393-@Callable(by)
394-func calcBoostBulkREADONLY (bR,bS,bT,bU,bP) = {
395- let bX = invoke(this, "calcBoostBulkInternalREADONLY", [0, bR, bS, bT, bU, bP, nil], nil)
396- $Tuple2(nil, bX)
402+@Callable(bB)
403+func calcBoostBulkREADONLY (bU,bV,bW,bX,bS) = {
404+ let ca = invoke(this, "calcBoostBulkInternalREADONLY", [0, bU, bV, bW, bX, bS, nil], nil)
405+ $Tuple2(nil, ca)
397406 }
398407
399408
400409
401-@Callable(by)
402-func calcBoostREADONLY (bR,bS,bT,bU,bP) = {
403- let bZ = ba
404- let ca = "empty"
405- let cb = parseIntValue(split(t(bb, ag()), e)[4])
406- let aG = if ((bU == ""))
407- then ca
408- else bU
409- let aF = if ((bP == ""))
410- then ca
411- else bP
412- let cc = valueOrElse(getString(bb, al(bP)), ca)
413- let cd = valueOrElse(getInteger(bb, ap(cc)), 0)
414- let ce = valueOrElse(getInteger(bb, ar(cc)), height)
415- let bq = valueOrElse(getInteger(bb, as(cc)), 0)
416- let cf = (ce + bq)
417- let cg = max([(cf - height), 0])
418- let ch = (cd + bR)
419- let ci = min([(cg + bS), cb])
420- let cj = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
421- let ck = bo(ch, ci, cb)[0]
422- let cl = x(invoke(bZ, "calcGwxParamsREADONLY", [ck, height, ci], nil))
423- let cm = (ck - cj)
424- let cn = B(cl[0])
425- let co = B(cl[1])
426- let aw = toString(B(cl[2]))
427- let cp = aA()
428- let cq = aD()
429- let cr = ((ck * ci) / 2)
430- let cs = v(bb, cp)
431- let ct = valueOrElse(getInteger(bb, cq), 0)
432- let cu = 1000
433- let cv = (w(aZ, aN()) * cu)
434- let cw = aE(aF, aG)
435- let cx = aH(aG)
436- let cy = aL(aM, cw)
437- let cz = aL(aM, cx)
438- let cA = (cy + bT)
439- let cB = (cz + bT)
440- let bg = if ((aG != ca))
410+@Callable(bB)
411+func calcBoostREADONLY (bU,bV,bW,bX,bS) = {
412+ let cc = ba
413+ let cd = "empty"
414+ let ce = parseIntValue(split(t(bb, ag()), e)[4])
415+ let aG = if ((bX == ""))
416+ then cd
417+ else bX
418+ let aF = if ((bS == ""))
419+ then cd
420+ else bS
421+ let cf = valueOrElse(getString(bb, al(bS)), cd)
422+ let cg = valueOrElse(getInteger(bb, ap(cf)), 0)
423+ let ch = valueOrElse(getInteger(bb, ar(cf)), height)
424+ let bq = valueOrElse(getInteger(bb, as(cf)), 0)
425+ let ci = (ch + bq)
426+ let cj = max([(ci - height), 0])
427+ let ck = (cg + bU)
428+ let cl = min([(cj + bV), ce])
429+ let cm = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
430+ let cn = bo(ck, cl, ce)[0]
431+ let co = x(invoke(cc, "calcGwxParamsREADONLY", [cn, height, cl], nil))
432+ let cp = (cn - cm)
433+ let cq = B(co[0])
434+ let cr = B(co[1])
435+ let aw = toString(B(co[2]))
436+ let cs = aA()
437+ let ct = aD()
438+ let cu = ((cn * cl) / 2)
439+ let cv = v(bb, cs)
440+ let cw = valueOrElse(getInteger(bb, ct), 0)
441+ let cx = 1000
442+ let cy = (w(aZ, aN()) * cx)
443+ let cz = aE(aF, aG)
444+ let cA = aH(aG)
445+ let cB = aL(aM, cz)
446+ let cC = aL(aM, cA)
447+ let cD = (cB + bW)
448+ let cE = (cC + bW)
449+ let bg = if ((aG != cd))
441450 then {
442451 let be = valueOrErrorMessage(getString(aX, R(aG)), ("unsupported lp asset " + aG))
443452 getIntegerValue(aX, V(be))
444453 }
445454 else 0
446- let cC = fraction(cv, bg, (f * 3))
447- let cD = if ((cB != 0))
448- then fraction(cC, b, cB)
455+ let cF = fraction(cy, bg, (f * 3))
456+ let cG = if ((cE != 0))
457+ then fraction(cF, b, cE)
449458 else 0
450- let cE = fraction(cD, cA, b)
451- let cF = (cC * 2)
452- let cG = fraction(ck, cF, (ct + cm))
453- let cH = min([cG, (cE * 2)])
454- let cI = if ((cE == 0))
459+ let cH = fraction(cG, cD, b)
460+ let cI = (cF * 2)
461+ let cJ = fraction(cn, cI, (cw + cp))
462+ let cK = min([cJ, (cH * 2)])
463+ let cL = if ((cH == 0))
455464 then (1 * b)
456- else fraction((cH + cE), b, cE)
457- $Tuple2(nil, makeString(["%d%d%s", toString(ck), toString(cI), "d"], e))
465+ else fraction((cK + cH), b, cH)
466+ $Tuple2(nil, makeString(["%d%d%s", toString(cn), toString(cL), "d"], e))
458467 }
459468
460469
461470
462-@Callable(by)
471+@Callable(bB)
463472 func wxEmissionStatsREADONLY () = {
464- let cJ = toString(b)
465- let cK = "1"
473+ let cM = toString(b)
474+ let cN = "1"
466475 let bh = w(aZ, aN())
467- let cL = w(aZ, aP())
468- let cM = if ((cL > height))
476+ let cO = w(aZ, aP())
477+ let cP = if ((cO > height))
469478 then 0
470- else (height - cL)
471- let cN = (1440 * 365)
472- let cO = (201000000 * b)
473- let cP = if ((cM > cN))
474- then cO
475- else fraction(cO, cM, cN)
476- let cQ = ((bh * cM) + cP)
477- let cR = v(bb, ah())
478- let cS = v(bb, ai())
479- let cT = v(bb, aj())
480- $Tuple2(nil, makeString(["%d%d%d%d", toString(cQ), toString(cR), toString(cS), toString(cT)], e))
479+ else (height - cO)
480+ let cQ = (1440 * 365)
481+ let cR = (201000000 * b)
482+ let cS = if ((cP > cQ))
483+ then cR
484+ else fraction(cR, cP, cQ)
485+ let cT = ((bh * cP) + cS)
486+ let cU = v(bb, ah())
487+ let cV = v(bb, ai())
488+ let cW = v(bb, aj())
489+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cT), toString(cU), toString(cV), toString(cW)], e))
481490 }
482491
483492
484493
485-@Callable(by)
486-func poolStatsREADONLY (cU) = {
487- let aU = addressFromStringValue(t(aX, U(cU)))
488- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
489- let bd = fromBase58String(D(cV[j]))
490- let cW = D(cV[k])
491- let cX = D(cV[l])
492- let cY = D(cV[o])
493- let cZ = D(cV[p])
494- let da = parseIntValue(D(cV[m]))
495- let db = parseIntValue(D(cV[n]))
496- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
497- let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cW], nil))
498- let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cX], nil))
499- let df = if ((dc == 0))
494+@Callable(bB)
495+func poolStatsREADONLY (cX) = {
496+ let aU = addressFromStringValue(t(aX, U(cX)))
497+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
498+ let bd = fromBase58String(D(cY[j]))
499+ let cZ = D(cY[k])
500+ let da = D(cY[l])
501+ let db = D(cY[o])
502+ let dc = D(cY[p])
503+ let dd = parseIntValue(D(cY[m]))
504+ let de = parseIntValue(D(cY[n]))
505+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
506+ let dg = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cZ], nil))
507+ let dh = B(invoke(aU, "getAccBalanceWrapperREADONLY", [da], nil))
508+ let di = if ((df == 0))
500509 then [toString(g), toString(g), toString(g)]
501- else x(invoke(aU, "calcPricesWrapperREADONLY", [dd, de, dc], nil))
502- let dg = 0
503- let dh = B(invoke(aU, "fromX18WrapperREADONLY", [df[1], b], nil))
504- let di = B(invoke(aU, "fromX18WrapperREADONLY", [df[2], b], nil))
510+ else x(invoke(aU, "calcPricesWrapperREADONLY", [dg, dh, df], nil))
511+ let dj = 0
512+ let dk = B(invoke(aU, "fromX18WrapperREADONLY", [di[1], b], nil))
513+ let dl = B(invoke(aU, "fromX18WrapperREADONLY", [di[2], b], nil))
505514 let bg = getIntegerValue(aX, V(toString(aU)))
506- let dj = aT(aU)
507- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dd), toString(de), toString(dc), toString(dg), toString(dh), toString(di), toString(bg), toString(dj)], e))
515+ let dm = aT(aU)
516+ let dn = {
517+ let bZ = invoke(aX, "isPoolOneTokenOperationsDisabledREADONLY", [toString(aU)], nil)
518+ if ($isInstanceOf(bZ, "Boolean"))
519+ then bZ
520+ else throw(($getType(bZ) + " couldn't be cast to Boolean"))
521+ }
522+ let do = !(dn)
523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dg), toString(dh), toString(df), toString(dj), toString(dk), toString(dl), toString(bg), toString(dm), toString(do)], e))
508524 }
509525
510526
511527
512-@Callable(by)
513-func poolEvaluatePutByAmountAssetREADONLY (cU,dk) = {
514- let aU = addressFromStringValue(t(aX, U(cU)))
515- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
516- let bd = fromBase58String(D(cV[j]))
517- let dl = D(cV[k])
518- let dm = fromBase58String(dl)
519- let dn = D(cV[l])
520- let do = fromBase58String(dn)
521- let da = parseIntValue(D(cV[m]))
522- let db = parseIntValue(D(cV[n]))
523- let dp = D(cV[i])
524- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
525- let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
526- let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
527- let dq = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dd, da], nil)))
528- let dr = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [de, db], nil)))
529- let ds = if ((dc == 0))
528+@Callable(bB)
529+func poolEvaluatePutByAmountAssetREADONLY (cX,dp) = {
530+ let aU = addressFromStringValue(t(aX, U(cX)))
531+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
532+ let bd = fromBase58String(D(cY[j]))
533+ let dq = D(cY[k])
534+ let dr = fromBase58String(dq)
535+ let ds = D(cY[l])
536+ let dt = fromBase58String(ds)
537+ let dd = parseIntValue(D(cY[m]))
538+ let de = parseIntValue(D(cY[n]))
539+ let du = D(cY[i])
540+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
541+ let dg = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dq], nil))
542+ let dh = B(invoke(aU, "getAccBalanceWrapperREADONLY", [ds], nil))
543+ let dv = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dg, dd], nil)))
544+ let dw = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dh, de], nil)))
545+ let dx = if ((df == 0))
530546 then g
531- else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil)))
532- let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
533- let dt = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dk, da], nil)))
534- let du = fraction(dt, ds, d)
535- let dv = B(invoke(aU, "fromX18WrapperREADONLY", [toString(du), db], nil))
536- let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
537- let dw = {
538- let z = bX
547+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dw), toString(dv)], nil)))
548+ let dj = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dx), b], nil))
549+ let dy = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dp, dd], nil)))
550+ let dz = fraction(dy, dx, d)
551+ let dA = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dz), de], nil))
552+ let ca = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dp, dr, dA, dt, "", true, false], nil)
553+ let dB = {
554+ let z = ca
539555 if (if (if ($isInstanceOf(z._1, "Int"))
540556 then if ($isInstanceOf(z._3, "Int"))
541557 then if ($isInstanceOf(z._4, "Int"))
542558 then if ($isInstanceOf(z._5, "Int"))
543559 then $isInstanceOf(z._6, "Int")
544560 else false
545561 else false
546562 else false
547563 else false)
548564 then (size(z) == 13)
549565 else false)
550566 then {
551- let dx = z._1
552- let dy = z._3
553- let dz = z._4
554- let dA = z._5
555- let dB = z._6
556- $Tuple5(dx, dy, dz, dA, dB)
567+ let dC = z._1
568+ let dD = z._3
569+ let dE = z._4
570+ let dF = z._5
571+ let dG = z._6
572+ $Tuple5(dC, dD, dE, dF, dG)
557573 }
558574 else throw("Couldn't cast types")
559575 }
560- let dx = dw._1
561- let dy = dw._2
562- let dz = dw._3
563- let dA = dw._4
564- let dB = dw._5
565- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
576+ let dC = dB._1
577+ let dD = dB._2
578+ let dE = dB._3
579+ let dF = dB._4
580+ let dG = dB._5
581+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dj), toString(dE), toString(dF), toString(dG), du, toString(dp), toString(dA)], e))
566582 }
567583
568584
569585
570-@Callable(by)
571-func poolEvaluatePutByPriceAssetREADONLY (cU,dv) = {
572- let aU = addressFromStringValue(t(aX, U(cU)))
573- let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
574- let bd = fromBase58String(D(cV[j]))
575- let dl = D(cV[k])
576- let dm = fromBase58String(dl)
577- let dn = D(cV[l])
578- let do = fromBase58String(dn)
579- let da = parseIntValue(D(cV[m]))
580- let db = parseIntValue(D(cV[n]))
581- let dp = D(cV[i])
582- let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
583- let dC = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
584- let dD = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
585- let dE = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dC, da], nil)))
586- let dF = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dD, db], nil)))
587- let ds = if ((dc == 0))
586+@Callable(bB)
587+func poolEvaluatePutByPriceAssetREADONLY (cX,dA) = {
588+ let aU = addressFromStringValue(t(aX, U(cX)))
589+ let cY = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
590+ let bd = fromBase58String(D(cY[j]))
591+ let dq = D(cY[k])
592+ let dr = fromBase58String(dq)
593+ let ds = D(cY[l])
594+ let dt = fromBase58String(ds)
595+ let dd = parseIntValue(D(cY[m]))
596+ let de = parseIntValue(D(cY[n]))
597+ let du = D(cY[i])
598+ let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
599+ let dH = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dq], nil))
600+ let dI = B(invoke(aU, "getAccBalanceWrapperREADONLY", [ds], nil))
601+ let dJ = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dH, dd], nil)))
602+ let dK = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dI, de], nil)))
603+ let dx = if ((df == 0))
588604 then g
589- else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
590- let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
591- let du = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dv, db], nil)))
592- let dt = fraction(du, d, ds)
593- let dk = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dt), da], nil))
594- let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
595- let dG = {
596- let z = bX
605+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dK), toString(dJ)], nil)))
606+ let dj = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dx), b], nil))
607+ let dz = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dA, de], nil)))
608+ let dy = fraction(dz, d, dx)
609+ let dp = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dy), dd], nil))
610+ let ca = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dp, dr, dA, dt, "", true, false], nil)
611+ let dL = {
612+ let z = ca
597613 if (if (if ($isInstanceOf(z._1, "Int"))
598614 then if ($isInstanceOf(z._3, "Int"))
599615 then if ($isInstanceOf(z._4, "Int"))
600616 then if ($isInstanceOf(z._5, "Int"))
601617 then $isInstanceOf(z._6, "Int")
602618 else false
603619 else false
604620 else false
605621 else false)
606622 then (size(z) == 13)
607623 else false)
608624 then {
609- let dx = z._1
610- let dy = z._3
611- let dz = z._4
612- let dA = z._5
613- let dB = z._6
614- $Tuple5(dx, dy, dz, dA, dB)
625+ let dC = z._1
626+ let dD = z._3
627+ let dE = z._4
628+ let dF = z._5
629+ let dG = z._6
630+ $Tuple5(dC, dD, dE, dF, dG)
615631 }
616632 else throw("Couldn't cast types")
617633 }
618- let dx = dG._1
619- let dy = dG._2
620- let dz = dG._3
621- let dA = dG._4
622- let dB = dG._5
623- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
634+ let dC = dL._1
635+ let dD = dL._2
636+ let dE = dL._3
637+ let dF = dL._4
638+ let dG = dL._5
639+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dj), toString(dE), toString(dF), toString(dG), du, toString(dp), toString(dA)], e))
624640 }
625641
626642
627643
628-@Callable(by)
629-func poolEvaluateGetREADONLY (dH,dI) = {
630- let aU = addressFromStringValue(t(aX, U(dH)))
631- let bX = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(aU)], nil)
632- let dJ = {
633- let z = bX
644+@Callable(bB)
645+func poolEvaluateGetREADONLY (dM,dN) = {
646+ let aU = addressFromStringValue(t(aX, U(dM)))
647+ let ca = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dM, dN, toString(aU)], nil)
648+ let dO = {
649+ let z = ca
634650 if (if (if ($isInstanceOf(z._1, "Int"))
635651 then if ($isInstanceOf(z._2, "Int"))
636652 then if ($isInstanceOf(z._5, "Int"))
637653 then if ($isInstanceOf(z._6, "Int"))
638654 then if ($isInstanceOf(z._7, "Int"))
639655 then if ($isInstanceOf(z._8, "String"))
640656 then $isInstanceOf(z._9, "String")
641657 else false
642658 else false
643659 else false
644660 else false
645661 else false
646662 else false)
647663 then (size(z) == 10)
648664 else false)
649665 then {
650- let dK = z._1
651- let dL = z._2
652- let dz = z._5
653- let dA = z._6
654- let dB = z._7
655- let dg = z._8
656- let dp = z._9
657- $Tuple7(dK, dL, dz, dA, dB, dg, dp)
666+ let dP = z._1
667+ let dQ = z._2
668+ let dE = z._5
669+ let dF = z._6
670+ let dG = z._7
671+ let dj = z._8
672+ let du = z._9
673+ $Tuple7(dP, dQ, dE, dF, dG, dj, du)
658674 }
659675 else throw("Couldn't cast types")
660676 }
661- let dK = dJ._1
662- let dL = dJ._2
663- let dz = dJ._3
664- let dA = dJ._4
665- let dB = dJ._5
666- let dg = dJ._6
667- let dp = dJ._7
668- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dg, dp], e))
677+ let dP = dO._1
678+ let dQ = dO._2
679+ let dE = dO._3
680+ let dF = dO._4
681+ let dG = dO._5
682+ let dj = dO._6
683+ let du = dO._7
684+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dP), toString(dQ), toString(dE), toString(dF), toString(dG), dj, du], e))
669685 }
670686
671687
672688
673-@Callable(by)
689+@Callable(bB)
674690 func gwxUserInfoREADONLY (am) = {
675- let dM = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
676- let dN = B(dM[0])
677- $Tuple2(nil, makeString(["%d", toString(dN)], e))
691+ let dR = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
692+ let dS = B(dR[0])
693+ $Tuple2(nil, makeString(["%d", toString(dS)], e))
678694 }
679695
680696
681697
682-@Callable(by)
683-func unstakeAndGetOneTknV2 (aU,dO,dP,dQ) = {
684- let bY = invoke(addressFromStringValue(aU), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil)
685- if ((bY == bY))
686- then $Tuple2(nil, unit)
687- else throw("Strict value is not equal to itself.")
698+@Callable(bB)
699+func getKeysBulkInternal (bN,dT,bT) = if ((bN == size(dT)))
700+ then $Tuple2(nil, bT)
701+ else {
702+ let cq = split(dT[bN], "++")
703+ let bv = addressFromStringValue(cq[0])
704+ let s = cq[1]
705+ let bw = cq[2]
706+ let y = bu(bv, s, bw)
707+ let ca = (bT :+ y)
708+ let cb = invoke(this, "getKeysBulkInternal", [(bN + 1), dT, ca], nil)
709+ if ((cb == cb))
710+ then $Tuple2(nil, cb)
711+ else throw("Strict value is not equal to itself.")
712+ }
713+
714+
715+
716+@Callable(bB)
717+func getKeysBulk (dT) = {
718+ let ca = invoke(this, "getKeysBulkInternal", [0, dT, nil], nil)
719+ $Tuple2(nil, ca)
688720 }
689721
690722
691723
692-@Callable(by)
693-func setManager (dR) = {
694- let bC = bx(by)
695- if ((bC == bC))
724+@Callable(bB)
725+func setManager (dU) = {
726+ let bF = bA(bB)
727+ if ((bF == bF))
696728 then {
697- let dS = fromBase58String(dR)
698- if ((dS == dS))
699- then [StringEntry(H(), dR)]
729+ let dV = fromBase58String(dU)
730+ if ((dV == dV))
731+ then [StringEntry(H(), dU)]
700732 else throw("Strict value is not equal to itself.")
701733 }
702734 else throw("Strict value is not equal to itself.")
703735 }
704736
705737
706738
707-@Callable(by)
739+@Callable(bB)
708740 func confirmManager () = {
709- let dT = bw()
710- let dU = if (isDefined(dT))
741+ let dW = bz()
742+ let dX = if (isDefined(dW))
711743 then true
712744 else throw("No pending manager")
713- if ((dU == dU))
745+ if ((dX == dX))
714746 then {
715- let dV = if ((by.callerPublicKey == value(dT)))
747+ let dY = if ((bB.callerPublicKey == value(dW)))
716748 then true
717749 else throw("You are not pending manager")
718- if ((dV == dV))
719- then [StringEntry(G(), toBase58String(value(dT))), DeleteEntry(H())]
750+ if ((dY == dY))
751+ then [StringEntry(G(), toBase58String(value(dW))), DeleteEntry(H())]
720752 else throw("Strict value is not equal to itself.")
721753 }
722754 else throw("Strict value is not equal to itself.")
723755 }
724756
725757
726-@Verifier(dW)
727-func dX () = {
728- let dY = {
729- let z = bu()
758+@Verifier(dZ)
759+func ea () = {
760+ let eb = {
761+ let z = bx()
730762 if ($isInstanceOf(z, "ByteVector"))
731763 then {
732- let bA = z
733- bA
764+ let bD = z
765+ bD
734766 }
735767 else if ($isInstanceOf(z, "Unit"))
736- then dW.senderPublicKey
768+ then dZ.senderPublicKey
737769 else throw("Match error")
738770 }
739- sigVerify(dW.bodyBytes, dW.proofs[0], dY)
771+ sigVerify(dZ.bodyBytes, dZ.proofs[0], eb)
740772 }
741773

github/deemru/w8io/3ef1775 
176.81 ms