tx · 56SzMf9LWuB4o1CUSWaK3fpgpESzmVdRYBBiscuqq2yE

3MqzKJcjfKxqGWSA84WR4kQwZksM5vjxiFp:  -0.02200000 Waves

2023.05.02 09:51 [2559807] smart account 3MqzKJcjfKxqGWSA84WR4kQwZksM5vjxiFp > SELF 0.00000000 Waves

{ "type": 13, "id": "56SzMf9LWuB4o1CUSWaK3fpgpESzmVdRYBBiscuqq2yE", "fee": 2200000, "feeAssetId": null, "timestamp": 1683010336908, "version": 2, "chainId": 84, "sender": "3MqzKJcjfKxqGWSA84WR4kQwZksM5vjxiFp", "senderPublicKey": "bS6Cchmk25EdDcapkz8W5WkZgthTHHW6sSBbcidSrCb", "proofs": [ "RopuhtCcWAwAQbM2uufzDvPSmxF1RtJ3PEonuNPiaj7pSgowyXmqfpGY1x96PBk8pxPNsU7BXGBw3SGowZsy2Xu" ], "script": "base64:BgK1IggCEgkKBwEBAQEBCAESABIECgIICBIDCgEIEgQKAggIEgQKAggIIg9nZXRTdHJpbmdPckZhaWwiA2tleSIDU0VQIghCVUZTQ0FMRSIGc2NhbGU4Igh0aHJvd0VyciIDbXNnIghhc1N0cmluZyIDdmFsIgckbWF0Y2gwIgZ2YWxTdHIiHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0IhBwcmljZUFzc2V0QW1vdW50Ig5wcmljZUFzc2V0TVVMVCIFcHJpY2UiCXByaWNlTVVMVCIMaWRvQXNzZXRNVUxUIg9iUHJpY2VBc3NldE1VTFQiDWJJZG9Bc3NldE1VTFQiDmJQcmljZUFzc2V0QlVGIg9iQW1vdW50QXNzZXRCVUYiDklkeENmZ0lkb1N0YXJ0IhFJZHhDZmdJZG9EdXJhdGlvbiIQSWR4Q2ZnQ2xhaW1TdGFydCITSWR4Q2ZnQ2xhaW1EdXJhdGlvbiILSWR4Q2ZnUHJpY2UiD0lkeENmZ1ByaWNlTXVsdCIQSWR4Q2ZnSWRvQXNzZXRJZCISSWR4Q2ZnSWRvQXNzZXRNdWx0IhJJZHhDZmdQcmljZUFzc2V0SWQiFElkeENmZ1ByaWNlQXNzZXRNdWx0IhVJZHhDZmdNaW5JbnZlc3RBbW91bnQiDWZyb21hdENvbmZpZ1MiCGlkb1N0YXJ0IgtpZG9EdXJhdGlvbiIKY2xhaW1TdGFydCINY2xhaW1EdXJhdGlvbiIJcHJpY2VNdWx0IgxpZG9Bc3NldElkNTgiDGlkb0Fzc2V0TXVsdCIOcHJpY2VBc3NldElkNTgiDnByaWNlQXNzZXRNdWx0Ig9taW5JbnZlc3RBbW91bnQiE3RvdGFsSWRvQXNzZXRUb1NlbGwiDGZyb21hdENvbmZpZyIRSWR4SW52VG90YWxBbW91bnQiFUlkeEludlJlbWFpbmluZ0Ftb3VudCIdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiG0lkeEludkNsYWltZWRJZG9Bc3NldEFtb3VudCIXSWR4SW52TGFzdENsYWltZWRIZWlnaHQiD2Zvcm1hdEludmVzdG9yUyILdG90YWxBbW91bnQiD3JlbWFpbmluZ0Ftb3VudCIXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQiFWNsYWltZWRJZG9Bc3NldEFtb3VudCIRbGFzdENsYWltZWRIZWlnaHQiDmZvcm1hdEludmVzdG9yIhNmb3JtYXRIaXN0b3J5UmVjb3JkIg5pZG9Bc3NldEFtb3VudCIJa2V5Q29uZmlnIgtrZXlJbnZlc3RvciILdXNlckFkZHJlc3MiCWtleVRvdGFscyIZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZCIEdHlwZSIGdHhJZDU4IhRrZXlVU0ROQ2xhaW1EaXNhYmxlZCIVa2V5VVNETkNsYWltRW5kSGVpZ2h0Ig9rZXlQZXJpb2RMZW5ndGgiEGtleUN1cnJlbnRQZXJpb2QiFGtleVBlcmlvZFN0YXJ0SGVpZ2h0IglwZXJpb2ROdW0iEmtleVBlcmlvZEVuZEhlaWdodCIfa2V5VXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIXa2V5VG90YWxQZXJpb2RBbGxvd2FuY2UiB2Fzc2V0SWQiFmtleVVzZXJQZXJpb2RBbGxvd2FuY2UiHmtleVBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIda2V5UGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iG2tleVVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbCIOa2V5VXNkdEFzc2V0SWQiFGtleVByaWNlQXNzZXRCYWxhbmNlIgdhZGRyZXNzIhprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIXa2V5VG90YWxSZW1haW5pbmdBbW91bnQiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiD3JlYWRDb25maWdBcnJheSIjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkiCWN1c3RvbUtleSIYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0IhpyZWFkSW52ZXN0b3JBcnJheU9yRGVmYXVsdCIXcmVhZEludmVzdG9yQXJyYXlPckZhaWwiF2dldE1hbmFnZXJBZGRyZXNzT3JGYWlsIhVJZHhEaWZmVG90YWxJbmNyZW1lbnQiJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudCIiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudCIlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudCILVG90YWxzRW50cnkiCW9yaWdBcnJheSINaW5jcmVtZW50RGlmZiIUbmV3TGFzdENsYWltZWRIZWlnaHQiEXByaWNlQXNzZXRCYWxhbmNlIg5uZXdUb3RhbEFtb3VudCISbmV3UmVtYWluaW5nQW1vdW50IghjZmdBcnJheSIScHJpY2VBc3NldERlY2ltYWxzIiNwcmljZUFzc2V0QmFsYW5jZVByaWNlQXNzZXREZWNpbWFscyIabmV3Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiGG5ld0NsYWltZWRJZG9Bc3NldEFtb3VudCIHZW50cmllcyIEZGlmZiIXbmV3TG9naWNSZW1haW5pbmdBbW91bnQiG0ludmVzdE9wZXJhdGlvbkhpc3RvcnlFbnRyeSIEdHhJZCIaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkiDWludGVybmFsQ2xhaW0iEGNsYWltZWRBc3NldElkNTgiCGNsYWltRW5kIgppZG9Bc3NldElkIgxwcmljZUFzc2V0SWQiDXVzZXJBZGRyZXNzNTgiD29yaWdJbnZlc3RBcnJheSIRaW52ZXN0VG90YWxBbW91bnQiGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QIhdpbnZlc3RMYXN0Q2xhaW1lZEhlaWdodCIUbmV3Q2xhaW1QZXJpb2RIZWlnaHQiDmNsYWltaW5nQmxvY2tzIhhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQiFmNsYWltaW5nSWRvQXNzZXRBbW91bnQiBmlzVVNETiITaXNVU0ROQ2xhaW1EaXNhYmxlZCIGY2hlY2tzIg9pbnRlcm5hbENsYWltVjIiCW91dEFtb3VudCIZdG90YWxVc2VyQXZhaWxhYmxlVG9DbGFpbSIedG90YWxQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlIh11c2VyUGVyaW9kUHJpY2VBc3NldEFsbG93YW5jZSIMcGVyaW9kTGVuZ3RoIg1jdXJyZW50UGVyaW9kIht6ZXJvUGVyaW9kRW5kSGVpZ2hJc0RlZmluZWQiDSR0MDEzMDc3MTQ5NDciFWxhc3RQZXJpb2RTdGFydEhlaWdodCITbGFzdFBlcmlvZEVuZEhlaWdodCINJHQwMTMzMzcxNDA0MiIUdXBkYXRlZEN1cnJlbnRQZXJpb2QiC3BlcmlvZFN0YXJ0IhdibG9ja3NUb0xhc3RQZXJpb2RTdGFydCIJcGVyaW9kRW5kIhV6ZXJvUGVyaW9kU3RhcnRIZWlnaHQiE3plcm9QZXJpb2RFbmRIZWlnaHQiDSR0MDE0Mjk3MTQ2NzkiG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0iHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8iG3B1dE9uZVRrblYyUHJpY2VBc3NldEFtb3VudCINJHQwMTU3MDIxNTk1NSIBQCIFYm9udXMiCWZlZUFtb3VudCIIbHBBbW91bnQiC3VzZHRBc3NldElkIg0kdDAxNjAxNzE2MjM1IhRnZXRPbmVUa25WMkZlZUFtb3VudCIKdXNkdEFtb3VudCIaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8iE2VuZFBlcmlvZEJsb2Nrc0xlZnQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiAXMiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiBmlkb0VuZCIDcG10IgxpZG9Bc3NldEluZm8iDnByaWNlQXNzZXRJbmZvIg9vcmlnVG90YWxzQXJyYXkiCnRvdGFsc0RpZmYiDm1pbkl2ZXN0QW1vdW50IgpwbXRBc3NldElkIglwbXRBbW91bnQiEW9yaWdJbnZlc3RvckFycmF5IhNuZXdQcmljZVRvdGFsQW1vdW50IhZyZXF1aXJlZElkb0Fzc2V0QW1vdW50Ig9jYWxsZXJBZGRyZXNzNTgiEGNsYWltUmVzdWx0VHVwbGUiCm91dEFzc2V0SWQiGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmIh1jbGFpbWVkSWRvQXNzZXRBbW91bnRGcm9tRGlmZiINJHQwMjIwNzQyMjUxOCIidXBkYXRlZFBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIhdXBkYXRlZFBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltIg5ldmFsdWF0ZVJlc3VsdCIbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltIhBsYXN0Q2xhaW1FbnRyaWVzIhNpbnZlc3RvclRvdGFsQW1vdW50IhdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIZaW52ZXN0b3JQcmljZUFzc2V0QmFsYW5jZSIXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UiGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQiDm5ld0ludmVzdEFycmF5IgZ0b3RhbHMiEXRvdGFsc1RvdGFsQW1vdW50IhV0b3RhbHNSZW1haW5pbmdBbW91bnQiHXRvdGFsc0NsYWltZWRQcmljZUFzc2V0QW1vdW50Iht0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQiF3RvdGFsc0xhc3RDbGFpbWVkSGVpZ2h0IhhuZXdUb3RhbHNSZW1haW5pbmdBbW91bnQiDW5ld1RvdGFsQXJyYXkiF25ld1RvdGFsUmVtYWluaW5nQW1vdW50Ihh1cGRhdGVkUHJpY2VBc3NldEJhbGFuY2UiHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMiFGNoZWNrVW5jbGFpbWVkQXNzZXRzIghpbnZlc3RvciIcaW52ZXN0b3JSZW1haW5pbmdBbW91bnRDaGVjayILbmV3SW52ZXN0b3IiCW5ld1RvdGFscyIVYXZhaWxhYmxlVG9DbGFpbUFycmF5IhlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltIi5hdmFpbGFibGVJZG9BbW91bnRUb0NsYWltV2l0aFByaWNlQXNzZXRCYWxhbmNlIg0kdDAzMzc2OTM0MTgxIhZjdXJyZW50UGVyaW9kRW5kSGVpZ2h0Ihp1c2VyVG90YWxQcmljZUFzc2V0Q2xhaW1lZCIMcmVzdWx0U3RyaW5nIgxwZXJpb2RMZW5naHQiE3VzZXJQZXJpb2RBbGxvd2FuY2UiFHRvdGFsUGVyaW9kQWxsb3dhbmNlIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlDAQFhAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUBYgkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBYgIPIGlzIG5vdCBkZWZpbmVkAAFjAgJfXwABZAkAtgIBAICAkLu61q3wDQABZQCAwtcvAQFmAQFnCQACAQkAuQkCCQDMCAICCWlkby5yaWRlOgkAzAgCBQFnBQNuaWwCASABAWgBAWkEAWoFAWkDCQABAgUBagIGU3RyaW5nBAFrBQFqBQFrCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQFsBQFtAW4BbwFwAXEEAXIJALYCAQUBbgQBcwkAtgIBBQFxBAF0CQC8AgMJALYCAQUBbQUBZAUBcgQBdQkAvAIDBQF0CQC2AgEFAXAJALYCAQUBbwkAoAMBCQC8AgMFAXUJALYCAQUBcQUBZAABdgABAAF3AAIAAXgAAwABeQAEAAF6AAUAAUEABgABQgAHAAFDAAgAAUQACQABRQAKAAFGAAsBAUcMAUgBSQFKAUsBbwFMAU0BTgFPAVABUQFSCQC5CQIJAMwIAgIYJWQlZCVkJWQlZCVkJXMlZCVzJWQlZCVkCQDMCAIFAUgJAMwIAgUBSQkAzAgCBQFKCQDMCAIFAUsJAMwIAgUBbwkAzAgCBQFMCQDMCAIFAU0JAMwIAgUBTgkAzAgCBQFPCQDMCAIFAVAJAMwIAgUBUQkAzAgCBQFSBQNuaWwFAWMBAVMMAUgBSQFKAUsBbwFMAU0BTgFPAVABUQFSCQEBRwwJAKQDAQUBSAkApAMBBQFJCQCkAwEFAUoJAKQDAQUBSwkApAMBBQFvCQCkAwEFAUwFAU0JAKQDAQUBTgUBTwkApAMBBQFQCQCkAwEFAVEJAKQDAQUBUgABVAABAAFVAAIAAVYAAwABVwAEAAFYAAUBAVkFAVoCYWECYWICYWMCYWQJALkJAgkAzAgCAgolZCVkJWQlZCVkCQDMCAIFAVoJAMwIAgUCYWEJAMwIAgUCYWIJAMwIAgUCYWMJAMwIAgUCYWQFA25pbAUBYwECYWUFAVoCYWECYWICYWMCYWQJAQFZBQkApAMBBQFaCQCkAwEFAmFhCQCkAwEFAmFiCQCkAwEFAmFjCQCkAwEFAmFkAQJhZgIBbQJhZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQFtCQDMCAIJAKQDAQUCYWcFA25pbAUBYwECYWgAAgolc19fY29uZmlnAQJhaQECYWoJAKwCAgIEJXNfXwUCYWoBAmFrAAIKJXNfX3RvdGFscwECYWwDAmFtAmFqAmFuCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYW0JAMwIAgUCYWoJAMwIAgUCYW4FA25pbAUBYwECYW8AAhUlc19fdXNkbkNsYWltRGlzYWJsZWQBAmFwAAIWJXNfX3VzZG5DbGFpbUVuZEhlaWdodAECYXEACQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFAWMBAmFyAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUBYwECYXMBAmF0CQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFwZXJpb2RTdGFydEhlaWdodAkAzAgCCQCkAwEFAmF0BQNuaWwFAWMBAmF1AQJhdAkAuQkCCQDMCAICBCVzJXMJAMwIAgIPcGVyaW9kRW5kSGVpZ2h0CQDMCAIJAKQDAQUCYXQFA25pbAUBYwECYXYACQC5CQIJAMwIAgICJXMJAMwIAgIcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwUDbmlsBQFjAQJhdwECYXgJALkJAgkAzAgCAgQlcyVzCQDMCAICFHRvdGFsUGVyaW9kQWxsb3dhbmNlCQDMCAIFAmF4BQNuaWwFAWMBAmF5AQJheAkAuQkCCQDMCAICBCVzJXMJAMwIAgITdXNlclBlcmlvZEFsbG93YW5jZQkAzAgCBQJheAUDbmlsBQFjAQJhegICYXgCYXQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQDMCAIFAmF4CQDMCAIJAKQDAQUCYXQFA25pbAUBYwECYUEDAmF4AmF0AmFqCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0JAMwIAgUCYXgJAMwIAgkApAMBBQJhdAkAzAgCBQJhagUDbmlsBQFjAQJhQgAJALkJAgkAzAgCAgIlcwkAzAgCAhh1c2R0UHJpY2VBc3NldFN0YWJsZVBvb2wFA25pbAUBYwECYUMACQC5CQIJAMwIAgICJXMJAMwIAgILdXNkdEFzc2V0SWQFA25pbAUBYwECYUQBAmFFCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFwcmljZUFzc2V0QmFsYW5jZQkAzAgCBQJhRQUDbmlsBQFjAQJhRgECYUUJALkJAgkAzAgCAgQlcyVzCQDMCAICF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQDMCAIFAmFFBQNuaWwFAWMBAmFHAAkAuQkCCQDMCAICAiVzCQDMCAICFHRvdGFsUmVtYWluaW5nQW1vdW50BQNuaWwFAWMBAmFIAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFJAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFKAAkAtQkCCQEBYQEJAQJhaAAFAWMBAmFLAQJhTAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFAmFMCQEBWQUCATACATACATACATACATAFAWMBAmFNAAkBAmFLAQkBAmFrAAECYU4BAmFqCQECYUsBCQECYWkBBQJhagECYU8BAmFqCQC1CQIJAQFhAQkBAmFpAQUCYWoFAWMBAmFQAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFJAAACYVEAAAACYVIAAQACYVMAAgACYVQAAwECYVUFAWICYVYCYVcCYVgCYVkEAVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVAQCYWEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVQQCYWIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVgQCYWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVwQCYWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBWAQCYVoJAGQCBQFaCQCRAwIFAmFXBQJhUQQCYmEJAGQCBQJhYQkAkQMCBQJhVwUCYVIEAmJiCQECYUoABAFPCQCRAwIFAmJiBQFEBAJiYwgJAQV2YWx1ZQEJAOwHAQkA2QQBBQFPCGRlY2ltYWxzBAJiZAkAawMFAmFZBQFlCQBsBgAKAAAFAmJjAAAAAAUERE9XTgQCYmUJAGUCCQBkAgUCYWIJAJEDAgUCYVcFAmFTBQJhWQQCYmYJAGQCCQBkAgUCYWMJAJEDAgUCYVcFAmFUBQJiZAQCYmcDCQBmAgAABQJiYQQCYmgJAGUCCQBlAgUCYVoFAmJlBQJiZgQCYmkDCQBmAgAABQJiaAAABQJiaAkBC1N0cmluZ0VudHJ5AgUBYgkBAmFlBQUCYVoFAmJpBQJiZQUCYmYFAmFYCQELU3RyaW5nRW50cnkCBQFiCQECYWUFBQJhWgUCYmEFAmJlBQJiZgUCYVgFAmJnAQJiagQCYWoBbQJhZwJiawkBC1N0cmluZ0VudHJ5AgkBAmFsAwIGaW52ZXN0BQJhagkA2AQBBQJiawkBAmFmAgUBbQUCYWcBAmJsBAJhagFtAmFnAmJrCQELU3RyaW5nRW50cnkCCQECYWwDAgVjbGFpbQUCYWoJANgEAQUCYmsJAQJhZgIFAW0FAmFnAQJibQMCYm4CYWoCYmsEAmJiCQECYUoABAFKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXgEAUsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBeQQCYm8JAGQCBQFKBQFLBAFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXoEAUwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBQQQBTQkAkQMCBQJiYgUBQgQCYnAJANkEAQUBTQQBTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQFDBAFPCQCRAwIFAmJiBQFEBAJicQkA2QQBBQFPBAFQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAUUEAmJyCQClCAEFAmFqBAJicwkBAmFPAQUCYnIEAmJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAVQEAmJ1CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAVgEAmJ2AwkAZwIFAUoFAmJ1BQFKBQJidQQCYncDCQBmAgUGaGVpZ2h0BQJibwUCYm8DCQBmAgUBSgUGaGVpZ2h0BQFKBQZoZWlnaHQEAmJ4CQBlAgUCYncFAmJ2BAJieQkAawMFAmJ0BQJieAUBSwQCYnoJAQFsBQUCYnkFAVAFAW8FAUwFAU4EAmJBCQAAAgUCYm4FAU8EAmJCCQELdmFsdWVPckVsc2UCCQCgCAEJAQJhbwAHBAJiQwkAzAgCAwkBASEBAwUCYkEFAmJCBwYJAAIBAhZVU0ROIGNsYWltIGlzIGRpc2FibGVkBQNuaWwDCQAAAgUCYkMFAmJDAwkAAAIFAmJuBQFPCQCYCgYJAMwIAgAACQDMCAIJAQEtAQUCYnkJAMwIAgUCYnkJAMwIAgAABQNuaWwFAmJ5BQJicQUCYnMFAmJ3CQDMCAIFAmJ5CQDMCAIFAmJ6BQNuaWwDCQAAAgUCYm4FAU0JAJgKBgkAzAgCAAAJAMwIAgkBAS0BBQJieQkAzAgCAAAJAMwIAgUCYnoFA25pbAUCYnoFAmJwBQJicwUCYncJAMwIAgUCYnkJAMwIAgUCYnoFA25pbAkAAgEJAKwCAgIVdW5zdXBwb3J0ZWQgYXNzZXRJZDogBQJibgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYkQEAU8CYnICYkUCYkYEAmJHCQEFdmFsdWUBCQCfCAEJAQJhdwEFAU8EAmJICQEFdmFsdWUBCQCfCAEJAQJheQEFAU8EAmJJCQEFdmFsdWUBCQCfCAEJAQJhcQAEAmJKCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhcgAAAAQCYksJAQlpc0RlZmluZWQBCQCfCAEJAQJhdQEAAAQCYkwDCQBmAgUCYkoAAAQCYk0JAQV2YWx1ZQEJAJ8IAQkBAmFzAQUCYkoEAmJOCQEFdmFsdWUBCQCfCAEJAQJhdQEFAmJKBAJiTwMJAGYCBQZoZWlnaHQFAmJOBAJiUAkAZAIFAmJKAAEEAmJRAwkAZgIFBmhlaWdodAkAZAIFAmJOBQJiSQQCYlIJAGoCCQBlAgUGaGVpZ2h0BQJiTgUCYkkDCQAAAgUCYlIAAAkAZAIJAGUCBQZoZWlnaHQFAmJJAAEJAGUCBQZoZWlnaHQFAmJSCQBkAgUCYk4AAQQCYlMJAGUCCQBkAgUCYlEFAmJJAAEJAJUKAwUCYlAFAmJRBQJiUwkAlQoDBQJiSgUCYk0FAmJOBAJiUAgFAmJPAl8xBAJiUQgFAmJPAl8yBAJiUwgFAmJPAl8zCQCVCgMFAmJQBQJiUQUCYlMDBQJiSwQCYlQJAQV2YWx1ZQEJAJ8IAQkBAmFzAQAABAJiVQkBBXZhbHVlAQkAnwgBCQECYXUBAAAEAmJWAwkAZgIFBmhlaWdodAUCYlUEAmJQCQBkAgUCYkoAAQQCYlEJAGQCBQJiVQABBAJiUwkAZQIJAGQCBQJiUQUCYkkAAQkAlQoDBQJiUAUCYlEFAmJTCQCVCgMFAmJKBQJiVAUCYlUEAmJQCAUCYlYCXzEEAmJRCAUCYlYCXzIEAmJTCAUCYlYCXzMJAJUKAwUCYlAFAmJRBQJiUwkAlQoDBQJiSgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMBBQJiSgUGaGVpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhdQEFAmJKCQBlAgkAZAIFBmhlaWdodAUCYkkAAQQCYlAIBQJiTAJfMQQCYlEIBQJiTAJfMgQCYlMIBQJiTAJfMwQCYlcJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmF6AgUBTwUCYlAFAmJHBAJiWAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUEDBQFPBQJiUAUCYnIFAmJIBAJhWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUQBBQJicgAABAJiWQkAlwMBCQDMCAIJAGQCBQJiRQUCYVkJAMwIAgUCYlcJAMwIAgUCYlgFA25pbAQCYloJAQV2YWx1ZQEJAJ8IAQkBAmF2AAQCY2EFAWUEAmNiCgACY2MJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBCQECYUIAAiFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkJAMwIAgUCY2EJAMwIAgUBTwUDbmlsBQNuaWwDCQABAgUCY2MCDyhJbnQsIEludCwgSW50KQUCY2MJAAIBCQCsAgIJAAMBBQJjYwIkIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50LCBJbnQpAwkAAAIFAmNiBQJjYgQCY2QIBQJjYgJfMwQCY2UIBQJjYgJfMgQCY2YIBQJjYgJfMQQCY2cJAQV2YWx1ZQEJAKIIAQkBAmFDAAQCY2gKAAJjYwkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEJAQJhQgACE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCY2cJAMwIAgUCY2YFA25pbAUDbmlsAwkAAQIFAmNjAgooSW50LCBJbnQpBQJjYwkAAgEJAKwCAgkAAwEFAmNjAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmNoBQJjaAQCY2kIBQJjaAJfMgQCY2oIBQJjaAJfMQQCY2sJAGsDBQJjYQUBZQUCY2oEAmNsCQBlAgUCYlMFBmhlaWdodAkAnAoKBQJiWQUCYlcFAmJYBQJiRgUCYloFAmNrBQJjbAUCYlAFAmJRBQJiUwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY20ABAJjbgkBAmFQAAQBagkAnQgCBQJjbgkBAmFIAAMJAAECBQFqAgZTdHJpbmcEAmNvBQFqCQDZBAEFAmNvAwkAAQIFAWoCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECY3ABAmNxBAJjcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAFqCQECY20AAwkAAQIFAWoCCkJ5dGVWZWN0b3IEAmNzBQFqAwkAAAIIBQJjcQ9jYWxsZXJQdWJsaWNLZXkFAmNzBgUCY3IDCQABAgUBagIEVW5pdAMJAAACCAUCY3EGY2FsbGVyBQR0aGlzBgUCY3IJAAIBAgtNYXRjaCBlcnJvcgYCY3EBC2NvbnN0cnVjdG9yBwFIAUkBSgFLAW8BTwFRBAFMCQBoAgkAaAIAZADoBwDoBwQCY3QJAGQCBQFIBQFJAwkBCWlzRGVmaW5lZAEJAKIIAQkBAmFoAAkAAgECE2FscmVhZHkgaW5pdGlhbGl6ZWQDCQECIT0CAiMzUE1FSEx4MWo2emVyYXJaVFlmc0dxRGVlWnFRb01weHE1UwkApQgBCAUCY3EGY2FsbGVyCQACAQIObm90IGF1dGhvcml6ZWQDCQECIT0CCQCQAwEIBQJjcQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAMJAGcCBQJjdAUBSgkAAgECJmNsYWltU3RhcnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gaWRvRW5kBAJjdQkBBXZhbHVlAQkAkQMCCAUCY3EIcGF5bWVudHMAAAQCYnAJAQV2YWx1ZQEIBQJjdQdhc3NldElkBAJjdgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJwAhtmYWlsIHRvIGxvYWQgaWRvIGFzc2V0IGluZm8EAU0JANgEAQUCYnAEAU4JAGwGAAoAAAgFAmN2CGRlY2ltYWxzAAAAAAUERE9XTgQCYnEJANkEAQUBTwQCY3cJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQIdZmFpbCB0byBsb2FkIHByaWNlIGFzc2V0IGluZm8EAVAJAGwGAAoAAAgFAmN3CGRlY2ltYWxzAAAAAAUERE9XTgQCY3gJAQJhTQAEAmN5CQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaAAJAQFTDAUBSAUBSQUBSgUBSwUBbwUBTAUBTQUBTgUBTwUBUAUBUQgFAmN1BmFtb3VudAkAzAgCCQECYVUFCQECYWsABQJjeAUCY3kFAUoAAAUDbmlsAmNxAQZpbnZlc3QABAJiYgkBAmFKAAQBSAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQF2BAFJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXcEAmN0CQBkAgUBSAUBSQQBSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQF4BAFLCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXkEAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBegQBTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQFBBAFNCQCRAwIFAmJiBQFCBAJicAkA2QQBBQFNBAFOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAUMEAU8JAJEDAgUCYmIFAUQEAmJxCQDZBAEFAU8EAVAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBRQQCY3oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBRgQCYWoJAKUIAQgFAmNxBmNhbGxlcgMJAGYCBQFIBQZoZWlnaHQJAAIBAhxpZG8gaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAUCY3QJAAIBAhppZG8gaGFzIGJlZW4gYWxyZWFkeSBlbmRlZAMJAQIhPQIJAJADAQgFAmNxCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCY3UJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAEAmNBCQEFdmFsdWUBCAUCY3UHYXNzZXRJZAQCY0IIBQJjdQZhbW91bnQDCQECIT0CBQJjQQUCYnEJAAIBCQCsAgIJAKwCAgIaaW52YWxpZCBwYXltZW50IGFzc2V0IGlkOiAJANgEAQUCY0ECDCBpcyBleHBlY3RlZAQCY0MJAQJhTgEFAmFqBAJjeAkBAmFNAAQCY0QJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY3gFAVQFAmNCBAJjRQkAaAIFAmNEAGQDCQBmAgUCY0UJAPAHAgUEdGhpcwUCYnAJAAIBAjlJRE8gYXNzZXQgaGFzIGJlZW4gLSBzb2xkIGNvbnNpZGVyIHRvIHVzZSBzbWFsbGVyIHBheW1lbnQEAmN5CQDMCAIFAmNCCQDMCAIFAmNCCQDMCAIAAAkAzAgCAAAFA25pbAkAzAgCCQECYVUFCQECYWkBBQJhagUCY0MFAmN5BQFKAAAJAMwIAgkBAmFVBQkBAmFrAAUCY3gFAmN5BQFKAAAJAMwIAgkBAmJqBAUCYWoFAmNCAAAIBQJjcQ10cmFuc2FjdGlvbklkBQNuaWwCY3EBBWNsYWltAgJibgJicgQCY0YJAKUIAQgFAmNxBmNhbGxlcgMJAQIhPQIFAmJyBQJjRgkAAgECDm5vdCBhdXRob3JpemVkBAJiYgkBAmFKAAQBTwkAkQMCBQJiYgUBRAQCY0cJAQJibQMFAmJuCAUCY3EGY2FsbGVyCAUCY3ENdHJhbnNhY3Rpb25JZAQCY3kIBQJjRwJfMQQCYkUIBQJjRwJfMgQCY0gIBQJjRwJfMwQCYnMIBQJjRwJfNAQCYncIBQJjRwJfNQQCY0kJAJEDAgUCY3kFAmFTBAJjSgkAkQMCBQJjeQUCYVQEAmFZCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRAEFAmJyAAAEAmJjCAkBBXZhbHVlAQkA7AcBCQDZBAEFAU8IZGVjaW1hbHMEAmJnAwkAAAIFAmJuBQFPBAJjSwkBAmJEBAUBTwUCYnIFAmJFCQCRAwIFAmN5BQJhUwQCYlkIBQJjSwJfMQQCYlcIBQJjSwJfMgQCYlgIBQJjSwJfMwQCYkYIBQJjSwJfNAQCYloIBQJjSwJfNQQCY2sIBQJjSwJfNgQCY2wIBQJjSwJfNwQCYlAIBQJjSwJfOAQCYlEIBQJjSwJfOQQCYlMIBQJjSwNfMTAEAmJDCQDMCAIDCQBmAgUCYlgAAAYJAQFmAQI6dW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2VyIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkAzAgCAwkAZgIFAmJXAAAGCQEBZgECO3VuYXZhaWxhYmxlIHRvIGNsYWltIGJlY2F1c2UgdG90YWwgcGVyaW9kIGFsbG93YW5jZSByZWFjaGVkCQDMCAIDCQBmAgUCYlkAAAYJAQFmAQIQbm90aGluZyB0byBjbGFpbQkAzAgCAwkAZgIFAmJaBQJjawYJAQFmAQJPdW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2RuIHByaWNlIGxvd2VyIHRoYW4gdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwUDbmlsAwkAAAIFAmJDBQJiQwQCY0wJAGUCBQJiVwUCYlkEAmNNCQBlAgUCYlgFAmJZBAJiZwMJAGYCBQJhWQUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNxBmNhbGxlcgUCYlkFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUQBBQJicgkAZQIFAmFZBQJiWQUDbmlsBAJjTgkAtQkCCQEBaAEJAPwHBAUEdGhpcwINY2xhaW1SRUFET05MWQkAzAgCBQFPCQDMCAIFAmJyBQNuaWwFA25pbAUBYwMJAAACBQJjTgUCY04EAmNPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY04AAwQCY1ADCQAAAgUCY08FAmJZBAJjUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFUBAJjUgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFVBAJjUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFWBAJjVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFXBAJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFYBAJjVgkAzAgCCQCkAwEFAmNRCQDMCAICATAJAMwIAgkApAMBBQJjUwkAzAgCCQCkAwEFAmNUCQDMCAIJAKQDAQUCY1UFA25pbAQCY1cJAQJhTQAEAmNYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVQEAmNZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVUEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVYEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVcEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVgEAmRjCQBlAgUCY1kFAmNSBAJkZAkAzAgCCQCkAwEFAmNYCQDMCAIJAKQDAQUCZGMJAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIFA25pbAQCZGUJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRwAAAAUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFGAQUCYnIJAKQDAQUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFHAAkApAMBBQJkZQkAzAgCCQECYVUFCQECYWkBBQJicgUCY1YFAmN5BQJidwAACQDMCAIJAQJhVQUJAQJhawAFAmRkBQJjeQUCYncAAAUDbmlsCQDMCAIJAQJhVQUJAQJhaQEFAmJyBQJicwUCY3kFAmJ3AAAJAMwIAgkBAmFVBQkBAmFrAAkBAmFNAAUCY3kFAmJ3AAAFA25pbAQCZGYJAGUCCQBkAgUCYVkFAmJFBQJiWQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjcQZjYWxsZXIFAmJZBQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFEAQUCYnIFAmRmBQNuaWwFAmNQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFyAAUCYlAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcwEFAmJQBQJiUQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF1AQUCYlAFAmJTCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXoCBQFPBQJiUAUCY0wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhQQMFAU8FAmJQBQJicgUCY00JAMwIAgkBAmJsBAUCYnIFAmJZBQJjSggFAmNxDXRyYW5zYWN0aW9uSWQFA25pbAUCYmcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRnCQBrAwUCYVkFAWUJAGwGAAoAAAUCYmMAAAAABQRET1dOCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNxBmNhbGxlcgkAZAIFAmJFBQJkZwUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhRAEFAmJyAAAJAMwIAgkBAmFVBQkBAmFpAQUCYnIFAmJzBQJjeQUCYncFAmFZCQDMCAIJAQJhVQUJAQJhawAJAQJhTQAFAmN5BQJidwUCYVkJAMwIAgkBAmJsBAUCYnIFAmNJCQBkAgUCY0oFAmRnCAUCY3ENdHJhbnNhY3Rpb25JZAUDbmlsBQR1bml0BQJiZwJjcQESY2xlYW5SZW1haW5nQW1vdW50AQJicgQBTwkAkQMCCQECYUoABQFEBAJjTgkAtQkCCQEBaAEJAPwHBAUEdGhpcwINY2xhaW1SRUFET05MWQkAzAgCBQFPCQDMCAIFAmJyBQNuaWwFA25pbAUBYwMJAAACBQJjTgUCY04EAmNPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY04AAgQCZGgDCQAAAgUCY08AAAYJAQFmAQIadXNlciBoYXZlIHVuY2xhaW1lZCBhc3NldHMDCQAAAgUCZGgFAmRoBAJkaQkAtQkCCQEFdmFsdWUBCQCiCAEJAQJhaQEFAmJyBQFjBAJjUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFUBAJjUgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFVBAJjUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFWBAJjVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFXBAJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFYBAJkagMJAQIhPQIFAmNSAAAGCQEBZgECJGludmVzdG9yUmVtYWluaW5nQW1vdW50IGFscmVhZHkgemVybwMJAAACBQJkagUCZGoEAmRrCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNRCQDMCAICATAJAMwIAgkApAMBBQJjUwkAzAgCCQCkAwEFAmNUCQDMCAIJAKQDAQUCY1UFA25pbAUBYwQCY1cJALUJAgkBBXZhbHVlAQkAoggBCQECYWsABQFjBAJjWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFUBAJjWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFVBAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFWBAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFXBAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFYBAJkbAkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgkApAMBBQJjWAkAzAgCCQCkAwEJAGUCBQJjWQUCY1IJAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIFA25pbAUBYwQCZGUJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRwAAAAUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFGAQUCYnIJAKQDAQUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFHAAkApAMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkBBQJicgUCZGsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCZGwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQENY2xhaW1SRUFET05MWQICYm4CYnIEAmNHCQECYm0DBQJibgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYnIJANkEAQIABAJjeQgFAmNHAl8xBAJiRQgFAmNHAl8yBAJjSAgFAmNHAl8zBAJicwgFAmNHAl80BAJidwgFAmNHAl81BAJkbQgFAmNHAl82BAJjTwkAkQMCBQJkbQAABAJkbgkAkQMCBQJkbQABCQCUCgIFA25pbAkAuQkCCQDMCAICBiVzJWQlZAkAzAgCBQJicgkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQUCZG4FA25pbAUBYwJjcQEPY2xhaW1WMlJFQURPTkxZAgJibgJicgQCY0cJAQJibQMFAmJuCQERQGV4dHJOYXRpdmUoMTA2MikBBQJicgkA2QQBAgAEAmN5CAUCY0cCXzEEAmJFCAUCY0cCXzIEAmNICAUCY0cCXzMEAmJzCAUCY0cCXzQEAmJ3CAUCY0cCXzUEAmRtCAUCY0cCXzYEAmNPCQCRAwIFAmRtAAAEAmRuCQCRAwIFAmRtAAEEAmJiCQECYUoABAFPCQCRAwIFAmJiBQFEBAJhWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUQBBQJicgAABAJkZwkAaAIFAmFZAGQEAmRvCQBkAgUCZG4FAmRnBAJkcAkBAmJEBAUBTwUCYnIFAmJFCQCRAwIFAmN5BQJhUwQCYlkIBQJkcAJfMQQCYlcIBQJkcAJfMgQCYlgIBQJkcAJfMwQCYkYIBQJkcAJfNAQCYloIBQJkcAJfNQQCY2sIBQJkcAJfNgQCY2wIBQJkcAJfNwQCYlAIBQJkcAJfOAQCYlEIBQJkcAJfOQQCYlMIBQJkcANfMTAEAmRxCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhdQEFAmJQAAAEAmRyCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJAQJhTwEFAmJyBQFWBQJhWQQCZHMDCQBmAgUGaGVpZ2h0BQJkcQQCZHQJAQV2YWx1ZQEJAJ8IAQkBAmFxAAQCZHUJAQV2YWx1ZQEJAJ8IAQkBAmF5AQUBTwQCZHYJAQV2YWx1ZQEJAJ8IAQkBAmF3AQUBTwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRvCQDMCAIJAKQDAQUCZHUJAMwIAgkApAMBBQJkdgkAzAgCCQCkAwEFAmJaCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJkdAkAzAgCCQCkAwEFAmRyBQNuaWwFAWMJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWgkAzAgCCQCkAwEFAmNrCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJkcgUDbmlsBQFjCQCUCgIFA25pbAUCZHMBAmR3AQJkeAAEAmR5BAFqCQECY20AAwkAAQIFAWoCCkJ5dGVWZWN0b3IEAmNzBQFqBQJjcwMJAAECBQFqAgRVbml0CAUCZHcPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmR3CWJvZHlCeXRlcwkAkQMCCAUCZHcGcHJvb2ZzAAAFAmR5VOajIA==", "height": 2559807, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HNAZjp4N6gzhHXAGGALQMBHMmVB7DdPFK7Wkkc7pC3En Next: none Diff:
OldNewDifferences
143143 func aH () = "%s__managerPublicKey"
144144
145145
146-func aI () = "%s__pendingManagerPublicKey"
146+func aI () = "%s__managerVaultAddress"
147147
148148
149149 func aJ () = split(a(ah()), c)
161161 func aO (aj) = split(a(ai(aj)), c)
162162
163163
164-let aP = 0
164+func aP () = addressFromStringValue(getStringValue(aI()))
165165
166-let aQ = 1
167166
168-let aR = 2
167+let aQ = 0
169168
170-let aS = 3
169+let aR = 1
171170
172-func aT (b,aU,aV,aW,aX) = {
173- let Z = parseIntValue(aU[T])
174- let aa = parseIntValue(aU[U])
175- let ab = parseIntValue(aU[V])
176- let ac = parseIntValue(aU[W])
177- let ad = parseIntValue(aU[X])
178- let aY = (Z + aV[aP])
179- let aZ = (aa + aV[aQ])
180- let ba = aJ()
181- let O = ba[D]
182- let bb = value(assetInfo(fromBase58String(O))).decimals
183- let bc = fraction(aX, e, pow(10, 0, bb, 0, 0, DOWN))
184- let bd = ((ab + aV[aR]) - aX)
185- let be = ((ac + aV[aS]) + bc)
186- let bf = if ((0 > aZ))
171+let aS = 2
172+
173+let aT = 3
174+
175+func aU (b,aV,aW,aX,aY) = {
176+ let Z = parseIntValue(aV[T])
177+ let aa = parseIntValue(aV[U])
178+ let ab = parseIntValue(aV[V])
179+ let ac = parseIntValue(aV[W])
180+ let ad = parseIntValue(aV[X])
181+ let aZ = (Z + aW[aQ])
182+ let ba = (aa + aW[aR])
183+ let bb = aJ()
184+ let O = bb[D]
185+ let bc = value(assetInfo(fromBase58String(O))).decimals
186+ let bd = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
187+ let be = ((ab + aW[aS]) - aY)
188+ let bf = ((ac + aW[aT]) + bd)
189+ let bg = if ((0 > ba))
187190 then {
188- let bg = ((aY - bd) - be)
189- let bh = if ((0 > bg))
191+ let bh = ((aZ - be) - bf)
192+ let bi = if ((0 > bh))
190193 then 0
191- else bg
192- StringEntry(b, ae(aY, bh, bd, be, aW))
194+ else bh
195+ StringEntry(b, ae(aZ, bi, be, bf, aX))
193196 }
194- else StringEntry(b, ae(aY, aZ, bd, be, aW))
195- bf
197+ else StringEntry(b, ae(aZ, ba, be, bf, aX))
198+ bg
196199 }
197200
198201
199-func bi (aj,m,ag,bj) = StringEntry(al("invest", aj, toBase58String(bj)), af(m, ag))
202+func bj (aj,m,ag,bk) = StringEntry(al("invest", aj, toBase58String(bk)), af(m, ag))
200203
201204
202-func bk (aj,m,ag,bj) = StringEntry(al("claim", aj, toBase58String(bj)), af(m, ag))
205+func bl (aj,m,ag,bk) = StringEntry(al("claim", aj, toBase58String(bk)), af(m, ag))
203206
204207
205-func bl (bm,aj,bj) = {
206- let ba = aJ()
207- let J = parseIntValue(ba[x])
208- let K = parseIntValue(ba[y])
209- let bn = (J + K)
210- let o = parseIntValue(ba[z])
211- let L = parseIntValue(ba[A])
212- let M = ba[B]
213- let bo = fromBase58String(M)
214- let N = parseIntValue(ba[C])
215- let O = ba[D]
216- let bp = fromBase58String(O)
217- let P = parseIntValue(ba[E])
218- let bq = toString(aj)
219- let br = aO(bq)
220- let bs = parseIntValue(br[T])
221- let bt = parseIntValue(br[X])
222- let bu = if ((J >= bt))
208+func bm (bn,aj,bk) = {
209+ let bb = aJ()
210+ let J = parseIntValue(bb[x])
211+ let K = parseIntValue(bb[y])
212+ let bo = (J + K)
213+ let o = parseIntValue(bb[z])
214+ let L = parseIntValue(bb[A])
215+ let M = bb[B]
216+ let bp = fromBase58String(M)
217+ let N = parseIntValue(bb[C])
218+ let O = bb[D]
219+ let bq = fromBase58String(O)
220+ let P = parseIntValue(bb[E])
221+ let br = toString(aj)
222+ let bs = aO(br)
223+ let bt = parseIntValue(bs[T])
224+ let bu = parseIntValue(bs[X])
225+ let bv = if ((J >= bu))
223226 then J
224- else bt
225- let bv = if ((height > bn))
226- then bn
227+ else bu
228+ let bw = if ((height > bo))
229+ then bo
227230 else if ((J > height))
228231 then J
229232 else height
230- let bw = (bv - bu)
231- let bx = fraction(bs, bw, K)
232- let by = l(bx, P, o, L, N)
233- let bz = (bm == O)
234- let bA = valueOrElse(getBoolean(ao()), false)
235- let bB = [if (!(if (bz)
236- then bA
233+ let bx = (bw - bv)
234+ let by = fraction(bt, bx, K)
235+ let bz = l(by, P, o, L, N)
236+ let bA = (bn == O)
237+ let bB = valueOrElse(getBoolean(ao()), false)
238+ let bC = [if (!(if (bA)
239+ then bB
237240 else false))
238241 then true
239242 else throw("USDN claim is disabled")]
240- if ((bB == bB))
241- then if ((bm == O))
242- then $Tuple6([0, -(bx), bx, 0], bx, bp, br, bv, [bx, by])
243- else if ((bm == M))
244- then $Tuple6([0, -(bx), 0, by], by, bo, br, bv, [bx, by])
245- else throw(("unsupported assetId: " + bm))
243+ if ((bC == bC))
244+ then if ((bn == O))
245+ then $Tuple6([0, -(by), by, 0], by, bq, bs, bw, [by, bz])
246+ else if ((bn == M))
247+ then $Tuple6([0, -(by), 0, bz], bz, bp, bs, bw, [by, bz])
248+ else throw(("unsupported assetId: " + bn))
246249 else throw("Strict value is not equal to itself.")
247250 }
248251
249252
250-func bC (O,bq,bD,bE) = {
251- let bF = value(getInteger(aw(O)))
252- let bG = value(getInteger(ay(O)))
253- let bH = value(getInteger(aq()))
254- let bI = valueOrElse(getInteger(ar()), 0)
255- let bJ = isDefined(getInteger(au(0)))
256- let bK = if ((bI > 0))
253+func bD (O,br,bE,bF) = {
254+ let bG = value(getInteger(aw(O)))
255+ let bH = value(getInteger(ay(O)))
256+ let bI = value(getInteger(aq()))
257+ let bJ = valueOrElse(getInteger(ar()), 0)
258+ let bK = isDefined(getInteger(au(0)))
259+ let bL = if ((bJ > 0))
257260 then {
258- let bL = value(getInteger(as(bI)))
259- let bM = value(getInteger(au(bI)))
260- let bN = if ((height > bM))
261+ let bM = value(getInteger(as(bJ)))
262+ let bN = value(getInteger(au(bJ)))
263+ let bO = if ((height > bN))
261264 then {
262- let bO = (bI + 1)
263- let bP = if ((height > (bM + bH)))
265+ let bP = (bJ + 1)
266+ let bQ = if ((height > (bN + bI)))
264267 then {
265- let bQ = ((height - bM) % bH)
266- if ((bQ == 0))
267- then ((height - bH) + 1)
268- else (height - bQ)
268+ let bR = ((height - bN) % bI)
269+ if ((bR == 0))
270+ then ((height - bI) + 1)
271+ else (height - bR)
269272 }
270- else (bM + 1)
271- let bR = ((bP + bH) - 1)
272- $Tuple3(bO, bP, bR)
273+ else (bN + 1)
274+ let bS = ((bQ + bI) - 1)
275+ $Tuple3(bP, bQ, bS)
273276 }
274- else $Tuple3(bI, bL, bM)
275- let bO = bN._1
276- let bP = bN._2
277- let bR = bN._3
278- $Tuple3(bO, bP, bR)
277+ else $Tuple3(bJ, bM, bN)
278+ let bP = bO._1
279+ let bQ = bO._2
280+ let bS = bO._3
281+ $Tuple3(bP, bQ, bS)
279282 }
280- else if (bJ)
283+ else if (bK)
281284 then {
282- let bS = value(getInteger(as(0)))
283- let bT = value(getInteger(au(0)))
284- let bU = if ((height > bT))
285+ let bT = value(getInteger(as(0)))
286+ let bU = value(getInteger(au(0)))
287+ let bV = if ((height > bU))
285288 then {
286- let bO = (bI + 1)
287- let bP = (bT + 1)
288- let bR = ((bP + bH) - 1)
289- $Tuple3(bO, bP, bR)
289+ let bP = (bJ + 1)
290+ let bQ = (bU + 1)
291+ let bS = ((bQ + bI) - 1)
292+ $Tuple3(bP, bQ, bS)
290293 }
291- else $Tuple3(bI, bS, bT)
292- let bO = bU._1
293- let bP = bU._2
294- let bR = bU._3
295- $Tuple3(bO, bP, bR)
294+ else $Tuple3(bJ, bT, bU)
295+ let bP = bV._1
296+ let bQ = bV._2
297+ let bS = bV._3
298+ $Tuple3(bP, bQ, bS)
296299 }
297- else $Tuple3(bI, valueOrElse(getInteger(as(bI)), height), valueOrElse(getInteger(au(bI)), ((height + bH) - 1)))
298- let bO = bK._1
299- let bP = bK._2
300- let bR = bK._3
301- let bV = valueOrElse(getInteger(az(O, bO)), bF)
302- let bW = valueOrElse(getInteger(aA(O, bO, bq)), bG)
303- let aX = valueOrElse(getInteger(aD(bq)), 0)
304- let bX = min([(bD + aX), bV, bW])
305- let bY = value(getInteger(av()))
306- let bZ = e
307- let ca = {
308- let cb = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bZ, O], nil)
309- if ($isInstanceOf(cb, "(Int, Int, Int)"))
310- then cb
311- else throw(($getType(cb) + " couldn't be cast to (Int, Int, Int)"))
300+ else $Tuple3(bJ, valueOrElse(getInteger(as(bJ)), height), valueOrElse(getInteger(au(bJ)), ((height + bI) - 1)))
301+ let bP = bL._1
302+ let bQ = bL._2
303+ let bS = bL._3
304+ let bW = valueOrElse(getInteger(az(O, bP)), bG)
305+ let bX = valueOrElse(getInteger(aA(O, bP, br)), bH)
306+ let aY = valueOrElse(getInteger(aD(br)), 0)
307+ let bY = min([(bE + aY), bW, bX])
308+ let bZ = value(getInteger(av()))
309+ let ca = e
310+ let cb = {
311+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [ca, O], nil)
312+ if ($isInstanceOf(cc, "(Int, Int, Int)"))
313+ then cc
314+ else throw(($getType(cc) + " couldn't be cast to (Int, Int, Int)"))
312315 }
313- if ((ca == ca))
316+ if ((cb == cb))
314317 then {
315- let cc = ca._3
316- let cd = ca._2
317- let ce = ca._1
318- let cf = value(getString(aC()))
319- let cg = {
320- let cb = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cf, ce], nil)
321- if ($isInstanceOf(cb, "(Int, Int)"))
322- then cb
323- else throw(($getType(cb) + " couldn't be cast to (Int, Int)"))
318+ let cd = cb._3
319+ let ce = cb._2
320+ let cf = cb._1
321+ let cg = value(getString(aC()))
322+ let ch = {
323+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cg, cf], nil)
324+ if ($isInstanceOf(cc, "(Int, Int)"))
325+ then cc
326+ else throw(($getType(cc) + " couldn't be cast to (Int, Int)"))
324327 }
325- if ((cg == cg))
328+ if ((ch == ch))
326329 then {
327- let ch = cg._2
328- let ci = cg._1
329- let cj = fraction(bZ, e, ci)
330- let ck = (bR - height)
331- $Tuple10(bX, bV, bW, bE, bY, cj, ck, bO, bP, bR)
330+ let ci = ch._2
331+ let cj = ch._1
332+ let ck = fraction(ca, e, cj)
333+ let cl = (bS - height)
334+ $Tuple10(bY, bW, bX, bF, bZ, ck, cl, bP, bQ, bS)
332335 }
333336 else throw("Strict value is not equal to itself.")
334337 }
336339 }
337340
338341
339-func cl () = {
340- let j = getString(aH())
342+func cm () = {
343+ let cn = aP()
344+ let j = getString(cn, aH())
341345 if ($isInstanceOf(j, "String"))
342346 then {
343- let cm = j
344- fromBase58String(cm)
347+ let co = j
348+ fromBase58String(co)
345349 }
346350 else if ($isInstanceOf(j, "Unit"))
347351 then unit
349353 }
350354
351355
352-func cn () = {
353- let j = getString(aI())
354- if ($isInstanceOf(j, "String"))
356+func cp (cq) = {
357+ let cr = throw("Permission denied")
358+ let j = cm()
359+ if ($isInstanceOf(j, "ByteVector"))
355360 then {
356- let cm = j
357- fromBase58String(cm)
361+ let cs = j
362+ if ((cq.callerPublicKey == cs))
363+ then true
364+ else cr
358365 }
359366 else if ($isInstanceOf(j, "Unit"))
360- then unit
367+ then if ((cq.caller == this))
368+ then true
369+ else cr
361370 else throw("Match error")
362371 }
363372
364373
365-func co (cp) = {
366- let cq = throw("Permission denied")
367- let j = cl()
368- if ($isInstanceOf(j, "ByteVector"))
369- then {
370- let cr = j
371- if ((cp.callerPublicKey == cr))
372- then true
373- else cq
374- }
375- else if ($isInstanceOf(j, "Unit"))
376- then if ((cp.caller == this))
377- then true
378- else cq
379- else throw("Match error")
380- }
381-
382-
383-@Callable(cp)
374+@Callable(cq)
384375 func constructor (H,I,J,K,o,O,Q) = {
385376 let L = ((100 * 1000) * 1000)
386- let cs = (H + I)
377+ let ct = (H + I)
387378 if (isDefined(getString(ah())))
388379 then throw("already initialized")
389- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cp.caller)))
380+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cq.caller)))
390381 then throw("not authorized")
391- else if ((size(cp.payments) != 1))
382+ else if ((size(cq.payments) != 1))
392383 then throw("exactly 1 payment must be attached")
393- else if ((cs >= J))
384+ else if ((ct >= J))
394385 then throw("claimStart must be greater than idoEnd")
395386 else {
396- let ct = value(cp.payments[0])
397- let bo = value(ct.assetId)
398- let cu = valueOrErrorMessage(assetInfo(bo), "fail to load ido asset info")
399- let M = toBase58String(bo)
400- let N = pow(10, 0, cu.decimals, 0, 0, DOWN)
401- let bp = fromBase58String(O)
402- let cv = valueOrErrorMessage(assetInfo(bp), "fail to load price asset info")
403- let P = pow(10, 0, cv.decimals, 0, 0, DOWN)
404- let cw = aM()
405- let cx = [0, 0, 0, 0]
406-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, ct.amount)), aT(ak(), cw, cx, J, 0)]
387+ let cu = value(cq.payments[0])
388+ let bp = value(cu.assetId)
389+ let cv = valueOrErrorMessage(assetInfo(bp), "fail to load ido asset info")
390+ let M = toBase58String(bp)
391+ let N = pow(10, 0, cv.decimals, 0, 0, DOWN)
392+ let bq = fromBase58String(O)
393+ let cw = valueOrErrorMessage(assetInfo(bq), "fail to load price asset info")
394+ let P = pow(10, 0, cw.decimals, 0, 0, DOWN)
395+ let cx = aM()
396+ let cy = [0, 0, 0, 0]
397+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aU(ak(), cx, cy, J, 0)]
407398 }
408399 }
409400
410401
411402
412-@Callable(cp)
403+@Callable(cq)
413404 func invest () = {
414- let ba = aJ()
415- let H = parseIntValue(ba[v])
416- let I = parseIntValue(ba[w])
417- let cs = (H + I)
418- let J = parseIntValue(ba[x])
419- let K = parseIntValue(ba[y])
420- let o = parseIntValue(ba[z])
421- let L = parseIntValue(ba[A])
422- let M = ba[B]
423- let bo = fromBase58String(M)
424- let N = parseIntValue(ba[C])
425- let O = ba[D]
426- let bp = fromBase58String(O)
427- let P = parseIntValue(ba[E])
428- let cy = parseIntValue(ba[F])
429- let aj = toString(cp.caller)
405+ let bb = aJ()
406+ let H = parseIntValue(bb[v])
407+ let I = parseIntValue(bb[w])
408+ let ct = (H + I)
409+ let J = parseIntValue(bb[x])
410+ let K = parseIntValue(bb[y])
411+ let o = parseIntValue(bb[z])
412+ let L = parseIntValue(bb[A])
413+ let M = bb[B]
414+ let bp = fromBase58String(M)
415+ let N = parseIntValue(bb[C])
416+ let O = bb[D]
417+ let bq = fromBase58String(O)
418+ let P = parseIntValue(bb[E])
419+ let cz = parseIntValue(bb[F])
420+ let aj = toString(cq.caller)
430421 if ((H > height))
431422 then throw("ido has not been started yet")
432- else if ((height > cs))
423+ else if ((height > ct))
433424 then throw("ido has been already ended")
434- else if ((size(cp.payments) != 1))
425+ else if ((size(cq.payments) != 1))
435426 then throw("exactly 1 payment is expected")
436427 else {
437- let ct = value(cp.payments[0])
438- let cz = value(ct.assetId)
439- let cA = ct.amount
440- if ((cz != bp))
441- then throw((("invalid payment asset id: " + toBase58String(cz)) + " is expected"))
428+ let cu = value(cq.payments[0])
429+ let cA = value(cu.assetId)
430+ let cB = cu.amount
431+ if ((cA != bq))
432+ then throw((("invalid payment asset id: " + toBase58String(cA)) + " is expected"))
442433 else {
443- let cB = aN(aj)
444- let cw = aM()
445- let cC = (parseIntValue(cw[T]) + cA)
446- let cD = (cC * 100)
447- if ((cD > assetBalance(this, bo)))
434+ let cC = aN(aj)
435+ let cx = aM()
436+ let cD = (parseIntValue(cx[T]) + cB)
437+ let cE = (cD * 100)
438+ if ((cE > assetBalance(this, bp)))
448439 then throw("IDO asset has been - sold consider to use smaller payment")
449440 else {
450- let cx = [cA, cA, 0, 0]
451-[aT(ai(aj), cB, cx, J, 0), aT(ak(), cw, cx, J, 0), bi(aj, cA, 0, cp.transactionId)]
441+ let cy = [cB, cB, 0, 0]
442+[aU(ai(aj), cC, cy, J, 0), aU(ak(), cx, cy, J, 0), bj(aj, cB, 0, cq.transactionId)]
452443 }
453444 }
454445 }
456447
457448
458449
459-@Callable(cp)
460-func claim (bm,bq) = {
461- let cE = toString(cp.caller)
462- if ((bq != cE))
450+@Callable(cq)
451+func claim (bn,br) = {
452+ let cF = toString(cq.caller)
453+ if ((br != cF))
463454 then throw("not authorized")
464455 else {
465- let ba = aJ()
466- let O = ba[D]
467- let cF = bl(bm, cp.caller, cp.transactionId)
468- let cx = cF._1
469- let bD = cF._2
470- let cG = cF._3
471- let br = cF._4
472- let bv = cF._5
473- let cH = cx[aR]
474- let cI = cx[aS]
475- let aX = valueOrElse(getInteger(aD(bq)), 0)
476- let bb = value(assetInfo(fromBase58String(O))).decimals
477- let bf = if ((bm == O))
456+ let bb = aJ()
457+ let O = bb[D]
458+ let cG = bm(bn, cq.caller, cq.transactionId)
459+ let cy = cG._1
460+ let bE = cG._2
461+ let cH = cG._3
462+ let bs = cG._4
463+ let bw = cG._5
464+ let cI = cy[aS]
465+ let cJ = cy[aT]
466+ let aY = valueOrElse(getInteger(aD(br)), 0)
467+ let bc = value(assetInfo(fromBase58String(O))).decimals
468+ let bg = if ((bn == O))
478469 then {
479- let cJ = bC(O, bq, bD, cx[aR])
480- let bX = cJ._1
481- let bV = cJ._2
482- let bW = cJ._3
483- let bE = cJ._4
484- let bY = cJ._5
485- let cj = cJ._6
486- let ck = cJ._7
487- let bO = cJ._8
488- let bP = cJ._9
489- let bR = cJ._10
490- let bB = [if ((bW > 0))
470+ let cK = bD(O, br, bE, cy[aS])
471+ let bY = cK._1
472+ let bW = cK._2
473+ let bX = cK._3
474+ let bF = cK._4
475+ let bZ = cK._5
476+ let ck = cK._6
477+ let cl = cK._7
478+ let bP = cK._8
479+ let bQ = cK._9
480+ let bS = cK._10
481+ let bC = [if ((bX > 0))
491482 then true
492- else f("unavailable to claim because user period allowance reached"), if ((bV > 0))
483+ else f("unavailable to claim because user period allowance reached"), if ((bW > 0))
493484 then true
494- else f("unavailable to claim because total period allowance reached"), if ((bX > 0))
485+ else f("unavailable to claim because total period allowance reached"), if ((bY > 0))
495486 then true
496- else f("nothing to claim"), if ((bY > cj))
487+ else f("nothing to claim"), if ((bZ > ck))
497488 then true
498489 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
499- if ((bB == bB))
490+ if ((bC == bC))
500491 then {
501- let cK = (bV - bX)
502- let cL = (bW - bX)
503- let bf = if ((aX > bX))
504- then [ScriptTransfer(cp.caller, bX, cG), IntegerEntry(aD(bq), (aX - bX))]
492+ let cL = (bW - bY)
493+ let cM = (bX - bY)
494+ let bg = if ((aY > bY))
495+ then [ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), (aY - bY))]
505496 else {
506- let cM = split(h(invoke(this, "claimREADONLY", [O, bq], nil)), c)
507- if ((cM == cM))
497+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
498+ if ((cN == cN))
508499 then {
509- let cN = parseIntValue(cM[3])
510- let cO = if ((cN == bX))
500+ let cO = parseIntValue(cN[3])
501+ let cP = if ((cO == bY))
511502 then {
512- let cP = parseIntValue(br[T])
513- let cQ = parseIntValue(br[U])
514- let cR = parseIntValue(br[V])
515- let cS = parseIntValue(br[W])
516- let cT = parseIntValue(br[X])
517- let cU = [toString(cP), "0", toString(cR), toString(cS), toString(cT)]
518- let cV = aM()
519- let cW = parseIntValue(cV[T])
520- let cX = parseIntValue(cV[U])
521- let cY = parseIntValue(cV[V])
522- let cZ = parseIntValue(cV[W])
523- let da = parseIntValue(cV[X])
524- let db = (cX - cQ)
525- let dc = [toString(cW), toString(db), toString(cY), toString(cZ), toString(da)]
526- let dd = (valueOrElse(getInteger(aG()), 0) + cQ)
527-[StringEntry(aF(bq), toString(cQ)), StringEntry(aG(), toString(dd)), aT(ai(bq), cU, cx, bv, 0), aT(ak(), dc, cx, bv, 0)]
503+ let cQ = parseIntValue(bs[T])
504+ let cR = parseIntValue(bs[U])
505+ let cS = parseIntValue(bs[V])
506+ let cT = parseIntValue(bs[W])
507+ let cU = parseIntValue(bs[X])
508+ let cV = [toString(cQ), "0", toString(cS), toString(cT), toString(cU)]
509+ let cW = aM()
510+ let cX = parseIntValue(cW[T])
511+ let cY = parseIntValue(cW[U])
512+ let cZ = parseIntValue(cW[V])
513+ let da = parseIntValue(cW[W])
514+ let db = parseIntValue(cW[X])
515+ let dc = (cY - cR)
516+ let dd = [toString(cX), toString(dc), toString(cZ), toString(da), toString(db)]
517+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
518+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), aU(ai(br), cV, cy, bw, 0), aU(ak(), dd, cy, bw, 0)]
528519 }
529- else [aT(ai(bq), br, cx, bv, 0), aT(ak(), aM(), cx, bv, 0)]
530- let de = ((aX + bD) - bX)
531- ([ScriptTransfer(cp.caller, bX, cG), IntegerEntry(aD(bq), de)] ++ cO)
520+ else [aU(ai(br), bs, cy, bw, 0), aU(ak(), aM(), cy, bw, 0)]
521+ let df = ((aY + bE) - bY)
522+ ([ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), df)] ++ cP)
532523 }
533524 else throw("Strict value is not equal to itself.")
534525 }
535- $Tuple2(([IntegerEntry(ar(), bO), IntegerEntry(as(bO), bP), IntegerEntry(au(bO), bR), IntegerEntry(az(O, bO), cK), IntegerEntry(aA(O, bO, bq), cL), bk(bq, bX, cI, cp.transactionId)] ++ bf), unit)
526+ $Tuple2(([IntegerEntry(ar(), bP), IntegerEntry(as(bP), bQ), IntegerEntry(au(bP), bS), IntegerEntry(az(O, bP), cL), IntegerEntry(aA(O, bP, br), cM), bl(br, bY, cJ, cq.transactionId)] ++ bg), unit)
536527 }
537528 else throw("Strict value is not equal to itself.")
538529 }
539530 else {
540- let df = fraction(aX, e, pow(10, 0, bb, 0, 0, DOWN))
541- $Tuple2([ScriptTransfer(cp.caller, (bD + df), cG), IntegerEntry(aD(bq), 0), aT(ai(bq), br, cx, bv, aX), aT(ak(), aM(), cx, bv, aX), bk(bq, cH, (cI + df), cp.transactionId)], unit)
531+ let dg = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
532+ $Tuple2([ScriptTransfer(cq.caller, (bE + dg), cH), IntegerEntry(aD(br), 0), aU(ai(br), bs, cy, bw, aY), aU(ak(), aM(), cy, bw, aY), bl(br, cI, (cJ + dg), cq.transactionId)], unit)
542533 }
543- bf
534+ bg
544535 }
545536 }
546537
547538
548539
549-@Callable(cp)
550-func cleanRemaingAmount (bq) = {
540+@Callable(cq)
541+func cleanRemaingAmount (br) = {
551542 let O = aJ()[D]
552- let cM = split(h(invoke(this, "claimREADONLY", [O, bq], nil)), c)
553- if ((cM == cM))
543+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
544+ if ((cN == cN))
554545 then {
555- let cN = parseIntValue(cM[2])
556- let dg = if ((cN == 0))
546+ let cO = parseIntValue(cN[2])
547+ let dh = if ((cO == 0))
557548 then true
558549 else f("user have unclaimed assets")
559- if ((dg == dg))
550+ if ((dh == dh))
560551 then {
561- let dh = split(value(getString(ai(bq))), c)
562- let cP = parseIntValue(dh[T])
563- let cQ = parseIntValue(dh[U])
564- let cR = parseIntValue(dh[V])
565- let cS = parseIntValue(dh[W])
566- let cT = parseIntValue(dh[X])
567- let di = if ((cQ != 0))
552+ let di = split(value(getString(ai(br))), c)
553+ let cQ = parseIntValue(di[T])
554+ let cR = parseIntValue(di[U])
555+ let cS = parseIntValue(di[V])
556+ let cT = parseIntValue(di[W])
557+ let cU = parseIntValue(di[X])
558+ let dj = if ((cR != 0))
568559 then true
569560 else f("investorRemainingAmount already zero")
570- if ((di == di))
561+ if ((dj == dj))
571562 then {
572- let dj = makeString(["%d%d%d%d%d", toString(cP), "0", toString(cR), toString(cS), toString(cT)], c)
573- let cV = split(value(getString(ak())), c)
574- let cW = parseIntValue(cV[T])
575- let cX = parseIntValue(cV[U])
576- let cY = parseIntValue(cV[V])
577- let cZ = parseIntValue(cV[W])
578- let da = parseIntValue(cV[X])
579- let dk = makeString(["%d%d%d%d%d", toString(cW), toString((cX - cQ)), toString(cY), toString(cZ), toString(da)], c)
580- let dd = (valueOrElse(getInteger(aG()), 0) + cQ)
581-[StringEntry(aF(bq), toString(cQ)), StringEntry(aG(), toString(dd)), StringEntry(ai(bq), dj), StringEntry(ak(), dk)]
563+ let dk = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
564+ let cW = split(value(getString(ak())), c)
565+ let cX = parseIntValue(cW[T])
566+ let cY = parseIntValue(cW[U])
567+ let cZ = parseIntValue(cW[V])
568+ let da = parseIntValue(cW[W])
569+ let db = parseIntValue(cW[X])
570+ let dl = makeString(["%d%d%d%d%d", toString(cX), toString((cY - cR)), toString(cZ), toString(da), toString(db)], c)
571+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
572+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(br), dk), StringEntry(ak(), dl)]
582573 }
583574 else throw("Strict value is not equal to itself.")
584575 }
589580
590581
591582
592-@Callable(cp)
593-func claimREADONLY (bm,bq) = {
594- let cF = bl(bm, addressFromStringValue(bq), fromBase58String(""))
595- let cx = cF._1
596- let bD = cF._2
597- let cG = cF._3
598- let br = cF._4
599- let bv = cF._5
600- let dl = cF._6
601- let cN = dl[0]
602- let dm = dl[1]
603- $Tuple2(nil, makeString(["%s%d%d", bq, toString(cN), toString(dm)], c))
583+@Callable(cq)
584+func claimREADONLY (bn,br) = {
585+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
586+ let cy = cG._1
587+ let bE = cG._2
588+ let cH = cG._3
589+ let bs = cG._4
590+ let bw = cG._5
591+ let dm = cG._6
592+ let cO = dm[0]
593+ let dn = dm[1]
594+ $Tuple2(nil, makeString(["%s%d%d", br, toString(cO), toString(dn)], c))
604595 }
605596
606597
607598
608-@Callable(cp)
609-func claimV2READONLY (bm,bq) = {
610- let cF = bl(bm, addressFromStringValue(bq), fromBase58String(""))
611- let cx = cF._1
612- let bD = cF._2
613- let cG = cF._3
614- let br = cF._4
615- let bv = cF._5
616- let dl = cF._6
617- let cN = dl[0]
618- let dm = dl[1]
619- let ba = aJ()
620- let O = ba[D]
621- let aX = valueOrElse(getInteger(aD(bq)), 0)
622- let df = (aX * 100)
623- let dn = (dm + df)
624- let do = bC(O, bq, bD, cx[aR])
625- let bX = do._1
626- let bV = do._2
627- let bW = do._3
628- let bE = do._4
629- let bY = do._5
630- let cj = do._6
631- let ck = do._7
632- let bO = do._8
633- let bP = do._9
634- let bR = do._10
635- let dp = valueOrElse(getInteger(au(bO)), 0)
636- let dq = (parseIntValue(aO(bq)[V]) - aX)
637- let dr = if ((height > dp))
599+@Callable(cq)
600+func claimV2READONLY (bn,br) = {
601+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
602+ let cy = cG._1
603+ let bE = cG._2
604+ let cH = cG._3
605+ let bs = cG._4
606+ let bw = cG._5
607+ let dm = cG._6
608+ let cO = dm[0]
609+ let dn = dm[1]
610+ let bb = aJ()
611+ let O = bb[D]
612+ let aY = valueOrElse(getInteger(aD(br)), 0)
613+ let dg = (aY * 100)
614+ let do = (dn + dg)
615+ let dp = bD(O, br, bE, cy[aS])
616+ let bY = dp._1
617+ let bW = dp._2
618+ let bX = dp._3
619+ let bF = dp._4
620+ let bZ = dp._5
621+ let ck = dp._6
622+ let cl = dp._7
623+ let bP = dp._8
624+ let bQ = dp._9
625+ let bS = dp._10
626+ let dq = valueOrElse(getInteger(au(bP)), 0)
627+ let dr = (parseIntValue(aO(br)[V]) - aY)
628+ let ds = if ((height > dq))
638629 then {
639- let ds = value(getInteger(aq()))
640- let dt = value(getInteger(ay(O)))
641- let du = value(getInteger(aw(O)))
642- makeString(["%d%d%d%d%d%d", toString(dn), toString(dt), toString(du), toString(bY), toString(cj), toString(ds), toString(dq)], c)
630+ let dt = value(getInteger(aq()))
631+ let du = value(getInteger(ay(O)))
632+ let dv = value(getInteger(aw(O)))
633+ makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(bZ), toString(ck), toString(dt), toString(dr)], c)
643634 }
644- else makeString(["%d%d%d%d%d%d", toString(dn), toString(bX), toString(bV), toString(bY), toString(cj), toString(ck), toString(dq)], c)
645- $Tuple2(nil, dr)
635+ else makeString(["%d%d%d%d%d%d", toString(do), toString(bY), toString(bW), toString(bZ), toString(ck), toString(cl), toString(dr)], c)
636+ $Tuple2(nil, ds)
646637 }
647638
648639
649-
650-@Callable(cp)
651-func setManager (dv) = {
652- let dw = co(cp)
653- if ((dw == dw))
654- then {
655- let dx = fromBase58String(dv)
656- if ((dx == dx))
657- then [StringEntry(aI(), dv)]
658- else throw("Strict value is not equal to itself.")
659- }
660- else throw("Strict value is not equal to itself.")
661- }
662-
663-
664-
665-@Callable(cp)
666-func confirmManager () = {
667- let dy = cn()
668- let dz = if (isDefined(dy))
669- then true
670- else throw("No pending manager")
671- if ((dz == dz))
672- then {
673- let dA = if ((cp.callerPublicKey == value(dy)))
674- then true
675- else throw("You are not pending manager")
676- if ((dA == dA))
677- then [StringEntry(aH(), toBase58String(value(dy))), DeleteEntry(aI())]
678- else throw("Strict value is not equal to itself.")
679- }
680- else throw("Strict value is not equal to itself.")
681- }
682-
683-
684-@Verifier(dB)
685-func dC () = {
686- let dD = {
687- let j = cl()
640+@Verifier(dw)
641+func dx () = {
642+ let dy = {
643+ let j = cm()
688644 if ($isInstanceOf(j, "ByteVector"))
689645 then {
690- let cr = j
691- cr
646+ let cs = j
647+ cs
692648 }
693649 else if ($isInstanceOf(j, "Unit"))
694- then dB.senderPublicKey
650+ then dw.senderPublicKey
695651 else throw("Match error")
696652 }
697- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
653+ sigVerify(dw.bodyBytes, dw.proofs[0], dy)
698654 }
699655
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
55
66
77 let c = "__"
88
99 let d = toBigInt(1000000000000000000)
1010
1111 let e = 100000000
1212
1313 func f (g) = throw(makeString(["ido.ride:", g], " "))
1414
1515
1616 func h (i) = {
1717 let j = i
1818 if ($isInstanceOf(j, "String"))
1919 then {
2020 let k = j
2121 k
2222 }
2323 else throw("fail to cast into String")
2424 }
2525
2626
2727 func l (m,n,o,p,q) = {
2828 let r = toBigInt(n)
2929 let s = toBigInt(q)
3030 let t = fraction(toBigInt(m), d, r)
3131 let u = fraction(t, toBigInt(p), toBigInt(o))
3232 toInt(fraction(u, toBigInt(q), d))
3333 }
3434
3535
3636 let v = 1
3737
3838 let w = 2
3939
4040 let x = 3
4141
4242 let y = 4
4343
4444 let z = 5
4545
4646 let A = 6
4747
4848 let B = 7
4949
5050 let C = 8
5151
5252 let D = 9
5353
5454 let E = 10
5555
5656 let F = 11
5757
5858 func G (H,I,J,K,o,L,M,N,O,P,Q,R) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", H, I, J, K, o, L, M, N, O, P, Q, R], c)
5959
6060
6161 func S (H,I,J,K,o,L,M,N,O,P,Q,R) = G(toString(H), toString(I), toString(J), toString(K), toString(o), toString(L), M, toString(N), O, toString(P), toString(Q), toString(R))
6262
6363
6464 let T = 1
6565
6666 let U = 2
6767
6868 let V = 3
6969
7070 let W = 4
7171
7272 let X = 5
7373
7474 func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
7575
7676
7777 func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
7878
7979
8080 func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
8181
8282
8383 func ah () = "%s__config"
8484
8585
8686 func ai (aj) = ("%s__" + aj)
8787
8888
8989 func ak () = "%s__totals"
9090
9191
9292 func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
9393
9494
9595 func ao () = "%s__usdnClaimDisabled"
9696
9797
9898 func ap () = "%s__usdnClaimEndHeight"
9999
100100
101101 func aq () = makeString(["%s", "periodLength"], c)
102102
103103
104104 func ar () = makeString(["%s", "currentPeriod"], c)
105105
106106
107107 func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108108
109109
110110 func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111111
112112
113113 func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114114
115115
116116 func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117117
118118
119119 func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120120
121121
122122 func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123123
124124
125125 func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126126
127127
128128 func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129129
130130
131131 func aC () = makeString(["%s", "usdtAssetId"], c)
132132
133133
134134 func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135135
136136
137137 func aF (aE) = makeString(["%s%s", "investorRemainingAmount", aE], c)
138138
139139
140140 func aG () = makeString(["%s", "totalRemainingAmount"], c)
141141
142142
143143 func aH () = "%s__managerPublicKey"
144144
145145
146-func aI () = "%s__pendingManagerPublicKey"
146+func aI () = "%s__managerVaultAddress"
147147
148148
149149 func aJ () = split(a(ah()), c)
150150
151151
152152 func aK (aL) = split(valueOrElse(getString(aL), Y("0", "0", "0", "0", "0")), c)
153153
154154
155155 func aM () = aK(ak())
156156
157157
158158 func aN (aj) = aK(ai(aj))
159159
160160
161161 func aO (aj) = split(a(ai(aj)), c)
162162
163163
164-let aP = 0
164+func aP () = addressFromStringValue(getStringValue(aI()))
165165
166-let aQ = 1
167166
168-let aR = 2
167+let aQ = 0
169168
170-let aS = 3
169+let aR = 1
171170
172-func aT (b,aU,aV,aW,aX) = {
173- let Z = parseIntValue(aU[T])
174- let aa = parseIntValue(aU[U])
175- let ab = parseIntValue(aU[V])
176- let ac = parseIntValue(aU[W])
177- let ad = parseIntValue(aU[X])
178- let aY = (Z + aV[aP])
179- let aZ = (aa + aV[aQ])
180- let ba = aJ()
181- let O = ba[D]
182- let bb = value(assetInfo(fromBase58String(O))).decimals
183- let bc = fraction(aX, e, pow(10, 0, bb, 0, 0, DOWN))
184- let bd = ((ab + aV[aR]) - aX)
185- let be = ((ac + aV[aS]) + bc)
186- let bf = if ((0 > aZ))
171+let aS = 2
172+
173+let aT = 3
174+
175+func aU (b,aV,aW,aX,aY) = {
176+ let Z = parseIntValue(aV[T])
177+ let aa = parseIntValue(aV[U])
178+ let ab = parseIntValue(aV[V])
179+ let ac = parseIntValue(aV[W])
180+ let ad = parseIntValue(aV[X])
181+ let aZ = (Z + aW[aQ])
182+ let ba = (aa + aW[aR])
183+ let bb = aJ()
184+ let O = bb[D]
185+ let bc = value(assetInfo(fromBase58String(O))).decimals
186+ let bd = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
187+ let be = ((ab + aW[aS]) - aY)
188+ let bf = ((ac + aW[aT]) + bd)
189+ let bg = if ((0 > ba))
187190 then {
188- let bg = ((aY - bd) - be)
189- let bh = if ((0 > bg))
191+ let bh = ((aZ - be) - bf)
192+ let bi = if ((0 > bh))
190193 then 0
191- else bg
192- StringEntry(b, ae(aY, bh, bd, be, aW))
194+ else bh
195+ StringEntry(b, ae(aZ, bi, be, bf, aX))
193196 }
194- else StringEntry(b, ae(aY, aZ, bd, be, aW))
195- bf
197+ else StringEntry(b, ae(aZ, ba, be, bf, aX))
198+ bg
196199 }
197200
198201
199-func bi (aj,m,ag,bj) = StringEntry(al("invest", aj, toBase58String(bj)), af(m, ag))
202+func bj (aj,m,ag,bk) = StringEntry(al("invest", aj, toBase58String(bk)), af(m, ag))
200203
201204
202-func bk (aj,m,ag,bj) = StringEntry(al("claim", aj, toBase58String(bj)), af(m, ag))
205+func bl (aj,m,ag,bk) = StringEntry(al("claim", aj, toBase58String(bk)), af(m, ag))
203206
204207
205-func bl (bm,aj,bj) = {
206- let ba = aJ()
207- let J = parseIntValue(ba[x])
208- let K = parseIntValue(ba[y])
209- let bn = (J + K)
210- let o = parseIntValue(ba[z])
211- let L = parseIntValue(ba[A])
212- let M = ba[B]
213- let bo = fromBase58String(M)
214- let N = parseIntValue(ba[C])
215- let O = ba[D]
216- let bp = fromBase58String(O)
217- let P = parseIntValue(ba[E])
218- let bq = toString(aj)
219- let br = aO(bq)
220- let bs = parseIntValue(br[T])
221- let bt = parseIntValue(br[X])
222- let bu = if ((J >= bt))
208+func bm (bn,aj,bk) = {
209+ let bb = aJ()
210+ let J = parseIntValue(bb[x])
211+ let K = parseIntValue(bb[y])
212+ let bo = (J + K)
213+ let o = parseIntValue(bb[z])
214+ let L = parseIntValue(bb[A])
215+ let M = bb[B]
216+ let bp = fromBase58String(M)
217+ let N = parseIntValue(bb[C])
218+ let O = bb[D]
219+ let bq = fromBase58String(O)
220+ let P = parseIntValue(bb[E])
221+ let br = toString(aj)
222+ let bs = aO(br)
223+ let bt = parseIntValue(bs[T])
224+ let bu = parseIntValue(bs[X])
225+ let bv = if ((J >= bu))
223226 then J
224- else bt
225- let bv = if ((height > bn))
226- then bn
227+ else bu
228+ let bw = if ((height > bo))
229+ then bo
227230 else if ((J > height))
228231 then J
229232 else height
230- let bw = (bv - bu)
231- let bx = fraction(bs, bw, K)
232- let by = l(bx, P, o, L, N)
233- let bz = (bm == O)
234- let bA = valueOrElse(getBoolean(ao()), false)
235- let bB = [if (!(if (bz)
236- then bA
233+ let bx = (bw - bv)
234+ let by = fraction(bt, bx, K)
235+ let bz = l(by, P, o, L, N)
236+ let bA = (bn == O)
237+ let bB = valueOrElse(getBoolean(ao()), false)
238+ let bC = [if (!(if (bA)
239+ then bB
237240 else false))
238241 then true
239242 else throw("USDN claim is disabled")]
240- if ((bB == bB))
241- then if ((bm == O))
242- then $Tuple6([0, -(bx), bx, 0], bx, bp, br, bv, [bx, by])
243- else if ((bm == M))
244- then $Tuple6([0, -(bx), 0, by], by, bo, br, bv, [bx, by])
245- else throw(("unsupported assetId: " + bm))
243+ if ((bC == bC))
244+ then if ((bn == O))
245+ then $Tuple6([0, -(by), by, 0], by, bq, bs, bw, [by, bz])
246+ else if ((bn == M))
247+ then $Tuple6([0, -(by), 0, bz], bz, bp, bs, bw, [by, bz])
248+ else throw(("unsupported assetId: " + bn))
246249 else throw("Strict value is not equal to itself.")
247250 }
248251
249252
250-func bC (O,bq,bD,bE) = {
251- let bF = value(getInteger(aw(O)))
252- let bG = value(getInteger(ay(O)))
253- let bH = value(getInteger(aq()))
254- let bI = valueOrElse(getInteger(ar()), 0)
255- let bJ = isDefined(getInteger(au(0)))
256- let bK = if ((bI > 0))
253+func bD (O,br,bE,bF) = {
254+ let bG = value(getInteger(aw(O)))
255+ let bH = value(getInteger(ay(O)))
256+ let bI = value(getInteger(aq()))
257+ let bJ = valueOrElse(getInteger(ar()), 0)
258+ let bK = isDefined(getInteger(au(0)))
259+ let bL = if ((bJ > 0))
257260 then {
258- let bL = value(getInteger(as(bI)))
259- let bM = value(getInteger(au(bI)))
260- let bN = if ((height > bM))
261+ let bM = value(getInteger(as(bJ)))
262+ let bN = value(getInteger(au(bJ)))
263+ let bO = if ((height > bN))
261264 then {
262- let bO = (bI + 1)
263- let bP = if ((height > (bM + bH)))
265+ let bP = (bJ + 1)
266+ let bQ = if ((height > (bN + bI)))
264267 then {
265- let bQ = ((height - bM) % bH)
266- if ((bQ == 0))
267- then ((height - bH) + 1)
268- else (height - bQ)
268+ let bR = ((height - bN) % bI)
269+ if ((bR == 0))
270+ then ((height - bI) + 1)
271+ else (height - bR)
269272 }
270- else (bM + 1)
271- let bR = ((bP + bH) - 1)
272- $Tuple3(bO, bP, bR)
273+ else (bN + 1)
274+ let bS = ((bQ + bI) - 1)
275+ $Tuple3(bP, bQ, bS)
273276 }
274- else $Tuple3(bI, bL, bM)
275- let bO = bN._1
276- let bP = bN._2
277- let bR = bN._3
278- $Tuple3(bO, bP, bR)
277+ else $Tuple3(bJ, bM, bN)
278+ let bP = bO._1
279+ let bQ = bO._2
280+ let bS = bO._3
281+ $Tuple3(bP, bQ, bS)
279282 }
280- else if (bJ)
283+ else if (bK)
281284 then {
282- let bS = value(getInteger(as(0)))
283- let bT = value(getInteger(au(0)))
284- let bU = if ((height > bT))
285+ let bT = value(getInteger(as(0)))
286+ let bU = value(getInteger(au(0)))
287+ let bV = if ((height > bU))
285288 then {
286- let bO = (bI + 1)
287- let bP = (bT + 1)
288- let bR = ((bP + bH) - 1)
289- $Tuple3(bO, bP, bR)
289+ let bP = (bJ + 1)
290+ let bQ = (bU + 1)
291+ let bS = ((bQ + bI) - 1)
292+ $Tuple3(bP, bQ, bS)
290293 }
291- else $Tuple3(bI, bS, bT)
292- let bO = bU._1
293- let bP = bU._2
294- let bR = bU._3
295- $Tuple3(bO, bP, bR)
294+ else $Tuple3(bJ, bT, bU)
295+ let bP = bV._1
296+ let bQ = bV._2
297+ let bS = bV._3
298+ $Tuple3(bP, bQ, bS)
296299 }
297- else $Tuple3(bI, valueOrElse(getInteger(as(bI)), height), valueOrElse(getInteger(au(bI)), ((height + bH) - 1)))
298- let bO = bK._1
299- let bP = bK._2
300- let bR = bK._3
301- let bV = valueOrElse(getInteger(az(O, bO)), bF)
302- let bW = valueOrElse(getInteger(aA(O, bO, bq)), bG)
303- let aX = valueOrElse(getInteger(aD(bq)), 0)
304- let bX = min([(bD + aX), bV, bW])
305- let bY = value(getInteger(av()))
306- let bZ = e
307- let ca = {
308- let cb = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bZ, O], nil)
309- if ($isInstanceOf(cb, "(Int, Int, Int)"))
310- then cb
311- else throw(($getType(cb) + " couldn't be cast to (Int, Int, Int)"))
300+ else $Tuple3(bJ, valueOrElse(getInteger(as(bJ)), height), valueOrElse(getInteger(au(bJ)), ((height + bI) - 1)))
301+ let bP = bL._1
302+ let bQ = bL._2
303+ let bS = bL._3
304+ let bW = valueOrElse(getInteger(az(O, bP)), bG)
305+ let bX = valueOrElse(getInteger(aA(O, bP, br)), bH)
306+ let aY = valueOrElse(getInteger(aD(br)), 0)
307+ let bY = min([(bE + aY), bW, bX])
308+ let bZ = value(getInteger(av()))
309+ let ca = e
310+ let cb = {
311+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [ca, O], nil)
312+ if ($isInstanceOf(cc, "(Int, Int, Int)"))
313+ then cc
314+ else throw(($getType(cc) + " couldn't be cast to (Int, Int, Int)"))
312315 }
313- if ((ca == ca))
316+ if ((cb == cb))
314317 then {
315- let cc = ca._3
316- let cd = ca._2
317- let ce = ca._1
318- let cf = value(getString(aC()))
319- let cg = {
320- let cb = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cf, ce], nil)
321- if ($isInstanceOf(cb, "(Int, Int)"))
322- then cb
323- else throw(($getType(cb) + " couldn't be cast to (Int, Int)"))
318+ let cd = cb._3
319+ let ce = cb._2
320+ let cf = cb._1
321+ let cg = value(getString(aC()))
322+ let ch = {
323+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cg, cf], nil)
324+ if ($isInstanceOf(cc, "(Int, Int)"))
325+ then cc
326+ else throw(($getType(cc) + " couldn't be cast to (Int, Int)"))
324327 }
325- if ((cg == cg))
328+ if ((ch == ch))
326329 then {
327- let ch = cg._2
328- let ci = cg._1
329- let cj = fraction(bZ, e, ci)
330- let ck = (bR - height)
331- $Tuple10(bX, bV, bW, bE, bY, cj, ck, bO, bP, bR)
330+ let ci = ch._2
331+ let cj = ch._1
332+ let ck = fraction(ca, e, cj)
333+ let cl = (bS - height)
334+ $Tuple10(bY, bW, bX, bF, bZ, ck, cl, bP, bQ, bS)
332335 }
333336 else throw("Strict value is not equal to itself.")
334337 }
335338 else throw("Strict value is not equal to itself.")
336339 }
337340
338341
339-func cl () = {
340- let j = getString(aH())
342+func cm () = {
343+ let cn = aP()
344+ let j = getString(cn, aH())
341345 if ($isInstanceOf(j, "String"))
342346 then {
343- let cm = j
344- fromBase58String(cm)
347+ let co = j
348+ fromBase58String(co)
345349 }
346350 else if ($isInstanceOf(j, "Unit"))
347351 then unit
348352 else throw("Match error")
349353 }
350354
351355
352-func cn () = {
353- let j = getString(aI())
354- if ($isInstanceOf(j, "String"))
356+func cp (cq) = {
357+ let cr = throw("Permission denied")
358+ let j = cm()
359+ if ($isInstanceOf(j, "ByteVector"))
355360 then {
356- let cm = j
357- fromBase58String(cm)
361+ let cs = j
362+ if ((cq.callerPublicKey == cs))
363+ then true
364+ else cr
358365 }
359366 else if ($isInstanceOf(j, "Unit"))
360- then unit
367+ then if ((cq.caller == this))
368+ then true
369+ else cr
361370 else throw("Match error")
362371 }
363372
364373
365-func co (cp) = {
366- let cq = throw("Permission denied")
367- let j = cl()
368- if ($isInstanceOf(j, "ByteVector"))
369- then {
370- let cr = j
371- if ((cp.callerPublicKey == cr))
372- then true
373- else cq
374- }
375- else if ($isInstanceOf(j, "Unit"))
376- then if ((cp.caller == this))
377- then true
378- else cq
379- else throw("Match error")
380- }
381-
382-
383-@Callable(cp)
374+@Callable(cq)
384375 func constructor (H,I,J,K,o,O,Q) = {
385376 let L = ((100 * 1000) * 1000)
386- let cs = (H + I)
377+ let ct = (H + I)
387378 if (isDefined(getString(ah())))
388379 then throw("already initialized")
389- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cp.caller)))
380+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cq.caller)))
390381 then throw("not authorized")
391- else if ((size(cp.payments) != 1))
382+ else if ((size(cq.payments) != 1))
392383 then throw("exactly 1 payment must be attached")
393- else if ((cs >= J))
384+ else if ((ct >= J))
394385 then throw("claimStart must be greater than idoEnd")
395386 else {
396- let ct = value(cp.payments[0])
397- let bo = value(ct.assetId)
398- let cu = valueOrErrorMessage(assetInfo(bo), "fail to load ido asset info")
399- let M = toBase58String(bo)
400- let N = pow(10, 0, cu.decimals, 0, 0, DOWN)
401- let bp = fromBase58String(O)
402- let cv = valueOrErrorMessage(assetInfo(bp), "fail to load price asset info")
403- let P = pow(10, 0, cv.decimals, 0, 0, DOWN)
404- let cw = aM()
405- let cx = [0, 0, 0, 0]
406-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, ct.amount)), aT(ak(), cw, cx, J, 0)]
387+ let cu = value(cq.payments[0])
388+ let bp = value(cu.assetId)
389+ let cv = valueOrErrorMessage(assetInfo(bp), "fail to load ido asset info")
390+ let M = toBase58String(bp)
391+ let N = pow(10, 0, cv.decimals, 0, 0, DOWN)
392+ let bq = fromBase58String(O)
393+ let cw = valueOrErrorMessage(assetInfo(bq), "fail to load price asset info")
394+ let P = pow(10, 0, cw.decimals, 0, 0, DOWN)
395+ let cx = aM()
396+ let cy = [0, 0, 0, 0]
397+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aU(ak(), cx, cy, J, 0)]
407398 }
408399 }
409400
410401
411402
412-@Callable(cp)
403+@Callable(cq)
413404 func invest () = {
414- let ba = aJ()
415- let H = parseIntValue(ba[v])
416- let I = parseIntValue(ba[w])
417- let cs = (H + I)
418- let J = parseIntValue(ba[x])
419- let K = parseIntValue(ba[y])
420- let o = parseIntValue(ba[z])
421- let L = parseIntValue(ba[A])
422- let M = ba[B]
423- let bo = fromBase58String(M)
424- let N = parseIntValue(ba[C])
425- let O = ba[D]
426- let bp = fromBase58String(O)
427- let P = parseIntValue(ba[E])
428- let cy = parseIntValue(ba[F])
429- let aj = toString(cp.caller)
405+ let bb = aJ()
406+ let H = parseIntValue(bb[v])
407+ let I = parseIntValue(bb[w])
408+ let ct = (H + I)
409+ let J = parseIntValue(bb[x])
410+ let K = parseIntValue(bb[y])
411+ let o = parseIntValue(bb[z])
412+ let L = parseIntValue(bb[A])
413+ let M = bb[B]
414+ let bp = fromBase58String(M)
415+ let N = parseIntValue(bb[C])
416+ let O = bb[D]
417+ let bq = fromBase58String(O)
418+ let P = parseIntValue(bb[E])
419+ let cz = parseIntValue(bb[F])
420+ let aj = toString(cq.caller)
430421 if ((H > height))
431422 then throw("ido has not been started yet")
432- else if ((height > cs))
423+ else if ((height > ct))
433424 then throw("ido has been already ended")
434- else if ((size(cp.payments) != 1))
425+ else if ((size(cq.payments) != 1))
435426 then throw("exactly 1 payment is expected")
436427 else {
437- let ct = value(cp.payments[0])
438- let cz = value(ct.assetId)
439- let cA = ct.amount
440- if ((cz != bp))
441- then throw((("invalid payment asset id: " + toBase58String(cz)) + " is expected"))
428+ let cu = value(cq.payments[0])
429+ let cA = value(cu.assetId)
430+ let cB = cu.amount
431+ if ((cA != bq))
432+ then throw((("invalid payment asset id: " + toBase58String(cA)) + " is expected"))
442433 else {
443- let cB = aN(aj)
444- let cw = aM()
445- let cC = (parseIntValue(cw[T]) + cA)
446- let cD = (cC * 100)
447- if ((cD > assetBalance(this, bo)))
434+ let cC = aN(aj)
435+ let cx = aM()
436+ let cD = (parseIntValue(cx[T]) + cB)
437+ let cE = (cD * 100)
438+ if ((cE > assetBalance(this, bp)))
448439 then throw("IDO asset has been - sold consider to use smaller payment")
449440 else {
450- let cx = [cA, cA, 0, 0]
451-[aT(ai(aj), cB, cx, J, 0), aT(ak(), cw, cx, J, 0), bi(aj, cA, 0, cp.transactionId)]
441+ let cy = [cB, cB, 0, 0]
442+[aU(ai(aj), cC, cy, J, 0), aU(ak(), cx, cy, J, 0), bj(aj, cB, 0, cq.transactionId)]
452443 }
453444 }
454445 }
455446 }
456447
457448
458449
459-@Callable(cp)
460-func claim (bm,bq) = {
461- let cE = toString(cp.caller)
462- if ((bq != cE))
450+@Callable(cq)
451+func claim (bn,br) = {
452+ let cF = toString(cq.caller)
453+ if ((br != cF))
463454 then throw("not authorized")
464455 else {
465- let ba = aJ()
466- let O = ba[D]
467- let cF = bl(bm, cp.caller, cp.transactionId)
468- let cx = cF._1
469- let bD = cF._2
470- let cG = cF._3
471- let br = cF._4
472- let bv = cF._5
473- let cH = cx[aR]
474- let cI = cx[aS]
475- let aX = valueOrElse(getInteger(aD(bq)), 0)
476- let bb = value(assetInfo(fromBase58String(O))).decimals
477- let bf = if ((bm == O))
456+ let bb = aJ()
457+ let O = bb[D]
458+ let cG = bm(bn, cq.caller, cq.transactionId)
459+ let cy = cG._1
460+ let bE = cG._2
461+ let cH = cG._3
462+ let bs = cG._4
463+ let bw = cG._5
464+ let cI = cy[aS]
465+ let cJ = cy[aT]
466+ let aY = valueOrElse(getInteger(aD(br)), 0)
467+ let bc = value(assetInfo(fromBase58String(O))).decimals
468+ let bg = if ((bn == O))
478469 then {
479- let cJ = bC(O, bq, bD, cx[aR])
480- let bX = cJ._1
481- let bV = cJ._2
482- let bW = cJ._3
483- let bE = cJ._4
484- let bY = cJ._5
485- let cj = cJ._6
486- let ck = cJ._7
487- let bO = cJ._8
488- let bP = cJ._9
489- let bR = cJ._10
490- let bB = [if ((bW > 0))
470+ let cK = bD(O, br, bE, cy[aS])
471+ let bY = cK._1
472+ let bW = cK._2
473+ let bX = cK._3
474+ let bF = cK._4
475+ let bZ = cK._5
476+ let ck = cK._6
477+ let cl = cK._7
478+ let bP = cK._8
479+ let bQ = cK._9
480+ let bS = cK._10
481+ let bC = [if ((bX > 0))
491482 then true
492- else f("unavailable to claim because user period allowance reached"), if ((bV > 0))
483+ else f("unavailable to claim because user period allowance reached"), if ((bW > 0))
493484 then true
494- else f("unavailable to claim because total period allowance reached"), if ((bX > 0))
485+ else f("unavailable to claim because total period allowance reached"), if ((bY > 0))
495486 then true
496- else f("nothing to claim"), if ((bY > cj))
487+ else f("nothing to claim"), if ((bZ > ck))
497488 then true
498489 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
499- if ((bB == bB))
490+ if ((bC == bC))
500491 then {
501- let cK = (bV - bX)
502- let cL = (bW - bX)
503- let bf = if ((aX > bX))
504- then [ScriptTransfer(cp.caller, bX, cG), IntegerEntry(aD(bq), (aX - bX))]
492+ let cL = (bW - bY)
493+ let cM = (bX - bY)
494+ let bg = if ((aY > bY))
495+ then [ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), (aY - bY))]
505496 else {
506- let cM = split(h(invoke(this, "claimREADONLY", [O, bq], nil)), c)
507- if ((cM == cM))
497+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
498+ if ((cN == cN))
508499 then {
509- let cN = parseIntValue(cM[3])
510- let cO = if ((cN == bX))
500+ let cO = parseIntValue(cN[3])
501+ let cP = if ((cO == bY))
511502 then {
512- let cP = parseIntValue(br[T])
513- let cQ = parseIntValue(br[U])
514- let cR = parseIntValue(br[V])
515- let cS = parseIntValue(br[W])
516- let cT = parseIntValue(br[X])
517- let cU = [toString(cP), "0", toString(cR), toString(cS), toString(cT)]
518- let cV = aM()
519- let cW = parseIntValue(cV[T])
520- let cX = parseIntValue(cV[U])
521- let cY = parseIntValue(cV[V])
522- let cZ = parseIntValue(cV[W])
523- let da = parseIntValue(cV[X])
524- let db = (cX - cQ)
525- let dc = [toString(cW), toString(db), toString(cY), toString(cZ), toString(da)]
526- let dd = (valueOrElse(getInteger(aG()), 0) + cQ)
527-[StringEntry(aF(bq), toString(cQ)), StringEntry(aG(), toString(dd)), aT(ai(bq), cU, cx, bv, 0), aT(ak(), dc, cx, bv, 0)]
503+ let cQ = parseIntValue(bs[T])
504+ let cR = parseIntValue(bs[U])
505+ let cS = parseIntValue(bs[V])
506+ let cT = parseIntValue(bs[W])
507+ let cU = parseIntValue(bs[X])
508+ let cV = [toString(cQ), "0", toString(cS), toString(cT), toString(cU)]
509+ let cW = aM()
510+ let cX = parseIntValue(cW[T])
511+ let cY = parseIntValue(cW[U])
512+ let cZ = parseIntValue(cW[V])
513+ let da = parseIntValue(cW[W])
514+ let db = parseIntValue(cW[X])
515+ let dc = (cY - cR)
516+ let dd = [toString(cX), toString(dc), toString(cZ), toString(da), toString(db)]
517+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
518+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), aU(ai(br), cV, cy, bw, 0), aU(ak(), dd, cy, bw, 0)]
528519 }
529- else [aT(ai(bq), br, cx, bv, 0), aT(ak(), aM(), cx, bv, 0)]
530- let de = ((aX + bD) - bX)
531- ([ScriptTransfer(cp.caller, bX, cG), IntegerEntry(aD(bq), de)] ++ cO)
520+ else [aU(ai(br), bs, cy, bw, 0), aU(ak(), aM(), cy, bw, 0)]
521+ let df = ((aY + bE) - bY)
522+ ([ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), df)] ++ cP)
532523 }
533524 else throw("Strict value is not equal to itself.")
534525 }
535- $Tuple2(([IntegerEntry(ar(), bO), IntegerEntry(as(bO), bP), IntegerEntry(au(bO), bR), IntegerEntry(az(O, bO), cK), IntegerEntry(aA(O, bO, bq), cL), bk(bq, bX, cI, cp.transactionId)] ++ bf), unit)
526+ $Tuple2(([IntegerEntry(ar(), bP), IntegerEntry(as(bP), bQ), IntegerEntry(au(bP), bS), IntegerEntry(az(O, bP), cL), IntegerEntry(aA(O, bP, br), cM), bl(br, bY, cJ, cq.transactionId)] ++ bg), unit)
536527 }
537528 else throw("Strict value is not equal to itself.")
538529 }
539530 else {
540- let df = fraction(aX, e, pow(10, 0, bb, 0, 0, DOWN))
541- $Tuple2([ScriptTransfer(cp.caller, (bD + df), cG), IntegerEntry(aD(bq), 0), aT(ai(bq), br, cx, bv, aX), aT(ak(), aM(), cx, bv, aX), bk(bq, cH, (cI + df), cp.transactionId)], unit)
531+ let dg = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
532+ $Tuple2([ScriptTransfer(cq.caller, (bE + dg), cH), IntegerEntry(aD(br), 0), aU(ai(br), bs, cy, bw, aY), aU(ak(), aM(), cy, bw, aY), bl(br, cI, (cJ + dg), cq.transactionId)], unit)
542533 }
543- bf
534+ bg
544535 }
545536 }
546537
547538
548539
549-@Callable(cp)
550-func cleanRemaingAmount (bq) = {
540+@Callable(cq)
541+func cleanRemaingAmount (br) = {
551542 let O = aJ()[D]
552- let cM = split(h(invoke(this, "claimREADONLY", [O, bq], nil)), c)
553- if ((cM == cM))
543+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
544+ if ((cN == cN))
554545 then {
555- let cN = parseIntValue(cM[2])
556- let dg = if ((cN == 0))
546+ let cO = parseIntValue(cN[2])
547+ let dh = if ((cO == 0))
557548 then true
558549 else f("user have unclaimed assets")
559- if ((dg == dg))
550+ if ((dh == dh))
560551 then {
561- let dh = split(value(getString(ai(bq))), c)
562- let cP = parseIntValue(dh[T])
563- let cQ = parseIntValue(dh[U])
564- let cR = parseIntValue(dh[V])
565- let cS = parseIntValue(dh[W])
566- let cT = parseIntValue(dh[X])
567- let di = if ((cQ != 0))
552+ let di = split(value(getString(ai(br))), c)
553+ let cQ = parseIntValue(di[T])
554+ let cR = parseIntValue(di[U])
555+ let cS = parseIntValue(di[V])
556+ let cT = parseIntValue(di[W])
557+ let cU = parseIntValue(di[X])
558+ let dj = if ((cR != 0))
568559 then true
569560 else f("investorRemainingAmount already zero")
570- if ((di == di))
561+ if ((dj == dj))
571562 then {
572- let dj = makeString(["%d%d%d%d%d", toString(cP), "0", toString(cR), toString(cS), toString(cT)], c)
573- let cV = split(value(getString(ak())), c)
574- let cW = parseIntValue(cV[T])
575- let cX = parseIntValue(cV[U])
576- let cY = parseIntValue(cV[V])
577- let cZ = parseIntValue(cV[W])
578- let da = parseIntValue(cV[X])
579- let dk = makeString(["%d%d%d%d%d", toString(cW), toString((cX - cQ)), toString(cY), toString(cZ), toString(da)], c)
580- let dd = (valueOrElse(getInteger(aG()), 0) + cQ)
581-[StringEntry(aF(bq), toString(cQ)), StringEntry(aG(), toString(dd)), StringEntry(ai(bq), dj), StringEntry(ak(), dk)]
563+ let dk = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
564+ let cW = split(value(getString(ak())), c)
565+ let cX = parseIntValue(cW[T])
566+ let cY = parseIntValue(cW[U])
567+ let cZ = parseIntValue(cW[V])
568+ let da = parseIntValue(cW[W])
569+ let db = parseIntValue(cW[X])
570+ let dl = makeString(["%d%d%d%d%d", toString(cX), toString((cY - cR)), toString(cZ), toString(da), toString(db)], c)
571+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
572+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(br), dk), StringEntry(ak(), dl)]
582573 }
583574 else throw("Strict value is not equal to itself.")
584575 }
585576 else throw("Strict value is not equal to itself.")
586577 }
587578 else throw("Strict value is not equal to itself.")
588579 }
589580
590581
591582
592-@Callable(cp)
593-func claimREADONLY (bm,bq) = {
594- let cF = bl(bm, addressFromStringValue(bq), fromBase58String(""))
595- let cx = cF._1
596- let bD = cF._2
597- let cG = cF._3
598- let br = cF._4
599- let bv = cF._5
600- let dl = cF._6
601- let cN = dl[0]
602- let dm = dl[1]
603- $Tuple2(nil, makeString(["%s%d%d", bq, toString(cN), toString(dm)], c))
583+@Callable(cq)
584+func claimREADONLY (bn,br) = {
585+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
586+ let cy = cG._1
587+ let bE = cG._2
588+ let cH = cG._3
589+ let bs = cG._4
590+ let bw = cG._5
591+ let dm = cG._6
592+ let cO = dm[0]
593+ let dn = dm[1]
594+ $Tuple2(nil, makeString(["%s%d%d", br, toString(cO), toString(dn)], c))
604595 }
605596
606597
607598
608-@Callable(cp)
609-func claimV2READONLY (bm,bq) = {
610- let cF = bl(bm, addressFromStringValue(bq), fromBase58String(""))
611- let cx = cF._1
612- let bD = cF._2
613- let cG = cF._3
614- let br = cF._4
615- let bv = cF._5
616- let dl = cF._6
617- let cN = dl[0]
618- let dm = dl[1]
619- let ba = aJ()
620- let O = ba[D]
621- let aX = valueOrElse(getInteger(aD(bq)), 0)
622- let df = (aX * 100)
623- let dn = (dm + df)
624- let do = bC(O, bq, bD, cx[aR])
625- let bX = do._1
626- let bV = do._2
627- let bW = do._3
628- let bE = do._4
629- let bY = do._5
630- let cj = do._6
631- let ck = do._7
632- let bO = do._8
633- let bP = do._9
634- let bR = do._10
635- let dp = valueOrElse(getInteger(au(bO)), 0)
636- let dq = (parseIntValue(aO(bq)[V]) - aX)
637- let dr = if ((height > dp))
599+@Callable(cq)
600+func claimV2READONLY (bn,br) = {
601+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
602+ let cy = cG._1
603+ let bE = cG._2
604+ let cH = cG._3
605+ let bs = cG._4
606+ let bw = cG._5
607+ let dm = cG._6
608+ let cO = dm[0]
609+ let dn = dm[1]
610+ let bb = aJ()
611+ let O = bb[D]
612+ let aY = valueOrElse(getInteger(aD(br)), 0)
613+ let dg = (aY * 100)
614+ let do = (dn + dg)
615+ let dp = bD(O, br, bE, cy[aS])
616+ let bY = dp._1
617+ let bW = dp._2
618+ let bX = dp._3
619+ let bF = dp._4
620+ let bZ = dp._5
621+ let ck = dp._6
622+ let cl = dp._7
623+ let bP = dp._8
624+ let bQ = dp._9
625+ let bS = dp._10
626+ let dq = valueOrElse(getInteger(au(bP)), 0)
627+ let dr = (parseIntValue(aO(br)[V]) - aY)
628+ let ds = if ((height > dq))
638629 then {
639- let ds = value(getInteger(aq()))
640- let dt = value(getInteger(ay(O)))
641- let du = value(getInteger(aw(O)))
642- makeString(["%d%d%d%d%d%d", toString(dn), toString(dt), toString(du), toString(bY), toString(cj), toString(ds), toString(dq)], c)
630+ let dt = value(getInteger(aq()))
631+ let du = value(getInteger(ay(O)))
632+ let dv = value(getInteger(aw(O)))
633+ makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(bZ), toString(ck), toString(dt), toString(dr)], c)
643634 }
644- else makeString(["%d%d%d%d%d%d", toString(dn), toString(bX), toString(bV), toString(bY), toString(cj), toString(ck), toString(dq)], c)
645- $Tuple2(nil, dr)
635+ else makeString(["%d%d%d%d%d%d", toString(do), toString(bY), toString(bW), toString(bZ), toString(ck), toString(cl), toString(dr)], c)
636+ $Tuple2(nil, ds)
646637 }
647638
648639
649-
650-@Callable(cp)
651-func setManager (dv) = {
652- let dw = co(cp)
653- if ((dw == dw))
654- then {
655- let dx = fromBase58String(dv)
656- if ((dx == dx))
657- then [StringEntry(aI(), dv)]
658- else throw("Strict value is not equal to itself.")
659- }
660- else throw("Strict value is not equal to itself.")
661- }
662-
663-
664-
665-@Callable(cp)
666-func confirmManager () = {
667- let dy = cn()
668- let dz = if (isDefined(dy))
669- then true
670- else throw("No pending manager")
671- if ((dz == dz))
672- then {
673- let dA = if ((cp.callerPublicKey == value(dy)))
674- then true
675- else throw("You are not pending manager")
676- if ((dA == dA))
677- then [StringEntry(aH(), toBase58String(value(dy))), DeleteEntry(aI())]
678- else throw("Strict value is not equal to itself.")
679- }
680- else throw("Strict value is not equal to itself.")
681- }
682-
683-
684-@Verifier(dB)
685-func dC () = {
686- let dD = {
687- let j = cl()
640+@Verifier(dw)
641+func dx () = {
642+ let dy = {
643+ let j = cm()
688644 if ($isInstanceOf(j, "ByteVector"))
689645 then {
690- let cr = j
691- cr
646+ let cs = j
647+ cs
692648 }
693649 else if ($isInstanceOf(j, "Unit"))
694- then dB.senderPublicKey
650+ then dw.senderPublicKey
695651 else throw("Match error")
696652 }
697- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
653+ sigVerify(dw.bodyBytes, dw.proofs[0], dy)
698654 }
699655

github/deemru/w8io/169f3d6 
263.74 ms