tx · 4qQKw6gcYMdFU4Xy6QCWjJ4p4yitfybnhgBmhAQcH77q

3PEC6NWG5h1NjWpTsBq1b5RF7NN1UbFsoy9:  -0.02200000 Waves

2022.10.27 19:30 [3356451] smart account 3PEC6NWG5h1NjWpTsBq1b5RF7NN1UbFsoy9 > SELF 0.00000000 Waves

{ "type": 13, "id": "4qQKw6gcYMdFU4Xy6QCWjJ4p4yitfybnhgBmhAQcH77q", "fee": 2200000, "feeAssetId": null, "timestamp": 1666891723281, "version": 1, "sender": "3PEC6NWG5h1NjWpTsBq1b5RF7NN1UbFsoy9", "senderPublicKey": "CnEx6woaCe8kVcywJXVxsfdsGsEsCJuyzJVmaqc9htzj", "proofs": [ "2PkDV9wVCcQC43ThXAgSFqTAp97TpAfcYY4uAu3Z9cQTWCYRH1D78FBTeKdALtLDoSGKnhBNxkhzLunZLWY5Annx" ], "script": "base64:BgJNCAISBAoCAQQSBQoDCAEBEgUKAwgBARIDCgEIEgQKAggBEgUKAwgBCBIFCgMIAQgSAwoBARIDCgEBEgMKAQESAwoBARIDCgEBEgMKAQFyAAZFVUxFUjgA1onPgQEABU1VTFQ2AMCEPQAGTVVMVFg2CQC2AgEAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDgJALYCAQCAwtcvAAdNVUxUWDEwCQC2AgEAgMivoCUABk1VTFQxMgCAoJSljR0AB01VTFRYMTYJALYCAQCAgIT+pt7hEQAGTVVMVDE4CQC2AgEAgICQu7rWrfANAANTRVACAl9fABFERUZBVUxUU1dBUEZFRU4yVwCIJwARREVGQVVMVFNXQVBGRUVXMk4AoJwBAAtCUlBST1RFQ1RFRACgjQYAB1dBVkVTSUQJANkEAQIFV0FWRVMACURBWU1JTExJUwCAuJkpARJrZXlOZXV0cmlub0Fzc2V0SWQAAhFuZXV0cmlub19hc3NldF9pZAEOa2V5TnNidEFzc2V0SWQAAg1ib25kX2Fzc2V0X2lkAQ5rZXlTdXJmQXNzZXRJZAACDXN1cmZfYXNzZXRfaWQBEGtleUJhbGFuY2VMb2NrZWQAAg1iYWxhbmNlX2xvY2tfARVrZXlXYXZlc0xvY2tlZEJhbGFuY2UACQCsAgIJARBrZXlCYWxhbmNlTG9ja2VkAAIFd2F2ZXMBGGtleU5ldXRyaW5vTG9ja2VkQmFsYW5jZQAJAKwCAgkBEGtleUJhbGFuY2VMb2NrZWQAAghuZXV0cmlubwEVa2V5TWluV2F2ZXNTd2FwQW1vdW50AAIVbWluX3dhdmVzX3N3YXBfYW1vdW50ARhrZXlNaW5OZXV0cmlub1N3YXBBbW91bnQAAhhtaW5fbmV1dHJpbm9fc3dhcF9hbW91bnQBEmtleVdhdmVzT3V0RmVlUGFydAACFXdhdmVzT3V0X3N3YXBfZmVlUGFydAEVa2V5TmV1dHJpbm9PdXRGZWVQYXJ0AAIYbmV1dHJpbm9PdXRfc3dhcF9mZWVQYXJ0ARNrZXlTd2FwQW1vdW50QVBhcmFtAAIYJXMlc19fY29uZmlnX19zd2FwQVBhcmFtARNrZXlTd2FwQW1vdW50QlBhcmFtAAIYJXMlc19fY29uZmlnX19zd2FwQlBhcmFtARdrZXlVc2RuU3dhcEFtb3VudEFQYXJhbQACHCVzJXNfX2NvbmZpZ19fdXNkblN3YXBBUGFyYW0BF2tleVVzZG5Td2FwQW1vdW50QlBhcmFtAAIcJXMlc19fY29uZmlnX191c2RuU3dhcEJQYXJhbQETa2V5TnNidExvY2tDb250cmFjdAACFCVzX19uc2J0TG9ja0NvbnRyYWN0AQ9rZXlNYXRoQ29udHJhY3QAAhAlc19fbWF0aENvbnRyYWN0ARtrZXlCYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWwAAhtiYWxhbmNlX3dhdmVzX2xvY2tfaW50ZXJ2YWwBHmtleUJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbAACHmJhbGFuY2VfbmV1dHJpbm9fbG9ja19pbnRlcnZhbAEIa2V5UHJpY2UAAgVwcmljZQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUDU0VQAQtrZXlIYWxmTGlmZQACDCVzX19oYWxmTGlmZQEQa2V5TWluTG9ja0Ftb3VudAACESVzX19taW5Mb2NrQW1vdW50ARVrZXlNaW5XYXZlc0Zvck5zYnRCdXkAAhJtaW5fd2F2ZXNfbnNidF9idXkBDmtleU1pbk5zYnRTZWxsAAINbWluX25zYnRfc2VsbAEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBCXRpbWVzdGFtcAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAg9kZXBvc2l0QW10QnlEYXkJAMwIAgkApAMBBQl0aW1lc3RhbXAFA25pbAUDU0VQAQx0b1N0YXJ0T2ZEYXkBCXRpbWVzdGFtcAkAaAIJAGkCBQl0aW1lc3RhbXAFCURBWU1JTExJUwUJREFZTUlMTElTAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDWdldEJvb2xPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJsIAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAEMZ2V0SW50T3JFbHNlAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEMZ2V0U3RyT3JFbHNlAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEWY29udmVydE5ldXRyaW5vVG9XYXZlcwIGYW1vdW50BXByaWNlCQBrAwUGYW1vdW50BQVNVUxUOAUFcHJpY2UBFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8CBmFtb3VudAVwcmljZQkAawMFBmFtb3VudAUFcHJpY2UFBU1VTFQ4AQlhc0FueUxpc3QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAUKdmFsQW55TGlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCGFzU3RyaW5nAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQxhc1R1cGxlMkludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAXYFByRtYXRjaDAFAXYJAAIBAh1mYWlsIHRvIGNhc3QgaW50byBUdXBsZTIgaW50cwESYXNTd2FwUGFyYW1zU1RSVUNUAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAiMoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAiJmYWlsIHRvIGNhc3QgaW50byBTd2FwUGFyYW1zU1RSVUNUARZhc1dpdGhkcmF3UmVzdWx0U1RSVUNUAQN2YWwEByRtYXRjaDAFA3ZhbAMDCQABAgUHJG1hdGNoMAIkKEludCwgVW5pdCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQpBgkAAQIFByRtYXRjaDACKihJbnQsIEJ5dGVWZWN0b3IsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAiBmYWlsIHRvIGNhc3QgaW50byBXaXRoZHJhd1Jlc3VsdAELdG9UaW1lc3RhbXABBXN0YXJ0AwkAZgIAAAUFc3RhcnQA////////////AQQHJG1hdGNoMAkA7QcBBQVzdGFydAMJAAECBQckbWF0Y2gwAglCbG9ja0luZm8EBWJsb2NrBQckbWF0Y2gwCAUFYmxvY2sJdGltZXN0YW1wAP///////////wEBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZNVUxUMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBk1VTFQxOAAPbk1ldHJpY0lkeFByaWNlAAAAG25NZXRyaWNJZHhVc2RuTG9ja2VkQmFsYW5jZQABABxuTWV0cmljSWR4V2F2ZXNMb2NrZWRCYWxhbmNlAAIAEW5NZXRyaWNJZHhSZXNlcnZlAAMAF25NZXRyaWNJZHhSZXNlcnZlSW5Vc2RuAAQAFG5NZXRyaWNJZHhVc2RuU3VwcGx5AAUAEW5NZXRyaWNJZHhTdXJwbHVzAAYAGG5NZXRyaWNJZHhTdXJwbHVzUGVyY2VudAAHAAxuTWV0cmljSWR4QlIACAAUbk1ldHJpY0lkeE5zYnRTdXBwbHkACQAXbk1ldHJpY0lkeE1heE5zYnRTdXBwbHkACgAUbk1ldHJpY0lkeFN1cmZTdXBwbHkACwAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsADGJGdW5jSWR4U3VyZgAAAA1iRnVuY0lkeFdhdmVzAAEADGJGdW5jSWR4VXNkbgACABRiRnVuY0lkeFJlc2VydmVTdGFydAADABNiRnVuY0lkeFN1cHBseVN0YXJ0AAQAD2JGdW5jSWR4QlJTdGFydAAFABJiRnVuY0lkeFJlc2VydmVFbmQABgARYkZ1bmNJZHhTdXBwbHlFbmQABwANYkZ1bmNJZHhCUkVuZAAIAAxiRnVuY0lkeFJlc3QACQASYkZ1bmNJZHhXYXZlc1ByaWNlAAoBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM1A1QmZkNThQUGZOdkJNMkh5OFFmYmNEcU1lTnR6ZzdLZlAACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAALcnBkQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRRJZHhDb250cm9sQ2ZnUnBkRGFwcAATbnNidFN0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAE3N1cmZTdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwABdnbnNidENvbnRyb2xsZXJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwABVuZXV0cmlub0Fzc2V0SWRTdHJpbmcJAQ9nZXRTdHJpbmdPckZhaWwCBRBuZXV0cmlub0NvbnRyYWN0CQESa2V5TmV1dHJpbm9Bc3NldElkAAAPbmV1dHJpbm9Bc3NldElkCQDZBAEFFW5ldXRyaW5vQXNzZXRJZFN0cmluZwAObnNidEFzc2V0SWRTdHIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFEG5ldXRyaW5vQ29udHJhY3QJAQ5rZXlOc2J0QXNzZXRJZAAAC25zYnRBc3NldElkCQDZBAEFDm5zYnRBc3NldElkU3RyAA5zdXJmQXNzZXRJZFN0cgkBEUBleHRyTmF0aXZlKDEwNTMpAgUPYXVjdGlvbkNvbnRyYWN0CQEOa2V5U3VyZkFzc2V0SWQAAAtzdXJmQXNzZXRJZAkA2QQBBQ5zdXJmQXNzZXRJZFN0cgEUcmVhZFVzZG5JbmNvbWVGb3JEYXkDCnN0YWtpbmdBY2MTc3RhcnRPZkRheVRpbWVzdGFtcA9uZXV0cmlub01ldHJpY3MEC2FtdEJ5RGF5S0VZCQEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBBRNzdGFydE9mRGF5VGltZXN0YW1wBAlpbmNvbWVTdHIJAQxnZXRTdHJPckVsc2UDBQpzdGFraW5nQWNjBQthbXRCeURheUtFWQIKJXMlc19fMF9fMAQLaW5jb21lQXJyYXkJALUJAgUJaW5jb21lU3RyBQNTRVAECHdhdmVzQW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULaW5jb21lQXJyYXkAAQQHdXNkbkFtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2luY29tZUFycmF5AAIEDGN1cnJlbnRQcmljZQkBBWFzSW50AQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFD25NZXRyaWNJZHhQcmljZQQOd2F2ZXNBc1VzZG5BbXQJAGsDBQh3YXZlc0FtdAUMY3VycmVudFByaWNlBQVNVUxUOAkAZAIFDndhdmVzQXNVc2RuQW10BQd1c2RuQW10ARdjYWxjVXNkbkluY29tZUZvclBlcmlvZAIKc3Rha2luZ0FjYwRkYXlzBA9uZXV0cmlub01ldHJpY3MJAQlhc0FueUxpc3QBCQD8BwQFDG1hdGhDb250cmFjdAIaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFA25pbAUDbmlsBA5jdXJyU3RhcnRPZkRheQkBDHRvU3RhcnRPZkRheQEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5zdGFydFRpbWVzdGFtcAkAZQIFDmN1cnJTdGFydE9mRGF5CQBoAgUJREFZTUlMTElTCQBkAgUEZGF5cwABBAxlbmRUaW1lc3RhbXAJAGUCBQ5jdXJyU3RhcnRPZkRheQUJREFZTUlMTElTBAxzdGFydFVzZG5BbXQJARRyZWFkVXNkbkluY29tZUZvckRheQMFE3N1cmZTdGFraW5nQ29udHJhY3QFDnN0YXJ0VGltZXN0YW1wBQ9uZXV0cmlub01ldHJpY3MECmVuZFVzZG5BbXQJARRyZWFkVXNkbkluY29tZUZvckRheQMFE3N1cmZTdGFraW5nQ29udHJhY3QFDGVuZFRpbWVzdGFtcAUPbmV1dHJpbm9NZXRyaWNzCQBlAgUKZW5kVXNkbkFtdAUMc3RhcnRVc2RuQW10AQdjYWxjQXByBApzdGFraW5nQWNjDHBlcmlvZEluRGF5cw9pbmNvbWVGb3JQZXJpb2QZc3Rha2luZ0Fzc2V0UHJpY2VUb1VzZG5YNgQLdG90YWxTdGFrZWQJAQxnZXRJbnRPckVsc2UDBRNzdXJmU3Rha2luZ0NvbnRyYWN0Ah4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQAAQQRdG90YWxTdGFrZWRJblVzZG4JAGsDBQt0b3RhbFN0YWtlZAUZc3Rha2luZ0Fzc2V0UHJpY2VUb1VzZG5YNgUFTVVMVDYJAGsDCQBoAgUPaW5jb21lRm9yUGVyaW9kBQVNVUxUNgDtAgkAaAIFEXRvdGFsU3Rha2VkSW5Vc2RuBQxwZXJpb2RJbkRheXMNAWkBGHJldmVyc2VTd2FwTGltaXRSRUFET05MWQIDbGltC2lzV2F2ZXNTd2FwBAJCUgkBBWFzSW50AQkAkQMCCQEJYXNBbnlMaXN0AQkA/AcEBQxtYXRoQ29udHJhY3QCGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQNuaWwFA25pbAUMbk1ldHJpY0lkeEJSBAVnTnNidAMJAGcCAAAFA2xpbQAABAhhUGFyYW1YOAkAtgIBCQEMZ2V0SW50T3JGYWlsAgUMbWF0aENvbnRyYWN0AwULaXNXYXZlc1N3YXAJARNrZXlTd2FwQW1vdW50QVBhcmFtAAkBF2tleVVzZG5Td2FwQW1vdW50QVBhcmFtAAQJYlBhcmFtWDE2CQC2AgEJAQxnZXRJbnRPckZhaWwCBQxtYXRoQ29udHJhY3QDBQtpc1dhdmVzU3dhcAkBE2tleVN3YXBBbW91bnRCUGFyYW0ACQEXa2V5VXNkblN3YXBBbW91bnRCUGFyYW0ABAlsaW1EaXZBWDgDBQtpc1dhdmVzU3dhcAkAvAIDCQC2AgEFA2xpbQUHTVVMVFgxMAUIYVBhcmFtWDgJALwCAwkAvAIDCQC2AgEFA2xpbQUHTVVMVFgxMAUIYVBhcmFtWDgFBk1VTFRYNgkAtgIBBQJCUgQHcmV2QlgxNgkAvAIDBQdNVUxUWDE2BQdNVUxUWDE2BQliUGFyYW1YMTYJAKADAQkAdgYFCWxpbURpdkFYOAAIBQdyZXZCWDE2ABAABgUHQ0VJTElORwkAlAoCBQNuaWwFBWdOc2J0AWkBEWduc2J0SW5mb0lOVEVSTkFMAxV1c2VyQWRkcmVzc1N0ck9yRW1wdHkbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvG2FkZGl0aW9uYWxTdXJmVG9TdGFrZU9yWmVybwQRdXNlckFkZHJlc3NPclRoaXMDCQECIT0CBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkCAAkBEUBleHRyTmF0aXZlKDEwNjIpAQUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQR0aGlzBAxjdXJyZW50UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD2NvbnRyb2xDb250cmFjdAkBCGtleVByaWNlAAQRZ25zYnRGcm9tTnNidERpZmYFG2FkZGl0aW9uYWxOc2J0VG9TdGFrZU9yWmVybwQRZ25zYnRGcm9tU3VyZkRpZmYJAQVhc0ludAEJAPwHBAUTc3VyZlN0YWtpbmdDb250cmFjdAIYZ25zYnRGcm9tU3VyZlNZU1JFQURPTkxZCQDMCAIFG2FkZGl0aW9uYWxTdXJmVG9TdGFrZU9yWmVybwUDbmlsBQNuaWwECWdOc2J0RGlmZgkAZAIFEWduc2J0RnJvbU5zYnREaWZmBRFnbnNidEZyb21TdXJmRGlmZgQPc3dhcFBhcmFtc1R1cGxlCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/AcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIAAAUDbmlsBQNuaWwEDmJsY2tzMkxtdFJlc2V0CAUPc3dhcFBhcmFtc1R1cGxlAl8zBAhnbnNidEFtdAgFD3N3YXBQYXJhbXNUdXBsZQJfNAQNZ25zYnRBbXRUb3RhbAgFD3N3YXBQYXJhbXNUdXBsZQJfNQQNbGltaXRNYXhXYXZlcwgFD3N3YXBQYXJhbXNUdXBsZQJfNgQMbGltaXRNYXhVc2RuCAUPc3dhcFBhcmFtc1R1cGxlAl83BBJzd2FwUGFyYW1zVHVwbGVORVcJARJhc1N3YXBQYXJhbXNTVFJVQ1QBCQD8BwQFEG5ldXRyaW5vQ29udHJhY3QCG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgUJZ05zYnREaWZmBQNuaWwFA25pbAQRYmxja3MyTG10UmVzZXRORVcIBRJzd2FwUGFyYW1zVHVwbGVORVcCXzMEC2duc2J0QW10TkVXCAUSc3dhcFBhcmFtc1R1cGxlTkVXAl80BBBnbnNidEFtdFRvdGFsTkVXCAUSc3dhcFBhcmFtc1R1cGxlTkVXAl81BBBsaW1pdE1heFdhdmVzTkVXCAUSc3dhcFBhcmFtc1R1cGxlTkVXAl82BA9saW1pdE1heFVzZG5ORVcIBRJzd2FwUGFyYW1zVHVwbGVORVcCXzcEC25zYnRCYWxhbmNlAwkBAiE9AgUVdXNlckFkZHJlc3NTdHJPckVtcHR5AgAJAPAHAgURdXNlckFkZHJlc3NPclRoaXMFC25zYnRBc3NldElkAAAEC3N1cmZCYWxhbmNlAwkBAiE9AgUVdXNlckFkZHJlc3NTdHJPckVtcHR5AgAJAPAHAgURdXNlckFkZHJlc3NPclRoaXMFC3N1cmZBc3NldElkAAAED25zYnRCYWxhbmNlRGlmZgMJAGcCBRthZGRpdGlvbmFsTnNidFRvU3Rha2VPclplcm8AAAUbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvBBFuc2J0VW5zdGFraW5nRGF0YQkBCWFzQW55TGlzdAEJAPwHBAUTbnNidFN0YWtpbmdDb250cmFjdAIYbnNidFVuc3Rha2luZ1NZU1JFQURPTkxZCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQkAzAgCCQBoAgD///////////8BBRthZGRpdGlvbmFsTnNidFRvU3Rha2VPclplcm8FA25pbAUDbmlsBBFuc2J0UmVjZWl2ZUFtb3VudAkBBWFzSW50AQkAkQMCBRFuc2J0VW5zdGFraW5nRGF0YQACBAZyZXN1bHQJAQEtAQURbnNidFJlY2VpdmVBbW91bnQFBnJlc3VsdAQObnNidEJhbGFuY2VOZXcJAGUCBQtuc2J0QmFsYW5jZQUPbnNidEJhbGFuY2VEaWZmBA5zdXJmQmFsYW5jZU5ldwkAZQIFC3N1cmZCYWxhbmNlBRthZGRpdGlvbmFsU3VyZlRvU3Rha2VPclplcm8ECWduc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUXZ25zYnRDb250cm9sbGVyQ29udHJhY3QCFGduc2J0SW5mb1NZU1JFQURPTkxZCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQkAzAgCBRthZGRpdGlvbmFsTnNidFRvU3Rha2VPclplcm8JAMwIAgUbYWRkaXRpb25hbFN1cmZUb1N0YWtlT3JaZXJvBQNuaWwFA25pbAQJZ25zYnRVc2VyCQEFYXNJbnQBCQCRAwIFCWduc2J0RGF0YQAABApnbnNidFRvdGFsCQEFYXNJbnQBCQCRAwIFCWduc2J0RGF0YQABBAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAJEDAgUJZ25zYnREYXRhAAIECHN1cmZEYXRhCQEJYXNBbnlMaXN0AQkAkQMCBQlnbnNidERhdGEAAwQRdnBFZmZlY3RpdmVIZWlnaHQJAQVhc0ludAEJAJEDAgUJZ25zYnREYXRhAAQEFHZwRWZmZWN0aXZlSGVpZ2h0TkVXCQEFYXNJbnQBCQCRAwIFCWduc2J0RGF0YQAFBBBnbnNidEFtdEZyb21Oc2J0CQEFYXNJbnQBCQCRAwIFCG5zYnREYXRhAAIEEGduc2J0QW10RnJvbVN1cmYJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEAAgQTZ25zYnRBbXRGcm9tTnNidE5FVwkAZAIFEGduc2J0QW10RnJvbU5zYnQFEWduc2J0RnJvbU5zYnREaWZmBBNnbnNidEFtdEZyb21TdXJmTkVXCQBkAgUQZ25zYnRBbXRGcm9tU3VyZgURZ25zYnRGcm9tU3VyZkRpZmYEEmduc2J0RnJvbU5zYnRUb3RhbAkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQADBBJnbnNidEZyb21TdXJmVG90YWwJAQVhc0ludAEJAJEDAgUIc3VyZkRhdGEAAwQYZ25zYnRGcm9tU3VyZkFjdGl2ZVRvdGFsAAAEGGduc2J0RnJvbVN1cmZGcm96ZW5Ub3RhbAUSZ25zYnRGcm9tU3VyZlRvdGFsBBVnbnNidEZyb21Oc2J0VG90YWxORVcJAGQCBRJnbnNidEZyb21Oc2J0VG90YWwFEWduc2J0RnJvbU5zYnREaWZmBBVnbnNidEZyb21TdXJmVG90YWxORVcJAGQCBRJnbnNidEZyb21TdXJmVG90YWwFEWduc2J0RnJvbVN1cmZEaWZmBBtnbnNidEZyb21TdXJmRnJvemVuVG90YWxORVcFFWduc2J0RnJvbVN1cmZUb3RhbE5FVwQLdm90aW5nUG93ZXIJAGsDBRBnbnNidEFtdEZyb21Oc2J0BQVNVUxUOAkAZAIFEmduc2J0RnJvbU5zYnRUb3RhbAUYZ25zYnRGcm9tU3VyZkFjdGl2ZVRvdGFsBA52b3RpbmdQb3dlck5ldwkAawMFE2duc2J0QW10RnJvbU5zYnRORVcFBU1VTFQ4CQBkAgUVZ25zYnRGcm9tTnNidFRvdGFsTkVXBRhnbnNidEZyb21TdXJmQWN0aXZlVG90YWwEDnZvdGluZ1Bvd2VyTWF4CQBrAwkAZAIFEGduc2J0QW10RnJvbU5zYnQFEGduc2J0QW10RnJvbVN1cmYFBU1VTFQ4CQBkAgkAZAIFEmduc2J0RnJvbU5zYnRUb3RhbAUYZ25zYnRGcm9tU3VyZkFjdGl2ZVRvdGFsBRhnbnNidEZyb21TdXJmRnJvemVuVG90YWwEEXZvdGluZ1Bvd2VyTWF4TmV3CQBrAwkAZAIFE2duc2J0QW10RnJvbU5zYnRORVcFE2duc2J0QW10RnJvbVN1cmZORVcFBU1VTFQ4CQBkAgkAZAIFFWduc2J0RnJvbU5zYnRUb3RhbE5FVwUYZ25zYnRGcm9tU3VyZkFjdGl2ZVRvdGFsBRtnbnNidEZyb21TdXJmRnJvemVuVG90YWxORVcEDnZvdGluZ1Bvd2VyRXRhAwkAAAIFEXZwRWZmZWN0aXZlSGVpZ2h0AAAFBmhlaWdodAURdnBFZmZlY3RpdmVIZWlnaHQEEXZvdGluZ1Bvd2VyRXRhTmV3AwkAAAIFFHZwRWZmZWN0aXZlSGVpZ2h0TkVXAAAFBmhlaWdodAUUdnBFZmZlY3RpdmVIZWlnaHRORVcJAJQKAgUDbmlsCQDMCAIAAAkAzAgCBQtuc2J0QmFsYW5jZQkAzAgCBQtzdXJmQmFsYW5jZQkAzAgCBQ5uc2J0QmFsYW5jZU5ldwkAzAgCBQ5zdXJmQmFsYW5jZU5ldwkAzAgCBRBnbnNidEFtdEZyb21Oc2J0CQDMCAIFEGduc2J0QW10RnJvbVN1cmYJAMwIAgUTZ25zYnRBbXRGcm9tTnNidE5FVwkAzAgCBRNnbnNidEFtdEZyb21TdXJmTkVXCQDMCAIFEmduc2J0RnJvbU5zYnRUb3RhbAkAzAgCBRJnbnNidEZyb21TdXJmVG90YWwJAMwIAgUVZ25zYnRGcm9tTnNidFRvdGFsTkVXCQDMCAIFFWduc2J0RnJvbVN1cmZUb3RhbE5FVwkAzAgCBQxsaW1pdE1heFVzZG4JAMwIAgUNbGltaXRNYXhXYXZlcwkAzAgCBQ9saW1pdE1heFVzZG5ORVcJAMwIAgUQbGltaXRNYXhXYXZlc05FVwkAzAgCBQ5ibGNrczJMbXRSZXNldAkAzAgCBRFibGNrczJMbXRSZXNldE5FVwkAzAgCBQt2b3RpbmdQb3dlcgkAzAgCBQ52b3RpbmdQb3dlck5ldwkAzAgCBQ52b3RpbmdQb3dlck1heAkAzAgCBRF2b3RpbmdQb3dlck1heE5ldwkAzAgCBQ52b3RpbmdQb3dlckV0YQkAzAgCBRF2b3RpbmdQb3dlckV0YU5ldwUDbmlsAWkBEWduc2J0SW5mb1JFQURPTkxZAxV1c2VyQWRkcmVzc1N0ck9yRW1wdHkbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvG2FkZGl0aW9uYWxTdXJmVG9TdGFrZU9yWmVybwQNZ25zYnRJbmZvREFUQQkBCWFzQW55TGlzdAEJAPwHBAUEdGhpcwIRZ25zYnRJbmZvSU5URVJOQUwJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIFG2FkZGl0aW9uYWxOc2J0VG9TdGFrZU9yWmVybwkAzAgCBRthZGRpdGlvbmFsU3VyZlRvU3Rha2VPclplcm8FA25pbAUDbmlsCQCUCgIFA25pbAkAuQkCCQDMCAICMCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQABCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAIJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAAwkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAECQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAUJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEABgkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAHCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAgJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEACQkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAKCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAsJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEADAkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQANCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAA4JAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEADwkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAQCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABEJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAEgkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQATCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABQJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAFQkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAWCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABcJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAGAUDbmlsBQNTRVABaQEScmV3YXJkSW5mb1JFQURPTkxZARV1c2VyQWRkcmVzc1N0ck9yRW1wdHkEC3Jld2FyZHNEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBRdnbnNidENvbnRyb2xsZXJDb250cmFjdAIXZ25zYnRSZXdhcmRzU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAQLdXNkblJld2FyZHMJAQhhc1N0cmluZwEJAPwHBAULcnBkQ29udHJhY3QCGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkFA25pbAUDbmlsCQCUCgIFA25pbAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCCQEIYXNTdHJpbmcBCQCRAwIFC3Jld2FyZHNEYXRhAAAJAMwIAgkBCGFzU3RyaW5nAQkAkQMCBQtyZXdhcmRzRGF0YQABCQDMCAIFC3VzZG5SZXdhcmRzBQNuaWwFA1NFUAFpARFtZXJnZU5zYnRSRUFET05MWQIUdXNlckFkZHJlc3NNYW5kYXRvcnkJbmV3QW1vdW50BAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUTbnNidFN0YWtpbmdDb250cmFjdAIWbnNidFN0YWtpbmdTWVNSRUFET05MWQkAzAgCBRR1c2VyQWRkcmVzc01hbmRhdG9yeQkAzAgCBQluZXdBbW91bnQFA25pbAUDbmlsBAdhbW91bnQwCQEFYXNJbnQBCQCRAwIFCG5zYnREYXRhAAAEC3N0YXJ0SGVpZ2h0AwkAZwIAAAUHYW1vdW50MAD///////////8BCQEFYXNJbnQBCQCRAwIFCG5zYnREYXRhAAIEDnN0YXJ0VGltZXN0YW1wCQELdG9UaW1lc3RhbXABBQtzdGFydEhlaWdodAQOc3RhcnRIZWlnaHROZXcDCQBnAgAABQluZXdBbW91bnQFC3N0YXJ0SGVpZ2h0BAhoYWxmTGlmZQkBDGdldEludE9yRmFpbAIFE25zYnRTdGFraW5nQ29udHJhY3QJAQtrZXlIYWxmTGlmZQAJAQVhc0ludAEJAPwHBAUMbWF0aENvbnRyYWN0AhNtZXJnZVN0YWtlc1JFQURPTkxZCQDMCAIFB2Ftb3VudDAJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUJbmV3QW1vdW50CQDMCAIFBmhlaWdodAkAzAgCBQhoYWxmTGlmZQUDbmlsBQNuaWwEEXN0YXJ0VGltZXN0YW1wTmV3CQELdG9UaW1lc3RhbXABBQ5zdGFydEhlaWdodE5ldwkAlAoCBQNuaWwJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUOc3RhcnRUaW1lc3RhbXAJAMwIAgkApAMBBQ5zdGFydEhlaWdodE5ldwkAzAgCCQCkAwEFEXN0YXJ0VGltZXN0YW1wTmV3BQNuaWwFA1NFUAFpARtzd2FwTGltaXRDYWxjdWxhdG9yUkVBRE9OTFkDEXVzZXJBZGRyZXNzU3RyT3B0C2xpbWl0V2FudGVkCmFzc2V0SWRTdHIEDGdOc2J0Q3VycmVudAMJAAACBRF1c2VyQWRkcmVzc1N0ck9wdAIAAAAJAQVhc0ludAEICQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/AcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgURdXNlckFkZHJlc3NTdHJPcHQJAMwIAgAABQNuaWwFA25pbAJfNAQPbGltaXRXYW50ZWRVc2RuAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTCQEWY29udmVydFdhdmVzVG9OZXV0cmlubwIFC2xpbWl0V2FudGVkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9jb250cm9sQ29udHJhY3QJAQhrZXlQcmljZQAFC2xpbWl0V2FudGVkBAtnTnNidE5lZWRlZAkBBWFzSW50AQkA/AcEBQR0aGlzAhhyZXZlcnNlU3dhcExpbWl0UkVBRE9OTFkJAMwIAgUPbGltaXRXYW50ZWRVc2RuCQDMCAIJAAACBQphc3NldElkU3RyAgVXQVZFUwUDbmlsBQNuaWwECmdOc2J0RGVsdGEJAGUCBQtnTnNidE5lZWRlZAUMZ05zYnRDdXJyZW50CQCUCgIFA25pbAkAuQkCCQDMCAICBCVzJXMJAMwIAgkApAMBBQxnTnNidEN1cnJlbnQJAMwIAgkApAMBBQpnTnNidERlbHRhBQNuaWwFA1NFUAFpARBzd2FwSW5mb1JFQURPTkxZAxV1c2VyQWRkcmVzc1N0ck9yRW1wdHkGYW1vdW50CmFzc2V0SWRTdHIED25ldXRyaW5vTWV0cmljcwkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwEBXByaWNlCQEFYXNJbnQBCQCRAwIFD25ldXRyaW5vTWV0cmljcwUPbk1ldHJpY0lkeFByaWNlBA9zd2FwUGFyYW1zVHVwbGUJARJhc1N3YXBQYXJhbXNTVFJVQ1QBCQD8BwQFEG5ldXRyaW5vQ29udHJhY3QCG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgAABQNuaWwFA25pbAQOYmxja3MyTG10UmVzZXQIBQ9zd2FwUGFyYW1zVHVwbGUCXzMEDWxpbWl0TWF4V2F2ZXMIBQ9zd2FwUGFyYW1zVHVwbGUCXzYEDGxpbWl0TWF4VXNkbggFD3N3YXBQYXJhbXNUdXBsZQJfNwQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAhzd2FwVHlwZQMJAAACBQdhc3NldElkBQdXQVZFU0lEAgV3YXZlcwMJAAACBQdhc3NldElkBQ9uZXV0cmlub0Fzc2V0SWQCCG5ldXRyaW5vCQACAQkArAICAhNDYW4ndCBzd2FwIGFzc2V0SWQ9BQphc3NldElkU3RyBA13aXRoZHJhd1R1cGxlCQEWYXNXaXRoZHJhd1Jlc3VsdFNUUlVDVAEJAPwHBAUQbmV1dHJpbm9Db250cmFjdAIdY2FsY1dpdGhkcmF3UmVzdWx0U1lTUkVBRE9OTFkJAMwIAgUIc3dhcFR5cGUJAMwIAgUGYW1vdW50CQDMCAIFBXByaWNlBQNuaWwFA25pbAQMb3V0TmV0QW1vdW50CAUNd2l0aGRyYXdUdXBsZQJfMQQKb3V0QXNzZXRJZAgFDXdpdGhkcmF3VHVwbGUCXzIECm91dFN1cmZBbXQIBQ13aXRoZHJhd1R1cGxlAl8zBA9pbkFtdFRvU3VyZlBhcnQIBQ13aXRoZHJhd1R1cGxlAl80BAp1bmxlYXNlQW10CAUNd2l0aGRyYXdUdXBsZQJfNQQMb3V0RmVlQW1vdW50CAUNd2l0aGRyYXdUdXBsZQJfNgQLb3V0QW10R3Jvc3MIBQ13aXRoZHJhd1R1cGxlAl83CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQxvdXROZXRBbW91bnQJAMwIAgkApAMBBQpvdXRTdXJmQW10CQDMCAIJAKQDAQUMb3V0RmVlQW1vdW50CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQ5ibGNrczJMbXRSZXNldAkAzAgCCQCkAwEFDWxpbWl0TWF4V2F2ZXMJAMwIAgkApAMBBQxsaW1pdE1heFVzZG4JAMwIAgkApAMBBQ9pbkFtdFRvU3VyZlBhcnQFA25pbAUDU0VQAWkBFnVzZG5TdGFraW5nQXByUkVBRE9OTFkBBGRheXMJAJQKAgUDbmlsAgklZF9fNjAwMDABaQEWc3VyZlN0YWtpbmdBcHJSRUFET05MWQEEZGF5cwkAlAoCBQNuaWwCCSVkX183MDAwMAFpARZuc2J0U3Rha2luZ0FwclJFQURPTkxZAQRkYXlzCQCUCgIFA25pbAIJJWRfXzkwMDAwAWkBGnVzZG5TdGFraW5nQXByVGVzdFJFQURPTkxZAQRkYXlzBAd0bXBEYXlzAAEED25ldXRyaW5vTWV0cmljcwkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwEDGN1cnJlbnRQcmljZQkBBWFzSW50AQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFD25NZXRyaWNJZHhQcmljZQQLd2F2ZXNJbmNvbWUJAGgCAPAuBQVNVUxUOAQPaW5jb21lRm9yUGVyaW9kCQBrAwULd2F2ZXNJbmNvbWUFDGN1cnJlbnRQcmljZQUFTVVMVDgEA2FwcgkBB2NhbGNBcHIEBQtycGRDb250cmFjdAUHdG1wRGF5cwUPaW5jb21lRm9yUGVyaW9kBQVNVUxUNgkAlAoCBQNuaWwJAKwCAgIEJWRfXwkApAMBBQNhcHIBaQEac3VyZlN0YWtpbmdBcHJUZXN0UkVBRE9OTFkBBGRheXMEB3RtcERheXMAAwQPaW5jb21lRm9yUGVyaW9kCQEXY2FsY1VzZG5JbmNvbWVGb3JQZXJpb2QCBRNzdXJmU3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBBFzdXJmUHJpY2VUb1VzZG5YNgCAowUEA2FwcgkBB2NhbGNBcHIEBRNzdXJmU3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBQ9pbmNvbWVGb3JQZXJpb2QFEXN1cmZQcmljZVRvVXNkblg2CQCUCgIFA25pbAkArAICAgQlZF9fCQCkAwEFA2FwcgFpARpuc2J0U3Rha2luZ0FwclRlc3RSRUFET05MWQEEZGF5cwQHdG1wRGF5cwADBBFuc2J0UHJpY2VUb1VzZG5YNgCApOgDBA9pbmNvbWVGb3JQZXJpb2QJARdjYWxjVXNkbkluY29tZUZvclBlcmlvZAIFE25zYnRTdGFraW5nQ29udHJhY3QFB3RtcERheXMEA2FwcgkBB2NhbGNBcHIEBRNuc2J0U3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBQ9pbmNvbWVGb3JQZXJpb2QFEW5zYnRQcmljZVRvVXNkblg2CQCUCgIFA25pbAkArAICAgQlZF9fCQCkAwEFA2FwcgAq3r5o", "chainId": 87, "height": 3356451, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AiNCMojdKn3TwPP5899VtjRScPYLapaFXEzfbSp48dAZ Next: 2ydaG6f18zy2BHCq26Ury8P1L31WEr9xGarh7nDB14ba Diff:
OldNewDifferences
2929
3030 let n = fromBase58String("WAVES")
3131
32-func o () = "neutrino_asset_id"
32+let o = 86400000
33+
34+func p () = "neutrino_asset_id"
3335
3436
35-func p () = "bond_asset_id"
37+func q () = "bond_asset_id"
3638
3739
38-func q () = "surf_asset_id"
40+func r () = "surf_asset_id"
3941
4042
41-func r () = "balance_lock_"
43+func s () = "balance_lock_"
4244
4345
44-func s () = (r() + "waves")
46+func t () = (s() + "waves")
4547
4648
47-func t () = (r() + "neutrino")
49+func u () = (s() + "neutrino")
4850
4951
50-func u () = "min_waves_swap_amount"
52+func v () = "min_waves_swap_amount"
5153
5254
53-func v () = "min_neutrino_swap_amount"
55+func w () = "min_neutrino_swap_amount"
5456
5557
56-func w () = "wavesOut_swap_feePart"
58+func x () = "wavesOut_swap_feePart"
5759
5860
59-func x () = "neutrinoOut_swap_feePart"
61+func y () = "neutrinoOut_swap_feePart"
6062
6163
62-func y () = "%s%s__config__swapAParam"
64+func z () = "%s%s__config__swapAParam"
6365
6466
65-func z () = "%s%s__config__swapBParam"
67+func A () = "%s%s__config__swapBParam"
6668
6769
68-func A () = "%s%s__config__usdnSwapAParam"
70+func B () = "%s%s__config__usdnSwapAParam"
6971
7072
71-func B () = "%s%s__config__usdnSwapBParam"
73+func C () = "%s%s__config__usdnSwapBParam"
7274
7375
74-func C () = "%s__nsbtLockContract"
76+func D () = "%s__nsbtLockContract"
7577
7678
77-func D () = "%s__mathContract"
79+func E () = "%s__mathContract"
7880
7981
80-func E () = "balance_waves_lock_interval"
82+func F () = "balance_waves_lock_interval"
8183
8284
83-func F () = "balance_neutrino_lock_interval"
85+func G () = "balance_neutrino_lock_interval"
8486
8587
86-func G () = "price"
88+func H () = "price"
8789
8890
89-func H (I) = makeString(["%s%s%s", "paramByUser", I, "start"], j)
91+func I (J) = makeString(["%s%s%s", "paramByUser", J, "start"], j)
9092
9193
92-func J () = "%s__halfLife"
94+func K () = "%s__halfLife"
9395
9496
95-func K () = "%s__minLockAmount"
97+func L () = "%s__minLockAmount"
9698
9799
98-func L () = "min_waves_nsbt_buy"
100+func M () = "min_waves_nsbt_buy"
99101
100102
101-func M () = "min_nsbt_sell"
103+func N () = "min_nsbt_sell"
102104
103105
104-func N (O,P) = valueOrErrorMessage(getString(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
106+func O (P) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(P)], j)
105107
106108
107-func Q (O,P) = valueOrErrorMessage(getInteger(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
109+func Q (P) = ((P / o) * o)
108110
109111
110-func R (O,P) = valueOrErrorMessage(getBoolean(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
112+func R (S,T) = valueOrErrorMessage(getString(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
111113
112114
113-func S (T,U) = fraction(T, d, U)
115+func U (S,T) = valueOrErrorMessage(getInteger(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
114116
115117
116-func V (T,U) = fraction(T, U, d)
118+func V (S,T) = valueOrErrorMessage(getBoolean(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
117119
118120
119-func W (X) = {
120- let Y = X
121- if ($isInstanceOf(Y, "List[Any]"))
121+func W (S,T,X) = valueOrElse(getInteger(S, T), X)
122+
123+
124+func Y (S,T,X) = valueOrElse(getString(S, T), X)
125+
126+
127+func Z (aa,ab) = fraction(aa, d, ab)
128+
129+
130+func ac (aa,ab) = fraction(aa, ab, d)
131+
132+
133+func ad (ae) = {
134+ let af = ae
135+ if ($isInstanceOf(af, "List[Any]"))
122136 then {
123- let Z = Y
124- Z
137+ let ag = af
138+ ag
125139 }
126140 else throw("fail to cast into List[Any]")
127141 }
128142
129143
130-func aa (X) = {
131- let Y = X
132- if ($isInstanceOf(Y, "Int"))
144+func ah (ae) = {
145+ let af = ae
146+ if ($isInstanceOf(af, "Int"))
133147 then {
134- let ab = Y
135- ab
148+ let ai = af
149+ ai
136150 }
137151 else throw("fail to cast into Int")
138152 }
139153
140154
141-func ac (X) = {
142- let Y = X
143- if ($isInstanceOf(Y, "String"))
155+func aj (ae) = {
156+ let af = ae
157+ if ($isInstanceOf(af, "String"))
144158 then {
145- let ad = Y
146- ad
159+ let ak = af
160+ ak
147161 }
148162 else throw("fail to cast into String")
149163 }
150164
151165
152-func ae (X) = {
153- let Y = X
154- if ($isInstanceOf(Y, "(Int, Int)"))
166+func al (ae) = {
167+ let af = ae
168+ if ($isInstanceOf(af, "(Int, Int)"))
155169 then {
156- let af = Y
157- af
170+ let am = af
171+ am
158172 }
159173 else throw("fail to cast into Tuple2 ints")
160174 }
161175
162176
163-func ag (X) = {
164- let Y = X
165- if ($isInstanceOf(Y, "(Int, Int, Int, Int, Int, Int, Int)"))
177+func an (ae) = {
178+ let af = ae
179+ if ($isInstanceOf(af, "(Int, Int, Int, Int, Int, Int, Int)"))
166180 then {
167- let ah = Y
168- ah
181+ let ao = af
182+ ao
169183 }
170184 else throw("fail to cast into SwapParamsSTRUCT")
171185 }
172186
173187
174-func ai (X) = {
175- let Y = X
176- if (if ($isInstanceOf(Y, "(Int, Unit, Int, Int, Int, Int, Int)"))
188+func ap (ae) = {
189+ let af = ae
190+ if (if ($isInstanceOf(af, "(Int, Unit, Int, Int, Int, Int, Int)"))
177191 then true
178- else $isInstanceOf(Y, "(Int, ByteVector, Int, Int, Int, Int, Int)"))
192+ else $isInstanceOf(af, "(Int, ByteVector, Int, Int, Int, Int, Int)"))
179193 then {
180- let ah = Y
181- ah
194+ let ao = af
195+ ao
182196 }
183197 else throw("fail to cast into WithdrawResult")
184198 }
185199
186200
187-func aj (ak) = if ((0 > ak))
201+func aq (ar) = if ((0 > ar))
188202 then -1
189203 else {
190- let Y = blockInfoByHeight(ak)
191- if ($isInstanceOf(Y, "BlockInfo"))
204+ let af = blockInfoByHeight(ar)
205+ if ($isInstanceOf(af, "BlockInfo"))
192206 then {
193- let al = Y
194- al.timestamp
207+ let as = af
208+ as.timestamp
195209 }
196210 else -1
197211 }
198212
199213
200-func am (an,ao) = fraction(toBigInt(an), i, toBigInt(ao))
214+func at (au,av) = fraction(toBigInt(au), i, toBigInt(av))
201215
202216
203-func ap (X,aq) = toInt(fraction(X, toBigInt(aq), i))
217+func aw (ae,ax) = toInt(fraction(ae, toBigInt(ax), i))
204218
205219
206-let ar = 0
220+let ay = 0
207221
208-let as = 1
222+let az = 1
209223
210-let at = 2
224+let aA = 2
211225
212-let au = 3
226+let aB = 3
213227
214-let av = 4
228+let aC = 4
215229
216-let aw = 5
230+let aD = 5
217231
218-let ax = 6
232+let aE = 6
219233
220-let ay = 7
234+let aF = 7
221235
222-let az = 8
236+let aG = 8
223237
224-let aA = 9
238+let aH = 9
225239
226-let aB = 10
240+let aI = 10
227241
228-let aC = 11
242+let aJ = 11
229243
230-let aD = 1
244+let aK = 1
231245
232-let aE = 2
246+let aL = 2
233247
234-let aF = 3
248+let aM = 3
235249
236-let aG = 4
250+let aN = 4
237251
238-let aH = 5
252+let aO = 5
239253
240-let aI = 6
254+let aP = 6
241255
242-let aJ = 7
256+let aQ = 7
243257
244-let aK = 8
258+let aR = 8
245259
246-let aL = 9
260+let aS = 9
247261
248-let aM = 10
262+let aT = 10
249263
250-let aN = 11
264+let aU = 11
251265
252-let aO = 0
266+let aV = 0
253267
254-let aP = 1
268+let aW = 1
255269
256-let aQ = 2
270+let aX = 2
257271
258-let aR = 3
272+let aY = 3
259273
260-let aS = 4
274+let aZ = 4
261275
262-let aT = 5
276+let ba = 5
263277
264-let aU = 6
278+let bb = 6
265279
266-let aV = 7
280+let bc = 7
267281
268-let aW = 8
282+let bd = 8
269283
270-let aX = 9
284+let be = 9
271285
272-let aY = 10
286+let bf = 10
273287
274-func aZ () = "%s%s__config__controlAddress"
288+func bg () = "%s%s__config__controlAddress"
275289
276290
277-func ba () = "%s__controlConfig"
291+func bh () = "%s__controlConfig"
278292
279293
280-func bb (bc) = split(N(bc, ba()), j)
294+func bi (bj) = split(R(bj, bh()), j)
281295
282296
283-func bd (be,bf) = valueOrErrorMessage(addressFromString(be[bf]), ("Control cfg doesn't contain address at index " + toString(bf)))
297+func bk (bl,bm) = valueOrErrorMessage(addressFromString(bl[bm]), ("Control cfg doesn't contain address at index " + toString(bm)))
284298
285299
286-let bg = addressFromStringValue(valueOrElse(getString(this, aZ()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
300+let bn = addressFromStringValue(valueOrElse(getString(this, bg()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
287301
288-let be = bb(bg)
302+let bl = bi(bn)
289303
290-let bh = bd(be, aG)
304+let bo = bk(bl, aN)
291305
292-let bi = bd(be, aD)
306+let bp = bk(bl, aK)
293307
294-let bj = bd(be, aE)
308+let bq = bk(bl, aL)
295309
296-let bk = bd(be, aH)
310+let br = bk(bl, aO)
297311
298-let bl = bd(be, aF)
312+let bs = bk(bl, aM)
299313
300-let bm = bd(be, aK)
314+let bt = bk(bl, aR)
301315
302-let bn = bd(be, aM)
316+let bu = bk(bl, aT)
303317
304-let bo = bd(be, aN)
318+let bv = bk(bl, aU)
305319
306-let bp = N(bi, o())
320+let bw = R(bp, p())
307321
308-let bq = fromBase58String(bp)
322+let bx = fromBase58String(bw)
309323
310-let br = getStringValue(bi, p())
324+let by = getStringValue(bp, q())
311325
312-let bs = fromBase58String(br)
326+let bz = fromBase58String(by)
313327
314-let bt = getStringValue(bj, q())
328+let bA = getStringValue(bq, r())
315329
316-let bu = fromBase58String(bt)
330+let bB = fromBase58String(bA)
317331
318-@Callable(bv)
319-func reverseSwapLimitREADONLY (bw,bx) = {
320- let by = aa(W(invoke(bh, "calcNeutinoMetricsREADONLY", nil, nil))[az])
321- let bz = if ((0 >= bw))
332+func bC (bD,bE,bF) = {
333+ let bG = O(bE)
334+ let bH = Y(bD, bG, "%s%s__0__0")
335+ let bI = split(bH, j)
336+ let bJ = parseIntValue(bI[1])
337+ let bK = parseIntValue(bI[2])
338+ let bL = ah(bF[ay])
339+ let bM = fraction(bJ, bL, d)
340+ (bM + bK)
341+ }
342+
343+
344+func bN (bD,bO) = {
345+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
346+ let bP = Q(lastBlock.timestamp)
347+ let bQ = (bP - (o * (bO + 1)))
348+ let bR = (bP - o)
349+ let bS = bC(bu, bQ, bF)
350+ let bT = bC(bu, bR, bF)
351+ (bT - bS)
352+ }
353+
354+
355+func bU (bD,bV,bW,bX) = {
356+ let bY = W(bu, "%s%s__stats__activeTotalLocked", 1)
357+ let bZ = fraction(bY, bX, b)
358+ fraction((bW * b), 365, (bZ * bV))
359+ }
360+
361+
362+@Callable(ca)
363+func reverseSwapLimitREADONLY (cb,cc) = {
364+ let cd = ah(ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))[aG])
365+ let ce = if ((0 >= cb))
322366 then 0
323367 else {
324- let bA = toBigInt(Q(bh, if (bx)
325- then y()
326- else A()))
327- let bB = toBigInt(Q(bh, if (bx)
368+ let cf = toBigInt(U(bo, if (cc)
328369 then z()
329370 else B()))
330- let bC = if (bx)
331- then fraction(toBigInt(bw), f, bA)
332- else fraction(fraction(toBigInt(bw), f, bA), c, toBigInt(by))
333- let bD = fraction(h, h, bB)
334- toInt(pow(bC, 8, bD, 16, 6, CEILING))
371+ let cg = toBigInt(U(bo, if (cc)
372+ then A()
373+ else C()))
374+ let ch = if (cc)
375+ then fraction(toBigInt(cb), f, cf)
376+ else fraction(fraction(toBigInt(cb), f, cf), c, toBigInt(cd))
377+ let ci = fraction(h, h, cg)
378+ toInt(pow(ch, 8, ci, 16, 6, CEILING))
335379 }
336- $Tuple2(nil, bz)
380+ $Tuple2(nil, ce)
337381 }
338382
339383
340384
341-@Callable(bv)
342-func gnsbtInfoINTERNAL (bE,bF,bG) = {
343- let bH = if ((bE != ""))
344- then addressFromStringValue(bE)
385+@Callable(ca)
386+func gnsbtInfoINTERNAL (cj,ck,cl) = {
387+ let cm = if ((cj != ""))
388+ then addressFromStringValue(cj)
345389 else this
346- let bI = getIntegerValue(bg, G())
347- let bJ = bF
348- let bK = aa(invoke(bn, "gnsbtFromSurfSYSREADONLY", [bG], nil))
349- let bL = (bJ + bK)
350- let bM = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, 0], nil))
351- let bN = bM._3
352- let bO = bM._4
353- let bP = bM._5
354- let bQ = bM._6
355- let bR = bM._7
356- let bS = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, bL], nil))
357- let bT = bS._3
358- let bU = bS._4
359- let bV = bS._5
360- let bW = bS._6
361- let bX = bS._7
362- let bY = if ((bE != ""))
363- then assetBalance(bH, bs)
390+ let bL = getIntegerValue(bn, H())
391+ let cn = ck
392+ let co = ah(invoke(bu, "gnsbtFromSurfSYSREADONLY", [cl], nil))
393+ let cp = (cn + co)
394+ let cq = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, 0], nil))
395+ let cr = cq._3
396+ let cs = cq._4
397+ let ct = cq._5
398+ let cu = cq._6
399+ let cv = cq._7
400+ let cw = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, cp], nil))
401+ let cx = cw._3
402+ let cy = cw._4
403+ let cz = cw._5
404+ let cA = cw._6
405+ let cB = cw._7
406+ let cC = if ((cj != ""))
407+ then assetBalance(cm, bz)
364408 else 0
365- let bZ = if ((bE != ""))
366- then assetBalance(bH, bu)
409+ let cD = if ((cj != ""))
410+ then assetBalance(cm, bB)
367411 else 0
368- let ca = if ((bF >= 0))
369- then bF
412+ let cE = if ((ck >= 0))
413+ then ck
370414 else {
371- let cb = W(invoke(bm, "nsbtUnstakingSYSREADONLY", [bE, (-1 * bF)], nil))
372- let cc = aa(cb[2])
373- let cd = -(cc)
374- cd
415+ let cF = ad(invoke(bt, "nsbtUnstakingSYSREADONLY", [cj, (-1 * ck)], nil))
416+ let cG = ah(cF[2])
417+ let cH = -(cG)
418+ cH
375419 }
376- let ce = (bY - ca)
377- let cf = (bZ - bG)
378- let cg = W(invoke(bo, "gnsbtInfoSYSREADONLY", [bE, bF, bG], nil))
379- let ch = aa(cg[0])
380- let ci = aa(cg[1])
381- let cj = W(cg[2])
382- let ck = W(cg[3])
383- let cl = aa(cg[4])
384- let cm = aa(cg[5])
385- let cn = aa(cj[2])
386- let co = aa(ck[2])
387- let cp = (cn + bJ)
388- let cq = (co + bK)
389- let cr = aa(cj[3])
390- let cs = aa(ck[3])
391- let ct = 0
392- let cu = cs
393- let cv = (cr + bJ)
394- let cw = (cs + bK)
395- let cx = cw
396- let cy = fraction(cn, d, (cr + ct))
397- let cz = fraction(cp, d, (cv + ct))
398- let cA = fraction((cn + co), d, ((cr + ct) + cu))
399- let cB = fraction((cp + cq), d, ((cv + ct) + cx))
400- let cC = if ((cl == 0))
420+ let cI = (cC - cE)
421+ let cJ = (cD - cl)
422+ let cK = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [cj, ck, cl], nil))
423+ let cL = ah(cK[0])
424+ let cM = ah(cK[1])
425+ let cN = ad(cK[2])
426+ let cO = ad(cK[3])
427+ let cP = ah(cK[4])
428+ let cQ = ah(cK[5])
429+ let cR = ah(cN[2])
430+ let cS = ah(cO[2])
431+ let cT = (cR + cn)
432+ let cU = (cS + co)
433+ let cV = ah(cN[3])
434+ let cW = ah(cO[3])
435+ let cX = 0
436+ let cY = cW
437+ let cZ = (cV + cn)
438+ let da = (cW + co)
439+ let db = da
440+ let dc = fraction(cR, d, (cV + cX))
441+ let dd = fraction(cT, d, (cZ + cX))
442+ let de = fraction((cR + cS), d, ((cV + cX) + cY))
443+ let df = fraction((cT + cU), d, ((cZ + cX) + db))
444+ let dg = if ((cP == 0))
401445 then height
402- else cl
403- let cD = if ((cm == 0))
446+ else cP
447+ let dh = if ((cQ == 0))
404448 then height
405- else cm
406- $Tuple2(nil, [0, bY, bZ, ce, cf, cn, co, cp, cq, cr, cs, cv, cw, bR, bQ, bX, bW, bN, bT, cy, cz, cA, cB, cC, cD])
449+ else cQ
450+ $Tuple2(nil, [0, cC, cD, cI, cJ, cR, cS, cT, cU, cV, cW, cZ, da, cv, cu, cB, cA, cr, cx, dc, dd, de, df, dg, dh])
407451 }
408452
409453
410454
411-@Callable(bv)
412-func gnsbtInfoREADONLY (bE,bF,bG) = {
413- let cE = W(invoke(this, "gnsbtInfoINTERNAL", [bE, bF, bG], nil))
414- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(aa(cE[1])), toString(aa(cE[2])), toString(aa(cE[3])), toString(aa(cE[4])), toString(aa(cE[5])), toString(aa(cE[6])), toString(aa(cE[7])), toString(aa(cE[8])), toString(aa(cE[9])), toString(aa(cE[10])), toString(aa(cE[11])), toString(aa(cE[12])), toString(aa(cE[13])), toString(aa(cE[14])), toString(aa(cE[15])), toString(aa(cE[16])), toString(aa(cE[17])), toString(aa(cE[18])), toString(aa(cE[19])), toString(aa(cE[20])), toString(aa(cE[21])), toString(aa(cE[22])), toString(aa(cE[23])), toString(aa(cE[24]))], j))
455+@Callable(ca)
456+func gnsbtInfoREADONLY (cj,ck,cl) = {
457+ let di = ad(invoke(this, "gnsbtInfoINTERNAL", [cj, ck, cl], nil))
458+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(ah(di[1])), toString(ah(di[2])), toString(ah(di[3])), toString(ah(di[4])), toString(ah(di[5])), toString(ah(di[6])), toString(ah(di[7])), toString(ah(di[8])), toString(ah(di[9])), toString(ah(di[10])), toString(ah(di[11])), toString(ah(di[12])), toString(ah(di[13])), toString(ah(di[14])), toString(ah(di[15])), toString(ah(di[16])), toString(ah(di[17])), toString(ah(di[18])), toString(ah(di[19])), toString(ah(di[20])), toString(ah(di[21])), toString(ah(di[22])), toString(ah(di[23])), toString(ah(di[24]))], j))
415459 }
416460
417461
418462
419-@Callable(bv)
420-func rewardInfoREADONLY (bE) = {
421- let cF = W(invoke(bo, "gnsbtRewardsSYSREADONLY", [bE], nil))
422- let cG = ac(invoke(bl, "unclaimedRewardsREADONLY", [bE], nil))
423- $Tuple2(nil, makeString(["%s%s%s", ac(cF[0]), ac(cF[1]), cG], j))
463+@Callable(ca)
464+func rewardInfoREADONLY (cj) = {
465+ let dj = ad(invoke(bv, "gnsbtRewardsSYSREADONLY", [cj], nil))
466+ let dk = aj(invoke(bs, "unclaimedRewardsREADONLY", [cj], nil))
467+ $Tuple2(nil, makeString(["%s%s%s", aj(dj[0]), aj(dj[1]), dk], j))
424468 }
425469
426470
427471
428-@Callable(bv)
429-func mergeNsbtREADONLY (cH,cI) = {
430- let cj = W(invoke(bm, "nsbtStakingSYSREADONLY", [cH, cI], nil))
431- let cJ = aa(cj[0])
432- let cK = if ((0 >= cJ))
472+@Callable(ca)
473+func mergeNsbtREADONLY (dl,dm) = {
474+ let cN = ad(invoke(bt, "nsbtStakingSYSREADONLY", [dl, dm], nil))
475+ let dn = ah(cN[0])
476+ let do = if ((0 >= dn))
433477 then -1
434- else aa(cj[2])
435- let cL = aj(cK)
436- let cM = if ((0 >= cI))
437- then cK
478+ else ah(cN[2])
479+ let bQ = aq(do)
480+ let dp = if ((0 >= dm))
481+ then do
438482 else {
439- let cN = Q(bm, J())
440- aa(invoke(bh, "mergeStakesREADONLY", [cJ, cK, cI, height, cN], nil))
483+ let dq = U(bt, K())
484+ ah(invoke(bo, "mergeStakesREADONLY", [dn, do, dm, height, dq], nil))
441485 }
442- let cO = aj(cM)
443- $Tuple2(nil, makeString(["%d%d%d%d", toString(cK), toString(cL), toString(cM), toString(cO)], j))
486+ let dr = aq(dp)
487+ $Tuple2(nil, makeString(["%d%d%d%d", toString(do), toString(bQ), toString(dp), toString(dr)], j))
444488 }
445489
446490
447491
448-@Callable(bv)
449-func swapLimitCalculatorREADONLY (cP,cQ,cR) = {
450- let cS = if ((cP == ""))
492+@Callable(ca)
493+func swapLimitCalculatorREADONLY (ds,dt,du) = {
494+ let dv = if ((ds == ""))
451495 then 0
452- else aa(ag(invoke(bi, "swapParamsByUserSYSREADONLY", [cP, 0], nil))._4)
453- let cT = if ((cR == "WAVES"))
454- then V(cQ, getIntegerValue(bg, G()))
455- else cQ
456- let cU = aa(invoke(this, "reverseSwapLimitREADONLY", [cT, (cR == "WAVES")], nil))
457- let cV = (cU - cS)
458- $Tuple2(nil, makeString(["%s%s", toString(cS), toString(cV)], j))
496+ else ah(an(invoke(bp, "swapParamsByUserSYSREADONLY", [ds, 0], nil))._4)
497+ let dw = if ((du == "WAVES"))
498+ then ac(dt, getIntegerValue(bn, H()))
499+ else dt
500+ let dx = ah(invoke(this, "reverseSwapLimitREADONLY", [dw, (du == "WAVES")], nil))
501+ let dy = (dx - dv)
502+ $Tuple2(nil, makeString(["%s%s", toString(dv), toString(dy)], j))
459503 }
460504
461505
462506
463-@Callable(bv)
464-func swapInfoREADONLY (bE,T,cR) = {
465- let cW = W(invoke(bh, "calcNeutinoMetricsREADONLY", nil, nil))
466- let U = aa(cW[ar])
467- let bM = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, 0], nil))
468- let bN = bM._3
469- let bQ = bM._6
470- let bR = bM._7
471- let cX = fromBase58String(cR)
472- let cY = if ((cX == n))
507+@Callable(ca)
508+func swapInfoREADONLY (cj,aa,du) = {
509+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
510+ let ab = ah(bF[ay])
511+ let cq = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, 0], nil))
512+ let cr = cq._3
513+ let cu = cq._6
514+ let cv = cq._7
515+ let dz = fromBase58String(du)
516+ let dA = if ((dz == n))
473517 then "waves"
474- else if ((cX == bq))
518+ else if ((dz == bx))
475519 then "neutrino"
476- else throw(("Can't swap assetId=" + cR))
477- let cZ = ai(invoke(bi, "calcWithdrawResultSYSREADONLY", [cY, T, U], nil))
478- let da = cZ._1
479- let db = cZ._2
480- let dc = cZ._3
481- let dd = cZ._4
482- let de = cZ._5
483- let df = cZ._6
484- let dg = cZ._7
485- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(da), toString(dc), toString(df), toString(U), toString(bN), toString(bQ), toString(bR), toString(dd)], j))
520+ else throw(("Can't swap assetId=" + du))
521+ let dB = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dA, aa, ab], nil))
522+ let dC = dB._1
523+ let dD = dB._2
524+ let dE = dB._3
525+ let dF = dB._4
526+ let dG = dB._5
527+ let dH = dB._6
528+ let dI = dB._7
529+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dE), toString(dH), toString(ab), toString(cr), toString(cu), toString(cv), toString(dF)], j))
486530 }
487531
488532
489533
490-@Callable(bv)
491-func usdnStakingAprREADONLY (dh) = $Tuple2(nil, "%d__60000")
534+@Callable(ca)
535+func usdnStakingAprREADONLY (bO) = $Tuple2(nil, "%d__60000")
492536
493537
494538
495-@Callable(bv)
496-func surfStakingAprREADONLY (dh) = $Tuple2(nil, "%d__70000")
539+@Callable(ca)
540+func surfStakingAprREADONLY (bO) = $Tuple2(nil, "%d__70000")
497541
498542
499543
500-@Callable(bv)
501-func nsbtStakingAprREADONLY (dh) = $Tuple2(nil, "%d__90000")
544+@Callable(ca)
545+func nsbtStakingAprREADONLY (bO) = $Tuple2(nil, "%d__90000")
546+
547+
548+
549+@Callable(ca)
550+func usdnStakingAprTestREADONLY (bO) = {
551+ let dJ = 1
552+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
553+ let bL = ah(bF[ay])
554+ let dK = (6000 * d)
555+ let bW = fraction(dK, bL, d)
556+ let dL = bU(bs, dJ, bW, b)
557+ $Tuple2(nil, ("%d__" + toString(dL)))
558+ }
559+
560+
561+
562+@Callable(ca)
563+func surfStakingAprTestREADONLY (bO) = {
564+ let dJ = 3
565+ let bW = bN(bu, dJ)
566+ let dM = 86400
567+ let dL = bU(bu, dJ, bW, dM)
568+ $Tuple2(nil, ("%d__" + toString(dL)))
569+ }
570+
571+
572+
573+@Callable(ca)
574+func nsbtStakingAprTestREADONLY (bO) = {
575+ let dJ = 3
576+ let dN = 8000000
577+ let bW = bN(bt, dJ)
578+ let dL = bU(bt, dJ, bW, dN)
579+ $Tuple2(nil, ("%d__" + toString(dL)))
580+ }
502581
503582
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 271828182
55
66 let b = 1000000
77
88 let c = toBigInt(1000000)
99
1010 let d = 100000000
1111
1212 let e = toBigInt(100000000)
1313
1414 let f = toBigInt(10000000000)
1515
1616 let g = 1000000000000
1717
1818 let h = toBigInt(10000000000000000)
1919
2020 let i = toBigInt(1000000000000000000)
2121
2222 let j = "__"
2323
2424 let k = 5000
2525
2626 let l = 20000
2727
2828 let m = 100000
2929
3030 let n = fromBase58String("WAVES")
3131
32-func o () = "neutrino_asset_id"
32+let o = 86400000
33+
34+func p () = "neutrino_asset_id"
3335
3436
35-func p () = "bond_asset_id"
37+func q () = "bond_asset_id"
3638
3739
38-func q () = "surf_asset_id"
40+func r () = "surf_asset_id"
3941
4042
41-func r () = "balance_lock_"
43+func s () = "balance_lock_"
4244
4345
44-func s () = (r() + "waves")
46+func t () = (s() + "waves")
4547
4648
47-func t () = (r() + "neutrino")
49+func u () = (s() + "neutrino")
4850
4951
50-func u () = "min_waves_swap_amount"
52+func v () = "min_waves_swap_amount"
5153
5254
53-func v () = "min_neutrino_swap_amount"
55+func w () = "min_neutrino_swap_amount"
5456
5557
56-func w () = "wavesOut_swap_feePart"
58+func x () = "wavesOut_swap_feePart"
5759
5860
59-func x () = "neutrinoOut_swap_feePart"
61+func y () = "neutrinoOut_swap_feePart"
6062
6163
62-func y () = "%s%s__config__swapAParam"
64+func z () = "%s%s__config__swapAParam"
6365
6466
65-func z () = "%s%s__config__swapBParam"
67+func A () = "%s%s__config__swapBParam"
6668
6769
68-func A () = "%s%s__config__usdnSwapAParam"
70+func B () = "%s%s__config__usdnSwapAParam"
6971
7072
71-func B () = "%s%s__config__usdnSwapBParam"
73+func C () = "%s%s__config__usdnSwapBParam"
7274
7375
74-func C () = "%s__nsbtLockContract"
76+func D () = "%s__nsbtLockContract"
7577
7678
77-func D () = "%s__mathContract"
79+func E () = "%s__mathContract"
7880
7981
80-func E () = "balance_waves_lock_interval"
82+func F () = "balance_waves_lock_interval"
8183
8284
83-func F () = "balance_neutrino_lock_interval"
85+func G () = "balance_neutrino_lock_interval"
8486
8587
86-func G () = "price"
88+func H () = "price"
8789
8890
89-func H (I) = makeString(["%s%s%s", "paramByUser", I, "start"], j)
91+func I (J) = makeString(["%s%s%s", "paramByUser", J, "start"], j)
9092
9193
92-func J () = "%s__halfLife"
94+func K () = "%s__halfLife"
9395
9496
95-func K () = "%s__minLockAmount"
97+func L () = "%s__minLockAmount"
9698
9799
98-func L () = "min_waves_nsbt_buy"
100+func M () = "min_waves_nsbt_buy"
99101
100102
101-func M () = "min_nsbt_sell"
103+func N () = "min_nsbt_sell"
102104
103105
104-func N (O,P) = valueOrErrorMessage(getString(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
106+func O (P) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(P)], j)
105107
106108
107-func Q (O,P) = valueOrErrorMessage(getInteger(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
109+func Q (P) = ((P / o) * o)
108110
109111
110-func R (O,P) = valueOrErrorMessage(getBoolean(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
112+func R (S,T) = valueOrErrorMessage(getString(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
111113
112114
113-func S (T,U) = fraction(T, d, U)
115+func U (S,T) = valueOrErrorMessage(getInteger(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
114116
115117
116-func V (T,U) = fraction(T, U, d)
118+func V (S,T) = valueOrErrorMessage(getBoolean(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
117119
118120
119-func W (X) = {
120- let Y = X
121- if ($isInstanceOf(Y, "List[Any]"))
121+func W (S,T,X) = valueOrElse(getInteger(S, T), X)
122+
123+
124+func Y (S,T,X) = valueOrElse(getString(S, T), X)
125+
126+
127+func Z (aa,ab) = fraction(aa, d, ab)
128+
129+
130+func ac (aa,ab) = fraction(aa, ab, d)
131+
132+
133+func ad (ae) = {
134+ let af = ae
135+ if ($isInstanceOf(af, "List[Any]"))
122136 then {
123- let Z = Y
124- Z
137+ let ag = af
138+ ag
125139 }
126140 else throw("fail to cast into List[Any]")
127141 }
128142
129143
130-func aa (X) = {
131- let Y = X
132- if ($isInstanceOf(Y, "Int"))
144+func ah (ae) = {
145+ let af = ae
146+ if ($isInstanceOf(af, "Int"))
133147 then {
134- let ab = Y
135- ab
148+ let ai = af
149+ ai
136150 }
137151 else throw("fail to cast into Int")
138152 }
139153
140154
141-func ac (X) = {
142- let Y = X
143- if ($isInstanceOf(Y, "String"))
155+func aj (ae) = {
156+ let af = ae
157+ if ($isInstanceOf(af, "String"))
144158 then {
145- let ad = Y
146- ad
159+ let ak = af
160+ ak
147161 }
148162 else throw("fail to cast into String")
149163 }
150164
151165
152-func ae (X) = {
153- let Y = X
154- if ($isInstanceOf(Y, "(Int, Int)"))
166+func al (ae) = {
167+ let af = ae
168+ if ($isInstanceOf(af, "(Int, Int)"))
155169 then {
156- let af = Y
157- af
170+ let am = af
171+ am
158172 }
159173 else throw("fail to cast into Tuple2 ints")
160174 }
161175
162176
163-func ag (X) = {
164- let Y = X
165- if ($isInstanceOf(Y, "(Int, Int, Int, Int, Int, Int, Int)"))
177+func an (ae) = {
178+ let af = ae
179+ if ($isInstanceOf(af, "(Int, Int, Int, Int, Int, Int, Int)"))
166180 then {
167- let ah = Y
168- ah
181+ let ao = af
182+ ao
169183 }
170184 else throw("fail to cast into SwapParamsSTRUCT")
171185 }
172186
173187
174-func ai (X) = {
175- let Y = X
176- if (if ($isInstanceOf(Y, "(Int, Unit, Int, Int, Int, Int, Int)"))
188+func ap (ae) = {
189+ let af = ae
190+ if (if ($isInstanceOf(af, "(Int, Unit, Int, Int, Int, Int, Int)"))
177191 then true
178- else $isInstanceOf(Y, "(Int, ByteVector, Int, Int, Int, Int, Int)"))
192+ else $isInstanceOf(af, "(Int, ByteVector, Int, Int, Int, Int, Int)"))
179193 then {
180- let ah = Y
181- ah
194+ let ao = af
195+ ao
182196 }
183197 else throw("fail to cast into WithdrawResult")
184198 }
185199
186200
187-func aj (ak) = if ((0 > ak))
201+func aq (ar) = if ((0 > ar))
188202 then -1
189203 else {
190- let Y = blockInfoByHeight(ak)
191- if ($isInstanceOf(Y, "BlockInfo"))
204+ let af = blockInfoByHeight(ar)
205+ if ($isInstanceOf(af, "BlockInfo"))
192206 then {
193- let al = Y
194- al.timestamp
207+ let as = af
208+ as.timestamp
195209 }
196210 else -1
197211 }
198212
199213
200-func am (an,ao) = fraction(toBigInt(an), i, toBigInt(ao))
214+func at (au,av) = fraction(toBigInt(au), i, toBigInt(av))
201215
202216
203-func ap (X,aq) = toInt(fraction(X, toBigInt(aq), i))
217+func aw (ae,ax) = toInt(fraction(ae, toBigInt(ax), i))
204218
205219
206-let ar = 0
220+let ay = 0
207221
208-let as = 1
222+let az = 1
209223
210-let at = 2
224+let aA = 2
211225
212-let au = 3
226+let aB = 3
213227
214-let av = 4
228+let aC = 4
215229
216-let aw = 5
230+let aD = 5
217231
218-let ax = 6
232+let aE = 6
219233
220-let ay = 7
234+let aF = 7
221235
222-let az = 8
236+let aG = 8
223237
224-let aA = 9
238+let aH = 9
225239
226-let aB = 10
240+let aI = 10
227241
228-let aC = 11
242+let aJ = 11
229243
230-let aD = 1
244+let aK = 1
231245
232-let aE = 2
246+let aL = 2
233247
234-let aF = 3
248+let aM = 3
235249
236-let aG = 4
250+let aN = 4
237251
238-let aH = 5
252+let aO = 5
239253
240-let aI = 6
254+let aP = 6
241255
242-let aJ = 7
256+let aQ = 7
243257
244-let aK = 8
258+let aR = 8
245259
246-let aL = 9
260+let aS = 9
247261
248-let aM = 10
262+let aT = 10
249263
250-let aN = 11
264+let aU = 11
251265
252-let aO = 0
266+let aV = 0
253267
254-let aP = 1
268+let aW = 1
255269
256-let aQ = 2
270+let aX = 2
257271
258-let aR = 3
272+let aY = 3
259273
260-let aS = 4
274+let aZ = 4
261275
262-let aT = 5
276+let ba = 5
263277
264-let aU = 6
278+let bb = 6
265279
266-let aV = 7
280+let bc = 7
267281
268-let aW = 8
282+let bd = 8
269283
270-let aX = 9
284+let be = 9
271285
272-let aY = 10
286+let bf = 10
273287
274-func aZ () = "%s%s__config__controlAddress"
288+func bg () = "%s%s__config__controlAddress"
275289
276290
277-func ba () = "%s__controlConfig"
291+func bh () = "%s__controlConfig"
278292
279293
280-func bb (bc) = split(N(bc, ba()), j)
294+func bi (bj) = split(R(bj, bh()), j)
281295
282296
283-func bd (be,bf) = valueOrErrorMessage(addressFromString(be[bf]), ("Control cfg doesn't contain address at index " + toString(bf)))
297+func bk (bl,bm) = valueOrErrorMessage(addressFromString(bl[bm]), ("Control cfg doesn't contain address at index " + toString(bm)))
284298
285299
286-let bg = addressFromStringValue(valueOrElse(getString(this, aZ()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
300+let bn = addressFromStringValue(valueOrElse(getString(this, bg()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
287301
288-let be = bb(bg)
302+let bl = bi(bn)
289303
290-let bh = bd(be, aG)
304+let bo = bk(bl, aN)
291305
292-let bi = bd(be, aD)
306+let bp = bk(bl, aK)
293307
294-let bj = bd(be, aE)
308+let bq = bk(bl, aL)
295309
296-let bk = bd(be, aH)
310+let br = bk(bl, aO)
297311
298-let bl = bd(be, aF)
312+let bs = bk(bl, aM)
299313
300-let bm = bd(be, aK)
314+let bt = bk(bl, aR)
301315
302-let bn = bd(be, aM)
316+let bu = bk(bl, aT)
303317
304-let bo = bd(be, aN)
318+let bv = bk(bl, aU)
305319
306-let bp = N(bi, o())
320+let bw = R(bp, p())
307321
308-let bq = fromBase58String(bp)
322+let bx = fromBase58String(bw)
309323
310-let br = getStringValue(bi, p())
324+let by = getStringValue(bp, q())
311325
312-let bs = fromBase58String(br)
326+let bz = fromBase58String(by)
313327
314-let bt = getStringValue(bj, q())
328+let bA = getStringValue(bq, r())
315329
316-let bu = fromBase58String(bt)
330+let bB = fromBase58String(bA)
317331
318-@Callable(bv)
319-func reverseSwapLimitREADONLY (bw,bx) = {
320- let by = aa(W(invoke(bh, "calcNeutinoMetricsREADONLY", nil, nil))[az])
321- let bz = if ((0 >= bw))
332+func bC (bD,bE,bF) = {
333+ let bG = O(bE)
334+ let bH = Y(bD, bG, "%s%s__0__0")
335+ let bI = split(bH, j)
336+ let bJ = parseIntValue(bI[1])
337+ let bK = parseIntValue(bI[2])
338+ let bL = ah(bF[ay])
339+ let bM = fraction(bJ, bL, d)
340+ (bM + bK)
341+ }
342+
343+
344+func bN (bD,bO) = {
345+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
346+ let bP = Q(lastBlock.timestamp)
347+ let bQ = (bP - (o * (bO + 1)))
348+ let bR = (bP - o)
349+ let bS = bC(bu, bQ, bF)
350+ let bT = bC(bu, bR, bF)
351+ (bT - bS)
352+ }
353+
354+
355+func bU (bD,bV,bW,bX) = {
356+ let bY = W(bu, "%s%s__stats__activeTotalLocked", 1)
357+ let bZ = fraction(bY, bX, b)
358+ fraction((bW * b), 365, (bZ * bV))
359+ }
360+
361+
362+@Callable(ca)
363+func reverseSwapLimitREADONLY (cb,cc) = {
364+ let cd = ah(ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))[aG])
365+ let ce = if ((0 >= cb))
322366 then 0
323367 else {
324- let bA = toBigInt(Q(bh, if (bx)
325- then y()
326- else A()))
327- let bB = toBigInt(Q(bh, if (bx)
368+ let cf = toBigInt(U(bo, if (cc)
328369 then z()
329370 else B()))
330- let bC = if (bx)
331- then fraction(toBigInt(bw), f, bA)
332- else fraction(fraction(toBigInt(bw), f, bA), c, toBigInt(by))
333- let bD = fraction(h, h, bB)
334- toInt(pow(bC, 8, bD, 16, 6, CEILING))
371+ let cg = toBigInt(U(bo, if (cc)
372+ then A()
373+ else C()))
374+ let ch = if (cc)
375+ then fraction(toBigInt(cb), f, cf)
376+ else fraction(fraction(toBigInt(cb), f, cf), c, toBigInt(cd))
377+ let ci = fraction(h, h, cg)
378+ toInt(pow(ch, 8, ci, 16, 6, CEILING))
335379 }
336- $Tuple2(nil, bz)
380+ $Tuple2(nil, ce)
337381 }
338382
339383
340384
341-@Callable(bv)
342-func gnsbtInfoINTERNAL (bE,bF,bG) = {
343- let bH = if ((bE != ""))
344- then addressFromStringValue(bE)
385+@Callable(ca)
386+func gnsbtInfoINTERNAL (cj,ck,cl) = {
387+ let cm = if ((cj != ""))
388+ then addressFromStringValue(cj)
345389 else this
346- let bI = getIntegerValue(bg, G())
347- let bJ = bF
348- let bK = aa(invoke(bn, "gnsbtFromSurfSYSREADONLY", [bG], nil))
349- let bL = (bJ + bK)
350- let bM = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, 0], nil))
351- let bN = bM._3
352- let bO = bM._4
353- let bP = bM._5
354- let bQ = bM._6
355- let bR = bM._7
356- let bS = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, bL], nil))
357- let bT = bS._3
358- let bU = bS._4
359- let bV = bS._5
360- let bW = bS._6
361- let bX = bS._7
362- let bY = if ((bE != ""))
363- then assetBalance(bH, bs)
390+ let bL = getIntegerValue(bn, H())
391+ let cn = ck
392+ let co = ah(invoke(bu, "gnsbtFromSurfSYSREADONLY", [cl], nil))
393+ let cp = (cn + co)
394+ let cq = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, 0], nil))
395+ let cr = cq._3
396+ let cs = cq._4
397+ let ct = cq._5
398+ let cu = cq._6
399+ let cv = cq._7
400+ let cw = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, cp], nil))
401+ let cx = cw._3
402+ let cy = cw._4
403+ let cz = cw._5
404+ let cA = cw._6
405+ let cB = cw._7
406+ let cC = if ((cj != ""))
407+ then assetBalance(cm, bz)
364408 else 0
365- let bZ = if ((bE != ""))
366- then assetBalance(bH, bu)
409+ let cD = if ((cj != ""))
410+ then assetBalance(cm, bB)
367411 else 0
368- let ca = if ((bF >= 0))
369- then bF
412+ let cE = if ((ck >= 0))
413+ then ck
370414 else {
371- let cb = W(invoke(bm, "nsbtUnstakingSYSREADONLY", [bE, (-1 * bF)], nil))
372- let cc = aa(cb[2])
373- let cd = -(cc)
374- cd
415+ let cF = ad(invoke(bt, "nsbtUnstakingSYSREADONLY", [cj, (-1 * ck)], nil))
416+ let cG = ah(cF[2])
417+ let cH = -(cG)
418+ cH
375419 }
376- let ce = (bY - ca)
377- let cf = (bZ - bG)
378- let cg = W(invoke(bo, "gnsbtInfoSYSREADONLY", [bE, bF, bG], nil))
379- let ch = aa(cg[0])
380- let ci = aa(cg[1])
381- let cj = W(cg[2])
382- let ck = W(cg[3])
383- let cl = aa(cg[4])
384- let cm = aa(cg[5])
385- let cn = aa(cj[2])
386- let co = aa(ck[2])
387- let cp = (cn + bJ)
388- let cq = (co + bK)
389- let cr = aa(cj[3])
390- let cs = aa(ck[3])
391- let ct = 0
392- let cu = cs
393- let cv = (cr + bJ)
394- let cw = (cs + bK)
395- let cx = cw
396- let cy = fraction(cn, d, (cr + ct))
397- let cz = fraction(cp, d, (cv + ct))
398- let cA = fraction((cn + co), d, ((cr + ct) + cu))
399- let cB = fraction((cp + cq), d, ((cv + ct) + cx))
400- let cC = if ((cl == 0))
420+ let cI = (cC - cE)
421+ let cJ = (cD - cl)
422+ let cK = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [cj, ck, cl], nil))
423+ let cL = ah(cK[0])
424+ let cM = ah(cK[1])
425+ let cN = ad(cK[2])
426+ let cO = ad(cK[3])
427+ let cP = ah(cK[4])
428+ let cQ = ah(cK[5])
429+ let cR = ah(cN[2])
430+ let cS = ah(cO[2])
431+ let cT = (cR + cn)
432+ let cU = (cS + co)
433+ let cV = ah(cN[3])
434+ let cW = ah(cO[3])
435+ let cX = 0
436+ let cY = cW
437+ let cZ = (cV + cn)
438+ let da = (cW + co)
439+ let db = da
440+ let dc = fraction(cR, d, (cV + cX))
441+ let dd = fraction(cT, d, (cZ + cX))
442+ let de = fraction((cR + cS), d, ((cV + cX) + cY))
443+ let df = fraction((cT + cU), d, ((cZ + cX) + db))
444+ let dg = if ((cP == 0))
401445 then height
402- else cl
403- let cD = if ((cm == 0))
446+ else cP
447+ let dh = if ((cQ == 0))
404448 then height
405- else cm
406- $Tuple2(nil, [0, bY, bZ, ce, cf, cn, co, cp, cq, cr, cs, cv, cw, bR, bQ, bX, bW, bN, bT, cy, cz, cA, cB, cC, cD])
449+ else cQ
450+ $Tuple2(nil, [0, cC, cD, cI, cJ, cR, cS, cT, cU, cV, cW, cZ, da, cv, cu, cB, cA, cr, cx, dc, dd, de, df, dg, dh])
407451 }
408452
409453
410454
411-@Callable(bv)
412-func gnsbtInfoREADONLY (bE,bF,bG) = {
413- let cE = W(invoke(this, "gnsbtInfoINTERNAL", [bE, bF, bG], nil))
414- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(aa(cE[1])), toString(aa(cE[2])), toString(aa(cE[3])), toString(aa(cE[4])), toString(aa(cE[5])), toString(aa(cE[6])), toString(aa(cE[7])), toString(aa(cE[8])), toString(aa(cE[9])), toString(aa(cE[10])), toString(aa(cE[11])), toString(aa(cE[12])), toString(aa(cE[13])), toString(aa(cE[14])), toString(aa(cE[15])), toString(aa(cE[16])), toString(aa(cE[17])), toString(aa(cE[18])), toString(aa(cE[19])), toString(aa(cE[20])), toString(aa(cE[21])), toString(aa(cE[22])), toString(aa(cE[23])), toString(aa(cE[24]))], j))
455+@Callable(ca)
456+func gnsbtInfoREADONLY (cj,ck,cl) = {
457+ let di = ad(invoke(this, "gnsbtInfoINTERNAL", [cj, ck, cl], nil))
458+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(ah(di[1])), toString(ah(di[2])), toString(ah(di[3])), toString(ah(di[4])), toString(ah(di[5])), toString(ah(di[6])), toString(ah(di[7])), toString(ah(di[8])), toString(ah(di[9])), toString(ah(di[10])), toString(ah(di[11])), toString(ah(di[12])), toString(ah(di[13])), toString(ah(di[14])), toString(ah(di[15])), toString(ah(di[16])), toString(ah(di[17])), toString(ah(di[18])), toString(ah(di[19])), toString(ah(di[20])), toString(ah(di[21])), toString(ah(di[22])), toString(ah(di[23])), toString(ah(di[24]))], j))
415459 }
416460
417461
418462
419-@Callable(bv)
420-func rewardInfoREADONLY (bE) = {
421- let cF = W(invoke(bo, "gnsbtRewardsSYSREADONLY", [bE], nil))
422- let cG = ac(invoke(bl, "unclaimedRewardsREADONLY", [bE], nil))
423- $Tuple2(nil, makeString(["%s%s%s", ac(cF[0]), ac(cF[1]), cG], j))
463+@Callable(ca)
464+func rewardInfoREADONLY (cj) = {
465+ let dj = ad(invoke(bv, "gnsbtRewardsSYSREADONLY", [cj], nil))
466+ let dk = aj(invoke(bs, "unclaimedRewardsREADONLY", [cj], nil))
467+ $Tuple2(nil, makeString(["%s%s%s", aj(dj[0]), aj(dj[1]), dk], j))
424468 }
425469
426470
427471
428-@Callable(bv)
429-func mergeNsbtREADONLY (cH,cI) = {
430- let cj = W(invoke(bm, "nsbtStakingSYSREADONLY", [cH, cI], nil))
431- let cJ = aa(cj[0])
432- let cK = if ((0 >= cJ))
472+@Callable(ca)
473+func mergeNsbtREADONLY (dl,dm) = {
474+ let cN = ad(invoke(bt, "nsbtStakingSYSREADONLY", [dl, dm], nil))
475+ let dn = ah(cN[0])
476+ let do = if ((0 >= dn))
433477 then -1
434- else aa(cj[2])
435- let cL = aj(cK)
436- let cM = if ((0 >= cI))
437- then cK
478+ else ah(cN[2])
479+ let bQ = aq(do)
480+ let dp = if ((0 >= dm))
481+ then do
438482 else {
439- let cN = Q(bm, J())
440- aa(invoke(bh, "mergeStakesREADONLY", [cJ, cK, cI, height, cN], nil))
483+ let dq = U(bt, K())
484+ ah(invoke(bo, "mergeStakesREADONLY", [dn, do, dm, height, dq], nil))
441485 }
442- let cO = aj(cM)
443- $Tuple2(nil, makeString(["%d%d%d%d", toString(cK), toString(cL), toString(cM), toString(cO)], j))
486+ let dr = aq(dp)
487+ $Tuple2(nil, makeString(["%d%d%d%d", toString(do), toString(bQ), toString(dp), toString(dr)], j))
444488 }
445489
446490
447491
448-@Callable(bv)
449-func swapLimitCalculatorREADONLY (cP,cQ,cR) = {
450- let cS = if ((cP == ""))
492+@Callable(ca)
493+func swapLimitCalculatorREADONLY (ds,dt,du) = {
494+ let dv = if ((ds == ""))
451495 then 0
452- else aa(ag(invoke(bi, "swapParamsByUserSYSREADONLY", [cP, 0], nil))._4)
453- let cT = if ((cR == "WAVES"))
454- then V(cQ, getIntegerValue(bg, G()))
455- else cQ
456- let cU = aa(invoke(this, "reverseSwapLimitREADONLY", [cT, (cR == "WAVES")], nil))
457- let cV = (cU - cS)
458- $Tuple2(nil, makeString(["%s%s", toString(cS), toString(cV)], j))
496+ else ah(an(invoke(bp, "swapParamsByUserSYSREADONLY", [ds, 0], nil))._4)
497+ let dw = if ((du == "WAVES"))
498+ then ac(dt, getIntegerValue(bn, H()))
499+ else dt
500+ let dx = ah(invoke(this, "reverseSwapLimitREADONLY", [dw, (du == "WAVES")], nil))
501+ let dy = (dx - dv)
502+ $Tuple2(nil, makeString(["%s%s", toString(dv), toString(dy)], j))
459503 }
460504
461505
462506
463-@Callable(bv)
464-func swapInfoREADONLY (bE,T,cR) = {
465- let cW = W(invoke(bh, "calcNeutinoMetricsREADONLY", nil, nil))
466- let U = aa(cW[ar])
467- let bM = ag(invoke(bi, "swapParamsByUserSYSREADONLY", [bE, 0], nil))
468- let bN = bM._3
469- let bQ = bM._6
470- let bR = bM._7
471- let cX = fromBase58String(cR)
472- let cY = if ((cX == n))
507+@Callable(ca)
508+func swapInfoREADONLY (cj,aa,du) = {
509+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
510+ let ab = ah(bF[ay])
511+ let cq = an(invoke(bp, "swapParamsByUserSYSREADONLY", [cj, 0], nil))
512+ let cr = cq._3
513+ let cu = cq._6
514+ let cv = cq._7
515+ let dz = fromBase58String(du)
516+ let dA = if ((dz == n))
473517 then "waves"
474- else if ((cX == bq))
518+ else if ((dz == bx))
475519 then "neutrino"
476- else throw(("Can't swap assetId=" + cR))
477- let cZ = ai(invoke(bi, "calcWithdrawResultSYSREADONLY", [cY, T, U], nil))
478- let da = cZ._1
479- let db = cZ._2
480- let dc = cZ._3
481- let dd = cZ._4
482- let de = cZ._5
483- let df = cZ._6
484- let dg = cZ._7
485- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(da), toString(dc), toString(df), toString(U), toString(bN), toString(bQ), toString(bR), toString(dd)], j))
520+ else throw(("Can't swap assetId=" + du))
521+ let dB = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dA, aa, ab], nil))
522+ let dC = dB._1
523+ let dD = dB._2
524+ let dE = dB._3
525+ let dF = dB._4
526+ let dG = dB._5
527+ let dH = dB._6
528+ let dI = dB._7
529+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dC), toString(dE), toString(dH), toString(ab), toString(cr), toString(cu), toString(cv), toString(dF)], j))
486530 }
487531
488532
489533
490-@Callable(bv)
491-func usdnStakingAprREADONLY (dh) = $Tuple2(nil, "%d__60000")
534+@Callable(ca)
535+func usdnStakingAprREADONLY (bO) = $Tuple2(nil, "%d__60000")
492536
493537
494538
495-@Callable(bv)
496-func surfStakingAprREADONLY (dh) = $Tuple2(nil, "%d__70000")
539+@Callable(ca)
540+func surfStakingAprREADONLY (bO) = $Tuple2(nil, "%d__70000")
497541
498542
499543
500-@Callable(bv)
501-func nsbtStakingAprREADONLY (dh) = $Tuple2(nil, "%d__90000")
544+@Callable(ca)
545+func nsbtStakingAprREADONLY (bO) = $Tuple2(nil, "%d__90000")
546+
547+
548+
549+@Callable(ca)
550+func usdnStakingAprTestREADONLY (bO) = {
551+ let dJ = 1
552+ let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
553+ let bL = ah(bF[ay])
554+ let dK = (6000 * d)
555+ let bW = fraction(dK, bL, d)
556+ let dL = bU(bs, dJ, bW, b)
557+ $Tuple2(nil, ("%d__" + toString(dL)))
558+ }
559+
560+
561+
562+@Callable(ca)
563+func surfStakingAprTestREADONLY (bO) = {
564+ let dJ = 3
565+ let bW = bN(bu, dJ)
566+ let dM = 86400
567+ let dL = bU(bu, dJ, bW, dM)
568+ $Tuple2(nil, ("%d__" + toString(dL)))
569+ }
570+
571+
572+
573+@Callable(ca)
574+func nsbtStakingAprTestREADONLY (bO) = {
575+ let dJ = 3
576+ let dN = 8000000
577+ let bW = bN(bt, dJ)
578+ let dL = bU(bt, dJ, bW, dN)
579+ $Tuple2(nil, ("%d__" + toString(dL)))
580+ }
502581
503582

github/deemru/w8io/3ef1775 
221.82 ms