tx · AfNWRVN7bymiUtmGAYa1qUApok2Y2dPo1hHZMmrE7T6U

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02600000 Waves

2023.08.10 14:52 [2704447] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "AfNWRVN7bymiUtmGAYa1qUApok2Y2dPo1hHZMmrE7T6U", "fee": 2600000, "feeAssetId": null, "timestamp": 1691668341972, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "2TkFZpgmH9ERH7rpPJA9vP3zF9gMgLyJoCVb5iEpGh8Jwe3JMx9hg4CYAD1dTdPXdt3HJ1Dab5Gb97ARRefJgUEg" ], "script": "base64:BgL9LQgCEggKBggIAQEBCBIFCgMBCAISAwoBARIECgIICBIECgIICBIECgIIARIDCgEIEgMKAQgSBAoCCAESAwoBCBIAEgASBQoDCAgEEgMKAQgSAwoBCBIECgIICBIECgIICCIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIQY29udHJhY3RGaWxlbmFtZSIHU0NBTEUxOCIGTVVMVDE4IghNVUxUMThCSSILYmxvY2tzSW5EYXkiDWJsb2Nrc0luTW9udGgiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPclplcm8iD2dldEludE9yRGVmYXVsdCIKZGVmYXVsdFZhbCIMZ2V0SW50T3JGYWlsIgNhYnMiA3ZhbCIOZW5zdXJlUG9zaXRpdmUiAXYiAW0iG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcyIecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsIhZrZXlSZWZlcnJhbFByb2dyYW1OYW1lIhpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdCITcmVmZXJyYWxQcm9ncmFtTmFtZSIRa2V5RmFjdG9yeUFkZHJlc3MiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIhRJZHhGYWN0b3J5Q2ZnRGFvRGFwcCIaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAiGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwIhZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwIg1rZXlGYWN0b3J5Q2ZnIiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIKbHBBc3NldFN0ciIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5Igtwb29sQWRkcmVzcyIDbnVtIhhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siHWtleUJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0IhVrZXlCb29zdGluZ1YySW50ZWdyYWwiG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIZa2V5TmV4dFBlcmdldEludE9yRGVmYXVsdCIfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCINSWR4Q2ZnQXNzZXRJZCITSWR4Q2ZnTWluTG9ja0Ftb3VudCIVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uIhVJZHhDZmdNYXhMb2NrRHVyYXRpb24iEklkeENmZ01hdGhDb250cmFjdCIUSWR4Q2ZnQmxvY2tzSW5QZXJpb2QiCWtleUNvbmZpZyIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIghjZmdBcnJheSIHYXNzZXRJZCINbWluTG9ja0Ftb3VudCIPbWluTG9ja0R1cmF0aW9uIg9tYXhMb2NrRHVyYXRpb24iDG1hdGhDb250cmFjdCIOYmxvY2tzSW5QZXJpb2QiDWZvcm1hdENvbmZpZ1MiDGZvcm1hdENvbmZpZyIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIHJG1hdGNoMCIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayINSWR4TG9ja0Ftb3VudCIMSWR4TG9ja1N0YXJ0Ig9JZHhMb2NrRHVyYXRpb24iGklkeExvY2tMYXN0VXBkYXRlVGltZXN0YW1wIhBJZHhMb2NrR3d4QW1vdW50IhBJZHhMb2NrV3hDbGFpbWVkIhNrZXlMb2NrUGFyYW1zUmVjb3JkIgt1c2VyQWRkcmVzcyIEdHhJZCIBYiIacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwiFWtleVVzZXJHd3hBbW91bnRUb3RhbCIWZm9ybWF0TG9ja1BhcmFtc1JlY29yZCIGYW1vdW50IgVzdGFydCIIZHVyYXRpb24iCWd3eEFtb3VudCIJd3hDbGFpbWVkIg5rZXlOZXh0VXNlck51bSISa2V5VXNlcjJOdW1NYXBwaW5nIhJrZXlOdW0yVXNlck1hcHBpbmciF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50IiBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyISa2V5U3RhdHNMb2Nrc0NvdW50IhJrZXlTdGF0c1VzZXJzQ291bnQiIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIgd1c2VyTnVtIiJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIglscEFzc2V0SWQiF2tleVVzZXJNYXhCb29zdElOVEVHUkFMIhhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwiIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbCITa2V5VXNlckJvb3N0Q2xhaW1lZCILa2V5R3d4VG90YWwiB2tleVZvdGUiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIFZXBvY2giFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaCIRa2V5Q3VycmVudEVwb2NoVWkiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIh1rZXlWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIla2V5Vm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIha2V5Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0IhVrZXlWb3RlU3Rha2VkSW50ZWdyYWwiHWtleVZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IhlrZXlWb3RlU3Rha2VkSW50ZWdyYWxMYXN0Ig9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0Igpib29zdENvZWZmIgFAIhl1c2VyTnVtYmVyQnlBZGRyZXNzT3JGYWlsIhFnZXRHd3hBbW91bnRUb3RhbCISZ2V0TG9ja2VkR3d4QW1vdW50IgxmdW5jdGlvbk5hbWUiGnZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0Ihhsb2NrZWRWb3RpbmdFbWlzc2lvblJhdGUiFGxvY2tlZFZvdGluZ0VtaXNzaW9uIgZsb2NrZWQiDEhpc3RvcnlFbnRyeSIEdHlwZSIEdXNlciIJbG9ja1N0YXJ0IgpoaXN0b3J5S0VZIgtoaXN0b3J5REFUQSIKU3RhdHNFbnRyeSIOdG90YWxMb2NrZWRJbmMiC2R1cmF0aW9uSW5jIgxsb2NrQ291bnRJbmMiDXVzZXJzQ291bnRJbmMiG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWSINbG9ja3NDb3VudEtFWSINdXNlcnNDb3VudEtFWSIOdG90YWxBbW91bnRLRVkiGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyIKbG9ja3NDb3VudCIKdXNlcnNDb3VudCILdG90YWxBbW91bnQiD0xvY2tQYXJhbXNFbnRyeSIiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbCIPZXhwZWN0ZWRBc3NldElkIgNwbXQiFWdldFVzZXJHd3hBbW91bnRUb3RhbCIaZ2V0Vm90aW5nRW1pc3Npb25FcG9jaEluZm8iDSR0MDE1MTY0MTU0NTQiDmN1cnJlbnRFcG9jaFVpIhJsYXN0RmluYWxpemVkRXBvY2giF2N1cnJlbnRFcG9jaFN0YXJ0SGVpZ2h0IhhnZXRQb29sQXNzZXRzQnlMcEFzc2V0SWQiEGlkeEFtb3VudEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIHcG9vbENmZyIUZ2V0VXNlclZvdGVGaW5hbGl6ZWQiDSR0MDE2MTQ1MTYyMjUiDSR0MDE2MjI4MTYzMDMiC3VzZXJWb3RlS2V5Igh1c2VyVm90ZSIRZ2V0VXNlclZvdGVTdGFrZWQiDHN0YWtlZEJ5VXNlciIVZ2V0Vm90aW5nUmVzdWx0U3Rha2VkIg0kdDAxNjg0NzE2OTI3Ihd2b3RpbmdSZXN1bHRTdGFrZWRTdGFydCISdm90aW5nUmVzdWx0U3Rha2VkIh1nZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCINJHQwMTcyODkxNzM2OSIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxQcmV2IiJ2b3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0Ihx2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbERoIhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIhcmVmcmVzaFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIg9zdGFrZWRWb3RlRGVsdGEiDSR0MDE4MjA2MTgyODYiFXZvdGluZ1Jlc3VsdFN0YWtlZE5ldyIZZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbCINJHQwMTg4OTcxODk3NyIOdXNlclZvdGVTdGFrZWQiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxQcmV2Ih51c2VyVm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGHVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaCIWdXNlclZvdGVTdGFrZWRJbnRlZ3JhbCIZcmVmcmVzaFZvdGVTdGFrZWRJbnRlZ3JhbCIEZWRnZSINJHQwMTk3NjUxOTg0NSIRdXNlclZvdGVGaW5hbGl6ZWQiB2FjdGlvbnMiE3ZvdGluZ1Jlc3VsdEFjdGlvbnMiC3ZvdGVBY3Rpb25zIhtnZXRTdGFrZWRWb3Rlc0ludGVncmFsc0RpZmYiDSR0MDIwNjk5MjA3NzkiHXVzZXJWb3RlU3Rha2VkSW50ZWdyYWxMYXN0S2V5Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsTGFzdCIhdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0S2V5Ih52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaWZmIh52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbERpZmYiHHJlZnJlc2hCb29zdEVtaXNzaW9uSW50ZWdyYWwiEnd4RW1pc3Npb25QZXJCbG9jayIgYm9vc3RpbmdWMkxhc3RVcGRhdGVIZWlnaHRPcHRpb24iGGJvb3N0aW5nVjJJbmdlcmdhbE9wdGlvbiILZW1pc3Npb25FbmQiAWgiAmRoIhBsYXN0VXBkYXRlSGVpZ2h0IhVib29zdEVtaXNzaW9uUGVyQmxvY2siGWJvb3N0RW1pc3Npb25JbnRlZ3JhbFByZXYiFWJvb3N0RW1pc3Npb25JbnRlZ3JhbCIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiCHJlYWRPbmx5IghFTVBUWVNUUiIKcG9vbFdlaWdodCIOcG9vbEFkZHJlc3NTdHIiInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIh11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbCIZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbCINJHQwMjQzMjEyNDQ2MCIbc3Rha2VkVm90ZXNJbnRlZ3JhbHNBY3Rpb25zIhR1c2VyVm90ZUludGVncmFsRGlmZiIWdG90YWxWb3Rlc0ludGVncmFsRGlmZiIdcG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiIXVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldyIJZGF0YVN0YXRlIgVkZWJ1ZyILbG9ja0FjdGlvbnMiDmR1cmF0aW9uTW9udGhzIhVkdXJhdGlvbk1vbnRoc0FsbG93ZWQiCmFzc2V0SWRTdHIiCXBtdEFtb3VudCIObmV4dFVzZXJOdW1LRVkiDnVzZXJJc0V4aXN0aW5nIgp1c2VyTnVtU3RyIgdjb2VmZlg4Ig5nV3hBbW91bnRTdGFydCIOZ3d4QW1vdW50VG90YWwiEnVzZXJHd3hBbW91bnRUb3RhbCIMZ3d4UmV3YXJkSW52IgNhcnIiEWdldFd4V2l0aGRyYXdhYmxlIgp0eElkT3B0aW9uIg91c2VyUmVjb3JkQXJyYXkiCnVzZXJBbW91bnQiDGxvY2tEdXJhdGlvbiIHbG9ja0VuZCIBdCIIZXhwb25lbnQiDnd4V2l0aGRyYXdhYmxlIhFmYWN0b3J5QWRkcmVzc1N0ciIObG9ja0Fzc2V0SWRTdHIiC21pbkR1cmF0aW9uIgttYXhEdXJhdGlvbiILY2hlY2tDYWxsZXIiD3JlZmVycmVyQWRkcmVzcyIJc2lnbmF0dXJlIg0kdDAyOTQyNzI5NDkyIhFsb2NrQWN0aW9uc1Jlc3VsdCIPcmVmZXJyYWxBZGRyZXNzIgZyZWZJbnYiEXVwZGF0ZVJlZkFjdGl2aXR5Ig0kdDAyOTk1MDMwMDE1Ig0kdDAzMDMyNTMwNDI3IhJ1c2VyQm9vc3RBdmFpbGFibGUiDSR0MDMwNTU5MzA2NjAiB3R4SWRTdHIiCWd3eEJ1cm5lZCIMZ3d4UmVtYWluaW5nIg9sb2NrZWRHd3hBbW91bnQiDHRhcmdldEhlaWdodCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5jwEAAWECAl9fAAFiAAgAAWMAgMLXLwABZAUBYwABZQINYm9vc3RpbmcucmlkZQABZgASAAFnAICAkLu61q3wDQABaAkAtgIBBQFnAAFpAKALAAFqAJjWAgEBawEBbAkAuQkCCQDMCAIFAWUJAMwIAgICOiAJAMwIAgUBbAUDbmlsAgABAW0BAWwJAAIBCQEBawEFAWwBAW4CAW8BcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAW8FAXAJAQFrAQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBcAIPIGlzIG5vdCBkZWZpbmVkAQFxAgFvAXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBbwUBcAAAAQFyAwFvAXABcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFvBQFwBQFzAQF0AgFvAXAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFvBQFwCQEBawEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXACDyBpcyBub3QgZGVmaW5l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ZXNzYWdlAgkAoggBCQC5CQIJAMwIAgICJXMJAMwIAgIWbHBTdGFraW5nUG9vbHNDb250cmFjdAUDbmlsBQFhCQEBawECLmxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcyBpcyB1bmRlZmluZWQJAQFrAQIpaW52YWxpZCBscF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MAAmJVCQC5CQIJAMwIAgICJXMJAMwIAgIWdm90aW5nRW1pc3Npb25Db250cmFjdAUDbmlsBQFhAAJiVgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUCYlAFAmJVAAJiVwkAuQkCCQDMCAICAiVzCQDMCAICGnZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0BQNuaWwFAWEAAmJYCgACYlkJAPwHBAUCYlECFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYlkCA0ludAUCYlkJAAIBCQCsAgIJAAMBBQJiWQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiWgECYVkEAmFKCQCdCAIFBHRoaXMJAQJiawEJAKUIAQUCYVkDCQABAgUCYUoCBlN0cmluZwQCYUsFAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUCYUsJAQFrAQITaW52YWxpZCB1c2VyIG51bWJlcgMJAAECBQJhSgIEVW5pdAkBAW0BAgxpbnZhbGlkIHVzZXIJAAIBAgtNYXRjaCBlcnJvcgECY2EACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJieQAAAAECY2IBAmFZBAJjYwISZ2V0TG9ja2VkR3d4QW1vdW50BAJjZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAJhSgkAnQgCBQJiVgUCYlcDCQABAgUCYUoCBFVuaXQFBHVuaXQDCQABAgUCYUoCBlN0cmluZwQCYUsFAmFKCQCmCAEFAmFLCQACAQILTWF0Y2ggZXJyb3IJAQFrAQIkaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gcmF0ZSBhZGRyZXNzBAJjZQoAAmJZCQD8BwQFAmJWBQJjYwkAzAgCCQClCAEFAmFZBQNuaWwFA25pbAMJAAECBQJiWQIDSW50BQJiWQkAAgEJAKwCAgkAAwEFAmJZAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNmCgACYlkJAPwHBAUCY2QFAmNjCQDMCAIJAKUIAQUCYVkFA25pbAUDbmlsAwkAAQIFAmJZAgNJbnQFAmJZCQACAQkArAICCQADAQUCYlkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCY2cJAJYDAQkAzAgCBQJjZQkAzAgCBQJjZgUDbmlsBQJjZwECY2gHAmNpAmNqAmJlAmNrAmJnAmJoAmFPBAJjbAkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmNpCQDMCAIFAmNqCQDMCAIJANgEAQgFAmFPDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCY20JALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmNrCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAUDbmlsBQFhCQELU3RyaW5nRW50cnkCBQJjbAUCY20BAmNuBAJjbwJjcAJjcQJjcgQCY3MJAQJibgAEAmN0CQECYm8ABAJjdQkBAmJwAAQCY3YJAQJibQAEAmN3CQEBcQIFBHRoaXMFAmNzBAJjeAkBAXECBQR0aGlzBQJjdAQCY3kJAQFxAgUEdGhpcwUCY3UEAmN6CQEBcQIFBHRoaXMFAmN2CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcwkAZAIFAmN3BQJjcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3QJAGQCBQJjeAUCY3EJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN1CQBkAgUCY3kFAmNyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdgkAZAIFAmN6BQJjbwUDbmlsAQJjQQcCYVkCYVoCYmUCYmYCYmcCYmgCYmkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFYAgUCYVkFAmFaCQECYmQFBQJiZQUCYmYFAmJnBQJiaAUCYmkFA25pbAECY0ICAmFPAmNDAwkAZgIJAJADAQgFAmFPCHBheW1lbnRzAAEJAQFtAQIbb25seSBvbmUgcGF5bWVudCBpcyBhbGxvd2VkAwkAAAIJAJADAQgFAmFPCHBheW1lbnRzAAAAAAQCY0QJAJEDAggFAmFPCHBheW1lbnRzAAADCQECIT0CCQEFdmFsdWUBCAUCY0QHYXNzZXRJZAUCY0MJAQFtAQIbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUCY0QGYW1vdW50AQJjRQECYVkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJjAQUCYVkAAAECY0YABAJjRwQCY0gJAQV2YWx1ZQEJAJoIAgUCYlYJAQJiRQAEAmNJCQBlAgUCY0gAAQMJAGYCAAAFAmNJCQEBbQECDWludmFsaWQgZXBvY2gJAJQKAgUCY0gFAmNJBAJjSAgFAmNHAl8xBAJjSQgFAmNHAl8yBAJjSgkBBXZhbHVlAQkAmggCBQJiVgkBAmJEAQUCY0gJAJQKAgUCY0kFAmNKAQJjSwECYkcEAmNMAAQEAmNNAAUEAmNOCgACYlkJAPwHBAUCYlACIGdldFBvb2xDb25maWdCeUxwQXNzZXRJZFJFQURPTkxZCQDMCAIFAmJHBQNuaWwFA25pbAMJAAECBQJiWQIJTGlzdFtBbnldBQJiWQkAAgEJAKwCAgkAAwEFAmJZAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0EAmJBCgACYlkJAJEDAgUCY04FAmNMAwkAAQIFAmJZAgZTdHJpbmcFAmJZCQACAQkArAICCQADAQUCYlkCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCYkIKAAJiWQkAkQMCBQJjTgUCY00DCQABAgUCYlkCBlN0cmluZwUCYlkJAAIBCQCsAgIJAAMBBQJiWQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFAmJBBQJiQgECY08CAmJHAmJPBAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYk8EAmNQCQECY0YABAJjSQgFAmNQAl8xBAJjSggFAmNQAl8yBAJjUQkBAmNLAQUCYkcEAmJBCAUCY1ECXzEEAmJCCAUCY1ECXzIEAmNSCQECYnoEBQJiQQUCYkIFAmFZBQJjSQQCY1MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYlYFAmNSAAAFAmNTAQJjVAICYkcCYk8EAmNVCQELdmFsdWVPckVsc2UCCQCaCAIFAmJSCQECYk4CBQJiTwUCYkcAAAQCY1MJAQJjTwIFAmJHBQJiTwMJAAACBQJjVQAAAAAFAmNTAQJjVgECYkcEAmNXCQECY0YABAJjSQgFAmNXAl8xBAJjSggFAmNXAl8yBAJjWAkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiVgkBAmJGAgUCYkcFAmNJAAAEAmNZCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiRgIFAmJHBQJjSQUCY1gFAmNZAQJjWgECYkcEAmRhCQECY0YABAJjSQgFAmRhAl8xBAJjSggFAmRhAl8yBAJjWQkBAmNWAQUCYkcEAmRiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiSAIFAmJHBQJjSQAABAJkYwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYkkCBQJiRwUCY0kFAmNKBAJkZAkAZQIFBmhlaWdodAUCZGMEAmRlCQBkAgkAaAIFAmRkBQJjWQUCZGIFAmRlAQJkZgICYkcCZGcEAmRoCQECY0YABAJjSQgFAmRoAl8xBAJjSggFAmRoAl8yBAJjWQkBAmNWAQUCYkcEAmRpCQBkAgUCY1kFAmRnBAJkZQkBAmNaAQUCYkcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiRgIFAmJHBQJjSQUCZGkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiSQIFAmJHBQJjSQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkgCBQJiRwUCY0kFAmRlBQNuaWwBAmRqAgJiRwJiTwQCZGsJAQJjRgAEAmNJCAUCZGsCXzEEAmNKCAUCZGsCXzIEAmFZCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiTwQCZGwJAQJjVAIFAmJHBQJiTwQCZG0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJLAwUCYkcFAmFZBQJjSQAABAJkbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYkwDBQJiRwUCYVkFAmNJBQJjSgQCZG8JAGUCBQZoZWlnaHQFAmRuBAJkcAkAZAIJAGgCBQJkbwUCZGwFAmRtBQJkcAECZHEDAmJHAmJPAmRyBAJkcwkBAmNGAAQCY0kIBQJkcwJfMQQCY0oIBQJkcwJfMgQCYVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJPBAJkdAkBAmNPAgUCYkcFAmJPBAJkdQMJAAACBQJkdAAABQNuaWwEAmRnAwUCZHIFAmR0CQEBLQEFAmR0BAJkdgkBAmRmAgUCYkcFAmRnBAJkcAkBAmRqAgUCYkcFAmJPBAJkdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJMAwUCYkcFAmFZBQJjSQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYksDBQJiRwUCYVkFAmNJBQJkcAUDbmlsCQDOCAIFAmR2BQJkdwUCZHUBAmR4AgJiRwJiTwQCZHkJAQJjRgAEAmNJCAUCZHkCXzEEAmNKCAUCZHkCXzIEAmFZCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiTwQCZHoJAQJiTQMFAmJHBQJhWQUCY0kEAmRBCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmR6AAAEAmRCCQECYkoDBQJiRwUCYVkFAmNJBAJkQwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkQgAABAJkcAkBAmRqAgUCYkcFAmJPBAJkZQkBAmNaAQUCYkcEAmRECQBlAgUCZHAFAmRBBAJkRQkAZQIFAmRlBQJkQwkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkegUCZHAJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRCBQJkZQUDbmlsBQJkRAUCZEUBAmRGAAQCZEcJAQF0AgUCYlEJAQJhaQAEAmRICQCaCAIFBHRoaXMJAQJhbAAEAmRJCQCaCAIFBHRoaXMJAQJhbQAEAmRKCQEBdAIFAmJRCQECYW8ABAJkSwMJAGYCBQZoZWlnaHQFAmRKBQJkSgUGaGVpZ2h0BAJkTAQCYUoFAmRIAwkAAQIFAmFKAgNJbnQEAmRNBQJhSgkAlgMBCQDMCAIJAGUCBQJkSwUCZE0JAMwIAgAABQNuaWwDCQABAgUCYUoCBFVuaXQAAAkAAgECC01hdGNoIGVycm9yBAJkTgkAaQIJAGgCBQJkRwkAZQIFAmJYAAEFAmJYBAJkTwkBC3ZhbHVlT3JFbHNlAgUCZEkAAAQCZFAJAGQCCQBoAgUCZE4FAmRMBQJkTwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW0ABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFsAAUGaGVpZ2h0BQNuaWwFAmRQAQJkUQMCYkcCYk8CZFIEAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk8JAQFrAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJyCQECYloBBQJhWQMJAAACBQJicgUCYnIEAmRTAgVlbXB0eQQCZFQDCQECIT0CBQJiRwUCZFMEAmRVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYlAJAQFSAQUCYkcJAQFrAQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmJHCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiUAkBAVQBBQJkVQMFAmRSAAAJAQFtAQkArAICAihub3QgcmVhZG9ubHkgbW9kZTogdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJiRwQCZFYJAQJicwIFAmJyBQJiRwQCZFcJAQJicQEFAmJyBAJkWAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkVgkBAXECBQR0aGlzBQJkVwQCZFAICQECZEYAAl8yBAJkWQkAZQIFAmRQBQJkWAMJAGYCAAAFAmRZCQEBbQECEndyb25nIGNhbGN1bGF0aW9ucwQCZFoJAQJkeAIFAmJHBQJiTwQCZWEIBQJkWgJfMQQCZWIIBQJkWgJfMgQCZWMIBQJkWgJfMwQCZWQJAGsDBQJkWQUCZFQFAWQEAmVlAwkAAAIFAmVjAAAAAAkAawMFAmVkBQJlYgUCZWMEAmVmCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRWBQJkUAUDbmlsBQJlYQQCZWcJALkJAgkAzAgCCQCkAwEFAmRYCQDMCAIJAKQDAQUCZFkJAMwIAgkApAMBBQJkVAkAzAgCCQCkAwEFAmViCQDMCAIJAKQDAQUCZWMFA25pbAIBOgkAlQoDBQJlZQUCZWYFAmVnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAICYU8CZWkEAmVqCQDMCAIAAQkAzAgCAAMJAMwIAgAGCQDMCAIADAkAzAgCABgJAMwIAgAwBQNuaWwDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQJlagUCZWkJAQFtAQIQaW52YWxpZCBkdXJhdGlvbgQCYmcJAGgCBQJlaQUBagQCZWsJANgEAQUCYUEDCQECIT0CCQCQAwEIBQJhTwhwYXltZW50cwABCQEBbQECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmNECQCRAwIIBQJhTwhwYXltZW50cwAABAJlbAgFAmNEBmFtb3VudAMJAQIhPQIFAmFBCQEFdmFsdWUBCAUCY0QHYXNzZXRJZAkBAW0BCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJlawIMIGlzIGV4cGVjdGVkBAJlbQkBAmJqAAQCYVkIBQJhTwZjYWxsZXIEAmJPCQClCAEFAmFZBAJlbgkBCWlzRGVmaW5lZAEJAKIIAQkBAmJrAQUCYk8EAmVvAwUCZW4JAQV2YWx1ZQEJAKIIAQkBAmJrAQUCYk8JAKQDAQkBAXQCBQR0aGlzBQJlbQQCYnIJAQ1wYXJzZUludFZhbHVlAQUCZW8EAmNrBQZoZWlnaHQDAwkAZgIFAmFCBQJlbAkBAiE9AgUCYVkFAmJUBwkBAW0BCQCsAgICImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAKQDAQUCYUIDCQBmAgUCYUMFAmJnCQEBbQEJAKwCAgItcGFzc2VkIGR1cmF0aW9uIGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmFDAwkAZgIFAmJnBQJhRAkBAW0BCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhRAQCZXAJAGsDBQJiZwUBYwUCYUQEAmVxCQBrAwUCZWwFAmVwBQFjBAJlcgkBAmNhAAQCZFcJAQJicQEFAmJyBAJkUAgJAQJkRgACXzIEAmVzCQECY0UBBQJhWQQCZXQJAP0HBAUCYlMCEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWQVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXQFAmV0BAJldQMFAmVuBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmVtCQBkAgUCYnIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmsBBQJiTwUCZW8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJsAQUCZW8FAmJPBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQJldQkBAmNBBwUCYVkIBQJhTw10cmFuc2FjdGlvbklkBQJlbAUCY2sFAmJnBQJlcQAACQECY24EBQJlbAUCYmcAAQMFAmVuAAAAAQkBAmNoBwIEbG9jawUCYk8FAmVsBQJjawUCYmcFAmVxBQJhTwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZFcFAmRQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYnkACQBkAgUCZXIFAmVxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmMBBQJhWQkAZAIFAmVzBQJlcQUDbmlsBQJlcQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXYCAmFZAmV3BAJleAkBAmJiAgUCYVkFAmV3BAJleQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhUgQCY2sJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVMEAmV6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFUBAJlQQkAZAIFAmNrBQJlegQCYmkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVcEAmJoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFWBAJlQgkAaQIJAGUCBQZoZWlnaHQFAmNrBQJhRgQCZUMJALwCAwkAtgIBBQJlQgkAuQICCQC2AgEJAGgCAAgFAmFGBQFoCQC2AgEFAmV6BAJlRAMJAGYCBQZoZWlnaHQFAmVBCQBlAgUCZXkFAmJpCQCgAwEJALwCAwkAtgIBBQJleQkAuAICBQFoCQB2BgkAtgIBAAUAAQUCZUMFAWYFAWYFBERPV04FAWgFAmVEEQJhTwELY29uc3RydWN0b3IGAmVFAmVGAmFCAmVHAmVIAmFFBAJlSQkBAmFOAQUCYU8DCQAAAgUCZUkFAmVJCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiagAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXgACQECYUgFBQJlRgUCYUIFAmVHBQJlSAUCYUUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUUABQJlRQUDbmlsCQECY24EAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BB2xvY2tSZWYDAmJnAmVKAmVLBAJlTAkBAmVoAgUCYU8FAmJnBAJlTQgFAmVMAl8xBAJlcQgFAmVMAl8yBAJlTgkApQgBCAUCYU8GY2FsbGVyBAJlTwMDCQAAAgUCZUoCAAYJAAACBQJlSwEABQR1bml0CQD8BwQFAUECCmNyZWF0ZVBhaXIJAMwIAgUBRAkAzAgCBQJlSgkAzAgCBQJlTgkAzAgCBQJlSwUDbmlsBQNuaWwDCQAAAgUCZU8FAmVPBAJlUAkA/AcEBQJhRQIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhTwZjYWxsZXIJAMwIAgUCZXEFA25pbAUDbmlsAwkAAAIFAmVQBQJlUAkAlAoCBQJlTQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTwEEbG9jawECYmcEAmVRCQECZWgCBQJhTwUCYmcEAmVNCAUCZVECXzEEAmVxCAUCZVECXzIEAmVQCQD8BwQFAmFFAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFPBmNhbGxlcgkAzAgCBQJlcQUDbmlsBQNuaWwDCQAAAgUCZVAFAmVQCQCUCgIFAmVNBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFPAQxjbGFpbVd4Qm9vc3QCAmJHAmJPAwkBAiE9AgUCYlIIBQJhTwZjYWxsZXIJAQFtAQIScGVybWlzc2lvbnMgZGVuaWVkBAJlUgkBAmRRAwUCYkcFAmJPBwQCZVMIBQJlUgJfMQQCZWYIBQJlUgJfMgQCZWcIBQJlUgJfMwkAlAoCBQJlZgkAzAgCBQJlUwUDbmlsAmFPARRjbGFpbVd4Qm9vc3RSRUFET05MWQICYkcCYk8EAmVUCQECZFEDBQJiRwUCYk8GBAJlUwgFAmVUAl8xBAJlZggFAmVUAl8yBAJlZwgFAmVUAl8zCQCUCgIFA25pbAkAzAgCBQJlUwkAzAgCBQJlZwUDbmlsAmFPAQZ1bmxvY2sCAmVVAmJlBAJhWQgFAmFPBmNhbGxlcgQCYk8JAKUIAQUCYVkEAmFaCQDZBAEFAmVVBAJleAkBAmJiAgUCYVkDCQAAAgUCZVUCAAUEdW5pdAUCYVoEAmV5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFSBAJjawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhUwQCZXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVQEAmVBCQBkAgUCY2sFAmV6BAJiaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhVwQCYmgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVYEAmVCCQBpAgkAZQIFBmhlaWdodAUCY2sFAmFGBAJlRAkBAmV2AgUCYVkDCQAAAgUCZVUCAAUEdW5pdAUCYVoDCQBmAgUCYmUFAmVECQEBbQEJAKwCAgIabWF4aW11bSBhbW91bnQgdG8gdW5sb2NrOiAJAKQDAQUCZUQEAmVwCQBrAwUCZXoFAWMFAmFEBAJlcQkAawMFAmV5BQJlcAUBYwQCZVYJAGsDCQBoAgUCZUIFAmFGBQJlcQUCYUQEAmVXCQEBdwIJAGUCBQJiaAUCZVYCDGd3eFJlbWFpbmluZwQCZVgJAQJjYgEFAmFZAwkAZgIFAmVYBQJlVwkBAW0BCQCsAgICE2xvY2tlZCBnd3ggYW1vdW50OiAJAKQDAQUCZVgDCQBnAgAABQJleQkBAW0BAhFub3RoaW5nIHRvIHVubG9jawQCZXIJAQJjYQAEAmVzCQECY0UBBQJhWQQCZXQJAP0HBAUCYlMCEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWQVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXQFAmV0CQDOCAIJAM0IAgkAzQgCCQDOCAIJAQJjQQcFAmFZBQJhWgUCZXkFAmNrBQJlegUCZVcJAGQCBQJiaQUCYmUJAQJjbgQJAQEtAQUCYmUAAAAAAAAJAQJjaAcCBnVubG9jawUCYk8FAmJlBQJjawUCZXoFAmVWBQJhTwkBDlNjcmlwdFRyYW5zZmVyAwUCYVkFAmJlBQJhQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ5AAkBAXcCCQBlAgUCZXIFAmVWAghnd3hUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJjAQUCYVkJAQF3AgkAZQIFAmVzBQJlVgISdXNlckd3eEFtb3VudFRvdGFsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BE2d3eFVzZXJJbmZvUkVBRE9OTFkBAmJPBAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJPCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiaAkBAmNFAQUCYVkJAJQKAgUDbmlsCQDMCAIFAmJoBQNuaWwCYU8BF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZAQJiTwkAlAoCBQNuaWwJAJQKAgIMaW5jcmVhc2VMb2NrBQJhRAJhTwEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmJPAmVZBAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJPCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiaAkBAmNFAQUCYVkJAJQKAgUDbmlsBQJiaAJhTwEQZ2V0VXNlckd3eEFtb3VudAECYk8EAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk8JAQFrAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJoCQECY0UBBQJhWQkAlAoCBQNuaWwFAmJoAmFPARNnZXRHd3hUb3RhbFJFQURPTkxZAAkAlAoCBQNuaWwJAQJjYQACYU8BFW9uQm9vc3RFbWlzc2lvblVwZGF0ZQAEAmVJAwkAAAIIBQJhTwZjYWxsZXIFAmJRBgkBAmFOAQUCYU8DCQAAAgUCZUkFAmVJCQECZEYACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFPARJvblN0YWtlZFZvdGVVcGRhdGUDAmJHAmJPAmRyBAJlSQMJAAACCAUCYU8GY2FsbGVyBQJiUgYJAQJhTgEFAmFPAwkAAAIFAmVJBQJlSQQCZHUJAQJkcQMFAmJHBQJiTwUCZHIJAJQKAgUCZHUFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BHWdldFZvdGluZ1Jlc3VsdFN0YWtlZFJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJjVgEFAmJHAmFPASVnZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJjWgEFAmJHAmFPARxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZAgJiRwJiTwkAlAoCBQNuaWwJAQJjTwIFAmJHBQJiTwJhTwEhZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAgJiRwJiTwkAlAoCBQNuaWwJAQJkagIFAmJHBQJiTwECZVoBAmZhAAQCZmIEAmFKCQECYUwAAwkAAQIFAmFKAgpCeXRlVmVjdG9yBAJhUQUCYUoFAmFRAwkAAQIFAmFKAgRVbml0CAUCZVoPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmVaCWJvZHlCeXRlcwkAkQMCCAUCZVoGcHJvb2ZzAAAFAmZiZ8U4RA==", "height": 2704447, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9eVb3p4s8WX1DWApeLM47hFinqjrMK2nfYEqDVNKrjEf Next: 993Xf1ymMd9qgpdSFig7GKr4bsBBimv4CVd2yJHaCmc1 Diff:
OldNewDifferences
826826 if ((be > eD))
827827 then m(("maximum amount to unlock: " + toString(eD)))
828828 else {
829- let eV = max([be, fraction((eB * aF), ey, aD)])
829+ let ep = fraction(ez, c, aD)
830+ let eq = fraction(ey, ep, c)
831+ let eV = fraction((eB * aF), eq, aD)
830832 let eW = w((bh - eV), "gwxRemaining")
831833 let eX = cb(aY)
832834 if ((eX > eW))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 let e = "boosting.ride"
1313
1414 let f = 18
1515
1616 let g = 1000000000000000000
1717
1818 let h = toBigInt(g)
1919
2020 let i = 1440
2121
2222 let j = 43800
2323
2424 func k (l) = makeString([e, ": ", l], "")
2525
2626
2727 func m (l) = throw(k(l))
2828
2929
3030 func n (o,p) = valueOrErrorMessage(getString(o, p), k((("mandatory this." + p) + " is not defined")))
3131
3232
3333 func q (o,p) = valueOrElse(getInteger(o, p), 0)
3434
3535
3636 func r (o,p,s) = valueOrElse(getInteger(o, p), s)
3737
3838
3939 func t (o,p) = valueOrErrorMessage(getInteger(o, p), k((("mandatory this." + p) + " is not defined")))
4040
4141
4242 func u (v) = if ((0 > v))
4343 then -(v)
4444 else v
4545
4646
4747 func w (x,y) = if ((x >= 0))
4848 then x
4949 else m((valueOrElse(y, "value") + " should be positive"))
5050
5151
5252 func z () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5353
5454
5555 let A = addressFromStringValue(n(this, z()))
5656
5757 let B = makeString(["%s%s", "referral", "programName"], a)
5858
5959 let C = "wxlock"
6060
6161 let D = valueOrElse(getString(this, B), C)
6262
6363 func E () = "%s%s__config__factoryAddress"
6464
6565
6666 let F = 1
6767
6868 let G = 2
6969
7070 let H = 3
7171
7272 let I = 4
7373
7474 let J = 5
7575
7676 let K = 6
7777
7878 let L = 7
7979
8080 let M = 8
8181
8282 let N = 9
8383
8484 let O = 10
8585
8686 let P = 11
8787
8888 func Q () = "%s__factoryConfig"
8989
9090
9191 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], a)
9292
9393
9494 func T (U) = makeString(["%s%s", "poolWeight", U], a)
9595
9696
9797 func V (W,X) = ((("%s%s__poolWeight__" + W) + "__") + toString(X))
9898
9999
100100 func Y () = addressFromStringValue(n(this, E()))
101101
102102
103103 func Z (aa) = split(n(aa, Q()), a)
104104
105105
106106 func ab (ac) = addressFromStringValue(ac[G])
107107
108108
109109 func ad (ac) = addressFromStringValue(ac[J])
110110
111111
112112 func ae (ac) = addressFromStringValue(ac[F])
113113
114114
115115 func af (ac) = addressFromStringValue(ac[O])
116116
117117
118118 func ag () = "%s__managerPublicKey"
119119
120120
121121 func ah () = "%s__managerVaultAddress"
122122
123123
124124 func ai () = "%s%s__ratePerBlock__current"
125125
126126
127127 func aj () = "%s%s__ratePerBlockMax__current"
128128
129129
130130 func ak () = "%s%s__emission__startBlock"
131131
132132
133133 func al () = "%s%s__boostingV2__startBlock"
134134
135135
136136 func am () = "%s%s__boostingV2__integral"
137137
138138
139139 func an () = "%s%s__emission__duration"
140140
141141
142142 func ao () = "%s%s__emission__endBlock"
143143
144144
145145 func ap () = "%s__nextPeriod"
146146
147147
148148 func aq () = "%s%s__gwxRewardEmissionPart__startHeight"
149149
150150
151151 let ar = 1
152152
153153 let as = 2
154154
155155 let at = 3
156156
157157 let au = 4
158158
159159 let av = 5
160160
161161 let aw = 6
162162
163163 func ax () = "%s__config"
164164
165165
166166 func ay () = split(n(this, ax()), a)
167167
168168
169169 let az = ay()
170170
171171 let aA = fromBase58String(az[ar])
172172
173173 let aB = valueOrErrorMessage(parseInt(az[as]), k("invalid min lock amount"))
174174
175175 let aC = valueOrErrorMessage(parseInt(az[at]), k("invalid min lock duration"))
176176
177177 let aD = valueOrErrorMessage(parseInt(az[au]), k("invalid max lock duration"))
178178
179179 let aE = valueOrErrorMessage(addressFromString(az[av]), k("invalid math contract address"))
180180
181181 let aF = valueOrErrorMessage(parseInt(az[aw]), k("invalid blocks in period"))
182182
183183 func aG (aA,aB,aC,aD,aE) = makeString(["%s%d%d%d%s", aA, aB, aC, aD, aE], a)
184184
185185
186186 func aH (aA,aB,aC,aD,aE) = aG(aA, toString(aB), toString(aC), toString(aD), aE)
187187
188188
189189 func aI () = {
190190 let aJ = getString(ah())
191191 if ($isInstanceOf(aJ, "String"))
192192 then {
193193 let aK = aJ
194194 addressFromStringValue(aK)
195195 }
196196 else this
197197 }
198198
199199
200200 func aL () = {
201201 let aM = aI()
202202 let aJ = getString(aM, ag())
203203 if ($isInstanceOf(aJ, "String"))
204204 then {
205205 let aK = aJ
206206 fromBase58String(aK)
207207 }
208208 else if ($isInstanceOf(aJ, "Unit"))
209209 then unit
210210 else throw("Match error")
211211 }
212212
213213
214214 func aN (aO) = {
215215 let aP = m("Permission denied")
216216 let aJ = aL()
217217 if ($isInstanceOf(aJ, "ByteVector"))
218218 then {
219219 let aQ = aJ
220220 if ((aO.callerPublicKey == aQ))
221221 then true
222222 else aP
223223 }
224224 else if ($isInstanceOf(aJ, "Unit"))
225225 then if ((aO.caller == this))
226226 then true
227227 else aP
228228 else throw("Match error")
229229 }
230230
231231
232232 let aR = 1
233233
234234 let aS = 2
235235
236236 let aT = 3
237237
238238 let aU = 4
239239
240240 let aV = 5
241241
242242 let aW = 6
243243
244244 func aX (aY,aZ) = makeString(["%s%s%s__lock", toString(aY), {
245245 let aJ = aZ
246246 if ($isInstanceOf(aJ, "ByteVector"))
247247 then {
248248 let ba = aJ
249249 toBase58String(ba)
250250 }
251251 else if ($isInstanceOf(aJ, "Unit"))
252252 then "legacy"
253253 else throw("Match error")
254254 }], a)
255255
256256
257257 func bb (aY,aZ) = split(n(this, aX(aY, aZ)), a)
258258
259259
260260 func bc (aY) = makeString(["%s%s__gwxAmountTotal", toString(aY)], a)
261261
262262
263263 func bd (be,bf,bg,bh,bi) = makeString(["%d%d%d%d%d%d%d", toString(be), toString(bf), toString(bg), toString(lastBlock.timestamp), toString(bh), toString(bi)], a)
264264
265265
266266 func bj () = "%s__nextUserNum"
267267
268268
269269 func bk (aY) = makeString(["%s%s%s__mapping__user2num", aY], a)
270270
271271
272272 func bl (X) = makeString(["%s%s%s__mapping__num2user", X], a)
273273
274274
275275 func bm () = "%s%s__stats__activeTotalLocked"
276276
277277
278278 func bn () = "%s%s__stats__locksDurationSumInBlocks"
279279
280280
281281 func bo () = "%s%s__stats__locksCount"
282282
283283
284284 func bp () = "%s%s__stats__activeUsersCount"
285285
286286
287287 func bq (br) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(br)], a)
288288
289289
290290 func bs (br,bt) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(br), bt], a)
291291
292292
293293 func bu (br) = makeString(["%s%d__maxBoostInt", toString(br)], a)
294294
295295
296296 func bv () = "%s%s__maxBoostInt__total"
297297
298298
299299 func bw (br) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(br)], a)
300300
301301
302302 func bx (br) = makeString(["%s%d__userBoostClaimed", toString(br)], a)
303303
304304
305305 func by () = "%s%s__gwx__total"
306306
307307
308308 func bz (bA,bB,o,bC) = makeString(["%s%s%s%s%d", "vote", bA, bB, toString(o), toString(bC)], a)
309309
310310
311311 func bD (bC) = makeString(["%s%d", "startHeight", toString(bC)], a)
312312
313313
314314 func bE () = makeString(["%s", "currentEpochUi"], a)
315315
316316
317317 func bF (bG,bC) = makeString(["%s%s%d", "votingResultStaked", bG, toString(bC)], a)
318318
319319
320320 func bH (bG,bC) = makeString(["%s%s%d", "votingResultStakedIntegral", bG, toString(bC)], a)
321321
322322
323323 func bI (bG,bC) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bG, toString(bC)], a)
324324
325325
326326 func bJ (bG,o,bC) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bG, toString(o), toString(bC)], a)
327327
328328
329329 func bK (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegral", bG, toString(o), toString(bC)], a)
330330
331331
332332 func bL (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bG, toString(o), toString(bC)], a)
333333
334334
335335 func bM (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bG, toString(o), toString(bC)], a)
336336
337337
338338 func bN (bO,bG) = makeString(["%s%s%s", "staked", bO, bG], a)
339339
340340
341341 let bP = Y()
342342
343343 let ac = Z(bP)
344344
345345 let bQ = ad(ac)
346346
347347 let bR = ae(ac)
348348
349349 let bS = af(ac)
350350
351351 let bT = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), k("lp_staking_pools contract address is undefined"))), k("invalid lp_staking_pools contract address"))
352352
353353 let bU = makeString(["%s", "votingEmissionContract"], a)
354354
355355 let bV = addressFromStringValue(getStringValue(bP, bU))
356356
357357 let bW = makeString(["%s", "votingEmissionRateContract"], a)
358358
359359 let bX = {
360360 let bY = invoke(bQ, "getBoostCoeffREADONLY", nil, nil)
361361 if ($isInstanceOf(bY, "Int"))
362362 then bY
363363 else throw(($getType(bY) + " couldn't be cast to Int"))
364364 }
365365
366366 func bZ (aY) = {
367367 let aJ = getString(this, bk(toString(aY)))
368368 if ($isInstanceOf(aJ, "String"))
369369 then {
370370 let aK = aJ
371371 valueOrErrorMessage(parseInt(aK), k("invalid user number"))
372372 }
373373 else if ($isInstanceOf(aJ, "Unit"))
374374 then m("invalid user")
375375 else throw("Match error")
376376 }
377377
378378
379379 func ca () = valueOrElse(getInteger(this, by()), 0)
380380
381381
382382 func cb (aY) = {
383383 let cc = "getLockedGwxAmount"
384384 let cd = valueOrErrorMessage({
385385 let aJ = getString(bV, bW)
386386 if ($isInstanceOf(aJ, "Unit"))
387387 then unit
388388 else if ($isInstanceOf(aJ, "String"))
389389 then {
390390 let aK = aJ
391391 addressFromString(aK)
392392 }
393393 else throw("Match error")
394394 }, k("invalid voting emission rate address"))
395395 let ce = {
396396 let bY = invoke(bV, cc, [toString(aY)], nil)
397397 if ($isInstanceOf(bY, "Int"))
398398 then bY
399399 else throw(($getType(bY) + " couldn't be cast to Int"))
400400 }
401401 let cf = {
402402 let bY = invoke(cd, cc, [toString(aY)], nil)
403403 if ($isInstanceOf(bY, "Int"))
404404 then bY
405405 else throw(($getType(bY) + " couldn't be cast to Int"))
406406 }
407407 let cg = max([ce, cf])
408408 cg
409409 }
410410
411411
412412 func ch (ci,cj,be,ck,bg,bh,aO) = {
413413 let cl = makeString(["%s%s%s%s__history", ci, cj, toBase58String(aO.transactionId)], a)
414414 let cm = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(be), toString(ck), toString(bg), toString(bh)], a)
415415 StringEntry(cl, cm)
416416 }
417417
418418
419419 func cn (co,cp,cq,cr) = {
420420 let cs = bn()
421421 let ct = bo()
422422 let cu = bp()
423423 let cv = bm()
424424 let cw = q(this, cs)
425425 let cx = q(this, ct)
426426 let cy = q(this, cu)
427427 let cz = q(this, cv)
428428 [IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cr)), IntegerEntry(cv, (cz + co))]
429429 }
430430
431431
432432 func cA (aY,aZ,be,bf,bg,bh,bi) = [StringEntry(aX(aY, aZ), bd(be, bf, bg, bh, bi))]
433433
434434
435435 func cB (aO,cC) = if ((size(aO.payments) > 1))
436436 then m("only one payment is allowed")
437437 else if ((size(aO.payments) == 0))
438438 then 0
439439 else {
440440 let cD = aO.payments[0]
441441 if ((value(cD.assetId) != cC))
442442 then m("invalid asset id in payment")
443443 else cD.amount
444444 }
445445
446446
447447 func cE (aY) = valueOrElse(getInteger(this, bc(aY)), 0)
448448
449449
450450 func cF () = {
451451 let cG = {
452452 let cH = value(getInteger(bV, bE()))
453453 let cI = (cH - 1)
454454 if ((0 > cI))
455455 then m("invalid epoch")
456456 else $Tuple2(cH, cI)
457457 }
458458 let cH = cG._1
459459 let cI = cG._2
460460 let cJ = value(getInteger(bV, bD(cH)))
461461 $Tuple2(cI, cJ)
462462 }
463463
464464
465465 func cK (bG) = {
466466 let cL = 4
467467 let cM = 5
468468 let cN = {
469469 let bY = invoke(bP, "getPoolConfigByLpAssetIdREADONLY", [bG], nil)
470470 if ($isInstanceOf(bY, "List[Any]"))
471471 then bY
472472 else throw(($getType(bY) + " couldn't be cast to List[Any]"))
473473 }
474474 let bA = {
475475 let bY = cN[cL]
476476 if ($isInstanceOf(bY, "String"))
477477 then bY
478478 else throw(($getType(bY) + " couldn't be cast to String"))
479479 }
480480 let bB = {
481481 let bY = cN[cM]
482482 if ($isInstanceOf(bY, "String"))
483483 then bY
484484 else throw(($getType(bY) + " couldn't be cast to String"))
485485 }
486486 $Tuple2(bA, bB)
487487 }
488488
489489
490490 func cO (bG,bO) = {
491491 let aY = addressFromStringValue(bO)
492492 let cP = cF()
493493 let cI = cP._1
494494 let cJ = cP._2
495495 let cQ = cK(bG)
496496 let bA = cQ._1
497497 let bB = cQ._2
498498 let cR = bz(bA, bB, aY, cI)
499499 let cS = valueOrElse(getInteger(bV, cR), 0)
500500 cS
501501 }
502502
503503
504504 func cT (bG,bO) = {
505505 let cU = valueOrElse(getInteger(bR, bN(bO, bG)), 0)
506506 let cS = cO(bG, bO)
507507 if ((cU == 0))
508508 then 0
509509 else cS
510510 }
511511
512512
513513 func cV (bG) = {
514514 let cW = cF()
515515 let cI = cW._1
516516 let cJ = cW._2
517517 let cX = valueOrElse(getInteger(bV, bF(bG, cI)), 0)
518518 let cY = valueOrElse(getInteger(this, bF(bG, cI)), cX)
519519 cY
520520 }
521521
522522
523523 func cZ (bG) = {
524524 let da = cF()
525525 let cI = da._1
526526 let cJ = da._2
527527 let cY = cV(bG)
528528 let db = valueOrElse(getInteger(this, bH(bG, cI)), 0)
529529 let dc = valueOrElse(getInteger(this, bI(bG, cI)), cJ)
530530 let dd = (height - dc)
531531 let de = ((dd * cY) + db)
532532 de
533533 }
534534
535535
536536 func df (bG,dg) = {
537537 let dh = cF()
538538 let cI = dh._1
539539 let cJ = dh._2
540540 let cY = cV(bG)
541541 let di = (cY + dg)
542542 let de = cZ(bG)
543543 [IntegerEntry(bF(bG, cI), di), IntegerEntry(bI(bG, cI), height), IntegerEntry(bH(bG, cI), de)]
544544 }
545545
546546
547547 func dj (bG,bO) = {
548548 let dk = cF()
549549 let cI = dk._1
550550 let cJ = dk._2
551551 let aY = addressFromStringValue(bO)
552552 let dl = cT(bG, bO)
553553 let dm = valueOrElse(getInteger(this, bK(bG, aY, cI)), 0)
554554 let dn = valueOrElse(getInteger(this, bL(bG, aY, cI)), cJ)
555555 let do = (height - dn)
556556 let dp = ((do * dl) + dm)
557557 dp
558558 }
559559
560560
561561 func dq (bG,bO,dr) = {
562562 let ds = cF()
563563 let cI = ds._1
564564 let cJ = ds._2
565565 let aY = addressFromStringValue(bO)
566566 let dt = cO(bG, bO)
567567 let du = if ((dt == 0))
568568 then nil
569569 else {
570570 let dg = if (dr)
571571 then dt
572572 else -(dt)
573573 let dv = df(bG, dg)
574574 let dp = dj(bG, bO)
575575 let dw = [IntegerEntry(bL(bG, aY, cI), height), IntegerEntry(bK(bG, aY, cI), dp)]
576576 (dv ++ dw)
577577 }
578578 du
579579 }
580580
581581
582582 func dx (bG,bO) = {
583583 let dy = cF()
584584 let cI = dy._1
585585 let cJ = dy._2
586586 let aY = addressFromStringValue(bO)
587587 let dz = bM(bG, aY, cI)
588588 let dA = valueOrElse(getInteger(this, dz), 0)
589589 let dB = bJ(bG, aY, cI)
590590 let dC = valueOrElse(getInteger(this, dB), 0)
591591 let dp = dj(bG, bO)
592592 let de = cZ(bG)
593593 let dD = (dp - dA)
594594 let dE = (de - dC)
595595 $Tuple3([IntegerEntry(dz, dp), IntegerEntry(dB, de)], dD, dE)
596596 }
597597
598598
599599 func dF () = {
600600 let dG = t(bQ, ai())
601601 let dH = getInteger(this, al())
602602 let dI = getInteger(this, am())
603603 let dJ = t(bQ, ao())
604604 let dK = if ((height > dJ))
605605 then dJ
606606 else height
607607 let dL = {
608608 let aJ = dH
609609 if ($isInstanceOf(aJ, "Int"))
610610 then {
611611 let dM = aJ
612612 max([(dK - dM), 0])
613613 }
614614 else if ($isInstanceOf(aJ, "Unit"))
615615 then 0
616616 else throw("Match error")
617617 }
618618 let dN = ((dG * (bX - 1)) / bX)
619619 let dO = valueOrElse(dI, 0)
620620 let dP = ((dN * dL) + dO)
621621 $Tuple2([IntegerEntry(am(), dP), IntegerEntry(al(), height)], dP)
622622 }
623623
624624
625625 func dQ (bG,bO,dR) = {
626626 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
627627 let br = bZ(aY)
628628 if ((br == br))
629629 then {
630630 let dS = "empty"
631631 let dT = if ((bG != dS))
632632 then {
633633 let dU = valueOrErrorMessage(getString(bP, R(bG)), k(("unsupported lp asset " + bG)))
634634 getIntegerValue(bP, T(dU))
635635 }
636636 else if (dR)
637637 then 0
638638 else m(("not readonly mode: unsupported lp asset " + bG))
639639 let dV = bs(br, bG)
640640 let dW = bq(br)
641641 let dX = valueOrElse(getInteger(this, dV), q(this, dW))
642642 let dP = dF()._2
643643 let dY = (dP - dX)
644644 if ((0 > dY))
645645 then m("wrong calculations")
646646 else {
647647 let dZ = dx(bG, bO)
648648 let ea = dZ._1
649649 let eb = dZ._2
650650 let ec = dZ._3
651651 let ed = fraction(dY, dT, d)
652652 let ee = if ((ec == 0))
653653 then 0
654654 else fraction(ed, eb, ec)
655655 let ef = ([IntegerEntry(dV, dP)] ++ ea)
656656 let eg = makeString([toString(dX), toString(dY), toString(dT), toString(eb), toString(ec)], ":")
657657 $Tuple3(ee, ef, eg)
658658 }
659659 }
660660 else throw("Strict value is not equal to itself.")
661661 }
662662
663663
664664 func eh (aO,ei) = {
665665 let ej = [1, 3, 6, 12, 24, 48]
666666 if (!(containsElement(ej, ei)))
667667 then m("invalid duration")
668668 else {
669669 let bg = (ei * j)
670670 let ek = toBase58String(aA)
671671 if ((size(aO.payments) != 1))
672672 then m("invalid payment - exact one payment must be attached")
673673 else {
674674 let cD = aO.payments[0]
675675 let el = cD.amount
676676 if ((aA != value(cD.assetId)))
677677 then m((("invalid asset is in payment - " + ek) + " is expected"))
678678 else {
679679 let em = bj()
680680 let aY = aO.caller
681681 let bO = toString(aY)
682682 let en = isDefined(getString(bk(bO)))
683683 let eo = if (en)
684684 then value(getString(bk(bO)))
685685 else toString(t(this, em))
686686 let br = parseIntValue(eo)
687687 let ck = height
688688 if (if ((aB > el))
689689 then (aY != bT)
690690 else false)
691691 then m(("amount is less then minLockAmount=" + toString(aB)))
692692 else if ((aC > bg))
693693 then m(("passed duration is less then minLockDuration=" + toString(aC)))
694694 else if ((bg > aD))
695695 then m(("passed duration is greater then maxLockDuration=" + toString(aD)))
696696 else {
697697 let ep = fraction(bg, c, aD)
698698 let eq = fraction(el, ep, c)
699699 let er = ca()
700700 let dW = bq(br)
701701 let dP = dF()._2
702702 let es = cE(aY)
703703 let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
704704 if ((et == et))
705705 then {
706706 let eu = if (en)
707707 then nil
708708 else [IntegerEntry(em, (br + 1)), StringEntry(bk(bO), eo), StringEntry(bl(eo), bO)]
709709 $Tuple2(((((eu ++ cA(aY, aO.transactionId, el, ck, bg, eq, 0)) ++ cn(el, bg, 1, if (en)
710710 then 0
711711 else 1)) :+ ch("lock", bO, el, ck, bg, eq, aO)) ++ [IntegerEntry(dW, dP), IntegerEntry(by(), (er + eq)), IntegerEntry(bc(aY), (es + eq))]), eq)
712712 }
713713 else throw("Strict value is not equal to itself.")
714714 }
715715 }
716716 }
717717 }
718718 }
719719
720720
721721 func ev (aY,ew) = {
722722 let ex = bb(aY, ew)
723723 let ey = parseIntValue(ex[aR])
724724 let ck = parseIntValue(ex[aS])
725725 let ez = parseIntValue(ex[aT])
726726 let eA = (ck + ez)
727727 let bi = parseIntValue(ex[aW])
728728 let bh = parseIntValue(ex[aV])
729729 let eB = ((height - ck) / aF)
730730 let eC = fraction(toBigInt(eB), (toBigInt((8 * aF)) * h), toBigInt(ez))
731731 let eD = if ((height > eA))
732732 then (ey - bi)
733733 else toInt(fraction(toBigInt(ey), (h - pow(toBigInt(5), 1, eC, f, f, DOWN)), h))
734734 eD
735735 }
736736
737737
738738 @Callable(aO)
739739 func constructor (eE,eF,aB,eG,eH,aE) = {
740740 let eI = aN(aO)
741741 if ((eI == eI))
742742 then ([IntegerEntry(bj(), 0), StringEntry(ax(), aH(eF, aB, eG, eH, aE)), StringEntry(E(), eE)] ++ cn(0, 0, 0, 0))
743743 else throw("Strict value is not equal to itself.")
744744 }
745745
746746
747747
748748 @Callable(aO)
749749 func lockRef (bg,eJ,eK) = {
750750 let eL = eh(aO, bg)
751751 let eM = eL._1
752752 let eq = eL._2
753753 let eN = toString(aO.caller)
754754 let eO = if (if ((eJ == ""))
755755 then true
756756 else (eK == base58''))
757757 then unit
758758 else invoke(A, "createPair", [D, eJ, eN, eK], nil)
759759 if ((eO == eO))
760760 then {
761761 let eP = invoke(aE, "updateReferralActivity", [toString(aO.caller), eq], nil)
762762 if ((eP == eP))
763763 then $Tuple2(eM, unit)
764764 else throw("Strict value is not equal to itself.")
765765 }
766766 else throw("Strict value is not equal to itself.")
767767 }
768768
769769
770770
771771 @Callable(aO)
772772 func lock (bg) = {
773773 let eQ = eh(aO, bg)
774774 let eM = eQ._1
775775 let eq = eQ._2
776776 let eP = invoke(aE, "updateReferralActivity", [toString(aO.caller), eq], nil)
777777 if ((eP == eP))
778778 then $Tuple2(eM, unit)
779779 else throw("Strict value is not equal to itself.")
780780 }
781781
782782
783783
784784 @Callable(aO)
785785 func claimWxBoost (bG,bO) = if ((bR != aO.caller))
786786 then m("permissions denied")
787787 else {
788788 let eR = dQ(bG, bO, false)
789789 let eS = eR._1
790790 let ef = eR._2
791791 let eg = eR._3
792792 $Tuple2(ef, [eS])
793793 }
794794
795795
796796
797797 @Callable(aO)
798798 func claimWxBoostREADONLY (bG,bO) = {
799799 let eT = dQ(bG, bO, true)
800800 let eS = eT._1
801801 let ef = eT._2
802802 let eg = eT._3
803803 $Tuple2(nil, [eS, eg])
804804 }
805805
806806
807807
808808 @Callable(aO)
809809 func unlock (eU,be) = {
810810 let aY = aO.caller
811811 let bO = toString(aY)
812812 let aZ = fromBase58String(eU)
813813 let ex = bb(aY, if ((eU == ""))
814814 then unit
815815 else aZ)
816816 let ey = parseIntValue(ex[aR])
817817 let ck = parseIntValue(ex[aS])
818818 let ez = parseIntValue(ex[aT])
819819 let eA = (ck + ez)
820820 let bi = parseIntValue(ex[aW])
821821 let bh = parseIntValue(ex[aV])
822822 let eB = ((height - ck) / aF)
823823 let eD = ev(aY, if ((eU == ""))
824824 then unit
825825 else aZ)
826826 if ((be > eD))
827827 then m(("maximum amount to unlock: " + toString(eD)))
828828 else {
829- let eV = max([be, fraction((eB * aF), ey, aD)])
829+ let ep = fraction(ez, c, aD)
830+ let eq = fraction(ey, ep, c)
831+ let eV = fraction((eB * aF), eq, aD)
830832 let eW = w((bh - eV), "gwxRemaining")
831833 let eX = cb(aY)
832834 if ((eX > eW))
833835 then m(("locked gwx amount: " + toString(eX)))
834836 else if ((0 >= ey))
835837 then m("nothing to unlock")
836838 else {
837839 let er = ca()
838840 let es = cE(aY)
839841 let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
840842 if ((et == et))
841843 then ((((cA(aY, aZ, ey, ck, ez, eW, (bi + be)) ++ cn(-(be), 0, 0, 0)) :+ ch("unlock", bO, be, ck, ez, eV, aO)) :+ ScriptTransfer(aY, be, aA)) ++ [IntegerEntry(by(), w((er - eV), "gwxTotal")), IntegerEntry(bc(aY), w((es - eV), "userGwxAmountTotal"))])
842844 else throw("Strict value is not equal to itself.")
843845 }
844846 }
845847 }
846848
847849
848850
849851 @Callable(aO)
850852 func gwxUserInfoREADONLY (bO) = {
851853 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
852854 let bh = cE(aY)
853855 $Tuple2(nil, [bh])
854856 }
855857
856858
857859
858860 @Callable(aO)
859861 func userMaxDurationREADONLY (bO) = $Tuple2(nil, $Tuple2("increaseLock", aD))
860862
861863
862864
863865 @Callable(aO)
864866 func getUserGwxAmountAtHeightREADONLY (bO,eY) = {
865867 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
866868 let bh = cE(aY)
867869 $Tuple2(nil, bh)
868870 }
869871
870872
871873
872874 @Callable(aO)
873875 func getUserGwxAmount (bO) = {
874876 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
875877 let bh = cE(aY)
876878 $Tuple2(nil, bh)
877879 }
878880
879881
880882
881883 @Callable(aO)
882884 func getGwxTotalREADONLY () = $Tuple2(nil, ca())
883885
884886
885887
886888 @Callable(aO)
887889 func onBoostEmissionUpdate () = {
888890 let eI = if ((aO.caller == bQ))
889891 then true
890892 else aN(aO)
891893 if ((eI == eI))
892894 then dF()
893895 else throw("Strict value is not equal to itself.")
894896 }
895897
896898
897899
898900 @Callable(aO)
899901 func onStakedVoteUpdate (bG,bO,dr) = {
900902 let eI = if ((aO.caller == bR))
901903 then true
902904 else aN(aO)
903905 if ((eI == eI))
904906 then {
905907 let du = dq(bG, bO, dr)
906908 $Tuple2(du, unit)
907909 }
908910 else throw("Strict value is not equal to itself.")
909911 }
910912
911913
912914
913915 @Callable(aO)
914916 func getVotingResultStakedREADONLY (bG) = $Tuple2(nil, cV(bG))
915917
916918
917919
918920 @Callable(aO)
919921 func getVotingResultStakedIntegralREADONLY (bG) = $Tuple2(nil, cZ(bG))
920922
921923
922924
923925 @Callable(aO)
924926 func getUserVoteFinalizedREADONLY (bG,bO) = $Tuple2(nil, cO(bG, bO))
925927
926928
927929
928930 @Callable(aO)
929931 func getUserVoteStakedIntegralREADONLY (bG,bO) = $Tuple2(nil, dj(bG, bO))
930932
931933
932934 @Verifier(eZ)
933935 func fa () = {
934936 let fb = {
935937 let aJ = aL()
936938 if ($isInstanceOf(aJ, "ByteVector"))
937939 then {
938940 let aQ = aJ
939941 aQ
940942 }
941943 else if ($isInstanceOf(aJ, "Unit"))
942944 then eZ.senderPublicKey
943945 else throw("Match error")
944946 }
945947 sigVerify(eZ.bodyBytes, eZ.proofs[0], fb)
946948 }
947949

github/deemru/w8io/873ac7e 
88.69 ms