tx · 4a438APKguMnigCvzEmrsyeq1KB7rxxAfRHvuvzzimr2

3PAph7xdg8VPNFdwaBnGBGSkGZ7Js9FB1h4:  -0.37000000 Waves

2022.11.25 20:46 [3398395] smart account 3PAph7xdg8VPNFdwaBnGBGSkGZ7Js9FB1h4 > SELF 0.00000000 Waves

{ "type": 13, "id": "4a438APKguMnigCvzEmrsyeq1KB7rxxAfRHvuvzzimr2", "fee": 37000000, "feeAssetId": null, "timestamp": 1669398423327, "version": 2, "chainId": 87, "sender": "3PAph7xdg8VPNFdwaBnGBGSkGZ7Js9FB1h4", "senderPublicKey": "4bu7KfUdw6VYG4bSXrmTRXDnFpikopM6Y9NZ1Mrba9Ag", "proofs": [ "5Pj78wZTeocjpfKDmwvTkJ4r4qDDnX7ezkGDQji9n5RbukxHyuTntboNcnVF7GSk8w9LLUxTZdJU9M7k7euHcPHH" ], "script": "base64:AAIFAAAAAAAAACgIAhIJCgcBAQEBAQgBEgASBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIAAAAAQAEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAAAAAANTRVACAAAAAl9fAAAAAAhCVUZTQ0FMRQkAATYAAAABAA3gtrOnZAAAAAAAAAZzY2FsZTgAAAAAAAX14QABAAAACHRocm93RXJyAAAAAQAAAANtc2cJAAACAAAAAQkABLkAAAACCQAETAAAAAICAAAACWlkby5yaWRlOgkABEwAAAACBQAAAANtc2cFAAAAA25pbAIAAAABIAEAAAAdY29udmVydFByaWNlQXNzZXRJbnRvSWRvQXNzZXQAAAAFAAAAEHByaWNlQXNzZXRBbW91bnQAAAAOcHJpY2VBc3NldE1VTFQAAAAFcHJpY2UAAAAJcHJpY2VNVUxUAAAADGlkb0Fzc2V0TVVMVAQAAAAPYlByaWNlQXNzZXRNVUxUCQABNgAAAAEFAAAADnByaWNlQXNzZXRNVUxUBAAAAA1iSWRvQXNzZXRNVUxUCQABNgAAAAEFAAAADGlkb0Fzc2V0TVVMVAQAAAAOYlByaWNlQXNzZXRCVUYJAAE8AAAAAwkAATYAAAABBQAAABBwcmljZUFzc2V0QW1vdW50BQAAAAhCVUZTQ0FMRQUAAAAPYlByaWNlQXNzZXRNVUxUBAAAAA9iQW1vdW50QXNzZXRCVUYJAAE8AAAAAwUAAAAOYlByaWNlQXNzZXRCVUYJAAE2AAAAAQUAAAAJcHJpY2VNVUxUCQABNgAAAAEFAAAABXByaWNlCQABoAAAAAEJAAE8AAAAAwUAAAAPYkFtb3VudEFzc2V0QlVGCQABNgAAAAEFAAAADGlkb0Fzc2V0TVVMVAUAAAAIQlVGU0NBTEUAAAAADklkeENmZ0lkb1N0YXJ0AAAAAAAAAAABAAAAABFJZHhDZmdJZG9EdXJhdGlvbgAAAAAAAAAAAgAAAAAQSWR4Q2ZnQ2xhaW1TdGFydAAAAAAAAAAAAwAAAAATSWR4Q2ZnQ2xhaW1EdXJhdGlvbgAAAAAAAAAABAAAAAALSWR4Q2ZnUHJpY2UAAAAAAAAAAAUAAAAAD0lkeENmZ1ByaWNlTXVsdAAAAAAAAAAABgAAAAAQSWR4Q2ZnSWRvQXNzZXRJZAAAAAAAAAAABwAAAAASSWR4Q2ZnSWRvQXNzZXRNdWx0AAAAAAAAAAAIAAAAABJJZHhDZmdQcmljZUFzc2V0SWQAAAAAAAAAAAkAAAAAFElkeENmZ1ByaWNlQXNzZXRNdWx0AAAAAAAAAAAKAAAAABVJZHhDZmdNaW5JbnZlc3RBbW91bnQAAAAAAAAAAAsBAAAADWZyb21hdENvbmZpZ1MAAAAMAAAACGlkb1N0YXJ0AAAAC2lkb0R1cmF0aW9uAAAACmNsYWltU3RhcnQAAAANY2xhaW1EdXJhdGlvbgAAAAVwcmljZQAAAAlwcmljZU11bHQAAAAMaWRvQXNzZXRJZDU4AAAADGlkb0Fzc2V0TXVsdAAAAA5wcmljZUFzc2V0SWQ1OAAAAA5wcmljZUFzc2V0TXVsdAAAAA9taW5JbnZlc3RBbW91bnQAAAATdG90YWxJZG9Bc3NldFRvU2VsbAkABLkAAAACCQAETAAAAAICAAAAGCVkJWQlZCVkJWQlZCVzJWQlcyVkJWQlZAkABEwAAAACBQAAAAhpZG9TdGFydAkABEwAAAACBQAAAAtpZG9EdXJhdGlvbgkABEwAAAACBQAAAApjbGFpbVN0YXJ0CQAETAAAAAIFAAAADWNsYWltRHVyYXRpb24JAARMAAAAAgUAAAAFcHJpY2UJAARMAAAAAgUAAAAJcHJpY2VNdWx0CQAETAAAAAIFAAAADGlkb0Fzc2V0SWQ1OAkABEwAAAACBQAAAAxpZG9Bc3NldE11bHQJAARMAAAAAgUAAAAOcHJpY2VBc3NldElkNTgJAARMAAAAAgUAAAAOcHJpY2VBc3NldE11bHQJAARMAAAAAgUAAAAPbWluSW52ZXN0QW1vdW50CQAETAAAAAIFAAAAE3RvdGFsSWRvQXNzZXRUb1NlbGwFAAAAA25pbAUAAAADU0VQAQAAAAxmcm9tYXRDb25maWcAAAAMAAAACGlkb1N0YXJ0AAAAC2lkb0R1cmF0aW9uAAAACmNsYWltU3RhcnQAAAANY2xhaW1EdXJhdGlvbgAAAAVwcmljZQAAAAlwcmljZU11bHQAAAAMaWRvQXNzZXRJZDU4AAAADGlkb0Fzc2V0TXVsdAAAAA5wcmljZUFzc2V0SWQ1OAAAAA5wcmljZUFzc2V0TXVsdAAAAA9taW5JbnZlc3RBbW91bnQAAAATdG90YWxJZG9Bc3NldFRvU2VsbAkBAAAADWZyb21hdENvbmZpZ1MAAAAMCQABpAAAAAEFAAAACGlkb1N0YXJ0CQABpAAAAAEFAAAAC2lkb0R1cmF0aW9uCQABpAAAAAEFAAAACmNsYWltU3RhcnQJAAGkAAAAAQUAAAANY2xhaW1EdXJhdGlvbgkAAaQAAAABBQAAAAVwcmljZQkAAaQAAAABBQAAAAlwcmljZU11bHQFAAAADGlkb0Fzc2V0SWQ1OAkAAaQAAAABBQAAAAxpZG9Bc3NldE11bHQFAAAADnByaWNlQXNzZXRJZDU4CQABpAAAAAEFAAAADnByaWNlQXNzZXRNdWx0CQABpAAAAAEFAAAAD21pbkludmVzdEFtb3VudAkAAaQAAAABBQAAABN0b3RhbElkb0Fzc2V0VG9TZWxsAAAAABFJZHhJbnZUb3RhbEFtb3VudAAAAAAAAAAAAQAAAAAVSWR4SW52UmVtYWluaW5nQW1vdW50AAAAAAAAAAACAAAAAB1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudAAAAAAAAAAAAwAAAAAbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50AAAAAAAAAAAEAAAAABdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAAAAAAAAAAABQEAAAAPZm9ybWF0SW52ZXN0b3JTAAAABQAAAAt0b3RhbEFtb3VudAAAAA9yZW1haW5pbmdBbW91bnQAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQAAAAVY2xhaW1lZElkb0Fzc2V0QW1vdW50AAAAEWxhc3RDbGFpbWVkSGVpZ2h0CQAEuQAAAAIJAARMAAAAAgIAAAAKJWQlZCVkJWQlZAkABEwAAAACBQAAAAt0b3RhbEFtb3VudAkABEwAAAACBQAAAA9yZW1haW5pbmdBbW91bnQJAARMAAAAAgUAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAARMAAAAAgUAAAAVY2xhaW1lZElkb0Fzc2V0QW1vdW50CQAETAAAAAIFAAAAEWxhc3RDbGFpbWVkSGVpZ2h0BQAAAANuaWwFAAAAA1NFUAEAAAAOZm9ybWF0SW52ZXN0b3IAAAAFAAAAC3RvdGFsQW1vdW50AAAAD3JlbWFpbmluZ0Ftb3VudAAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQAAAARbGFzdENsYWltZWRIZWlnaHQJAQAAAA9mb3JtYXRJbnZlc3RvclMAAAAFCQABpAAAAAEFAAAAC3RvdGFsQW1vdW50CQABpAAAAAEFAAAAD3JlbWFpbmluZ0Ftb3VudAkAAaQAAAABBQAAABdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkAAaQAAAABBQAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAAGkAAAAAQUAAAARbGFzdENsYWltZWRIZWlnaHQBAAAAE2Zvcm1hdEhpc3RvcnlSZWNvcmQAAAACAAAAEHByaWNlQXNzZXRBbW91bnQAAAAOaWRvQXNzZXRBbW91bnQJAAS5AAAAAgkABEwAAAACAgAAAAglZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAABmhlaWdodAkABEwAAAACCQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAAGkAAAAAQUAAAAQcHJpY2VBc3NldEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADmlkb0Fzc2V0QW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAAJa2V5Q29uZmlnAAAAAAIAAAAKJXNfX2NvbmZpZwEAAAALa2V5SW52ZXN0b3IAAAABAAAAC3VzZXJBZGRyZXNzCQABLAAAAAICAAAABCVzX18FAAAAC3VzZXJBZGRyZXNzAQAAAAlrZXlUb3RhbHMAAAAAAgAAAAolc19fdG90YWxzAQAAABlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAAAAAwAAAAR0eXBlAAAAC3VzZXJBZGRyZXNzAAAABnR4SWQ1OAkABLkAAAACCQAETAAAAAICAAAAESVzJXMlcyVzX19oaXN0b3J5CQAETAAAAAIFAAAABHR5cGUJAARMAAAAAgUAAAALdXNlckFkZHJlc3MJAARMAAAAAgUA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ZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAA9yZWFkQ29uZmlnQXJyYXkAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAJa2V5Q29uZmlnAAAAAAUAAAADU0VQAQAAACNyZWFkVG90YWxzQXJyYXlPckRlZmF1bHRCeUN1c3RvbUtleQAAAAEAAAAJY3VzdG9tS2V5CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQiAAAAAQUAAAAJY3VzdG9tS2V5CQEAAAAPZm9ybWF0SW52ZXN0b3JTAAAABQIAAAABMAIAAAABMAIAAAABMAIAAAABMAIAAAABMAUAAAADU0VQAQAAABhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQAAAAACQEAAAAjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkAAAABCQEAAAAJa2V5VG90YWxzAAAAAAEAAAAacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQAAAABAAAAC3VzZXJBZGRyZXNzCQEAAAAjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkAAAABCQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAAt1c2VyQWRkcmVzcwEAAAAXcmVhZEludmVzdG9yQXJyYXlPckZhaWwAAAABAAAAC3VzZXJBZGRyZXNzCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAALa2V5SW52ZXN0b3IAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAADU0VQAAAAABVJZHhEaWZmVG90YWxJbmNyZW1lbnQAAAAAAAAAAAAAAAAAJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudAAAAAAAAAAAAQAAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAAAAAAAAAAAAgAAAAAlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudAAAAAAAAAAAAwEAAAALVG90YWxzRW50cnkAAAAFAAAAA2tleQAAAAlvcmlnQXJyYXkAAAANaW5jcmVtZW50RGlmZgAAABRuZXdMYXN0Q2xhaW1lZEhlaWdodAAAABFwcmljZUFzc2V0QmFsYW5jZQQAAAALdG90YWxBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAEUlkeEludlRvdGFsQW1vdW50BAAAAA9yZW1haW5pbmdBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAFUlkeEludlJlbWFpbmluZ0Ftb3VudAQAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BAAAABVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAG0lkeEludkNsYWltZWRJZG9Bc3NldEFtb3VudAQAAAARbGFzdENsYWltZWRIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlvcmlnQXJyYXkFAAAAF0lkeEludkxhc3RDbGFpbWVkSGVpZ2h0BAAAAA5uZXdUb3RhbEFtb3VudAkAAGQAAAACBQAAAAt0b3RhbEFtb3VudAkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAABVJZHhEaWZmVG90YWxJbmNyZW1lbnQEAAAAEm5ld1JlbWFpbmluZ0Ftb3VudAkAAGQAAAACBQAAAA9yZW1haW5pbmdBbW91bnQJAAGRAAAAAgUAAAANaW5jcmVtZW50RGlmZgUAAAAkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50BAAAAAhjZmdBcnJheQkBAAAAD3JlYWRDb25maWdBcnJheQAAAAAEAAAADnByaWNlQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdQcmljZUFzc2V0SWQEAAAAEnByaWNlQXNzZXREZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkAAlkAAAABBQAAAA5wcmljZUFzc2V0SWQ1OAAAAAhkZWNpbWFscwQAAAAjcHJpY2VBc3NldEJhbGFuY2VQcmljZUFzc2V0RGVjaW1hbHMJAABrAAAAAwUAAAARcHJpY2VBc3NldEJhbGFuY2UFAAAABnNjYWxlOAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAABJwcmljZUFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50CQAAZQAAAAIJAABkAAAAAgUAAAAXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAAGRAAAAAgUAAAANaW5jcmVtZW50RGlmZgUAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAUAAAARcHJpY2VBc3NldEJhbGFuY2UEAAAAGG5ld0NsYWltZWRJZG9Bc3NldEFtb3VudAkAAGQAAAACCQAAZAAAAAIFAAAAFWNsYWltZWRJZG9Bc3NldEFtb3VudAkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAACVJZHhEaWZmQ2xhaW1lZElkb0Fzc2V0QW1vdW50SW5jcmVtZW50BQAAACNwcmljZUFzc2V0QmFsYW5jZVByaWNlQXNzZXREZWNpbWFscwMJAABmAAAAAgAAAAAAAAAAAAUAAAASbmV3UmVtYWluaW5nQW1vdW50CQEAAAAIdGhyb3dFcnIAAAABCQAEuQAAAAIJAARMAAAAAgIAAAAMaW52YWxpZCBtYXRoCQAETAAAAAIJAAGkAAAAAQUAAAAPcmVtYWluaW5nQW1vdW50CQAETAAAAAIJAAGkAAAAAQkAAZEAAAACBQAAAA1pbmNyZW1lbnREaWZmBQAAACRJZHhEaWZmUmVtYWluaW5nUHJpY2VBbW91bnRJbmNyZW1lbnQJAARMAAAAAgkAAaQAAAABBQAAABJuZXdSZW1haW5pbmdBbW91bnQJAARMAAAAAgkAAaQAAAABCQABkQAAAAIFAAAADWluY3JlbWVudERpZmYFAAAAFUlkeERpZmZUb3RhbEluY3JlbWVudAUAAAADbmlsAgAAAAEgCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA5mb3JtYXRJbnZlc3RvcgAAAAUFAAAADm5ld1RvdGFsQW1vdW50BQAAABJuZXdSZW1haW5pbmdBbW91bnQFAAAAGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50BQAAABhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQFAAAAFG5ld0xhc3RDbGFpbWVkSGVpZ2h0AQAAABtJbnZlc3RPcGVyYXRpb25IaXN0b3J5RW50cnkAAAAEAAAAC3VzZXJBZGRyZXNzAAAAEHByaWNlQXNzZXRBbW91bnQAAAAOaWRvQXNzZXRBbW91bnQAAAAEdHhJZAkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQAAAADAgAAAAZpbnZlc3QFAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEFAAAABHR4SWQJAQAAABNmb3JtYXRIaXN0b3J5UmVjb3JkAAAAAgUAAAAQcHJpY2VBc3NldEFtb3VudAUAAAAOaWRvQXNzZXRBbW91bnQBAAAAGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABAAAAAt1c2VyQWRkcmVzcwAAABBwcmljZUFzc2V0QW1vdW50AAAADmlkb0Fzc2V0QW1vdW50AAAABHR4SWQJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAAAAAwIAAAAFY2xhaW0FAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEFAAAABHR4SWQJAQAAABNmb3JtYXRIaXN0b3J5UmVjb3JkAAAAAgUAAAAQcHJpY2VBc3NldEFtb3VudAUAAAAOaWRvQXNzZXRBbW91bnQBAAAADWludGVybmFsQ2xhaW0AAAADAAAAEGNsYWltZWRBc3NldElkNTgAAAALdXNlckFkZHJlc3MAAAAEdHhJZAQAAAAIY2ZnQXJyYXkJAQAAAA9yZWFkQ29uZmlnQXJyYXkAAAAABAAAAApjbGFpbVN0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEElkeENmZ0NsYWltU3RhcnQEAAAADWNsYWltRHVyYXRpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAATSWR4Q2ZnQ2xhaW1EdXJhdGlvbgQAAAAIY2xhaW1FbmQJAABkAAAAAgUAAAAKY2xhaW1TdGFydAUAAAANY2xhaW1EdXJhdGlvbgQAAAAFcHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAALSWR4Q2ZnUHJpY2UEAAAACXByaWNlTXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA9JZHhDZmdQcmljZU11bHQEAAAADGlkb0Fzc2V0SWQ1OAkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAQSWR4Q2ZnSWRvQXNzZXRJZAQAAAAKaWRvQXNzZXRJZAkAAlkAAAABBQAAAAxpZG9Bc3NldElkNTgEAAAADGlkb0Fzc2V0TXVsdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdJZG9Bc3NldE11bHQEAAAADnByaWNlQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdQcmljZUFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAlkAAAABBQAAAA5wcmljZUFzc2V0SWQ1OAQAAAAOcHJpY2VBc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAUSWR4Q2ZnUHJpY2VBc3NldE11bHQEAAAADXVzZXJBZGRyZXNzNTgJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MEAAAAD29yaWdJbnZlc3RBcnJheQkBAAAAF3JlYWRJbnZlc3RvckFycmF5T3JGYWlsAAAAAQUAAAANdXNlckFkZHJlc3M1OAQAAAARaW52ZXN0VG90YWxBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA9vcmlnSW52ZXN0QXJyYXkFAAAAEUlkeEludlRvdGFsQW1vdW50BAAAABppbnZlc3RMYXN0Q2xhaW1lZEhlaWdodFRNUAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD29yaWdJbnZlc3RBcnJheQUAAAAXSWR4SW52TGFzdENsYWltZWRIZWlnaHQEAAAAF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0AwkAAGcAAAACBQAAAApjbGFpbVN0YXJ0BQAAABppbnZlc3RMYXN0Q2xhaW1lZEhlaWdodFRNUAUAAAAKY2xhaW1TdGFydAUAAAAaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAEAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACGNsYWltRW5kBQAAAAhjbGFpbUVuZAMJAABmAAAAAgUAAAAKY2xhaW1TdGFydAUAAAAGaGVpZ2h0BQAAAApjbGFpbVN0YXJ0BQAAAAZoZWlnaHQEAAAADmNsYWltaW5nQmxvY2tzCQAAZQAAAAIFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0BQAAABdpbnZlc3RMYXN0Q2xhaW1lZEhlaWdodAQAAAAYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQAAawAAAAMFAAAAEWludmVzdFRvdGFsQW1vdW50BQAAAA5jbGFpbWluZ0Jsb2NrcwUAAAANY2xhaW1EdXJhdGlvbgQAAAAFZXJyb3IJAQAAAAh0aHJvd0VycgAAAAEJAAS5AAAAAgkABEwAAAACCQABpAAAAAEFAAAABmhlaWdodAkABEwAAAACCQABpAAAAAEFAAAACmNsYWltU3RhcnQJAARMAAAAAgkAAaQAAAABBQAAAAhjbGFpbUVuZAkABEwAAAACCQABpAAAAAEFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAAXaW52ZXN0TGFzdENsYWltZWRIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAABFpbnZlc3RUb3RhbEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADmNsYWltaW5nQmxvY2tzCQAETAAAAAIJAAGkAAAAAQUAAAANY2xhaW1EdXJhdGlvbgkABEwAAAACCQABpAAAAAEFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAUAAAADbmlsAgAAAAEgAwkAAAAAAAACBQAAAAVlcnJvcgUAAAAFZXJyb3IEAAAAFmNsYWltaW5nSWRvQXNzZXRBbW91bnQJAQAAAB1jb252ZXJ0UHJpY2VBc3NldEludG9JZG9Bc3NldAAAAAUFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAUAAAAOcHJpY2VBc3NldE11bHQFAAAABXByaWNlBQAAAAlwcmljZU11bHQFAAAADGlkb0Fzc2V0TXVsdAQAAAAGaXNVU0ROCQAAAAAAAAIFAAAAEGNsYWltZWRBc3NldElkNTgFAAAADnByaWNlQXNzZXRJZDU4BAAAABNpc1VTRE5DbGFpbURpc2FibGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIAAAAAEJAQAAABRrZXlVU0ROQ2xhaW1EaXNhYmxlZAAAAAAHBAAAAAZjaGVja3MJAARMAAAAAgMJAQAAAAEhAAAAAQMFAAAABmlzVVNETgUAAAATaXNVU0ROQ2xhaW1EaXNhYmxlZAcGCQAAAgAAAAECAAAAFlVTRE4gY2xhaW0gaXMgZGlzYWJsZWQFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MDCQAAAAAAAAIFAAAAEGNsYWltZWRBc3NldElkNTgFAAAADnByaWNlQXNzZXRJZDU4CQAFGAAAAAYJAARMAAAAAgAAAAAAAAAAAAkABEwAAAACCQEAAAABLQAAAAEFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQFAAAADHByaWNlQXNzZXRJZAUAAAAPb3JpZ0ludmVzdEFycmF5BQAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAkABEwAAAACBQAAABhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAARMAAAAAgUAAAAWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAABBjbGFpbWVkQXNzZXRJZDU4BQAAAAxpZG9Bc3NldElkNTgJAAUYAAAABgkABEwAAAACAAAAAAAAAAAACQAETAAAAAIJAQAAAAEtAAAAAQUAAAAYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgUAAAAWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAUAAAADbmlsBQAAABZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQAAAAppZG9Bc3NldElkBQAAAA9vcmlnSW52ZXN0QXJyYXkFAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CQAETAAAAAIFAAAAGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAABZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAABV1bnN1cHBvcnRlZCBhc3NldElkOiAFAAAAEGNsYWltZWRBc3NldElkNTgJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAPaW50ZXJuYWxDbGFpbVYyAAAABAAAAA5wcmljZUFzc2V0SWQ1OAAAAA11c2VyQWRkcmVzczU4AAAACW91dEFtb3VudAAAABl0b3RhbFVzZXJBdmFpbGFibGVUb0NsYWltBAAAAB50b3RhbFBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UJAQAAAAV2YWx1ZQAAAAEJAAQfAAAAAQkBAAAAF2tleVRvdGFsUGVyaW9kQWxsb3dhbmNlAAAAAQUAAAAOcHJpY2VBc3NldElkNTgEAAAAHXVzZXJQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlCQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAABZrZXlVc2VyUGVyaW9kQWxsb3dhbmNlAAAAAQUAAAAOcHJpY2VBc3NldElkNTgEAAAADHBlcmlvZExlbmd0aAkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAAPa2V5UGVyaW9kTGVuZ3RoAAAAAAQAAAANY3VycmVudFBlcmlvZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAAQa2V5Q3VycmVudFBlcmlvZAAAAAAAAAAAAAAAAAAEAAAAG3plcm9QZXJpb2RFbmRIZWlnaElzRGVmaW5lZAkBAAAACWlzRGVmaW5lZAAAAAEJAAQfAAAAAQkBAAAAEmtleVBlcmlvZEVuZEhlaWdodAAAAAEAAAAAAAAAAAAEAAAADSR0MDEyODU0MTQ3MjQDCQAAZgAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAAEAAAAFWxhc3RQZXJpb2RTdGFydEhlaWdodAkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAAUa2V5UGVyaW9kU3RhcnRIZWlnaHQAAAABBQAAAA1jdXJyZW50UGVyaW9kBAAAABNsYXN0UGVyaW9kRW5kSGVpZ2h0CQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAABJrZXlQZXJpb2RFbmRIZWlnaHQAAAABBQAAAA1jdXJyZW50UGVyaW9kBAAAAA0kdDAxMzExNDEzODE5AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAE2xhc3RQZXJpb2RFbmRIZWlnaHQEAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kCQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEEAAAAC3BlcmlvZFN0YXJ0AwkAAGYAAAACBQAAAAZoZWlnaHQJAABkAAAAAgUAAAATbGFzdFBlcmlvZEVuZEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoBAAAABdibG9ja3NUb0xhc3RQZXJpb2RTdGFydAkAAGoAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAATbGFzdFBlcmlvZEVuZEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAwkAAAAAAAACBQAAABdibG9ja3NUb0xhc3RQZXJpb2RTdGFydAAAAAAAAAAAAAkAAGQAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAAAAAAAAAAABCQAAZQAAAAIFAAAABmhlaWdodAUAAAAXYmxvY2tzVG9MYXN0UGVyaW9kU3RhcnQJAABkAAAAAgUAAAATbGFzdFBlcmlvZEVuZEhlaWdodAAAAAAAAAAAAQQAAAAJcGVyaW9kRW5kCQAAZQAAAAIJAABkAAAAAgUAAAALcGVyaW9kU3RhcnQFAAAADHBlcmlvZExlbmd0aAAAAAAAAAAAAQkABRUAAAADBQAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAUAAAALcGVyaW9kU3RhcnQFAAAACXBlcmlvZEVuZAkABRUAAAADBQAAAA1jdXJyZW50UGVyaW9kBQAAABVsYXN0UGVyaW9kU3RhcnRIZWlnaHQFAAAAE2xhc3RQZXJpb2RFbmRIZWlnaHQEAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kCAUAAAANJHQwMTMxMTQxMzgxOQAAAAJfMQQAAAALcGVyaW9kU3RhcnQIBQAAAA0kdDAxMzExNDEzODE5AAAAAl8yBAAAAAlwZXJpb2RFbmQIBQAAAA0kdDAxMzExNDEzODE5AAAAAl8zCQAFFQAAAAMFAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQAAAAtwZXJpb2RTdGFydAUAAAAJcGVyaW9kRW5kAwUAAAAbemVyb1BlcmlvZEVuZEhlaWdoSXNEZWZpbmVkBAAAABV6ZXJvUGVyaW9kU3RhcnRIZWlnaHQJAQAAAAV2YWx1ZQAAAAEJAAQfAAAAAQkBAAAAFGtleVBlcmlvZFN0YXJ0SGVpZ2h0AAAAAQAAAAAAAAAAAAQAAAATemVyb1BlcmlvZEVuZEhlaWdodAkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAASa2V5UGVyaW9kRW5kSGVpZ2h0AAAAAQAAAAAAAAAAAAQAAAANJHQwMTQwNzQxNDQ1NgMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABN6ZXJvUGVyaW9kRW5kSGVpZ2h0BAAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAkAAGQAAAACBQAAAA1jdXJyZW50UGVyaW9kAAAAAAAAAAABBAAAAAtwZXJpb2RTdGFydAkAAGQAAAACBQAAABN6ZXJvUGVyaW9kRW5kSGVpZ2h0AAAAAAAAAAABBAAAAAlwZXJpb2RFbmQJAABlAAAAAgkAAGQAAAACBQAAAAtwZXJpb2RTdGFydAUAAAAMcGVyaW9kTGVuZ3RoAAAAAAAAAAABCQAFFQAAAAMFAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQAAAAtwZXJpb2RTdGFydAUAAAAJcGVyaW9kRW5kCQAFFQAAAAMFAAAADWN1cnJlbnRQZXJpb2QFAAAAFXplcm9QZXJpb2RTdGFydEhlaWdodAUAAAATemVyb1BlcmlvZEVuZEhlaWdodAQAAAAUdXBkYXRlZEN1cnJlbnRQZXJpb2QIBQAAAA0kdDAxNDA3NDE0NDU2AAAAAl8xBAAAAAtwZXJpb2RTdGFydAgFAAAADSR0MDE0MDc0MTQ0NTYAAAACXzIEAAAACXBlcmlvZEVuZAgFAAAADSR0MDE0MDc0MTQ0NTYAAAACXzMJAAUVAAAAAwUAAAAUdXBkYXRlZEN1cnJlbnRQZXJpb2QFAAAAC3BlcmlvZFN0YXJ0BQAAAAlwZXJpb2RFbmQJAAUVAAAAAwUAAAANY3VycmVudFBlcmlvZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAAUa2V5UGVyaW9kU3RhcnRIZWlnaHQAAAABBQAAAA1jdXJyZW50UGVyaW9kBQAAAAZoZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAEmtleVBlcmlvZEVuZEhlaWdodAAAAAEFAAAADWN1cnJlbnRQZXJpb2QJAABlAAAAAgkAAGQAAAACBQAAAAZoZWlnaHQFAAAADHBlcmlvZExlbmd0aAAAAAAAAAAAAQQAAAAUdXBkYXRlZEN1cnJlbnRQZXJpb2QIBQAAAA0kdDAxMjg1NDE0NzI0AAAAAl8xBAAAAAtwZXJpb2RTdGFydAgFAAAADSR0MDEyODU0MTQ3MjQAAAACXzIEAAAACXBlcmlvZEVuZAgFAAAADSR0MDEyODU0MTQ3MjQAAAACXzMEAAAAG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAAea2V5UGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltAAAAAgUAAAAOcHJpY2VBc3NldElkNTgFAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQAAAB50b3RhbFBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UEAAAAGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAAB1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQAAAAMFAAAADnByaWNlQXNzZXRJZDU4BQAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAUAAAANdXNlckFkZHJlc3M1OAUAAAAddXNlclBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UEAAAAEXByaWNlQXNzZXRCYWxhbmNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAABRrZXlQcmljZUFzc2V0QmFsYW5jZQAAAAEFAAAADXVzZXJBZGRyZXNzNTgAAAAAAAAAAAAEAAAAGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0JAAGXAAAAAQkABEwAAAACCQAAZAAAAAIFAAAACW91dEFtb3VudAUAAAARcHJpY2VBc3NldEJhbGFuY2UJAARMAAAAAgUAAAAbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQAETAAAAAIFAAAAGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltBQAAAANuaWwEAAAAHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8JAQAAAAV2YWx1ZQAAAAEJAAQfAAAAAQkBAAAAH2tleVVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8AAAAABAAAABtwdXRPbmVUa25WMlByaWNlQXNzZXRBbW91bnQFAAAABnNjYWxlOAQAAAANJHQwMTU0NzkxNTczMgoAAAAAAUAJAAP8AAAABAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAABXZhbHVlAAAAAQkABCIAAAABCQEAAAAba2V5VXNkdFByaWNlQXNzZXRTdGFibGVQb29sAAAAAAIAAAAhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZCQAETAAAAAIFAAAAG3B1dE9uZVRrblYyUHJpY2VBc3NldEFtb3VudAkABEwAAAACBQAAAA5wcmljZUFzc2V0SWQ1OAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAAUACAAAADyhJbnQsIEludCwgSW50KQUAAAABQAkAAAIAAAABAgAAACRDb3VsZG4ndCBjYXN0IEFueSB0byAoSW50LCBJbnQsIEludCkDCQAAAAAAAAIFAAAADSR0MDE1NDc5MTU3MzIFAAAADSR0MDE1NDc5MTU3MzIEAAAABWJvbnVzCAUAAAANJHQwMTU0NzkxNTczMgAAAAJfMwQAAAAJZmVlQW1vdW50CAUAAAANJHQwMTU0NzkxNTczMgAAAAJfMgQAAAAIbHBBbW91bnQIBQAAAA0kdDAxNTQ3OTE1NzMyAAAAAl8xBAAAAAt1c2R0QXNzZXRJZAkBAAAABXZhbHVlAAAAAQkABCIAAAABCQEAAAAOa2V5VXNkdEFzc2V0SWQAAAAABAAAAA0kdDAxNTc5NDE2MDEyCgAAAAABQAkAA/wAAAAECQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAFdmFsdWUAAAABCQAEIgAAAAEJAQAAABtrZXlVc2R0UHJpY2VBc3NldFN0YWJsZVBvb2wAAAAAAgAAABNnZXRPbmVUa25WMlJFQURPTkxZCQAETAAAAAIFAAAAC3VzZHRBc3NldElkCQAETAAAAAIFAAAACGxwQW1vdW50BQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAABQAIAAAAKKEludCwgSW50KQUAAAABQAkAAAIAAAABAgAAAB9Db3VsZG4ndCBjYXN0IEFueSB0byAoSW50LCBJbnQpAwkAAAAAAAACBQAAAA0kdDAxNTc5NDE2MDEyBQAAAA0kdDAxNTc5NDE2MDEyBAAAABRnZXRPbmVUa25WMkZlZUFtb3VudAgFAAAADSR0MDE1Nzk0MTYwMTIAAAACXzIEAAAACnVzZHRBbW91bnQIBQAAAA0kdDAxNTc5NDE2MDEyAAAAAl8xBAAAABpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwkAAGsAAAADBQAAABtwdXRPbmVUa25WMlByaWNlQXNzZXRBbW91bnQFAAAABnNjYWxlOAUAAAAKdXNkdEFtb3VudAQAAAATZW5kUGVyaW9kQmxvY2tzTGVmdAkAAGUAAAACBQAAAAlwZXJpb2RFbmQFAAAABmhlaWdodAkABRwAAAAKBQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltBQAAABtwZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0FAAAAGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltBQAAABl0b3RhbFVzZXJBdmFpbGFibGVUb0NsYWltBQAAABx1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvBQAAABpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwUAAAATZW5kUGVyaW9kQmxvY2tzTGVmdAUA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cGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAADklkeENmZ0lkb1N0YXJ0BAAAAAtpZG9EdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABFJZHhDZmdJZG9EdXJhdGlvbgQAAAAGaWRvRW5kCQAAZAAAAAIFAAAACGlkb1N0YXJ0BQAAAAtpZG9EdXJhdGlvbgQAAAAKY2xhaW1TdGFydAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABBJZHhDZmdDbGFpbVN0YXJ0BAAAAA1jbGFpbUR1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAE0lkeENmZ0NsYWltRHVyYXRpb24EAAAABXByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAC0lkeENmZ1ByaWNlBAAAAAlwcmljZU11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAPSWR4Q2ZnUHJpY2VNdWx0BAAAAAxpZG9Bc3NldElkNTgJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEElkeENmZ0lkb0Fzc2V0SWQEAAAACmlkb0Fzc2V0SWQJAAJZAAAAAQUAAAAMaWRvQXNzZXRJZDU4BAAAAAxpZG9Bc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnSWRvQXNzZXRNdWx0BAAAAA5wcmljZUFzc2V0SWQ1OAkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnUHJpY2VBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAJZAAAAAQUAAAAOcHJpY2VBc3NldElkNTgEAAAADnByaWNlQXNzZXRNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFElkeENmZ1ByaWNlQXNzZXRNdWx0BAAAAA5taW5JdmVzdEFtb3VudAkB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aWNlQXNzZXRJZAQAAAAQY2xhaW1SZXN1bHRUdXBsZQkBAAAADWludGVybmFsQ2xhaW0AAAADBQAAABBjbGFpbWVkQXNzZXRJZDU4CAUAAAABaQAAAAZjYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACnRvdGFsc0RpZmYIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8xBAAAAAlvdXRBbW91bnQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8yBAAAAApvdXRBc3NldElkCAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMwQAAAAPb3JpZ0ludmVzdEFycmF5CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNAQAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl81BAAAABpjbGFpbWVkUHJpY2VBbW91bnRGcm9tRGlmZgkAAZEAAAACBQAAAAp0b3RhbHNEaWZmBQAAACJJZHhEaWZmQ2xhaW1lZFByaWNlQW1vdW50SW5jcmVtZW50BAAAAB1jbGFpbWVkSWRvQXNzZXRBbW91bnRGcm9tRGlmZgkAAZEAAAACBQAAAAp0b3RhbHNEaWZmBQAAACVJZHhEaWZmQ2xhaW1lZElkb0Fzc2V0QW1vdW50SW5jcmVtZW50BAAAABFwcmljZUFzc2V0QmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAAUa2V5UHJpY2VBc3NldEJhbGFuY2UAAAABBQAAAA11c2VyQWRkcmVzczU4AAAAAAAAAAAABAAAABJwcmljZUFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAAOcHJpY2VBc3NldElkNTgAAAAIZGVjaW1hbHMEAAAAB2VudHJpZXMDCQAAAAAAAAIFAAAAEGNsYWltZWRBc3NldElkNTgFAAAADnByaWNlQXNzZXRJZDU4BAAAAA0kdDAyMTkyMTIyMzY1CQEAAAAPaW50ZXJuYWxDbGFpbVYyAAAABAUAAAAOcHJpY2VBc3NldElkNTgFAAAADXVzZXJBZGRyZXNzNTgFAAAACW91dEFtb3VudAkAAZEAAAACBQAAAAp0b3RhbHNEaWZmBQAAACJJZHhEaWZmQ2xhaW1lZFByaWNlQW1vdW50SW5jcmVtZW50BAAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCAUAAAANJHQwMjE5MjEyMjM2NQAAAAJfMQQAAAAbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCAUAAAANJHQwMjE5MjEyMjM2NQAAAAJfMgQAAAAacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0IBQAAAA0kdDAyMTkyMTIyMzY1AAAAAl8zBAAAABl0b3RhbFVzZXJBdmFpbGFibGVUb0NsYWltCAUAAAANJHQwMjE5MjEyMjM2NQAAAAJfNAQAAAAcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwgFAAAADSR0MDIxOTIxMjIzNjUAAAACXzUEAAAAGmN1cnJlbnRVc2R0UHJpY2VBc3NldFJhdGlvCAUAAAANJHQwMjE5MjEyMjM2NQAAAAJfNgQAAAATZW5kUGVyaW9kQmxvY2tzTGVmdAgFAAAADSR0MDIxOTIxMjIzNjUAAAACXzcEAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kCAUAAAANJHQwMjE5MjEyMjM2NQAAAAJfOAQAAAALcGVyaW9kU3RhcnQIBQAAAA0kdDAyMTkyMTIyMzY1AAAAAl85BAAAAAlwZXJpb2RFbmQIBQAAAA0kdDAyMTkyMTIyMzY1AAAAA18xMAQAAAAGY2hlY2tzCQAETAAAAAIDCQAAZgAAAAIFAAAAGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltAAAAAAAAAAAABgkBAAAACHRocm93RXJyAAAAAQIAAAA6dW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2VyIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkABEwAAAACAwkAAGYAAAACBQAAABtwZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0AAAAAAAAAAAAGCQEAAAAIdGhyb3dFcnIAAAABAgAAADt1bmF2YWlsYWJsZSB0byBjbGFpbSBiZWNhdXNlIHRvdGFsIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkABEwAAAACAwkAAGYAAAACBQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltAAAAAAAAAAAABgkBAAAACHRocm93RXJyAAAAAQIAAAAQbm90aGluZyB0byBjbGFpbQkABEwAAAACAwkAAGYAAAACBQAAABx1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvBQAAABpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwYJAQAAAAh0aHJvd0VycgAAAAECAAAAT3VuYXZhaWxhYmxlIHRvIGNsYWltIGJlY2F1c2UgdXNkbiBwcmljZSBsb3dlciB0aGFuIHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8FAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MEAAAAInVwZGF0ZWRQZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0JAABlAAAAAgUAAAAbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltBQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltBAAAACF1cGRhdGVkUGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0JAABlAAAAAgUAAAAacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0FAAAAGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0EAAAAB2VudHJpZXMDCQAAZwAAAAIFAAAAEXByaWNlQXNzZXRCYWxhbmNlBQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQUAAAAKb3V0QXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFGtleVByaWNlQXNzZXRCYWxhbmNlAAAAAQUAAAANdXNlckFkZHJlc3M1OAkAAGUAAAACBQAAABFwcmljZUFzc2V0QmFsYW5jZQUAAAAZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQUAAAADbmlsBAAAABh1cGRhdGVkUHJpY2VBc3NldEJhbGFuY2UJAABlAAAAAgkAAGQAAAACBQAAABFwcmljZUFzc2V0QmFsYW5jZQUAAAAJb3V0QW1vdW50BQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAUJAQAAAAtrZXlJbnZlc3RvcgAAAAEFAAAADXVzZXJBZGRyZXNzNTgFAAAAD29yaWdJbnZlc3RBcnJheQUAAAAKdG90YWxzRGlmZgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1RvdGFsc0VudHJ5AAAABQkBAAAACWtleVRvdGFscwAAAAAJAQAAABhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQAAAAABQAAAAp0b3RhbHNEaWZmBQAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFGtleVByaWNlQXNzZXRCYWxhbmNlAAAAAQUAAAANdXNlckFkZHJlc3M1OAUAAAAYdXBkYXRlZFByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQUAAAAKb3V0QXNzZXRJZAUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGtleUN1cnJlbnRQZXJpb2QAAAAABQAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFGtleVBlcmlvZFN0YXJ0SGVpZ2h0AAAAAQUAAAAUdXBkYXRlZEN1cnJlbnRQZXJpb2QFAAAAC3BlcmlvZFN0YXJ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5UGVyaW9kRW5kSGVpZ2h0AAAAAQUAAAAUdXBkYXRlZEN1cnJlbnRQZXJpb2QFAAAACXBlcmlvZEVuZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAHmtleVBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQAAAAIFAAAADnByaWNlQXNzZXRJZDU4BQAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAUAAAAidXBkYXRlZFBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAHWtleVBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltAAAAAwUAAAAOcHJpY2VBc3NldElkNTgFAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQAAAA11c2VyQWRkcmVzczU4BQAAACF1cGRhdGVkUGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0JAARMAAAAAgkBAAAAGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5AAAABAUAAAANdXNlckFkZHJlc3M1OAUAAAAZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQUAAAAdY2xhaW1lZElkb0Fzc2V0QW1vdW50RnJvbURpZmYIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAUAAAAHZW50cmllcwUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAAAAHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMJAABrAAAAAwUAAAARcHJpY2VBc3NldEJhbGFuY2UFAAAABnNjYWxlOAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAABJwcmljZUFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04JAAUUAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABkAAAAAgUAAAAJb3V0QW1vdW50BQAAABxwcmljZUFzc2V0QmFsYW5jZUlkb0RlY2ltYWxzBQAAAApvdXRBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAUa2V5UHJpY2VBc3NldEJhbGFuY2UAAAABBQAAAA11c2VyQWRkcmVzczU4AAAAAAAAAAAACQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAUJAQAAAAtrZXlJbnZlc3RvcgAAAAEFAAAADXVzZXJBZGRyZXNzNTgFAAAAD29yaWdJbnZlc3RBcnJheQUAAAAKdG90YWxzRGlmZgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQFAAAAEXByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAQAAAAtUb3RhbHNFbnRyeQAAAAUJAQAAAAlrZXlUb3RhbHMAAAAACQEAAAAYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAAAAAUAAAAKdG90YWxzRGlmZgUAAAAUbmV3Q2xhaW1QZXJpb2RIZWlnaHQFAAAAEXByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAQAAABpDbGFpbU9wZXJhdGlvbkhpc3RvcnlFbnRyeQAAAAQFAAAADXVzZXJBZGRyZXNzNTgFAAAAGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmCQAAZAAAAAIFAAAAHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmBQAAABxwcmljZUFzc2V0QmFsYW5jZUlkb0RlY2ltYWxzCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAABHVuaXQFAAAAB2VudHJpZXMAAAABaQEAAAANY2xhaW1SRUFET05MWQAAAAIAAAAQY2xhaW1lZEFzc2V0SWQ1OAAAAA11c2VyQWRkcmVzczU4BAAAABBjbGFpbVJlc3VsdFR1cGxlCQEAAAANaW50ZXJuYWxDbGFpbQAAAAMFAAAAEGNsYWltZWRBc3NldElkNTgJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADXVzZXJBZGRyZXNzNTgJAAJZAAAAAQIAAAAABAAAAAp0b3RhbHNEaWZmCAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMQQAAAAJb3V0QW1vdW50CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfMgQAAAAKb3V0QXNzZXRJZAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzMEAAAAD29yaWdJbnZlc3RBcnJheQgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzQEAAAAFG5ld0NsYWltUGVyaW9kSGVpZ2h0CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNQQAAAAVYXZhaWxhYmxlVG9DbGFpbUFycmF5CAUAAAAQY2xhaW1SZXN1bHRUdXBsZQAAAAJfNgQAAAAbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltCQABkQAAAAIFAAAAFWF2YWlsYWJsZVRvQ2xhaW1BcnJheQAAAAAAAAAAAAQAAAAZYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbQkAAZEAAAACBQAAABVhdmFpbGFibGVUb0NsYWltQXJyYXkAAAAAAAAAAAEJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlZCVkCQAETAAAAAIFAAAADXVzZXJBZGRyZXNzNTgJAARMAAAAAgkAAaQAAAABBQAAABthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAARMAAAAAgkAAaQAAAABBQAAABlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltBQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAA9jbGFpbVYyUkVBRE9OTFkAAAACAAAAEGNsYWltZWRBc3NldElkNTgAAAANdXNlckFkZHJlc3M1OAQAAAAQY2xhaW1SZXN1bHRUdXBsZQkBAAAADWludGVybmFsQ2xhaW0AAAADBQAAABBjbGFpbWVkQXNzZXRJZDU4CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA11c2VyQWRkcmVzczU4CQACWQAAAAECAAAAAAQAAAAKdG90YWxzRGlmZggFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzEEAAAACW91dEFtb3VudAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzIEAAAACm91dEFzc2V0SWQIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl8zBAAAAA9vcmlnSW52ZXN0QXJyYXkIBQAAABBjbGFpbVJlc3VsdFR1cGxlAAAAAl80BAAAABRuZXdDbGFpbVBlcmlvZEhlaWdodAgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzUEAAAAFWF2YWlsYWJsZVRvQ2xhaW1BcnJheQgFAAAAEGNsYWltUmVzdWx0VHVwbGUAAAACXzYEAAAAG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQkAAZEAAAACBQAAABVhdmFpbGFibGVUb0NsYWltQXJyYXkAAAAAAAAAAAAEAAAAGWF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW0JAAGRAAAAAgUAAAAVYXZhaWxhYmxlVG9DbGFpbUFycmF5AAAAAAAAAAABBAAAAAhjZmdBcnJheQkBAAAAD3JlYWRDb25maWdBcnJheQAAAAAEAAAADnByaWNlQXNzZXRJZDU4CQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdQcmljZUFzc2V0SWQEAAAAEXByaWNlQXNzZXRCYWxhbmNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAABRrZXlQcmljZUFzc2V0QmFsYW5jZQAAAAEFAAAADXVzZXJBZGRyZXNzNTgAAAAAAAAAAAAEAAAAHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMJAABoAAAAAgUAAAARcHJpY2VBc3NldEJhbGFuY2UAAAAAAAAAAGQEAAAALmF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW1XaXRoUHJpY2VBc3NldEJhbGFuY2UJAABkAAAAAgUAAAAZYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbQUAAAAccHJpY2VBc3NldEJhbGFuY2VJZG9EZWNpbWFscwQAAAANJHQwMjg2NTgyOTA3MAkBAAAAD2ludGVybmFsQ2xhaW1WMgAAAAQFAAAADnByaWNlQXNzZXRJZDU4BQAAAA11c2VyQWRkcmVzczU4BQAAAAlvdXRBbW91bnQJAAGRAAAAAgUAAAAKdG90YWxzRGlmZgUAAAAiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAQAAAAZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQgFAAAADSR0MDI4NjU4MjkwNzAAAAACXzEEAAAAG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQgFAAAADSR0MDI4NjU4MjkwNzAAAAACXzIEAAAAGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCAUAAAANJHQwMjg2NTgyOTA3MAAAAAJfMwQAAAAZdG90YWxVc2VyQXZhaWxhYmxlVG9DbGFpbQgFAAAADSR0MDI4NjU4MjkwNzAAAAACXzQEAAAAHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8IBQAAAA0kdDAyODY1ODI5MDcwAAAAAl81BAAAABpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwgFAAAADSR0MDI4NjU4MjkwNzAAAAACXzYEAAAAE2VuZFBlcmlvZEJsb2Nrc0xlZnQIBQAAAA0kdDAyODY1ODI5MDcwAAAAAl83BAAAABR1cGRhdGVkQ3VycmVudFBlcmlvZAgFAAAADSR0MDI4NjU4MjkwNzAAAAACXzgEAAAAC3BlcmlvZFN0YXJ0CAUAAAANJHQwMjg2NTgyOTA3MAAAAAJfOQQAAAAJcGVyaW9kRW5kCAUAAAANJHQwMjg2NTgyOTA3MAAAAANfMTAEAAAAFmN1cnJlbnRQZXJpb2RFbmRIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAEmtleVBlcmlvZEVuZEhlaWdodAAAAAEFAAAAFHVwZGF0ZWRDdXJyZW50UGVyaW9kAAAAAAAAAAAABAAAABp1c2VyVG90YWxQcmljZUFzc2V0Q2xhaW1lZAkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgkBAAAAF3JlYWRJbnZlc3RvckFycmF5T3JGYWlsAAAAAQUAAAANdXNlckFkZHJlc3M1OAUAAAAdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQFAAAAEXByaWNlQXNzZXRCYWxhbmNlBAAAAAxyZXN1bHRTdHJpbmcDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAWY3VycmVudFBlcmlvZEVuZEhlaWdodAQAAAAMcGVyaW9kTGVuZ2h0CQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAAA9rZXlQZXJpb2RMZW5ndGgAAAAABAAAABN1c2VyUGVyaW9kQWxsb3dhbmNlCQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAABZrZXlVc2VyUGVyaW9kQWxsb3dhbmNlAAAAAQUAAAAOcHJpY2VBc3NldElkNTgEAAAAFHRvdGFsUGVyaW9kQWxsb3dhbmNlCQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAABdrZXlUb3RhbFBlcmlvZEFsbG93YW5jZQAAAAEFAAAADnByaWNlQXNzZXRJZDU4CQAEuQAAAAIJAARMAAAAAgIAAAAMJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAuYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbVdpdGhQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAAE3VzZXJQZXJpb2RBbGxvd2FuY2UJAARMAAAAAgkAAaQAAAABBQAAABR0b3RhbFBlcmlvZEFsbG93YW5jZQkABEwAAAACCQABpAAAAAEFAAAAHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8JAARMAAAAAgkAAaQAAAABBQAAABpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwkABEwAAAACCQABpAAAAAEFAAAADHBlcmlvZExlbmdodAkABEwAAAACCQABpAAAAAEFAAAAGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkBQAAAANuaWwFAAAAA1NFUAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAALmF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW1XaXRoUHJpY2VBc3NldEJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAABlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAAGkAAAAAQUAAAAbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQAETAAAAAIJAAGkAAAAAQUAAAAcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwkABEwAAAACCQABpAAAAAEFAAAAGmN1cnJlbnRVc2R0UHJpY2VBc3NldFJhdGlvCQAETAAAAAIJAAGkAAAAAQUAAAATZW5kUGVyaW9kQmxvY2tzTGVmdAkABEwAAAACCQABpAAAAAEFAAAAGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkBQAAAANuaWwFAAAAA1NFUAkABRQAAAACBQAAAANuaWwFAAAADHJlc3VsdFN0cmluZwAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAPdGFyZ2V0UHVibGljS2V5BAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwBQAAAAJwawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAD3RhcmdldFB1YmxpY0tleQUOCE4=", "height": 3398395, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F4VetHmUzdCWKc4dEtWo5dUewhm2dFsEJ8Jm8S6Ht48z Next: 59SaYYFrpy5r28Z5bHZRgwz5JAamTQeqJxyUfxg7tgUQ Diff:
OldNewDifferences
203203 else if ((F > height))
204204 then F
205205 else height
206- let bn = f(makeString([toString(height), toString(F), toString(be), toString(bm)], " "))
207- if ((bn == bn))
206+ let bn = (bm - bl)
207+ let bo = fraction(bj, bn, G)
208+ let bp = f(makeString([toString(height), toString(F), toString(be), toString(bm), toString(bl), toString(bj), toString(bn), toString(G), toString(bo)], " "))
209+ if ((bp == bp))
208210 then {
209- let bo = (bm - bl)
210- let bp = fraction(bj, bo, G)
211- let bq = f(makeString([toString(bj), toString(bo), toString(G), toString(bp)], " "))
212- if ((bq == bq))
211+ let bq = h(bo, L, k, H, J)
212+ let br = (bd == K)
213+ let bs = valueOrElse(getBoolean(ak()), false)
214+ let bt = [if (!(if (br)
215+ then bs
216+ else false))
217+ then true
218+ else throw("USDN claim is disabled")]
219+ if ((bt == bt))
220+ then if ((bd == K))
221+ then $Tuple6([0, -(bo), bo, 0], bo, bg, bi, bm, [bo, bq])
222+ else if ((bd == I))
223+ then $Tuple6([0, -(bo), 0, bq], bq, bf, bi, bm, [bo, bq])
224+ else throw(("unsupported assetId: " + bd))
225+ else throw("Strict value is not equal to itself.")
226+ }
227+ else throw("Strict value is not equal to itself.")
228+ }
229+
230+
231+func bu (K,bh,bv,bw) = {
232+ let bx = value(getInteger(as(K)))
233+ let by = value(getInteger(au(K)))
234+ let bz = value(getInteger(am()))
235+ let bA = valueOrElse(getInteger(an()), 0)
236+ let bB = isDefined(getInteger(aq(0)))
237+ let bC = if ((bA > 0))
238+ then {
239+ let bD = value(getInteger(ao(bA)))
240+ let bE = value(getInteger(aq(bA)))
241+ let bF = if ((height > bE))
213242 then {
214- let br = h(bp, L, k, H, J)
215- let bs = (bd == K)
216- let bt = valueOrElse(getBoolean(ak()), false)
217- let bu = [if (!(if (bs)
218- then bt
219- else false))
220- then true
221- else throw("USDN claim is disabled")]
222- if ((bu == bu))
223- then if ((bd == K))
224- then $Tuple6([0, -(bp), bp, 0], bp, bg, bi, bm, [bp, br])
225- else if ((bd == I))
226- then $Tuple6([0, -(bp), 0, br], br, bf, bi, bm, [bp, br])
227- else throw(("unsupported assetId: " + bd))
228- else throw("Strict value is not equal to itself.")
243+ let bG = (bA + 1)
244+ let bH = if ((height > (bE + bz)))
245+ then {
246+ let bI = ((height - bE) % bz)
247+ if ((bI == 0))
248+ then ((height - bz) + 1)
249+ else (height - bI)
250+ }
251+ else (bE + 1)
252+ let bJ = ((bH + bz) - 1)
253+ $Tuple3(bG, bH, bJ)
254+ }
255+ else $Tuple3(bA, bD, bE)
256+ let bG = bF._1
257+ let bH = bF._2
258+ let bJ = bF._3
259+ $Tuple3(bG, bH, bJ)
260+ }
261+ else if (bB)
262+ then {
263+ let bK = value(getInteger(ao(0)))
264+ let bL = value(getInteger(aq(0)))
265+ let bM = if ((height > bL))
266+ then {
267+ let bG = (bA + 1)
268+ let bH = (bL + 1)
269+ let bJ = ((bH + bz) - 1)
270+ $Tuple3(bG, bH, bJ)
271+ }
272+ else $Tuple3(bA, bK, bL)
273+ let bG = bM._1
274+ let bH = bM._2
275+ let bJ = bM._3
276+ $Tuple3(bG, bH, bJ)
277+ }
278+ else $Tuple3(bA, valueOrElse(getInteger(ao(bA)), height), valueOrElse(getInteger(aq(bA)), ((height + bz) - 1)))
279+ let bG = bC._1
280+ let bH = bC._2
281+ let bJ = bC._3
282+ let bN = valueOrElse(getInteger(av(K, bG)), bx)
283+ let bO = valueOrElse(getInteger(aw(K, bG, bh)), by)
284+ let aR = valueOrElse(getInteger(az(bh)), 0)
285+ let bP = min([(bv + aR), bN, bO])
286+ let bQ = value(getInteger(ar()))
287+ let bR = e
288+ let bS = {
289+ let bT = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bR, K], nil)
290+ if ($isInstanceOf(bT, "(Int, Int, Int)"))
291+ then bT
292+ else throw("Couldn't cast Any to (Int, Int, Int)")
293+ }
294+ if ((bS == bS))
295+ then {
296+ let bU = bS._3
297+ let bV = bS._2
298+ let bW = bS._1
299+ let bX = value(getString(ay()))
300+ let bY = {
301+ let bT = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bX, bW], nil)
302+ if ($isInstanceOf(bT, "(Int, Int)"))
303+ then bT
304+ else throw("Couldn't cast Any to (Int, Int)")
305+ }
306+ if ((bY == bY))
307+ then {
308+ let bZ = bY._2
309+ let ca = bY._1
310+ let cb = fraction(bR, e, ca)
311+ let cc = (bJ - height)
312+ $Tuple10(bP, bN, bO, bw, bQ, cb, cc, bG, bH, bJ)
229313 }
230314 else throw("Strict value is not equal to itself.")
231315 }
233317 }
234318
235319
236-func bv (K,bh,bw,bx) = {
237- let by = value(getInteger(as(K)))
238- let bz = value(getInteger(au(K)))
239- let bA = value(getInteger(am()))
240- let bB = valueOrElse(getInteger(an()), 0)
241- let bC = isDefined(getInteger(aq(0)))
242- let bD = if ((bB > 0))
320+func cd () = {
321+ let ce = getString(aB())
322+ if ($isInstanceOf(ce, "String"))
243323 then {
244- let bE = value(getInteger(ao(bB)))
245- let bF = value(getInteger(aq(bB)))
246- let bG = if ((height > bF))
247- then {
248- let bH = (bB + 1)
249- let bI = if ((height > (bF + bA)))
250- then {
251- let bJ = ((height - bF) % bA)
252- if ((bJ == 0))
253- then ((height - bA) + 1)
254- else (height - bJ)
255- }
256- else (bF + 1)
257- let bK = ((bI + bA) - 1)
258- $Tuple3(bH, bI, bK)
259- }
260- else $Tuple3(bB, bE, bF)
261- let bH = bG._1
262- let bI = bG._2
263- let bK = bG._3
264- $Tuple3(bH, bI, bK)
324+ let cf = ce
325+ fromBase58String(cf)
265326 }
266- else if (bC)
267- then {
268- let bL = value(getInteger(ao(0)))
269- let bM = value(getInteger(aq(0)))
270- let bN = if ((height > bM))
271- then {
272- let bH = (bB + 1)
273- let bI = (bM + 1)
274- let bK = ((bI + bA) - 1)
275- $Tuple3(bH, bI, bK)
276- }
277- else $Tuple3(bB, bL, bM)
278- let bH = bN._1
279- let bI = bN._2
280- let bK = bN._3
281- $Tuple3(bH, bI, bK)
282- }
283- else $Tuple3(bB, valueOrElse(getInteger(ao(bB)), height), valueOrElse(getInteger(aq(bB)), ((height + bA) - 1)))
284- let bH = bD._1
285- let bI = bD._2
286- let bK = bD._3
287- let bO = valueOrElse(getInteger(av(K, bH)), by)
288- let bP = valueOrElse(getInteger(aw(K, bH, bh)), bz)
289- let aR = valueOrElse(getInteger(az(bh)), 0)
290- let bQ = min([(bw + aR), bO, bP])
291- let bR = value(getInteger(ar()))
292- let bS = e
293- let bT = {
294- let bU = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bS, K], nil)
295- if ($isInstanceOf(bU, "(Int, Int, Int)"))
296- then bU
297- else throw("Couldn't cast Any to (Int, Int, Int)")
298- }
299- if ((bT == bT))
300- then {
301- let bV = bT._3
302- let bW = bT._2
303- let bX = bT._1
304- let bY = value(getString(ay()))
305- let bZ = {
306- let bU = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bY, bX], nil)
307- if ($isInstanceOf(bU, "(Int, Int)"))
308- then bU
309- else throw("Couldn't cast Any to (Int, Int)")
310- }
311- if ((bZ == bZ))
312- then {
313- let ca = bZ._2
314- let cb = bZ._1
315- let cc = fraction(bS, e, cb)
316- let cd = (bK - height)
317- $Tuple10(bQ, bO, bP, bx, bR, cc, cd, bH, bI, bK)
318- }
319- else throw("Strict value is not equal to itself.")
320- }
321- else throw("Strict value is not equal to itself.")
322- }
323-
324-
325-func ce () = {
326- let cf = getString(aB())
327- if ($isInstanceOf(cf, "String"))
328- then {
329- let cg = cf
330- fromBase58String(cg)
331- }
332- else if ($isInstanceOf(cf, "Unit"))
327+ else if ($isInstanceOf(ce, "Unit"))
333328 then unit
334329 else throw("Match error")
335330 }
336331
337332
338-func ch () = {
339- let cf = getString(aC())
340- if ($isInstanceOf(cf, "String"))
333+func cg () = {
334+ let ce = getString(aC())
335+ if ($isInstanceOf(ce, "String"))
341336 then {
342- let cg = cf
343- fromBase58String(cg)
337+ let cf = ce
338+ fromBase58String(cf)
344339 }
345- else if ($isInstanceOf(cf, "Unit"))
340+ else if ($isInstanceOf(ce, "Unit"))
346341 then unit
347342 else throw("Match error")
348343 }
349344
350345
351-func ci (cj) = {
352- let ck = throw("Permission denied")
353- let cf = ce()
354- if ($isInstanceOf(cf, "ByteVector"))
346+func ch (ci) = {
347+ let cj = throw("Permission denied")
348+ let ce = cd()
349+ if ($isInstanceOf(ce, "ByteVector"))
355350 then {
356- let cl = cf
357- if ((cj.callerPublicKey == cl))
351+ let ck = ce
352+ if ((ci.callerPublicKey == ck))
358353 then true
359- else ck
354+ else cj
360355 }
361- else if ($isInstanceOf(cf, "Unit"))
362- then if ((cj.caller == this))
356+ else if ($isInstanceOf(ce, "Unit"))
357+ then if ((ci.caller == this))
363358 then true
364- else ck
359+ else cj
365360 else throw("Match error")
366361 }
367362
368363
369-@Callable(cj)
364+@Callable(ci)
370365 func constructor (D,E,F,G,k,K,M) = {
371366 let H = ((100 * 1000) * 1000)
372- let cm = (D + E)
367+ let cl = (D + E)
373368 if (isDefined(getString(ad())))
374369 then throw("already initialized")
375- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cj.caller)))
370+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(ci.caller)))
376371 then throw("not authorized")
377- else if ((size(cj.payments) != 1))
372+ else if ((size(ci.payments) != 1))
378373 then throw("exactly 1 payment must be attached")
379- else if ((cm >= F))
374+ else if ((cl >= F))
380375 then throw("claimStart must be greater than idoEnd")
381376 else {
382- let cn = value(cj.payments[0])
383- let bf = value(cn.assetId)
384- let co = valueOrErrorMessage(assetInfo(bf), "fail to load ido asset info")
377+ let cm = value(ci.payments[0])
378+ let bf = value(cm.assetId)
379+ let cn = valueOrErrorMessage(assetInfo(bf), "fail to load ido asset info")
385380 let I = toBase58String(bf)
386- let J = pow(10, 0, co.decimals, 0, 0, DOWN)
381+ let J = pow(10, 0, cn.decimals, 0, 0, DOWN)
387382 let bg = fromBase58String(K)
388- let cp = valueOrErrorMessage(assetInfo(bg), "fail to load price asset info")
389- let L = pow(10, 0, cp.decimals, 0, 0, DOWN)
390- let cq = aG()
391- let cr = [0, 0, 0, 0]
392-[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cn.amount)), aN(ag(), cq, cr, F, 0)]
383+ let co = valueOrErrorMessage(assetInfo(bg), "fail to load price asset info")
384+ let L = pow(10, 0, co.decimals, 0, 0, DOWN)
385+ let cp = aG()
386+ let cq = [0, 0, 0, 0]
387+[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cm.amount)), aN(ag(), cp, cq, F, 0)]
393388 }
394389 }
395390
396391
397392
398-@Callable(cj)
393+@Callable(ci)
399394 func invest () = {
400395 let aU = aD()
401396 let D = parseIntValue(aU[r])
402397 let E = parseIntValue(aU[s])
403- let cm = (D + E)
398+ let cl = (D + E)
404399 let F = parseIntValue(aU[t])
405400 let G = parseIntValue(aU[u])
406401 let k = parseIntValue(aU[v])
411406 let K = aU[z]
412407 let bg = fromBase58String(K)
413408 let L = parseIntValue(aU[A])
414- let cs = parseIntValue(aU[B])
415- let af = toString(cj.caller)
409+ let cr = parseIntValue(aU[B])
410+ let af = toString(ci.caller)
416411 if ((D > height))
417412 then throw("ido has not been started yet")
418- else if ((height > cm))
413+ else if ((height > cl))
419414 then throw("ido has been already ended")
420- else if ((size(cj.payments) != 1))
415+ else if ((size(ci.payments) != 1))
421416 then throw("exactly 1 payment is expected")
422417 else {
423- let cn = value(cj.payments[0])
424- let ct = value(cn.assetId)
425- let cu = cn.amount
426- if ((ct != bg))
427- then throw((("invalid payment asset id: " + toBase58String(ct)) + " is expected"))
418+ let cm = value(ci.payments[0])
419+ let cs = value(cm.assetId)
420+ let ct = cm.amount
421+ if ((cs != bg))
422+ then throw((("invalid payment asset id: " + toBase58String(cs)) + " is expected"))
428423 else {
429- let cv = aH(af)
430- let cq = aG()
431- let cw = (parseIntValue(cq[P]) + cu)
432- let cx = (cw * 100)
433- if ((cx > assetBalance(this, bf)))
424+ let cu = aH(af)
425+ let cp = aG()
426+ let cv = (parseIntValue(cp[P]) + ct)
427+ let cw = (cv * 100)
428+ if ((cw > assetBalance(this, bf)))
434429 then throw("IDO asset has been - sold consider to use smaller payment")
435430 else {
436- let cr = [cu, cu, 0, 0]
437-[aN(ae(af), cv, cr, F, 0), aN(ag(), cq, cr, F, 0), aZ(af, cu, 0, cj.transactionId)]
431+ let cq = [ct, ct, 0, 0]
432+[aN(ae(af), cu, cq, F, 0), aN(ag(), cp, cq, F, 0), aZ(af, ct, 0, ci.transactionId)]
438433 }
439434 }
440435 }
442437
443438
444439
445-@Callable(cj)
440+@Callable(ci)
446441 func claim (bd,bh) = {
447- let cy = toString(cj.caller)
448- if ((bh != cy))
442+ let cx = toString(ci.caller)
443+ if ((bh != cx))
449444 then throw("not authorized")
450445 else {
451446 let aU = aD()
452447 let K = aU[z]
453- let cz = bc(bd, cj.caller, cj.transactionId)
454- let cr = cz._1
455- let bw = cz._2
456- let cA = cz._3
457- let bi = cz._4
458- let bm = cz._5
459- let cB = cr[aL]
460- let cC = cr[aM]
448+ let cy = bc(bd, ci.caller, ci.transactionId)
449+ let cq = cy._1
450+ let bv = cy._2
451+ let cz = cy._3
452+ let bi = cy._4
453+ let bm = cy._5
454+ let cA = cq[aL]
455+ let cB = cq[aM]
461456 let aR = valueOrElse(getInteger(az(bh)), 0)
462457 let aV = value(assetInfo(fromBase58String(K))).decimals
463- let cD = if ((bd == K))
458+ let cC = if ((bd == K))
464459 then {
465- let cE = bv(K, bh, bw, cr[aL])
466- let bQ = cE._1
467- let bO = cE._2
468- let bP = cE._3
469- let bx = cE._4
470- let bR = cE._5
471- let cc = cE._6
472- let cd = cE._7
473- let bH = cE._8
474- let bI = cE._9
475- let bK = cE._10
476- let bu = [if ((bP > 0))
460+ let cD = bu(K, bh, bv, cq[aL])
461+ let bP = cD._1
462+ let bN = cD._2
463+ let bO = cD._3
464+ let bw = cD._4
465+ let bQ = cD._5
466+ let cb = cD._6
467+ let cc = cD._7
468+ let bG = cD._8
469+ let bH = cD._9
470+ let bJ = cD._10
471+ let bt = [if ((bO > 0))
477472 then true
478- else f("unavailable to claim because user period allowance reached"), if ((bO > 0))
473+ else f("unavailable to claim because user period allowance reached"), if ((bN > 0))
479474 then true
480- else f("unavailable to claim because total period allowance reached"), if ((bQ > 0))
475+ else f("unavailable to claim because total period allowance reached"), if ((bP > 0))
481476 then true
482- else f("nothing to claim"), if ((bR > cc))
477+ else f("nothing to claim"), if ((bQ > cb))
483478 then true
484479 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
485- if ((bu == bu))
480+ if ((bt == bt))
486481 then {
487- let cF = (bO - bQ)
488- let cG = (bP - bQ)
489- let cD = if ((aR >= bQ))
490- then [ScriptTransfer(cj.caller, bQ, cA), IntegerEntry(az(bh), (aR - bQ))]
482+ let cE = (bN - bP)
483+ let cF = (bO - bP)
484+ let cC = if ((aR >= bP))
485+ then [ScriptTransfer(ci.caller, bP, cz), IntegerEntry(az(bh), (aR - bP))]
491486 else {
492- let cH = ((aR + bw) - bQ)
493-[aN(ae(bh), bi, cr, bm, 0), aN(ag(), aG(), cr, bm, 0), IntegerEntry(az(bh), cH), ScriptTransfer(cj.caller, bQ, cA)]
487+ let cG = ((aR + bv) - bP)
488+[aN(ae(bh), bi, cq, bm, 0), aN(ag(), aG(), cq, bm, 0), IntegerEntry(az(bh), cG), ScriptTransfer(ci.caller, bP, cz)]
494489 }
495- $Tuple2(([IntegerEntry(an(), bH), IntegerEntry(ao(bH), bI), IntegerEntry(aq(bH), bK), IntegerEntry(av(K, bH), cF), IntegerEntry(aw(K, bH, bh), cG), bb(bh, bQ, cC, cj.transactionId)] ++ cD), unit)
490+ $Tuple2(([IntegerEntry(an(), bG), IntegerEntry(ao(bG), bH), IntegerEntry(aq(bG), bJ), IntegerEntry(av(K, bG), cE), IntegerEntry(aw(K, bG, bh), cF), bb(bh, bP, cB, ci.transactionId)] ++ cC), unit)
496491 }
497492 else throw("Strict value is not equal to itself.")
498493 }
499494 else {
500- let cI = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
501- $Tuple2([ScriptTransfer(cj.caller, (bw + cI), cA), IntegerEntry(az(bh), 0), aN(ae(bh), bi, cr, bm, aR), aN(ag(), aG(), cr, bm, aR), bb(bh, cB, (cC + cI), cj.transactionId)], unit)
495+ let cH = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
496+ $Tuple2([ScriptTransfer(ci.caller, (bv + cH), cz), IntegerEntry(az(bh), 0), aN(ae(bh), bi, cq, bm, aR), aN(ag(), aG(), cq, bm, aR), bb(bh, cA, (cB + cH), ci.transactionId)], unit)
502497 }
503- cD
498+ cC
504499 }
505500 }
506501
507502
508503
509-@Callable(cj)
504+@Callable(ci)
510505 func claimREADONLY (bd,bh) = {
511- let cz = bc(bd, addressFromStringValue(bh), fromBase58String(""))
512- let cr = cz._1
513- let bw = cz._2
514- let cA = cz._3
515- let bi = cz._4
516- let bm = cz._5
517- let cJ = cz._6
518- let cK = cJ[0]
519- let cL = cJ[1]
520- $Tuple2(nil, makeString(["%s%d%d", bh, toString(cK), toString(cL)], c))
506+ let cy = bc(bd, addressFromStringValue(bh), fromBase58String(""))
507+ let cq = cy._1
508+ let bv = cy._2
509+ let cz = cy._3
510+ let bi = cy._4
511+ let bm = cy._5
512+ let cI = cy._6
513+ let cJ = cI[0]
514+ let cK = cI[1]
515+ $Tuple2(nil, makeString(["%s%d%d", bh, toString(cJ), toString(cK)], c))
521516 }
522517
523518
524519
525-@Callable(cj)
520+@Callable(ci)
526521 func claimV2READONLY (bd,bh) = {
527- let cz = bc(bd, addressFromStringValue(bh), fromBase58String(""))
528- let cr = cz._1
529- let bw = cz._2
530- let cA = cz._3
531- let bi = cz._4
532- let bm = cz._5
533- let cJ = cz._6
534- let cK = cJ[0]
535- let cL = cJ[1]
522+ let cy = bc(bd, addressFromStringValue(bh), fromBase58String(""))
523+ let cq = cy._1
524+ let bv = cy._2
525+ let cz = cy._3
526+ let bi = cy._4
527+ let bm = cy._5
528+ let cI = cy._6
529+ let cJ = cI[0]
530+ let cK = cI[1]
536531 let aU = aD()
537532 let K = aU[z]
538533 let aR = valueOrElse(getInteger(az(bh)), 0)
539- let cI = (aR * 100)
540- let cM = (cL + cI)
541- let cN = bv(K, bh, bw, cr[aL])
542- let bQ = cN._1
543- let bO = cN._2
544- let bP = cN._3
545- let bx = cN._4
546- let bR = cN._5
547- let cc = cN._6
548- let cd = cN._7
549- let bH = cN._8
550- let bI = cN._9
551- let bK = cN._10
552- let cO = valueOrElse(getInteger(aq(bH)), 0)
553- let cP = (parseIntValue(aI(bh)[R]) - aR)
554- let cQ = if ((height > cO))
534+ let cH = (aR * 100)
535+ let cL = (cK + cH)
536+ let cM = bu(K, bh, bv, cq[aL])
537+ let bP = cM._1
538+ let bN = cM._2
539+ let bO = cM._3
540+ let bw = cM._4
541+ let bQ = cM._5
542+ let cb = cM._6
543+ let cc = cM._7
544+ let bG = cM._8
545+ let bH = cM._9
546+ let bJ = cM._10
547+ let cN = valueOrElse(getInteger(aq(bG)), 0)
548+ let cO = (parseIntValue(aI(bh)[R]) - aR)
549+ let cP = if ((height > cN))
555550 then {
556- let cR = value(getInteger(am()))
557- let cS = value(getInteger(au(K)))
558- let cT = value(getInteger(as(K)))
559- makeString(["%d%d%d%d%d%d", toString(cM), toString(cS), toString(cT), toString(bR), toString(cc), toString(cR), toString(cP)], c)
551+ let cQ = value(getInteger(am()))
552+ let cR = value(getInteger(au(K)))
553+ let cS = value(getInteger(as(K)))
554+ makeString(["%d%d%d%d%d%d", toString(cL), toString(cR), toString(cS), toString(bQ), toString(cb), toString(cQ), toString(cO)], c)
560555 }
561- else makeString(["%d%d%d%d%d%d", toString(cM), toString(bQ), toString(bO), toString(bR), toString(cc), toString(cd), toString(cP)], c)
562- $Tuple2(nil, cQ)
556+ else makeString(["%d%d%d%d%d%d", toString(cL), toString(bP), toString(bN), toString(bQ), toString(cb), toString(cc), toString(cO)], c)
557+ $Tuple2(nil, cP)
563558 }
564559
565560
566561
567-@Callable(cj)
568-func setManager (cU) = {
569- let cV = ci(cj)
570- if ((cV == cV))
562+@Callable(ci)
563+func setManager (cT) = {
564+ let cU = ch(ci)
565+ if ((cU == cU))
571566 then {
572- let cW = fromBase58String(cU)
573- if ((cW == cW))
574- then [StringEntry(aC(), cU)]
567+ let cV = fromBase58String(cT)
568+ if ((cV == cV))
569+ then [StringEntry(aC(), cT)]
575570 else throw("Strict value is not equal to itself.")
576571 }
577572 else throw("Strict value is not equal to itself.")
579574
580575
581576
582-@Callable(cj)
577+@Callable(ci)
583578 func confirmManager () = {
584- let cX = ch()
585- let cY = if (isDefined(cX))
579+ let cW = cg()
580+ let cX = if (isDefined(cW))
586581 then true
587582 else throw("No pending manager")
588- if ((cY == cY))
583+ if ((cX == cX))
589584 then {
590- let cZ = if ((cj.callerPublicKey == value(cX)))
585+ let cY = if ((ci.callerPublicKey == value(cW)))
591586 then true
592587 else throw("You are not pending manager")
593- if ((cZ == cZ))
594- then [StringEntry(aB(), toBase58String(value(cX))), DeleteEntry(aC())]
588+ if ((cY == cY))
589+ then [StringEntry(aB(), toBase58String(value(cW))), DeleteEntry(aC())]
595590 else throw("Strict value is not equal to itself.")
596591 }
597592 else throw("Strict value is not equal to itself.")
598593 }
599594
600595
601-@Verifier(da)
602-func db () = {
603- let dc = {
604- let cf = ce()
605- if ($isInstanceOf(cf, "ByteVector"))
596+@Verifier(cZ)
597+func da () = {
598+ let db = {
599+ let ce = cd()
600+ if ($isInstanceOf(ce, "ByteVector"))
606601 then {
607- let cl = cf
608- cl
602+ let ck = ce
603+ ck
609604 }
610- else if ($isInstanceOf(cf, "Unit"))
611- then da.senderPublicKey
605+ else if ($isInstanceOf(ce, "Unit"))
606+ then cZ.senderPublicKey
612607 else throw("Match error")
613608 }
614- sigVerify(da.bodyBytes, da.proofs[0], dc)
609+ sigVerify(cZ.bodyBytes, cZ.proofs[0], db)
615610 }
616611
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
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,j,k,l,m) = {
1717 let n = toBigInt(j)
1818 let o = toBigInt(m)
1919 let p = fraction(toBigInt(i), d, n)
2020 let q = fraction(p, toBigInt(l), toBigInt(k))
2121 toInt(fraction(q, toBigInt(m), d))
2222 }
2323
2424
2525 let r = 1
2626
2727 let s = 2
2828
2929 let t = 3
3030
3131 let u = 4
3232
3333 let v = 5
3434
3535 let w = 6
3636
3737 let x = 7
3838
3939 let y = 8
4040
4141 let z = 9
4242
4343 let A = 10
4444
4545 let B = 11
4646
4747 func C (D,E,F,G,k,H,I,J,K,L,M,N) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", D, E, F, G, k, H, I, J, K, L, M, N], c)
4848
4949
5050 func O (D,E,F,G,k,H,I,J,K,L,M,N) = C(toString(D), toString(E), toString(F), toString(G), toString(k), toString(H), I, toString(J), K, toString(L), toString(M), toString(N))
5151
5252
5353 let P = 1
5454
5555 let Q = 2
5656
5757 let R = 3
5858
5959 let S = 4
6060
6161 let T = 5
6262
6363 func U (V,W,X,Y,Z) = makeString(["%d%d%d%d%d", V, W, X, Y, Z], c)
6464
6565
6666 func aa (V,W,X,Y,Z) = U(toString(V), toString(W), toString(X), toString(Y), toString(Z))
6767
6868
6969 func ab (i,ac) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(i), toString(ac)], c)
7070
7171
7272 func ad () = "%s__config"
7373
7474
7575 func ae (af) = ("%s__" + af)
7676
7777
7878 func ag () = "%s__totals"
7979
8080
8181 func ah (ai,af,aj) = makeString(["%s%s%s%s__history", ai, af, aj], c)
8282
8383
8484 func ak () = "%s__usdnClaimDisabled"
8585
8686
8787 func al () = "%s__usdnClaimEndHeight"
8888
8989
9090 func am () = makeString(["%s", "periodLength"], c)
9191
9292
9393 func an () = makeString(["%s", "currentPeriod"], c)
9494
9595
9696 func ao (ap) = makeString(["%s%s", "periodStartHeight", toString(ap)], c)
9797
9898
9999 func aq (ap) = makeString(["%s%s", "periodEndHeight", toString(ap)], c)
100100
101101
102102 func ar () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
103103
104104
105105 func as (at) = makeString(["%s%s", "totalPeriodAllowance", at], c)
106106
107107
108108 func au (at) = makeString(["%s%s", "userPeriodAllowance", at], c)
109109
110110
111111 func av (at,ap) = makeString(["%s%s%s", "periodTotalAvailableToClaim", at, toString(ap)], c)
112112
113113
114114 func aw (at,ap,af) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", at, toString(ap), af], c)
115115
116116
117117 func ax () = makeString(["%s", "usdtPriceAssetStablePool"], c)
118118
119119
120120 func ay () = makeString(["%s", "usdtAssetId"], c)
121121
122122
123123 func az (aA) = makeString(["%s%s", "priceAssetBalance", aA], c)
124124
125125
126126 func aB () = "%s__managerPublicKey"
127127
128128
129129 func aC () = "%s__pendingManagerPublicKey"
130130
131131
132132 func aD () = split(a(ad()), c)
133133
134134
135135 func aE (aF) = split(valueOrElse(getString(aF), U("0", "0", "0", "0", "0")), c)
136136
137137
138138 func aG () = aE(ag())
139139
140140
141141 func aH (af) = aE(ae(af))
142142
143143
144144 func aI (af) = split(a(ae(af)), c)
145145
146146
147147 let aJ = 0
148148
149149 let aK = 1
150150
151151 let aL = 2
152152
153153 let aM = 3
154154
155155 func aN (b,aO,aP,aQ,aR) = {
156156 let V = parseIntValue(aO[P])
157157 let W = parseIntValue(aO[Q])
158158 let X = parseIntValue(aO[R])
159159 let Y = parseIntValue(aO[S])
160160 let Z = parseIntValue(aO[T])
161161 let aS = (V + aP[aJ])
162162 let aT = (W + aP[aK])
163163 let aU = aD()
164164 let K = aU[z]
165165 let aV = value(assetInfo(fromBase58String(K))).decimals
166166 let aW = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
167167 let aX = ((X + aP[aL]) - aR)
168168 let aY = ((Y + aP[aM]) + aW)
169169 if ((0 > aT))
170170 then f(makeString(["invalid math", toString(W), toString(aP[aK]), toString(aT), toString(aP[aJ])], " "))
171171 else StringEntry(b, aa(aS, aT, aX, aY, aQ))
172172 }
173173
174174
175175 func aZ (af,i,ac,ba) = StringEntry(ah("invest", af, toBase58String(ba)), ab(i, ac))
176176
177177
178178 func bb (af,i,ac,ba) = StringEntry(ah("claim", af, toBase58String(ba)), ab(i, ac))
179179
180180
181181 func bc (bd,af,ba) = {
182182 let aU = aD()
183183 let F = parseIntValue(aU[t])
184184 let G = parseIntValue(aU[u])
185185 let be = (F + G)
186186 let k = parseIntValue(aU[v])
187187 let H = parseIntValue(aU[w])
188188 let I = aU[x]
189189 let bf = fromBase58String(I)
190190 let J = parseIntValue(aU[y])
191191 let K = aU[z]
192192 let bg = fromBase58String(K)
193193 let L = parseIntValue(aU[A])
194194 let bh = toString(af)
195195 let bi = aI(bh)
196196 let bj = parseIntValue(bi[P])
197197 let bk = parseIntValue(bi[T])
198198 let bl = if ((F >= bk))
199199 then F
200200 else bk
201201 let bm = if ((height > be))
202202 then be
203203 else if ((F > height))
204204 then F
205205 else height
206- let bn = f(makeString([toString(height), toString(F), toString(be), toString(bm)], " "))
207- if ((bn == bn))
206+ let bn = (bm - bl)
207+ let bo = fraction(bj, bn, G)
208+ let bp = f(makeString([toString(height), toString(F), toString(be), toString(bm), toString(bl), toString(bj), toString(bn), toString(G), toString(bo)], " "))
209+ if ((bp == bp))
208210 then {
209- let bo = (bm - bl)
210- let bp = fraction(bj, bo, G)
211- let bq = f(makeString([toString(bj), toString(bo), toString(G), toString(bp)], " "))
212- if ((bq == bq))
211+ let bq = h(bo, L, k, H, J)
212+ let br = (bd == K)
213+ let bs = valueOrElse(getBoolean(ak()), false)
214+ let bt = [if (!(if (br)
215+ then bs
216+ else false))
217+ then true
218+ else throw("USDN claim is disabled")]
219+ if ((bt == bt))
220+ then if ((bd == K))
221+ then $Tuple6([0, -(bo), bo, 0], bo, bg, bi, bm, [bo, bq])
222+ else if ((bd == I))
223+ then $Tuple6([0, -(bo), 0, bq], bq, bf, bi, bm, [bo, bq])
224+ else throw(("unsupported assetId: " + bd))
225+ else throw("Strict value is not equal to itself.")
226+ }
227+ else throw("Strict value is not equal to itself.")
228+ }
229+
230+
231+func bu (K,bh,bv,bw) = {
232+ let bx = value(getInteger(as(K)))
233+ let by = value(getInteger(au(K)))
234+ let bz = value(getInteger(am()))
235+ let bA = valueOrElse(getInteger(an()), 0)
236+ let bB = isDefined(getInteger(aq(0)))
237+ let bC = if ((bA > 0))
238+ then {
239+ let bD = value(getInteger(ao(bA)))
240+ let bE = value(getInteger(aq(bA)))
241+ let bF = if ((height > bE))
213242 then {
214- let br = h(bp, L, k, H, J)
215- let bs = (bd == K)
216- let bt = valueOrElse(getBoolean(ak()), false)
217- let bu = [if (!(if (bs)
218- then bt
219- else false))
220- then true
221- else throw("USDN claim is disabled")]
222- if ((bu == bu))
223- then if ((bd == K))
224- then $Tuple6([0, -(bp), bp, 0], bp, bg, bi, bm, [bp, br])
225- else if ((bd == I))
226- then $Tuple6([0, -(bp), 0, br], br, bf, bi, bm, [bp, br])
227- else throw(("unsupported assetId: " + bd))
228- else throw("Strict value is not equal to itself.")
243+ let bG = (bA + 1)
244+ let bH = if ((height > (bE + bz)))
245+ then {
246+ let bI = ((height - bE) % bz)
247+ if ((bI == 0))
248+ then ((height - bz) + 1)
249+ else (height - bI)
250+ }
251+ else (bE + 1)
252+ let bJ = ((bH + bz) - 1)
253+ $Tuple3(bG, bH, bJ)
254+ }
255+ else $Tuple3(bA, bD, bE)
256+ let bG = bF._1
257+ let bH = bF._2
258+ let bJ = bF._3
259+ $Tuple3(bG, bH, bJ)
260+ }
261+ else if (bB)
262+ then {
263+ let bK = value(getInteger(ao(0)))
264+ let bL = value(getInteger(aq(0)))
265+ let bM = if ((height > bL))
266+ then {
267+ let bG = (bA + 1)
268+ let bH = (bL + 1)
269+ let bJ = ((bH + bz) - 1)
270+ $Tuple3(bG, bH, bJ)
271+ }
272+ else $Tuple3(bA, bK, bL)
273+ let bG = bM._1
274+ let bH = bM._2
275+ let bJ = bM._3
276+ $Tuple3(bG, bH, bJ)
277+ }
278+ else $Tuple3(bA, valueOrElse(getInteger(ao(bA)), height), valueOrElse(getInteger(aq(bA)), ((height + bz) - 1)))
279+ let bG = bC._1
280+ let bH = bC._2
281+ let bJ = bC._3
282+ let bN = valueOrElse(getInteger(av(K, bG)), bx)
283+ let bO = valueOrElse(getInteger(aw(K, bG, bh)), by)
284+ let aR = valueOrElse(getInteger(az(bh)), 0)
285+ let bP = min([(bv + aR), bN, bO])
286+ let bQ = value(getInteger(ar()))
287+ let bR = e
288+ let bS = {
289+ let bT = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bR, K], nil)
290+ if ($isInstanceOf(bT, "(Int, Int, Int)"))
291+ then bT
292+ else throw("Couldn't cast Any to (Int, Int, Int)")
293+ }
294+ if ((bS == bS))
295+ then {
296+ let bU = bS._3
297+ let bV = bS._2
298+ let bW = bS._1
299+ let bX = value(getString(ay()))
300+ let bY = {
301+ let bT = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bX, bW], nil)
302+ if ($isInstanceOf(bT, "(Int, Int)"))
303+ then bT
304+ else throw("Couldn't cast Any to (Int, Int)")
305+ }
306+ if ((bY == bY))
307+ then {
308+ let bZ = bY._2
309+ let ca = bY._1
310+ let cb = fraction(bR, e, ca)
311+ let cc = (bJ - height)
312+ $Tuple10(bP, bN, bO, bw, bQ, cb, cc, bG, bH, bJ)
229313 }
230314 else throw("Strict value is not equal to itself.")
231315 }
232316 else throw("Strict value is not equal to itself.")
233317 }
234318
235319
236-func bv (K,bh,bw,bx) = {
237- let by = value(getInteger(as(K)))
238- let bz = value(getInteger(au(K)))
239- let bA = value(getInteger(am()))
240- let bB = valueOrElse(getInteger(an()), 0)
241- let bC = isDefined(getInteger(aq(0)))
242- let bD = if ((bB > 0))
320+func cd () = {
321+ let ce = getString(aB())
322+ if ($isInstanceOf(ce, "String"))
243323 then {
244- let bE = value(getInteger(ao(bB)))
245- let bF = value(getInteger(aq(bB)))
246- let bG = if ((height > bF))
247- then {
248- let bH = (bB + 1)
249- let bI = if ((height > (bF + bA)))
250- then {
251- let bJ = ((height - bF) % bA)
252- if ((bJ == 0))
253- then ((height - bA) + 1)
254- else (height - bJ)
255- }
256- else (bF + 1)
257- let bK = ((bI + bA) - 1)
258- $Tuple3(bH, bI, bK)
259- }
260- else $Tuple3(bB, bE, bF)
261- let bH = bG._1
262- let bI = bG._2
263- let bK = bG._3
264- $Tuple3(bH, bI, bK)
324+ let cf = ce
325+ fromBase58String(cf)
265326 }
266- else if (bC)
267- then {
268- let bL = value(getInteger(ao(0)))
269- let bM = value(getInteger(aq(0)))
270- let bN = if ((height > bM))
271- then {
272- let bH = (bB + 1)
273- let bI = (bM + 1)
274- let bK = ((bI + bA) - 1)
275- $Tuple3(bH, bI, bK)
276- }
277- else $Tuple3(bB, bL, bM)
278- let bH = bN._1
279- let bI = bN._2
280- let bK = bN._3
281- $Tuple3(bH, bI, bK)
282- }
283- else $Tuple3(bB, valueOrElse(getInteger(ao(bB)), height), valueOrElse(getInteger(aq(bB)), ((height + bA) - 1)))
284- let bH = bD._1
285- let bI = bD._2
286- let bK = bD._3
287- let bO = valueOrElse(getInteger(av(K, bH)), by)
288- let bP = valueOrElse(getInteger(aw(K, bH, bh)), bz)
289- let aR = valueOrElse(getInteger(az(bh)), 0)
290- let bQ = min([(bw + aR), bO, bP])
291- let bR = value(getInteger(ar()))
292- let bS = e
293- let bT = {
294- let bU = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bS, K], nil)
295- if ($isInstanceOf(bU, "(Int, Int, Int)"))
296- then bU
297- else throw("Couldn't cast Any to (Int, Int, Int)")
298- }
299- if ((bT == bT))
300- then {
301- let bV = bT._3
302- let bW = bT._2
303- let bX = bT._1
304- let bY = value(getString(ay()))
305- let bZ = {
306- let bU = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bY, bX], nil)
307- if ($isInstanceOf(bU, "(Int, Int)"))
308- then bU
309- else throw("Couldn't cast Any to (Int, Int)")
310- }
311- if ((bZ == bZ))
312- then {
313- let ca = bZ._2
314- let cb = bZ._1
315- let cc = fraction(bS, e, cb)
316- let cd = (bK - height)
317- $Tuple10(bQ, bO, bP, bx, bR, cc, cd, bH, bI, bK)
318- }
319- else throw("Strict value is not equal to itself.")
320- }
321- else throw("Strict value is not equal to itself.")
322- }
323-
324-
325-func ce () = {
326- let cf = getString(aB())
327- if ($isInstanceOf(cf, "String"))
328- then {
329- let cg = cf
330- fromBase58String(cg)
331- }
332- else if ($isInstanceOf(cf, "Unit"))
327+ else if ($isInstanceOf(ce, "Unit"))
333328 then unit
334329 else throw("Match error")
335330 }
336331
337332
338-func ch () = {
339- let cf = getString(aC())
340- if ($isInstanceOf(cf, "String"))
333+func cg () = {
334+ let ce = getString(aC())
335+ if ($isInstanceOf(ce, "String"))
341336 then {
342- let cg = cf
343- fromBase58String(cg)
337+ let cf = ce
338+ fromBase58String(cf)
344339 }
345- else if ($isInstanceOf(cf, "Unit"))
340+ else if ($isInstanceOf(ce, "Unit"))
346341 then unit
347342 else throw("Match error")
348343 }
349344
350345
351-func ci (cj) = {
352- let ck = throw("Permission denied")
353- let cf = ce()
354- if ($isInstanceOf(cf, "ByteVector"))
346+func ch (ci) = {
347+ let cj = throw("Permission denied")
348+ let ce = cd()
349+ if ($isInstanceOf(ce, "ByteVector"))
355350 then {
356- let cl = cf
357- if ((cj.callerPublicKey == cl))
351+ let ck = ce
352+ if ((ci.callerPublicKey == ck))
358353 then true
359- else ck
354+ else cj
360355 }
361- else if ($isInstanceOf(cf, "Unit"))
362- then if ((cj.caller == this))
356+ else if ($isInstanceOf(ce, "Unit"))
357+ then if ((ci.caller == this))
363358 then true
364- else ck
359+ else cj
365360 else throw("Match error")
366361 }
367362
368363
369-@Callable(cj)
364+@Callable(ci)
370365 func constructor (D,E,F,G,k,K,M) = {
371366 let H = ((100 * 1000) * 1000)
372- let cm = (D + E)
367+ let cl = (D + E)
373368 if (isDefined(getString(ad())))
374369 then throw("already initialized")
375- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cj.caller)))
370+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(ci.caller)))
376371 then throw("not authorized")
377- else if ((size(cj.payments) != 1))
372+ else if ((size(ci.payments) != 1))
378373 then throw("exactly 1 payment must be attached")
379- else if ((cm >= F))
374+ else if ((cl >= F))
380375 then throw("claimStart must be greater than idoEnd")
381376 else {
382- let cn = value(cj.payments[0])
383- let bf = value(cn.assetId)
384- let co = valueOrErrorMessage(assetInfo(bf), "fail to load ido asset info")
377+ let cm = value(ci.payments[0])
378+ let bf = value(cm.assetId)
379+ let cn = valueOrErrorMessage(assetInfo(bf), "fail to load ido asset info")
385380 let I = toBase58String(bf)
386- let J = pow(10, 0, co.decimals, 0, 0, DOWN)
381+ let J = pow(10, 0, cn.decimals, 0, 0, DOWN)
387382 let bg = fromBase58String(K)
388- let cp = valueOrErrorMessage(assetInfo(bg), "fail to load price asset info")
389- let L = pow(10, 0, cp.decimals, 0, 0, DOWN)
390- let cq = aG()
391- let cr = [0, 0, 0, 0]
392-[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cn.amount)), aN(ag(), cq, cr, F, 0)]
383+ let co = valueOrErrorMessage(assetInfo(bg), "fail to load price asset info")
384+ let L = pow(10, 0, co.decimals, 0, 0, DOWN)
385+ let cp = aG()
386+ let cq = [0, 0, 0, 0]
387+[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cm.amount)), aN(ag(), cp, cq, F, 0)]
393388 }
394389 }
395390
396391
397392
398-@Callable(cj)
393+@Callable(ci)
399394 func invest () = {
400395 let aU = aD()
401396 let D = parseIntValue(aU[r])
402397 let E = parseIntValue(aU[s])
403- let cm = (D + E)
398+ let cl = (D + E)
404399 let F = parseIntValue(aU[t])
405400 let G = parseIntValue(aU[u])
406401 let k = parseIntValue(aU[v])
407402 let H = parseIntValue(aU[w])
408403 let I = aU[x]
409404 let bf = fromBase58String(I)
410405 let J = parseIntValue(aU[y])
411406 let K = aU[z]
412407 let bg = fromBase58String(K)
413408 let L = parseIntValue(aU[A])
414- let cs = parseIntValue(aU[B])
415- let af = toString(cj.caller)
409+ let cr = parseIntValue(aU[B])
410+ let af = toString(ci.caller)
416411 if ((D > height))
417412 then throw("ido has not been started yet")
418- else if ((height > cm))
413+ else if ((height > cl))
419414 then throw("ido has been already ended")
420- else if ((size(cj.payments) != 1))
415+ else if ((size(ci.payments) != 1))
421416 then throw("exactly 1 payment is expected")
422417 else {
423- let cn = value(cj.payments[0])
424- let ct = value(cn.assetId)
425- let cu = cn.amount
426- if ((ct != bg))
427- then throw((("invalid payment asset id: " + toBase58String(ct)) + " is expected"))
418+ let cm = value(ci.payments[0])
419+ let cs = value(cm.assetId)
420+ let ct = cm.amount
421+ if ((cs != bg))
422+ then throw((("invalid payment asset id: " + toBase58String(cs)) + " is expected"))
428423 else {
429- let cv = aH(af)
430- let cq = aG()
431- let cw = (parseIntValue(cq[P]) + cu)
432- let cx = (cw * 100)
433- if ((cx > assetBalance(this, bf)))
424+ let cu = aH(af)
425+ let cp = aG()
426+ let cv = (parseIntValue(cp[P]) + ct)
427+ let cw = (cv * 100)
428+ if ((cw > assetBalance(this, bf)))
434429 then throw("IDO asset has been - sold consider to use smaller payment")
435430 else {
436- let cr = [cu, cu, 0, 0]
437-[aN(ae(af), cv, cr, F, 0), aN(ag(), cq, cr, F, 0), aZ(af, cu, 0, cj.transactionId)]
431+ let cq = [ct, ct, 0, 0]
432+[aN(ae(af), cu, cq, F, 0), aN(ag(), cp, cq, F, 0), aZ(af, ct, 0, ci.transactionId)]
438433 }
439434 }
440435 }
441436 }
442437
443438
444439
445-@Callable(cj)
440+@Callable(ci)
446441 func claim (bd,bh) = {
447- let cy = toString(cj.caller)
448- if ((bh != cy))
442+ let cx = toString(ci.caller)
443+ if ((bh != cx))
449444 then throw("not authorized")
450445 else {
451446 let aU = aD()
452447 let K = aU[z]
453- let cz = bc(bd, cj.caller, cj.transactionId)
454- let cr = cz._1
455- let bw = cz._2
456- let cA = cz._3
457- let bi = cz._4
458- let bm = cz._5
459- let cB = cr[aL]
460- let cC = cr[aM]
448+ let cy = bc(bd, ci.caller, ci.transactionId)
449+ let cq = cy._1
450+ let bv = cy._2
451+ let cz = cy._3
452+ let bi = cy._4
453+ let bm = cy._5
454+ let cA = cq[aL]
455+ let cB = cq[aM]
461456 let aR = valueOrElse(getInteger(az(bh)), 0)
462457 let aV = value(assetInfo(fromBase58String(K))).decimals
463- let cD = if ((bd == K))
458+ let cC = if ((bd == K))
464459 then {
465- let cE = bv(K, bh, bw, cr[aL])
466- let bQ = cE._1
467- let bO = cE._2
468- let bP = cE._3
469- let bx = cE._4
470- let bR = cE._5
471- let cc = cE._6
472- let cd = cE._7
473- let bH = cE._8
474- let bI = cE._9
475- let bK = cE._10
476- let bu = [if ((bP > 0))
460+ let cD = bu(K, bh, bv, cq[aL])
461+ let bP = cD._1
462+ let bN = cD._2
463+ let bO = cD._3
464+ let bw = cD._4
465+ let bQ = cD._5
466+ let cb = cD._6
467+ let cc = cD._7
468+ let bG = cD._8
469+ let bH = cD._9
470+ let bJ = cD._10
471+ let bt = [if ((bO > 0))
477472 then true
478- else f("unavailable to claim because user period allowance reached"), if ((bO > 0))
473+ else f("unavailable to claim because user period allowance reached"), if ((bN > 0))
479474 then true
480- else f("unavailable to claim because total period allowance reached"), if ((bQ > 0))
475+ else f("unavailable to claim because total period allowance reached"), if ((bP > 0))
481476 then true
482- else f("nothing to claim"), if ((bR > cc))
477+ else f("nothing to claim"), if ((bQ > cb))
483478 then true
484479 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
485- if ((bu == bu))
480+ if ((bt == bt))
486481 then {
487- let cF = (bO - bQ)
488- let cG = (bP - bQ)
489- let cD = if ((aR >= bQ))
490- then [ScriptTransfer(cj.caller, bQ, cA), IntegerEntry(az(bh), (aR - bQ))]
482+ let cE = (bN - bP)
483+ let cF = (bO - bP)
484+ let cC = if ((aR >= bP))
485+ then [ScriptTransfer(ci.caller, bP, cz), IntegerEntry(az(bh), (aR - bP))]
491486 else {
492- let cH = ((aR + bw) - bQ)
493-[aN(ae(bh), bi, cr, bm, 0), aN(ag(), aG(), cr, bm, 0), IntegerEntry(az(bh), cH), ScriptTransfer(cj.caller, bQ, cA)]
487+ let cG = ((aR + bv) - bP)
488+[aN(ae(bh), bi, cq, bm, 0), aN(ag(), aG(), cq, bm, 0), IntegerEntry(az(bh), cG), ScriptTransfer(ci.caller, bP, cz)]
494489 }
495- $Tuple2(([IntegerEntry(an(), bH), IntegerEntry(ao(bH), bI), IntegerEntry(aq(bH), bK), IntegerEntry(av(K, bH), cF), IntegerEntry(aw(K, bH, bh), cG), bb(bh, bQ, cC, cj.transactionId)] ++ cD), unit)
490+ $Tuple2(([IntegerEntry(an(), bG), IntegerEntry(ao(bG), bH), IntegerEntry(aq(bG), bJ), IntegerEntry(av(K, bG), cE), IntegerEntry(aw(K, bG, bh), cF), bb(bh, bP, cB, ci.transactionId)] ++ cC), unit)
496491 }
497492 else throw("Strict value is not equal to itself.")
498493 }
499494 else {
500- let cI = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
501- $Tuple2([ScriptTransfer(cj.caller, (bw + cI), cA), IntegerEntry(az(bh), 0), aN(ae(bh), bi, cr, bm, aR), aN(ag(), aG(), cr, bm, aR), bb(bh, cB, (cC + cI), cj.transactionId)], unit)
495+ let cH = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
496+ $Tuple2([ScriptTransfer(ci.caller, (bv + cH), cz), IntegerEntry(az(bh), 0), aN(ae(bh), bi, cq, bm, aR), aN(ag(), aG(), cq, bm, aR), bb(bh, cA, (cB + cH), ci.transactionId)], unit)
502497 }
503- cD
498+ cC
504499 }
505500 }
506501
507502
508503
509-@Callable(cj)
504+@Callable(ci)
510505 func claimREADONLY (bd,bh) = {
511- let cz = bc(bd, addressFromStringValue(bh), fromBase58String(""))
512- let cr = cz._1
513- let bw = cz._2
514- let cA = cz._3
515- let bi = cz._4
516- let bm = cz._5
517- let cJ = cz._6
518- let cK = cJ[0]
519- let cL = cJ[1]
520- $Tuple2(nil, makeString(["%s%d%d", bh, toString(cK), toString(cL)], c))
506+ let cy = bc(bd, addressFromStringValue(bh), fromBase58String(""))
507+ let cq = cy._1
508+ let bv = cy._2
509+ let cz = cy._3
510+ let bi = cy._4
511+ let bm = cy._5
512+ let cI = cy._6
513+ let cJ = cI[0]
514+ let cK = cI[1]
515+ $Tuple2(nil, makeString(["%s%d%d", bh, toString(cJ), toString(cK)], c))
521516 }
522517
523518
524519
525-@Callable(cj)
520+@Callable(ci)
526521 func claimV2READONLY (bd,bh) = {
527- let cz = bc(bd, addressFromStringValue(bh), fromBase58String(""))
528- let cr = cz._1
529- let bw = cz._2
530- let cA = cz._3
531- let bi = cz._4
532- let bm = cz._5
533- let cJ = cz._6
534- let cK = cJ[0]
535- let cL = cJ[1]
522+ let cy = bc(bd, addressFromStringValue(bh), fromBase58String(""))
523+ let cq = cy._1
524+ let bv = cy._2
525+ let cz = cy._3
526+ let bi = cy._4
527+ let bm = cy._5
528+ let cI = cy._6
529+ let cJ = cI[0]
530+ let cK = cI[1]
536531 let aU = aD()
537532 let K = aU[z]
538533 let aR = valueOrElse(getInteger(az(bh)), 0)
539- let cI = (aR * 100)
540- let cM = (cL + cI)
541- let cN = bv(K, bh, bw, cr[aL])
542- let bQ = cN._1
543- let bO = cN._2
544- let bP = cN._3
545- let bx = cN._4
546- let bR = cN._5
547- let cc = cN._6
548- let cd = cN._7
549- let bH = cN._8
550- let bI = cN._9
551- let bK = cN._10
552- let cO = valueOrElse(getInteger(aq(bH)), 0)
553- let cP = (parseIntValue(aI(bh)[R]) - aR)
554- let cQ = if ((height > cO))
534+ let cH = (aR * 100)
535+ let cL = (cK + cH)
536+ let cM = bu(K, bh, bv, cq[aL])
537+ let bP = cM._1
538+ let bN = cM._2
539+ let bO = cM._3
540+ let bw = cM._4
541+ let bQ = cM._5
542+ let cb = cM._6
543+ let cc = cM._7
544+ let bG = cM._8
545+ let bH = cM._9
546+ let bJ = cM._10
547+ let cN = valueOrElse(getInteger(aq(bG)), 0)
548+ let cO = (parseIntValue(aI(bh)[R]) - aR)
549+ let cP = if ((height > cN))
555550 then {
556- let cR = value(getInteger(am()))
557- let cS = value(getInteger(au(K)))
558- let cT = value(getInteger(as(K)))
559- makeString(["%d%d%d%d%d%d", toString(cM), toString(cS), toString(cT), toString(bR), toString(cc), toString(cR), toString(cP)], c)
551+ let cQ = value(getInteger(am()))
552+ let cR = value(getInteger(au(K)))
553+ let cS = value(getInteger(as(K)))
554+ makeString(["%d%d%d%d%d%d", toString(cL), toString(cR), toString(cS), toString(bQ), toString(cb), toString(cQ), toString(cO)], c)
560555 }
561- else makeString(["%d%d%d%d%d%d", toString(cM), toString(bQ), toString(bO), toString(bR), toString(cc), toString(cd), toString(cP)], c)
562- $Tuple2(nil, cQ)
556+ else makeString(["%d%d%d%d%d%d", toString(cL), toString(bP), toString(bN), toString(bQ), toString(cb), toString(cc), toString(cO)], c)
557+ $Tuple2(nil, cP)
563558 }
564559
565560
566561
567-@Callable(cj)
568-func setManager (cU) = {
569- let cV = ci(cj)
570- if ((cV == cV))
562+@Callable(ci)
563+func setManager (cT) = {
564+ let cU = ch(ci)
565+ if ((cU == cU))
571566 then {
572- let cW = fromBase58String(cU)
573- if ((cW == cW))
574- then [StringEntry(aC(), cU)]
567+ let cV = fromBase58String(cT)
568+ if ((cV == cV))
569+ then [StringEntry(aC(), cT)]
575570 else throw("Strict value is not equal to itself.")
576571 }
577572 else throw("Strict value is not equal to itself.")
578573 }
579574
580575
581576
582-@Callable(cj)
577+@Callable(ci)
583578 func confirmManager () = {
584- let cX = ch()
585- let cY = if (isDefined(cX))
579+ let cW = cg()
580+ let cX = if (isDefined(cW))
586581 then true
587582 else throw("No pending manager")
588- if ((cY == cY))
583+ if ((cX == cX))
589584 then {
590- let cZ = if ((cj.callerPublicKey == value(cX)))
585+ let cY = if ((ci.callerPublicKey == value(cW)))
591586 then true
592587 else throw("You are not pending manager")
593- if ((cZ == cZ))
594- then [StringEntry(aB(), toBase58String(value(cX))), DeleteEntry(aC())]
588+ if ((cY == cY))
589+ then [StringEntry(aB(), toBase58String(value(cW))), DeleteEntry(aC())]
595590 else throw("Strict value is not equal to itself.")
596591 }
597592 else throw("Strict value is not equal to itself.")
598593 }
599594
600595
601-@Verifier(da)
602-func db () = {
603- let dc = {
604- let cf = ce()
605- if ($isInstanceOf(cf, "ByteVector"))
596+@Verifier(cZ)
597+func da () = {
598+ let db = {
599+ let ce = cd()
600+ if ($isInstanceOf(ce, "ByteVector"))
606601 then {
607- let cl = cf
608- cl
602+ let ck = ce
603+ ck
609604 }
610- else if ($isInstanceOf(cf, "Unit"))
611- then da.senderPublicKey
605+ else if ($isInstanceOf(ce, "Unit"))
606+ then cZ.senderPublicKey
612607 else throw("Match error")
613608 }
614- sigVerify(da.bodyBytes, da.proofs[0], dc)
609+ sigVerify(cZ.bodyBytes, cZ.proofs[0], db)
615610 }
616611

github/deemru/w8io/0e76f2f 
133.08 ms