tx · 5K7YBBJB538Ra3ayki3hxRNj6FnXkw4KpTTNBM4Y1uWh

3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c:  -0.04000000 Waves

2024.01.15 15:58 [2932668] smart account 3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c > SELF 0.00000000 Waves

{ "type": 13, "id": "5K7YBBJB538Ra3ayki3hxRNj6FnXkw4KpTTNBM4Y1uWh", "fee": 4000000, "feeAssetId": null, "timestamp": 1705323531411, "version": 2, "chainId": 84, "sender": "3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c", "senderPublicKey": "44kjsoExo76qSrM51NMhbG8FtdLkcPtyJxEDrwDyT8kz", "proofs": [ "5M1o5p7PcoRtoDpJJupULYUM6VsA65YMkiBgxUB6LpjUGTqYe368pkv9eztXVbWY4UWexiRX2DPWUSTrLE8qksPe" ], "script": "base64:BgIrCAISCQoHAQEBAQEIARIAEgQKAggIEgMKAQgSAwoBCBIECgIICBIECgIICEYBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAADU0VQAgJfXwAIQlVGU0NBTEUJALYCAQCAgJC7utat8A0ABnNjYWxlOACAwtcvAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICCWlkby5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEIYXNTdHJpbmcBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0BRBwcmljZUFzc2V0QW1vdW50DnByaWNlQXNzZXRNVUxUBXByaWNlCXByaWNlTVVMVAxpZG9Bc3NldE1VTFQED2JQcmljZUFzc2V0TVVMVAkAtgIBBQ5wcmljZUFzc2V0TVVMVAQNYklkb0Fzc2V0TVVMVAkAtgIBBQxpZG9Bc3NldE1VTFQEDmJQcmljZUFzc2V0QlVGCQC8AgMJALYCAQUQcHJpY2VBc3NldEFtb3VudAUIQlVGU0NBTEUFD2JQcmljZUFzc2V0TVVMVAQPYkFtb3VudEFzc2V0QlVGCQC8AgMFDmJQcmljZUFzc2V0QlVGCQC2AgEFCXByaWNlTVVMVAkAtgIBBQVwcmljZQkAoAMBCQC8AgMFD2JBbW91bnRBc3NldEJVRgkAtgIBBQxpZG9Bc3NldE1VTFQFCEJVRlNDQUxFAA5JZHhDZmdJZG9TdGFydAABABFJZHhDZmdJZG9EdXJhdGlvbgACABBJZHhDZmdDbGFpbVN0YXJ0AAMAE0lkeENmZ0NsYWltRHVyYXRpb24ABAALSWR4Q2ZnUHJpY2UABQAPSWR4Q2ZnUHJpY2VNdWx0AAYAEElkeENmZ0lkb0Fzc2V0SWQABwASSWR4Q2ZnSWRvQXNzZXRNdWx0AAgAEklkeENmZ1ByaWNlQXNzZXRJZAAJABRJZHhDZmdQcmljZUFzc2V0TXVsdAAKABVJZHhDZmdNaW5JbnZlc3RBbW91bnQACwENZnJvbWF0Q29uZmlnUwwIaWRvU3RhcnQLaWRvRHVyYXRpb24KY2xhaW1TdGFydA1jbGFpbUR1cmF0aW9uBXByaWNlCXByaWNlTXVsdAxpZG9Bc3NldElkNTgMaWRvQXNzZXRNdWx0DnByaWNlQXNzZXRJZDU4DnByaWNlQXNzZXRNdWx0D21pbkludmVzdEFtb3VudBN0b3RhbElkb0Fzc2V0VG9TZWxsCQC5CQIJAMwIAgIYJWQlZCVkJWQlZCVkJXMlZCVzJWQlZCVkCQDMCAIFCGlkb1N0YXJ0CQDMCAIFC2lkb0R1cmF0aW9uCQDMCAIFCmNsYWltU3RhcnQJAMwIAgUNY2xhaW1EdXJhdGlvbgkAzAgCBQVwcmljZQkAzAgCBQlwcmljZU11bHQJAMwIAgUMaWRvQXNzZXRJZDU4CQDMCAIFDGlkb0Fzc2V0TXVsdAkAzAgCBQ5wcmljZUFzc2V0SWQ1OAkAzAgCBQ5wcmljZUFzc2V0TXVsdAkAzAgCBQ9taW5JbnZlc3RBbW91bnQJAMwIAgUTdG90YWxJZG9Bc3NldFRvU2VsbAUDbmlsBQNTRVABDGZyb21hdENvbmZpZwwIaWRvU3RhcnQLaWRvRHVyYXRpb24KY2xhaW1TdGFydA1jbGFpbUR1cmF0aW9uBXByaWNlCXByaWNlTXVsdAxpZG9Bc3NldElkNTgMaWRvQXNzZXRNdWx0DnByaWNlQXNzZXRJZDU4DnByaWNlQXNzZXRNdWx0D21pbkludmVzdEFtb3VudBN0b3RhbElkb0Fzc2V0VG9TZWxsCQENZnJvbWF0Q29uZmlnUwwJAKQDAQUIaWRvU3RhcnQJAKQDAQULaWRvRHVyYXRpb24JAKQDAQUKY2xhaW1TdGFydAkApAMBBQ1jbGFpbUR1cmF0aW9uCQCkAwEFBXByaWNlCQCkAwEFCXByaWNlTXVsdAUMaWRvQXNzZXRJZDU4CQCkAwEFDGlkb0Fzc2V0TXVsdAUOcHJpY2VBc3NldElkNTgJAKQDAQUOcHJpY2VBc3NldE11bHQJAKQDAQUPbWluSW52ZXN0QW1vdW50CQCkAwEFE3RvdGFsSWRvQXNzZXRUb1NlbGwAEUlkeEludlRvdGFsQW1vdW50AAEAFUlkeEludlJlbWFpbmluZ0Ftb3VudAACAB1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudAADABtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQABAAXSWR4SW52TGFzdENsYWltZWRIZWlnaHQABQEPZm9ybWF0SW52ZXN0b3JTBQt0b3RhbEFtb3VudA9yZW1haW5pbmdBbW91bnQXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQVY2xhaW1lZElkb0Fzc2V0QW1vdW50EWxhc3RDbGFpbWVkSGVpZ2h0CQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCBQt0b3RhbEFtb3VudAkAzAgCBQ9yZW1haW5pbmdBbW91bnQJAMwIAgUXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAMwIAgUVY2xhaW1lZElkb0Fzc2V0QW1vdW50CQDMCAIFEWxhc3RDbGFpbWVkSGVpZ2h0BQNuaWwFA1NFUAEOZm9ybWF0SW52ZXN0b3IFC3RvdGFsQW1vdW50D3JlbWFpbmluZ0Ftb3VudBdjbGFpbWVkUHJpY2VBc3NldEFtb3VudBVjbGFpbWVkSWRvQXNzZXRBbW91bnQRbGFzdENsYWltZWRIZWlnaHQJAQ9mb3JtYXRJbnZlc3RvclMFCQCkAwEFC3RvdGFsQW1vdW50CQCkAwEFD3JlbWFpbmluZ0Ftb3VudAkApAMBBRdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkApAMBBRVjbGFpbWVkSWRvQXNzZXRBbW91bnQJAKQDAQURbGFzdENsYWltZWRIZWlnaHQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQCEHByaWNlQXNzZXRBbW91bnQOaWRvQXNzZXRBbW91bnQJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUQcHJpY2VBc3NldEFtb3VudAkAzAgCCQCkAwEFDmlkb0Fzc2V0QW1vdW50BQNuaWwFA1NFUAEJa2V5Q29uZmlnAAIKJXNfX2NvbmZpZwELa2V5SW52ZXN0b3IBC3VzZXJBZGRyZXNzCQCsAgICBCVzX18FC3VzZXJBZGRyZXNzAQlrZXlUb3RhbHMAAgolc19fdG90YWxzARlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAwR0eXBlC3VzZXJBZGRyZXNzBnR4SWQ1OAkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFBHR5cGUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUGdHhJZDU4BQNuaWwFA1NFUAEUa2V5VVNETkNsYWltRGlzYWJsZWQAAhUlc19fdXNkbkNsYWltRGlzYWJsZWQBFWtleVVTRE5DbGFpbUVuZEhlaWdodAACFiVzX191c2RuQ2xhaW1FbmRIZWlnaHQBD2tleVBlcmlvZExlbmd0aAAJALkJAgkAzAgCAgIlcwkAzAgCAgxwZXJpb2RMZW5ndGgFA25pbAUDU0VQARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARRrZXlQZXJpb2RTdGFydEhlaWdodAEJcGVyaW9kTnVtCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFwZXJpb2RTdGFydEhlaWdodAkAzAgCCQCkAwEFCXBlcmlvZE51bQUDbmlsBQNTRVABEmtleVBlcmlvZEVuZEhlaWdodAEJcGVyaW9kTnVtCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9wZXJpb2RFbmRIZWlnaHQJAMwIAgkApAMBBQlwZXJpb2ROdW0FA25pbAUDU0VQAR9rZXlVc2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvAAkAuQkCCQDMCAICAiVzCQDMCAICHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8FA25pbAUDU0VQARdrZXlUb3RhbFBlcmlvZEFsbG93YW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIUdG90YWxQZXJpb2RBbGxvd2FuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFmtleVVzZXJQZXJpb2RBbGxvd2FuY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICE3VzZXJQZXJpb2RBbGxvd2FuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABHmtleVBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQIHYXNzZXRJZAlwZXJpb2ROdW0JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQlwZXJpb2ROdW0FA25pbAUDU0VQAR1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQMHYXNzZXRJZAlwZXJpb2ROdW0LdXNlckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAhpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUJcGVyaW9kTnVtCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEba2V5VXNkdFByaWNlQXNzZXRTdGFibGVQb29sAAkAuQkCCQDMCAICAiVzCQDMCAICGHVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbAUDbmlsBQNTRVABDmtleVVzZHRBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICC3VzZHRBc3NldElkBQNuaWwFA1NFUAEUa2V5UHJpY2VBc3NldEJhbGFuY2UBB2FkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEXByaWNlQXNzZXRCYWxhbmNlCQDMCAIFB2FkZHJlc3MFA25pbAUDU0VQARprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudAEHYWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQJAMwIAgUHYWRkcmVzcwUDbmlsBQNTRVABF2tleVRvdGFsUmVtYWluaW5nQW1vdW50AAkAuQkCCQDMCAICAiVzCQDMCAICFHRvdGFsUmVtYWluaW5nQW1vdW50BQNuaWwFA1NFUAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBFWtleUNsYWltQ2xvc2luZ0hlaWdodAACFiVzX19jbGFpbUNsb3NpbmdIZWlnaHQAEmNsYWltQ2xvc2luZ0hlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVa2V5Q2xhaW1DbG9zaW5nSGVpZ2h0AAAAAQ9yZWFkQ29uZmlnQXJyYXkACQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEJa2V5Q29uZmlnAAUDU0VQASNyZWFkVG90YWxzQXJyYXlPckRlZmF1bHRCeUN1c3RvbUtleQEJY3VzdG9tS2V5CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5CQEPZm9ybWF0SW52ZXN0b3JTBQIBMAIBMAIBMAIBMAIBMAUDU0VQARhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQACQEjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkBCQEJa2V5VG90YWxzAAEacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQBC3VzZXJBZGRyZXNzCQEjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkBCQELa2V5SW52ZXN0b3IBBQt1c2VyQWRkcmVzcwEXcmVhZEludmVzdG9yQXJyYXlPckZhaWwBC3VzZXJBZGRyZXNzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQELa2V5SW52ZXN0b3IBBQt1c2VyQWRkcmVzcwUDU0VQARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAoggBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzBQR0aGlzABVJZHhEaWZmVG90YWxJbmNyZW1lbnQAAAAkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50AAEAIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQAAgAlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudAADAQtUb3RhbHNFbnRyeQUDa2V5CW9yaWdBcnJheQ1pbmNyZW1lbnREaWZmFG5ld0xhc3RDbGFpbWVkSGVpZ2h0EXByaWNlQXNzZXRCYWxhbmNlBAt0b3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCW9yaWdBcnJheQURSWR4SW52VG90YWxBbW91bnQED3JlbWFpbmluZ0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCW9yaWdBcnJheQUVSWR4SW52UmVtYWluaW5nQW1vdW50BBdjbGFpbWVkUHJpY2VBc3NldEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCW9yaWdBcnJheQUdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQEFWNsYWltZWRJZG9Bc3NldEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCW9yaWdBcnJheQUbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50BBFsYXN0Q2xhaW1lZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCW9yaWdBcnJheQUXSWR4SW52TGFzdENsYWltZWRIZWlnaHQEDm5ld1RvdGFsQW1vdW50CQBkAgULdG90YWxBbW91bnQJAJEDAgUNaW5jcmVtZW50RGlmZgUVSWR4RGlmZlRvdGFsSW5jcmVtZW50BBJuZXdSZW1haW5pbmdBbW91bnQJAGQCBQ9yZW1haW5pbmdBbW91bnQJAJEDAgUNaW5jcmVtZW50RGlmZgUkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50BAhjZmdBcnJheQkBD3JlYWRDb25maWdBcnJheQAEDnByaWNlQXNzZXRJZDU4CQCRAwIFCGNmZ0FycmF5BRJJZHhDZmdQcmljZUFzc2V0SWQEEnByaWNlQXNzZXREZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ5wcmljZUFzc2V0SWQ1OAhkZWNpbWFscwQjcHJpY2VBc3NldEJhbGFuY2VQcmljZUFzc2V0RGVjaW1hbHMJAGsDBRFwcmljZUFzc2V0QmFsYW5jZQUGc2NhbGU4CQBsBgAKAAAFEnByaWNlQXNzZXREZWNpbWFscwAAAAAFBERPV04EGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50CQBlAgkAZAIFF2NsYWltZWRQcmljZUFzc2V0QW1vdW50CQCRAwIFDWluY3JlbWVudERpZmYFIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQFEXByaWNlQXNzZXRCYWxhbmNlBBhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQJAGQCCQBkAgUVY2xhaW1lZElkb0Fzc2V0QW1vdW50CQCRAwIFDWluY3JlbWVudERpZmYFJUlkeERpZmZDbGFpbWVkSWRvQXNzZXRBbW91bnRJbmNyZW1lbnQFI3ByaWNlQXNzZXRCYWxhbmNlUHJpY2VBc3NldERlY2ltYWxzBAdlbnRyaWVzAwkAZgIAAAUSbmV3UmVtYWluaW5nQW1vdW50BARkaWZmCQBlAgkAZQIFDm5ld1RvdGFsQW1vdW50BRpuZXdDbGFpbWVkUHJpY2VBc3NldEFtb3VudAUYbmV3Q2xhaW1lZElkb0Fzc2V0QW1vdW50BBduZXdMb2dpY1JlbWFpbmluZ0Ftb3VudAMJAGYCAAAFBGRpZmYAAAUEZGlmZgkBC1N0cmluZ0VudHJ5AgUDa2V5CQEOZm9ybWF0SW52ZXN0b3IFBQ5uZXdUb3RhbEFtb3VudAUXbmV3TG9naWNSZW1haW5pbmdBbW91bnQFGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50BRhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQFFG5ld0xhc3RDbGFpbWVkSGVpZ2h0CQELU3RyaW5nRW50cnkCBQNrZXkJAQ5mb3JtYXRJbnZlc3RvcgUFDm5ld1RvdGFsQW1vdW50BRJuZXdSZW1haW5pbmdBbW91bnQFGm5ld0NsYWltZWRQcmljZUFzc2V0QW1vdW50BRhuZXdDbGFpbWVkSWRvQXNzZXRBbW91bnQFFG5ld0xhc3RDbGFpbWVkSGVpZ2h0BQdlbnRyaWVzARtJbnZlc3RPcGVyYXRpb25IaXN0b3J5RW50cnkEC3VzZXJBZGRyZXNzEHByaWNlQXNzZXRBbW91bnQOaWRvQXNzZXRBbW91bnQEdHhJZAkBC1N0cmluZ0VudHJ5AgkBGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQDAgZpbnZlc3QFC3VzZXJBZGRyZXNzCQDYBAEFBHR4SWQJARNmb3JtYXRIaXN0b3J5UmVjb3JkAgUQcHJpY2VBc3NldEFtb3VudAUOaWRvQXNzZXRBbW91bnQBGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5BAt1c2VyQWRkcmVzcxBwcmljZUFzc2V0QW1vdW50Dmlkb0Fzc2V0QW1vdW50BHR4SWQJAQtTdHJpbmdFbnRyeQIJARlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkAwIFY2xhaW0FC3VzZXJBZGRyZXNzCQDYBAEFBHR4SWQJARNmb3JtYXRIaXN0b3J5UmVjb3JkAgUQcHJpY2VBc3NldEFtb3VudAUOaWRvQXNzZXRBbW91bnQBDWludGVybmFsQ2xhaW0DEGNsYWltZWRBc3NldElkNTgLdXNlckFkZHJlc3MEdHhJZAQIY2ZnQXJyYXkJAQ9yZWFkQ29uZmlnQXJyYXkABApjbGFpbVN0YXJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFEElkeENmZ0NsYWltU3RhcnQEDWNsYWltRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUTSWR4Q2ZnQ2xhaW1EdXJhdGlvbgQIY2xhaW1FbmQJAGQCBQpjbGFpbVN0YXJ0BQ1jbGFpbUR1cmF0aW9uBAVwcmljZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BQtJZHhDZmdQcmljZQQJcHJpY2VNdWx0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFD0lkeENmZ1ByaWNlTXVsdAQMaWRvQXNzZXRJZDU4CQCRAwIFCGNmZ0FycmF5BRBJZHhDZmdJZG9Bc3NldElkBAppZG9Bc3NldElkCQDZBAEFDGlkb0Fzc2V0SWQ1OAQMaWRvQXNzZXRNdWx0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFEklkeENmZ0lkb0Fzc2V0TXVsdAQOcHJpY2VBc3NldElkNTgJAJEDAgUIY2ZnQXJyYXkFEklkeENmZ1ByaWNlQXNzZXRJZAQMcHJpY2VBc3NldElkCQDZBAEFDnByaWNlQXNzZXRJZDU4BA5wcmljZUFzc2V0TXVsdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BRRJZHhDZmdQcmljZUFzc2V0TXVsdAQNdXNlckFkZHJlc3M1OAkApQgBBQt1c2VyQWRkcmVzcwQPb3JpZ0ludmVzdEFycmF5CQEXcmVhZEludmVzdG9yQXJyYXlPckZhaWwBBQ11c2VyQWRkcmVzczU4BBFpbnZlc3RUb3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD29yaWdJbnZlc3RBcnJheQURSWR4SW52VG90YWxBbW91bnQEGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPb3JpZ0ludmVzdEFycmF5BRdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAQXaW52ZXN0TGFzdENsYWltZWRIZWlnaHQDCQBnAgUKY2xhaW1TdGFydAUaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAFCmNsYWltU3RhcnQFGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QBBRuZXdDbGFpbVBlcmlvZEhlaWdodAMJAGYCBQZoZWlnaHQFCGNsYWltRW5kBQhjbGFpbUVuZAMJAGYCBQpjbGFpbVN0YXJ0BQZoZWlnaHQFCmNsYWltU3RhcnQFBmhlaWdodAQOY2xhaW1pbmdCbG9ja3MJAGUCBRRuZXdDbGFpbVBlcmlvZEhlaWdodAUXaW52ZXN0TGFzdENsYWltZWRIZWlnaHQEGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkAawMFEWludmVzdFRvdGFsQW1vdW50BQ5jbGFpbWluZ0Jsb2NrcwUNY2xhaW1EdXJhdGlvbgQWY2xhaW1pbmdJZG9Bc3NldEFtb3VudAkBHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0BQUYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50BQ5wcmljZUFzc2V0TXVsdAUFcHJpY2UFCXByaWNlTXVsdAUMaWRvQXNzZXRNdWx0BAZpc1VTRE4JAAACBRBjbGFpbWVkQXNzZXRJZDU4BQ5wcmljZUFzc2V0SWQ1OAQTaXNVU0ROQ2xhaW1EaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEUa2V5VVNETkNsYWltRGlzYWJsZWQABwQGY2hlY2tzCQDMCAIDCQEBIQEDBQZpc1VTRE4FE2lzVVNETkNsYWltRGlzYWJsZWQHBgkAAgECFlVTRE4gY2xhaW0gaXMgZGlzYWJsZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwMJAAACBRBjbGFpbWVkQXNzZXRJZDU4BQ5wcmljZUFzc2V0SWQ1OAkAmAoGCQDMCAIAAAkAzAgCCQEBLQEFGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkAzAgCBRhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQJAMwIAgAABQNuaWwFGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAUMcHJpY2VBc3NldElkBQ9vcmlnSW52ZXN0QXJyYXkFFG5ld0NsYWltUGVyaW9kSGVpZ2h0CQDMCAIFGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudAkAzAgCBRZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQNuaWwDCQAAAgUQY2xhaW1lZEFzc2V0SWQ1OAUMaWRvQXNzZXRJZDU4CQCYCgYJAMwIAgAACQDMCAIJAQEtAQUYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQDMCAIAAAkAzAgCBRZjbGFpbWluZ0lkb0Fzc2V0QW1vdW50BQNuaWwFFmNsYWltaW5nSWRvQXNzZXRBbW91bnQFCmlkb0Fzc2V0SWQFD29yaWdJbnZlc3RBcnJheQUUbmV3Q2xhaW1QZXJpb2RIZWlnaHQJAMwIAgUYY2xhaW1pbmdQcmljZUFzc2V0QW1vdW50CQDMCAIFFmNsYWltaW5nSWRvQXNzZXRBbW91bnQFA25pbAkAAgEJAKwCAgIVdW5zdXBwb3J0ZWQgYXNzZXRJZDogBRBjbGFpbWVkQXNzZXRJZDU4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9pbnRlcm5hbENsYWltVjIEDnByaWNlQXNzZXRJZDU4DXVzZXJBZGRyZXNzNTgJb3V0QW1vdW50GXRvdGFsVXNlckF2YWlsYWJsZVRvQ2xhaW0EHnRvdGFsUGVyaW9kUHJpY2VBc3NldEFsbG93YW5jZQkBBXZhbHVlAQkAnwgBCQEXa2V5VG90YWxQZXJpb2RBbGxvd2FuY2UBBQ5wcmljZUFzc2V0SWQ1OAQddXNlclBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UJAQV2YWx1ZQEJAJ8IAQkBFmtleVVzZXJQZXJpb2RBbGxvd2FuY2UBBQ5wcmljZUFzc2V0SWQ1OAQMcGVyaW9kTGVuZ3RoCQEFdmFsdWUBCQCfCAEJAQ9rZXlQZXJpb2RMZW5ndGgABA1jdXJyZW50UGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEJARBrZXlDdXJyZW50UGVyaW9kAAAABBt6ZXJvUGVyaW9kRW5kSGVpZ2hJc0RlZmluZWQJAQlpc0RlZmluZWQBCQCfCAEJARJrZXlQZXJpb2RFbmRIZWlnaHQBAAAEDSR0MDEzMjc0MTUxNDQDCQBmAgUNY3VycmVudFBlcmlvZAAABBVsYXN0UGVyaW9kU3RhcnRIZWlnaHQJAQV2YWx1ZQEJAJ8IAQkBFGtleVBlcmlvZFN0YXJ0SGVpZ2h0AQUNY3VycmVudFBlcmlvZAQTbGFzdFBlcmlvZEVuZEhlaWdodAkBBXZhbHVlAQkAnwgBCQESa2V5UGVyaW9kRW5kSGVpZ2h0AQUNY3VycmVudFBlcmlvZAQNJHQwMTM1MzQxNDIzOQMJAGYCBQZoZWlnaHQFE2xhc3RQZXJpb2RFbmRIZWlnaHQEFHVwZGF0ZWRDdXJyZW50UGVyaW9kCQBkAgUNY3VycmVudFBlcmlvZAABBAtwZXJpb2RTdGFydAMJAGYCBQZoZWlnaHQJAGQCBRNsYXN0UGVyaW9kRW5kSGVpZ2h0BQxwZXJpb2RMZW5ndGgEF2Jsb2Nrc1RvTGFzdFBlcmlvZFN0YXJ0CQBqAgkAZQIFBmhlaWdodAUTbGFzdFBlcmlvZEVuZEhlaWdodAUMcGVyaW9kTGVuZ3RoAwkAAAIFF2Jsb2Nrc1RvTGFzdFBlcmlvZFN0YXJ0AAAJAGQCCQBlAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgAAQkAZQIFBmhlaWdodAUXYmxvY2tzVG9MYXN0UGVyaW9kU3RhcnQJAGQCBRNsYXN0UGVyaW9kRW5kSGVpZ2h0AAEECXBlcmlvZEVuZAkAZQIJAGQCBQtwZXJpb2RTdGFydAUMcGVyaW9kTGVuZ3RoAAEJAJUKAwUUdXBkYXRlZEN1cnJlbnRQZXJpb2QFC3BlcmlvZFN0YXJ0BQlwZXJpb2RFbmQJAJUKAwUNY3VycmVudFBlcmlvZAUVbGFzdFBlcmlvZFN0YXJ0SGVpZ2h0BRNsYXN0UGVyaW9kRW5kSGVpZ2h0BBR1cGRhdGVkQ3VycmVudFBlcmlvZAgFDSR0MDEzNTM0MTQyMzkCXzEEC3BlcmlvZFN0YXJ0CAUNJHQwMTM1MzQxNDIzOQJfMgQJcGVyaW9kRW5kCAUNJHQwMTM1MzQxNDIzOQJfMwkAlQoDBRR1cGRhdGVkQ3VycmVudFBlcmlvZAULcGVyaW9kU3RhcnQFCXBlcmlvZEVuZAMFG3plcm9QZXJpb2RFbmRIZWlnaElzRGVmaW5lZAQVemVyb1BlcmlvZFN0YXJ0SGVpZ2h0CQEFdmFsdWUBCQCfCAEJARRrZXlQZXJpb2RTdGFydEhlaWdodAEAAAQTemVyb1BlcmlvZEVuZEhlaWdodAkBBXZhbHVlAQkAnwgBCQESa2V5UGVyaW9kRW5kSGVpZ2h0AQAABA0kdDAxNDQ5NDE0ODc2AwkAZgIFBmhlaWdodAUTemVyb1BlcmlvZEVuZEhlaWdodAQUdXBkYXRlZEN1cnJlbnRQZXJpb2QJAGQCBQ1jdXJyZW50UGVyaW9kAAEEC3BlcmlvZFN0YXJ0CQBkAgUTemVyb1BlcmlvZEVuZEhlaWdodAABBAlwZXJpb2RFbmQJAGUCCQBkAgULcGVyaW9kU3RhcnQFDHBlcmlvZExlbmd0aAABCQCVCgMFFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQtwZXJpb2RTdGFydAUJcGVyaW9kRW5kCQCVCgMFDWN1cnJlbnRQZXJpb2QFFXplcm9QZXJpb2RTdGFydEhlaWdodAUTemVyb1BlcmlvZEVuZEhlaWdodAQUdXBkYXRlZEN1cnJlbnRQZXJpb2QIBQ0kdDAxNDQ5NDE0ODc2Al8xBAtwZXJpb2RTdGFydAgFDSR0MDE0NDk0MTQ4NzYCXzIECXBlcmlvZEVuZAgFDSR0MDE0NDk0MTQ4NzYCXzMJAJUKAwUUdXBkYXRlZEN1cnJlbnRQZXJpb2QFC3BlcmlvZFN0YXJ0BQlwZXJpb2RFbmQJAJUKAwUNY3VycmVudFBlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5UGVyaW9kU3RhcnRIZWlnaHQBBQ1jdXJyZW50UGVyaW9kBQZoZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVBlcmlvZEVuZEhlaWdodAEFDWN1cnJlbnRQZXJpb2QJAGUCCQBkAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgAAQQUdXBkYXRlZEN1cnJlbnRQZXJpb2QIBQ0kdDAxMzI3NDE1MTQ0Al8xBAtwZXJpb2RTdGFydAgFDSR0MDEzMjc0MTUxNDQCXzIECXBlcmlvZEVuZAgFDSR0MDEzMjc0MTUxNDQCXzMEG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEea2V5UGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltAgUOcHJpY2VBc3NldElkNTgFFHVwZGF0ZWRDdXJyZW50UGVyaW9kBR50b3RhbFBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UEGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCQELdmFsdWVPckVsc2UCCQCfCAEJAR1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQMFDnByaWNlQXNzZXRJZDU4BRR1cGRhdGVkQ3VycmVudFBlcmlvZAUNdXNlckFkZHJlc3M1OAUddXNlclBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UEEXByaWNlQXNzZXRCYWxhbmNlCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlQcmljZUFzc2V0QmFsYW5jZQEFDXVzZXJBZGRyZXNzNTgAAAQZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQkAlwMBCQDMCAIJAGQCBQlvdXRBbW91bnQFEXByaWNlQXNzZXRCYWxhbmNlCQDMCAIFG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQkAzAgCBRpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQUDbmlsBBx1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvCQEFdmFsdWUBCQCfCAEJAR9rZXlVc2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvAAQbcHV0T25lVGtuVjJQcmljZUFzc2V0QW1vdW50BQZzY2FsZTgEDSR0MDE1ODk5MTYxNTIKAAFACQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQkBG2tleVVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbAACIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQkAzAgCBRtwdXRPbmVUa25WMlByaWNlQXNzZXRBbW91bnQJAMwIAgUOcHJpY2VBc3NldElkNTgFA25pbAUDbmlsAwkAAQIFAUACDyhJbnQsIEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACJCBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCwgSW50KQMJAAACBQ0kdDAxNTg5OTE2MTUyBQ0kdDAxNTg5OTE2MTUyBAVib251cwgFDSR0MDE1ODk5MTYxNTICXzMECWZlZUFtb3VudAgFDSR0MDE1ODk5MTYxNTICXzIECGxwQW1vdW50CAUNJHQwMTU4OTkxNjE1MgJfMQQLdXNkdEFzc2V0SWQJAQV2YWx1ZQEJAKIIAQkBDmtleVVzZHRBc3NldElkAAQNJHQwMTYyMTQxNjQzMgoAAUAJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBCQEba2V5VXNkdFByaWNlQXNzZXRTdGFibGVQb29sAAITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQt1c2R0QXNzZXRJZAkAzAgCBQhscEFtb3VudAUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUNJHQwMTYyMTQxNjQzMgUNJHQwMTYyMTQxNjQzMgQUZ2V0T25lVGtuVjJGZWVBbW91bnQIBQ0kdDAxNjIxNDE2NDMyAl8yBAp1c2R0QW1vdW50CAUNJHQwMTYyMTQxNjQzMgJfMQQaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8JAGsDBRtwdXRPbmVUa25WMlByaWNlQXNzZXRBbW91bnQFBnNjYWxlOAUKdXNkdEFtb3VudAQTZW5kUGVyaW9kQmxvY2tzTGVmdAkAZQIFCXBlcmlvZEVuZAUGaGVpZ2h0CQCcCgoFGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0FG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQUacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0FGXRvdGFsVXNlckF2YWlsYWJsZVRvQ2xhaW0FHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8FGmN1cnJlbnRVc2R0UHJpY2VBc3NldFJhdGlvBRNlbmRQZXJpb2RCbG9ja3NMZWZ0BRR1cGRhdGVkQ3VycmVudFBlcmlvZAULcGVyaW9kU3RhcnQFCXBlcmlvZEVuZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEE21hbmFnZXJWYXVsdEFkZHJlc3MJARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAnQgCBRNtYW5hZ2VyVmF1bHRBZGRyZXNzCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IBEGdldENsYWltRm9yU3RhdGUCDXVzZXJBZGRyZXNzNTgEdHhJZAQMaWRvQXNzZXRJZDU4CQCRAwIJAQ9yZWFkQ29uZmlnQXJyYXkABRBJZHhDZmdJZG9Bc3NldElkBAhpbnZlc3RvcgkAtQkCCQEFdmFsdWUBCQCiCAEJAQtrZXlJbnZlc3RvcgEFDXVzZXJBZGRyZXNzNTgFA1NFUAQTaW52ZXN0b3JUb3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGludmVzdG9yBRFJZHhJbnZUb3RhbEFtb3VudAQXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhpbnZlc3RvcgUVSWR4SW52UmVtYWluaW5nQW1vdW50BBlpbnZlc3RvclByaWNlQXNzZXRCYWxhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIaW52ZXN0b3IFHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BBdpbnZlc3Rvcklkb0Fzc2V0QmFsYW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGludmVzdG9yBRtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQEGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhpbnZlc3RvcgUXSWR4SW52TGFzdENsYWltZWRIZWlnaHQEDSR0MDE3OTM0MTgxNDYEByRtYXRjaDAJAJ8IAQkBFGtleVByaWNlQXNzZXRCYWxhbmNlAQUNdXNlckFkZHJlc3M1OAMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAJAJQKAgUBdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVByaWNlQXNzZXRCYWxhbmNlAQUNdXNlckFkZHJlc3M1OAAABQNuaWwJAJQKAgAABQNuaWwEEHByaWNlQXNzZXRBbW91bnQIBQ0kdDAxNzkzNDE4MTQ2Al8xBBFwcmljZUFzc2V0QWN0aW9ucwgFDSR0MDE3OTM0MTgxNDYCXzIEDSR0MDE4MTUwMTg0MTMEByRtYXRjaDAJAKIIAQkBGmtleUludmVzdG9yUmVtYWluaW5nQW1vdW50AQUNdXNlckFkZHJlc3M1OAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXQFByRtYXRjaDAJAJQKAgkBDXBhcnNlSW50VmFsdWUBBQF0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudAEFDXVzZXJBZGRyZXNzNTgCATAFA25pbAkAlAoCAAAFA25pbAQaaW52ZXN0b3JLZXlSZW1haW5pbmdBbW91bnQIBQ0kdDAxODE1MDE4NDEzAl8xBBtpbnZlc3RvcktleVJlbWFpbmluZ0FjdGlvbnMIBQ0kdDAxODE1MDE4NDEzAl8yBBd0b3RhbElkb0Fzc2V0U2VuZEFtb3VudAkAaAIJAGQCCQBkAgUXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQFEHByaWNlQXNzZXRBbW91bnQFGmludmVzdG9yS2V5UmVtYWluaW5nQW1vdW50AGQEHHRvdGFsSWRvQXNzZXRGb3JJbnZlc3RvckRhdGEJAGgCCQBkAgUXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQFGmludmVzdG9yS2V5UmVtYWluaW5nQW1vdW50AGQEC25ld0ludmVzdG9yCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFE2ludmVzdG9yVG90YWxBbW91bnQJAMwIAgIBMAkAzAgCCQCkAwEFGWludmVzdG9yUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBCQBkAgUXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UFHHRvdGFsSWRvQXNzZXRGb3JJbnZlc3RvckRhdGEJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQBBNpbnZlc3RvckRhdGFBY3Rpb25zAwkBAiE9AgUcdG90YWxJZG9Bc3NldEZvckludmVzdG9yRGF0YQAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlJbnZlc3RvcgEFDXVzZXJBZGRyZXNzNTgFC25ld0ludmVzdG9yBQNuaWwFA25pbAQTc2VuZElkb0Fzc2V0QWN0aW9ucwMJAQIhPQIFF3RvdGFsSWRvQXNzZXRTZW5kQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNdXNlckFkZHJlc3M1OAUXdG90YWxJZG9Bc3NldFNlbmRBbW91bnQJANkEAQUMaWRvQXNzZXRJZDU4BQNuaWwFA25pbAQOaGlzdG9yeUFjdGlvbnMJARpDbGFpbU9wZXJhdGlvbkhpc3RvcnlFbnRyeQQFDXVzZXJBZGRyZXNzNTgAAAUXdG90YWxJZG9Bc3NldFNlbmRBbW91bnQFBHR4SWQJAJYKBAUXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQFEHByaWNlQXNzZXRBbW91bnQFGmludmVzdG9yS2V5UmVtYWluaW5nQW1vdW50CQDNCAIJAM0IAgkAzQgCCQDNCAIFE3NlbmRJZG9Bc3NldEFjdGlvbnMFE2ludmVzdG9yRGF0YUFjdGlvbnMFHHRvdGFsSWRvQXNzZXRGb3JJbnZlc3RvckRhdGEFEXByaWNlQXNzZXRBY3Rpb25zBQ5oaXN0b3J5QWN0aW9ucwcBaQELY29uc3RydWN0b3IHCGlkb1N0YXJ0C2lkb0R1cmF0aW9uCmNsYWltU3RhcnQNY2xhaW1EdXJhdGlvbgVwcmljZQ5wcmljZUFzc2V0SWQ1OA9taW5JbnZlc3RBbW91bnQECXByaWNlTXVsdAkAaAIJAGgCAGQA6AcA6AcEBmlkb0VuZAkAZAIFCGlkb1N0YXJ0BQtpZG9EdXJhdGlvbgMJAQlpc0RlZmluZWQBCQCiCAEJAQlrZXlDb25maWcACQACAQITYWxyZWFkeSBpbml0aWFsaXplZAMJAQIhPQICIzNQTUVITHgxajZ6ZXJhclpUWWZzR3FEZWVacVFvTXB4cTVTCQClCAEIBQFpBmNhbGxlcgkAAgECDm5vdCBhdXRob3JpemVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAMJAGcCBQZpZG9FbmQFCmNsYWltU3RhcnQJAAIBAiZjbGFpbVN0YXJ0IG11c3QgYmUgZ3JlYXRlciB0aGFuIGlkb0VuZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECmlkb0Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQMaWRvQXNzZXRJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUKaWRvQXNzZXRJZAIbZmFpbCB0byBsb2FkIGlkbyBhc3NldCBpbmZvBAxpZG9Bc3NldElkNTgJANgEAQUKaWRvQXNzZXRJZAQMaWRvQXNzZXRNdWx0CQBsBgAKAAAIBQxpZG9Bc3NldEluZm8IZGVjaW1hbHMAAAAABQRET1dOBAxwcmljZUFzc2V0SWQJANkEAQUOcHJpY2VBc3NldElkNTgEDnByaWNlQXNzZXRJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUMcHJpY2VBc3NldElkAh1mYWlsIHRvIGxvYWQgcHJpY2UgYXNzZXQgaW5mbwQOcHJpY2VBc3NldE11bHQJAGwGAAoAAAgFDnByaWNlQXNzZXRJbmZvCGRlY2ltYWxzAAAAAAUERE9XTgQPb3JpZ1RvdGFsc0FycmF5CQEYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAQKdG90YWxzRGlmZgkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5Q29uZmlnAAkBDGZyb21hdENvbmZpZwwFCGlkb1N0YXJ0BQtpZG9EdXJhdGlvbgUKY2xhaW1TdGFydAUNY2xhaW1EdXJhdGlvbgUFcHJpY2UFCXByaWNlTXVsdAUMaWRvQXNzZXRJZDU4BQxpZG9Bc3NldE11bHQFDnByaWNlQXNzZXRJZDU4BQ5wcmljZUFzc2V0TXVsdAUPbWluSW52ZXN0QW1vdW50CAUDcG10BmFtb3VudAkAzAgCCQELVG90YWxzRW50cnkFCQEJa2V5VG90YWxzAAUPb3JpZ1RvdGFsc0FycmF5BQp0b3RhbHNEaWZmBQpjbGFpbVN0YXJ0AAAFA25pbAFpAQZpbnZlc3QABAhjZmdBcnJheQkBD3JlYWRDb25maWdBcnJheQAECGlkb1N0YXJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFDklkeENmZ0lkb1N0YXJ0BAtpZG9EdXJhdGlvbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BRFJZHhDZmdJZG9EdXJhdGlvbgQGaWRvRW5kCQBkAgUIaWRvU3RhcnQFC2lkb0R1cmF0aW9uBApjbGFpbVN0YXJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFEElkeENmZ0NsYWltU3RhcnQEDWNsYWltRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUTSWR4Q2ZnQ2xhaW1EdXJhdGlvbgQFcHJpY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQULSWR4Q2ZnUHJpY2UECXByaWNlTXVsdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BQ9JZHhDZmdQcmljZU11bHQEDGlkb0Fzc2V0SWQ1OAkAkQMCBQhjZmdBcnJheQUQSWR4Q2ZnSWRvQXNzZXRJZAQKaWRvQXNzZXRJZAkA2QQBBQxpZG9Bc3NldElkNTgEDGlkb0Fzc2V0TXVsdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BRJJZHhDZmdJZG9Bc3NldE11bHQEDnByaWNlQXNzZXRJZDU4CQCRAwIFCGNmZ0FycmF5BRJJZHhDZmdQcmljZUFzc2V0SWQEDHByaWNlQXNzZXRJZAkA2QQBBQ5wcmljZUFzc2V0SWQ1OAQOcHJpY2VBc3NldE11bHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUUSWR4Q2ZnUHJpY2VBc3NldE11bHQEDm1pbkl2ZXN0QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFFUlkeENmZ01pbkludmVzdEFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkAZgIFCGlkb1N0YXJ0BQZoZWlnaHQJAAIBAhxpZG8gaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAUGaWRvRW5kCQACAQIaaWRvIGhhcyBiZWVuIGFscmVhZHkgZW5kZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIFCnBtdEFzc2V0SWQFDHByaWNlQXNzZXRJZAkAAgEJAKwCAgkArAICAhppbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQ6IAkA2AQBBQpwbXRBc3NldElkAgwgaXMgZXhwZWN0ZWQEEW9yaWdJbnZlc3RvckFycmF5CQEacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQBBQt1c2VyQWRkcmVzcwQPb3JpZ1RvdGFsc0FycmF5CQEYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0AAQTbmV3UHJpY2VUb3RhbEFtb3VudAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9vcmlnVG90YWxzQXJyYXkFEUlkeEludlRvdGFsQW1vdW50BQlwbXRBbW91bnQEFnJlcXVpcmVkSWRvQXNzZXRBbW91bnQJAGgCBRNuZXdQcmljZVRvdGFsQW1vdW50AGQDCQBmAgUWcmVxdWlyZWRJZG9Bc3NldEFtb3VudAkA8AcCBQR0aGlzBQppZG9Bc3NldElkCQACAQI5SURPIGFzc2V0IGhhcyBiZWVuIC0gc29sZCBjb25zaWRlciB0byB1c2Ugc21hbGxlciBwYXltZW50BAp0b3RhbHNEaWZmCQDMCAIFCXBtdEFtb3VudAkAzAgCBQlwbXRBbW91bnQJAMwIAgAACQDMCAIAAAUDbmlsCQDMCAIJAQtUb3RhbHNFbnRyeQUJAQtrZXlJbnZlc3RvcgEFC3VzZXJBZGRyZXNzBRFvcmlnSW52ZXN0b3JBcnJheQUKdG90YWxzRGlmZgUKY2xhaW1TdGFydAAACQDMCAIJAQtUb3RhbHNFbnRyeQUJAQlrZXlUb3RhbHMABQ9vcmlnVG90YWxzQXJyYXkFCnRvdGFsc0RpZmYFCmNsYWltU3RhcnQAAAkAzAgCCQEbSW52ZXN0T3BlcmF0aW9uSGlzdG9yeUVudHJ5BAULdXNlckFkZHJlc3MFCXBtdEFtb3VudAAACAUBaQ10cmFuc2FjdGlvbklkBQNuaWwBaQEFY2xhaW0CEGNsYWltZWRBc3NldElkNTgNdXNlckFkZHJlc3M1OAQPY2FsbGVyQWRkcmVzczU4CQClCAEIBQFpBmNhbGxlcgMJAQIhPQIFDXVzZXJBZGRyZXNzNTgFD2NhbGxlckFkZHJlc3M1OAkAAgECDm5vdCBhdXRob3JpemVkBAhjZmdBcnJheQkBD3JlYWRDb25maWdBcnJheQAEDnByaWNlQXNzZXRJZDU4CQCRAwIFCGNmZ0FycmF5BRJJZHhDZmdQcmljZUFzc2V0SWQEEGNsYWltUmVzdWx0VHVwbGUJAQ1pbnRlcm5hbENsYWltAwUQY2xhaW1lZEFzc2V0SWQ1OAgFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAp0b3RhbHNEaWZmCAUQY2xhaW1SZXN1bHRUdXBsZQJfMQQJb3V0QW1vdW50CAUQY2xhaW1SZXN1bHRUdXBsZQJfMgQKb3V0QXNzZXRJZAgFEGNsYWltUmVzdWx0VHVwbGUCXzMED29yaWdJbnZlc3RBcnJheQgFEGNsYWltUmVzdWx0VHVwbGUCXzQEFG5ld0NsYWltUGVyaW9kSGVpZ2h0CAUQY2xhaW1SZXN1bHRUdXBsZQJfNQQaY2xhaW1lZFByaWNlQW1vdW50RnJvbURpZmYJAJEDAgUKdG90YWxzRGlmZgUiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAQdY2xhaW1lZElkb0Fzc2V0QW1vdW50RnJvbURpZmYJAJEDAgUKdG90YWxzRGlmZgUlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudAQRcHJpY2VBc3NldEJhbGFuY2UJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFGtleVByaWNlQXNzZXRCYWxhbmNlAQUNdXNlckFkZHJlc3M1OAAABBJwcmljZUFzc2V0RGVjaW1hbHMICQEFdmFsdWUBCQDsBwEJANkEAQUOcHJpY2VBc3NldElkNTgIZGVjaW1hbHMEB2VudHJpZXMDCQAAAgUQY2xhaW1lZEFzc2V0SWQ1OAUOcHJpY2VBc3NldElkNTgEDSR0MDI0NDgzMjQ5MjcJAQ9pbnRlcm5hbENsYWltVjIEBQ5wcmljZUFzc2V0SWQ1OAUNdXNlckFkZHJlc3M1OAUJb3V0QW1vdW50CQCRAwIFCnRvdGFsc0RpZmYFIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQEGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0IBQ0kdDAyNDQ4MzI0OTI3Al8xBBtwZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0IBQ0kdDAyNDQ4MzI0OTI3Al8yBBpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQgFDSR0MDI0NDgzMjQ5MjcCXzMEGXRvdGFsVXNlckF2YWlsYWJsZVRvQ2xhaW0IBQ0kdDAyNDQ4MzI0OTI3Al80BBx1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvCAUNJHQwMjQ0ODMyNDkyNwJfNQQaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8IBQ0kdDAyNDQ4MzI0OTI3Al82BBNlbmRQZXJpb2RCbG9ja3NMZWZ0CAUNJHQwMjQ0ODMyNDkyNwJfNwQUdXBkYXRlZEN1cnJlbnRQZXJpb2QIBQ0kdDAyNDQ4MzI0OTI3Al84BAtwZXJpb2RTdGFydAgFDSR0MDI0NDgzMjQ5MjcCXzkECXBlcmlvZEVuZAgFDSR0MDI0NDgzMjQ5MjcDXzEwBAZjaGVja3MJAMwIAgMJAGYCBRpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQAABgkBCHRocm93RXJyAQI6dW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2VyIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkAzAgCAwkAZgIFG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQAABgkBCHRocm93RXJyAQI7dW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB0b3RhbCBwZXJpb2QgYWxsb3dhbmNlIHJlYWNoZWQJAMwIAgMJAGYCBRlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltAAAGCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltCQDMCAIDCQBmAgUcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwUaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8GCQEIdGhyb3dFcnIBAk91bmF2YWlsYWJsZSB0byBjbGFpbSBiZWNhdXNlIHVzZG4gcHJpY2UgbG93ZXIgdGhhbiB1c2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvCQDMCAIDAwMJAQIhPQIFEGNsYWltZWRBc3NldElkNTgFDnByaWNlQXNzZXRJZDU4BgkAAAIFEmNsYWltQ2xvc2luZ0hlaWdodAAABgkAZgIFEmNsYWltQ2xvc2luZ0hlaWdodAUGaGVpZ2h0BgkBCHRocm93RXJyAQIRQ2xhaW0gaXMgZGlzYWJsZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQidXBkYXRlZFBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQkAZQIFG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQUZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQQhdXBkYXRlZFBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCQBlAgUacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0FGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0EB2VudHJpZXMDCQBmAgURcHJpY2VBc3NldEJhbGFuY2UFGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltBQpvdXRBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5UHJpY2VBc3NldEJhbGFuY2UBBQ11c2VyQWRkcmVzczU4CQBlAgURcHJpY2VBc3NldEJhbGFuY2UFGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0FA25pbAQOZXZhbHVhdGVSZXN1bHQJALUJAgkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAg1jbGFpbVJFQURPTkxZCQDMCAIFDnByaWNlQXNzZXRJZDU4CQDMCAIFDXVzZXJBZGRyZXNzNTgFA25pbAUDbmlsBQNTRVADCQAAAgUOZXZhbHVhdGVSZXN1bHQFDmV2YWx1YXRlUmVzdWx0BBthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5ldmFsdWF0ZVJlc3VsdAADBBBsYXN0Q2xhaW1FbnRyaWVzAwkAAAIFG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQUZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQQTaW52ZXN0b3JUb3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD29yaWdJbnZlc3RBcnJheQURSWR4SW52VG90YWxBbW91bnQEF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPb3JpZ0ludmVzdEFycmF5BRVJZHhJbnZSZW1haW5pbmdBbW91bnQEGWludmVzdG9yUHJpY2VBc3NldEJhbGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9vcmlnSW52ZXN0QXJyYXkFHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BBdpbnZlc3Rvcklkb0Fzc2V0QmFsYW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD29yaWdJbnZlc3RBcnJheQUbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50BBlpbnZlc3Rvckxhc3RDbGFpbWVkSGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPb3JpZ0ludmVzdEFycmF5BRdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAQObmV3SW52ZXN0QXJyYXkJAMwIAgkApAMBBRNpbnZlc3RvclRvdGFsQW1vdW50CQDMCAICATAJAMwIAgkApAMBBRlpbnZlc3RvclByaWNlQXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UJAMwIAgkApAMBBRlpbnZlc3Rvckxhc3RDbGFpbWVkSGVpZ2h0BQNuaWwEBnRvdGFscwkBGHJlYWRUb3RhbHNBcnJheU9yRGVmYXVsdAAEEXRvdGFsc1RvdGFsQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGdG90YWxzBRFJZHhJbnZUb3RhbEFtb3VudAQVdG90YWxzUmVtYWluaW5nQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGdG90YWxzBRVJZHhJbnZSZW1haW5pbmdBbW91bnQEHXRvdGFsc0NsYWltZWRQcmljZUFzc2V0QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGdG90YWxzBR1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudAQbdG90YWxzQ2xhaW1lZElkb0Fzc2V0QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGdG90YWxzBRtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQEF3RvdGFsc0xhc3RDbGFpbWVkSGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGdG90YWxzBRdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodAQYbmV3VG90YWxzUmVtYWluaW5nQW1vdW50CQBlAgUVdG90YWxzUmVtYWluaW5nQW1vdW50BRdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudAQNbmV3VG90YWxBcnJheQkAzAgCCQCkAwEFEXRvdGFsc1RvdGFsQW1vdW50CQDMCAIJAKQDAQUYbmV3VG90YWxzUmVtYWluaW5nQW1vdW50CQDMCAIJAKQDAQUddG90YWxzQ2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAMwIAgkApAMBBRt0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQJAMwIAgkApAMBBRd0b3RhbHNMYXN0Q2xhaW1lZEhlaWdodAUDbmlsBBduZXdUb3RhbFJlbWFpbmluZ0Ftb3VudAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBF2tleVRvdGFsUmVtYWluaW5nQW1vdW50AAAABRdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5SW52ZXN0b3JSZW1haW5pbmdBbW91bnQBBQ11c2VyQWRkcmVzczU4CQCkAwEFF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARdrZXlUb3RhbFJlbWFpbmluZ0Ftb3VudAAJAKQDAQUXbmV3VG90YWxSZW1haW5pbmdBbW91bnQJAMwIAgkBC1RvdGFsc0VudHJ5BQkBC2tleUludmVzdG9yAQUNdXNlckFkZHJlc3M1OAUObmV3SW52ZXN0QXJyYXkFCnRvdGFsc0RpZmYFFG5ld0NsYWltUGVyaW9kSGVpZ2h0AAAJAMwIAgkBC1RvdGFsc0VudHJ5BQkBCWtleVRvdGFscwAFDW5ld1RvdGFsQXJyYXkFCnRvdGFsc0RpZmYFFG5ld0NsYWltUGVyaW9kSGVpZ2h0AAAFA25pbAkAzAgCCQELVG90YWxzRW50cnkFCQELa2V5SW52ZXN0b3IBBQ11c2VyQWRkcmVzczU4BQ9vcmlnSW52ZXN0QXJyYXkFCnRvdGFsc0RpZmYFFG5ld0NsYWltUGVyaW9kSGVpZ2h0AAAJAMwIAgkBC1RvdGFsc0VudHJ5BQkBCWtleVRvdGFscwAJARhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQABQp0b3RhbHNEaWZmBRRuZXdDbGFpbVBlcmlvZEhlaWdodAAABQNuaWwEGHVwZGF0ZWRQcmljZUFzc2V0QmFsYW5jZQkAZQIJAGQCBRFwcmljZUFzc2V0QmFsYW5jZQUJb3V0QW1vdW50BRlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltBQpvdXRBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5UHJpY2VBc3NldEJhbGFuY2UBBQ11c2VyQWRkcmVzczU4BRh1cGRhdGVkUHJpY2VBc3NldEJhbGFuY2UFA25pbAUQbGFzdENsYWltRW50cmllcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlDdXJyZW50UGVyaW9kAAUUdXBkYXRlZEN1cnJlbnRQZXJpb2QJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlQZXJpb2RTdGFydEhlaWdodAEFFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQtwZXJpb2RTdGFydAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVBlcmlvZEVuZEhlaWdodAEFFHVwZGF0ZWRDdXJyZW50UGVyaW9kBQlwZXJpb2RFbmQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlQZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0CBQ5wcmljZUFzc2V0SWQ1OAUUdXBkYXRlZEN1cnJlbnRQZXJpb2QFInVwZGF0ZWRQZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0JAMwIAgkBDEludGVnZXJFbnRyeQIJAR1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbQMFDnByaWNlQXNzZXRJZDU4BRR1cGRhdGVkQ3VycmVudFBlcmlvZAUNdXNlckFkZHJlc3M1OAUhdXBkYXRlZFBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCQDMCAIJARpDbGFpbU9wZXJhdGlvbkhpc3RvcnlFbnRyeQQFDXVzZXJBZGRyZXNzNTgFGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0FHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFB2VudHJpZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMJAGsDBRFwcmljZUFzc2V0QmFsYW5jZQUGc2NhbGU4CQBsBgAKAAAFEnByaWNlQXNzZXREZWNpbWFscwAAAAAFBERPV04JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGQCBQlvdXRBbW91bnQFHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMFCm91dEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlQcmljZUFzc2V0QmFsYW5jZQEFDXVzZXJBZGRyZXNzNTgAAAkAzAgCCQELVG90YWxzRW50cnkFCQELa2V5SW52ZXN0b3IBBQ11c2VyQWRkcmVzczU4BQ9vcmlnSW52ZXN0QXJyYXkFCnRvdGFsc0RpZmYFFG5ld0NsYWltUGVyaW9kSGVpZ2h0BRFwcmljZUFzc2V0QmFsYW5jZQkAzAgCCQELVG90YWxzRW50cnkFCQEJa2V5VG90YWxzAAkBGHJlYWRUb3RhbHNBcnJheU9yRGVmYXVsdAAFCnRvdGFsc0RpZmYFFG5ld0NsYWltUGVyaW9kSGVpZ2h0BRFwcmljZUFzc2V0QmFsYW5jZQkAzAgCCQEaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkEBQ11c2VyQWRkcmVzczU4BRpjbGFpbWVkUHJpY2VBbW91bnRGcm9tRGlmZgkAZAIFHWNsYWltZWRJZG9Bc3NldEFtb3VudEZyb21EaWZmBRxwcmljZUFzc2V0QmFsYW5jZUlkb0RlY2ltYWxzCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFBHVuaXQFB2VudHJpZXMBaQESY2xlYW5SZW1haW5nQW1vdW50AQ11c2VyQWRkcmVzczU4BA5wcmljZUFzc2V0SWQ1OAkAkQMCCQEPcmVhZENvbmZpZ0FycmF5AAUSSWR4Q2ZnUHJpY2VBc3NldElkBA5ldmFsdWF0ZVJlc3VsdAkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFBHRoaXMCDWNsYWltUkVBRE9OTFkJAMwIAgUOcHJpY2VBc3NldElkNTgJAMwIAgUNdXNlckFkZHJlc3M1OAUDbmlsBQNuaWwFA1NFUAMJAAACBQ5ldmFsdWF0ZVJlc3VsdAUOZXZhbHVhdGVSZXN1bHQEG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmV2YWx1YXRlUmVzdWx0AAIEFGNoZWNrVW5jbGFpbWVkQXNzZXRzAwkAAAIFG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQAABgkBCHRocm93RXJyAQIadXNlciBoYXZlIHVuY2xhaW1lZCBhc3NldHMDCQAAAgUUY2hlY2tVbmNsYWltZWRBc3NldHMFFGNoZWNrVW5jbGFpbWVkQXNzZXRzBAhpbnZlc3RvcgkAtQkCCQEFdmFsdWUBCQCiCAEJAQtrZXlJbnZlc3RvcgEFDXVzZXJBZGRyZXNzNTgFA1NFUAQTaW52ZXN0b3JUb3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGludmVzdG9yBRFJZHhJbnZUb3RhbEFtb3VudAQXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhpbnZlc3RvcgUVSWR4SW52UmVtYWluaW5nQW1vdW50BBlpbnZlc3RvclByaWNlQXNzZXRCYWxhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIaW52ZXN0b3IFHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BBdpbnZlc3Rvcklkb0Fzc2V0QmFsYW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGludmVzdG9yBRtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQEGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhpbnZlc3RvcgUXSWR4SW52TGFzdENsYWltZWRIZWlnaHQEHGludmVzdG9yUmVtYWluaW5nQW1vdW50Q2hlY2sDCQECIT0CBRdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudAAABgkBCHRocm93RXJyAQIkaW52ZXN0b3JSZW1haW5pbmdBbW91bnQgYWxyZWFkeSB6ZXJvAwkAAAIFHGludmVzdG9yUmVtYWluaW5nQW1vdW50Q2hlY2sFHGludmVzdG9yUmVtYWluaW5nQW1vdW50Q2hlY2sEC25ld0ludmVzdG9yCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFE2ludmVzdG9yVG90YWxBbW91bnQJAMwIAgIBMAkAzAgCCQCkAwEFGWludmVzdG9yUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBBRdpbnZlc3Rvcklkb0Fzc2V0QmFsYW5jZQkAzAgCCQCkAwEFGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQFA25pbAUDU0VQBAZ0b3RhbHMJALUJAgkBBXZhbHVlAQkAoggBCQEJa2V5VG90YWxzAAUDU0VQBBF0b3RhbHNUb3RhbEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnRvdGFscwURSWR4SW52VG90YWxBbW91bnQEFXRvdGFsc1JlbWFpbmluZ0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnRvdGFscwUVSWR4SW52UmVtYWluaW5nQW1vdW50BB10b3RhbHNDbGFpbWVkUHJpY2VBc3NldEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnRvdGFscwUdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQEG3RvdGFsc0NsYWltZWRJZG9Bc3NldEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnRvdGFscwUbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50BBd0b3RhbHNMYXN0Q2xhaW1lZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnRvdGFscwUXSWR4SW52TGFzdENsYWltZWRIZWlnaHQECW5ld1RvdGFscwkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgkApAMBBRF0b3RhbHNUb3RhbEFtb3VudAkAzAgCCQCkAwEJAGUCBRV0b3RhbHNSZW1haW5pbmdBbW91bnQFF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQDMCAIJAKQDAQUddG90YWxzQ2xhaW1lZFByaWNlQXNzZXRBbW91bnQJAMwIAgkApAMBBRt0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQJAMwIAgkApAMBBRd0b3RhbHNMYXN0Q2xhaW1lZEhlaWdodAUDbmlsBQNTRVAEF25ld1RvdGFsUmVtYWluaW5nQW1vdW50CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEXa2V5VG90YWxSZW1haW5pbmdBbW91bnQAAAAFF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudAEFDXVzZXJBZGRyZXNzNTgJAKQDAQUXaW52ZXN0b3JSZW1haW5pbmdBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF2tleVRvdGFsUmVtYWluaW5nQW1vdW50AAkApAMBBRduZXdUb3RhbFJlbWFpbmluZ0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5SW52ZXN0b3IBBQ11c2VyQWRkcmVzczU4BQtuZXdJbnZlc3RvcgkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5VG90YWxzAAUJbmV3VG90YWxzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIY2xhaW1Gb3IBDXVzZXJBZGRyZXNzNTgFA25pbAFpAQ1jbGFpbVJFQURPTkxZAhBjbGFpbWVkQXNzZXRJZDU4DXVzZXJBZGRyZXNzNTgEEGNsYWltUmVzdWx0VHVwbGUJAQ1pbnRlcm5hbENsYWltAwUQY2xhaW1lZEFzc2V0SWQ1OAkBEUBleHRyTmF0aXZlKDEwNjIpAQUNdXNlckFkZHJlc3M1OAkA2QQBAgAECnRvdGFsc0RpZmYIBRBjbGFpbVJlc3VsdFR1cGxlAl8xBAlvdXRBbW91bnQIBRBjbGFpbVJlc3VsdFR1cGxlAl8yBApvdXRBc3NldElkCAUQY2xhaW1SZXN1bHRUdXBsZQJfMwQPb3JpZ0ludmVzdEFycmF5CAUQY2xhaW1SZXN1bHRUdXBsZQJfNAQUbmV3Q2xhaW1QZXJpb2RIZWlnaHQIBRBjbGFpbVJlc3VsdFR1cGxlAl81BBVhdmFpbGFibGVUb0NsYWltQXJyYXkIBRBjbGFpbVJlc3VsdFR1cGxlAl82BBthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAJEDAgUVYXZhaWxhYmxlVG9DbGFpbUFycmF5AAAEGWF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW0JAJEDAgUVYXZhaWxhYmxlVG9DbGFpbUFycmF5AAEJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJXMlZCVkCQDMCAIFDXVzZXJBZGRyZXNzNTgJAMwIAgkApAMBBRthdmFpbGFibGVQcmljZUFtb3VudFRvQ2xhaW0JAMwIAgkApAMBBRlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltBQNuaWwFA1NFUAFpAQ9jbGFpbVYyUkVBRE9OTFkCEGNsYWltZWRBc3NldElkNTgNdXNlckFkZHJlc3M1OAQQY2xhaW1SZXN1bHRUdXBsZQkBDWludGVybmFsQ2xhaW0DBRBjbGFpbWVkQXNzZXRJZDU4CQERQGV4dHJOYXRpdmUoMTA2MikBBQ11c2VyQWRkcmVzczU4CQDZBAECAAQKdG90YWxzRGlmZggFEGNsYWltUmVzdWx0VHVwbGUCXzEECW91dEFtb3VudAgFEGNsYWltUmVzdWx0VHVwbGUCXzIECm91dEFzc2V0SWQIBRBjbGFpbVJlc3VsdFR1cGxlAl8zBA9vcmlnSW52ZXN0QXJyYXkIBRBjbGFpbVJlc3VsdFR1cGxlAl80BBRuZXdDbGFpbVBlcmlvZEhlaWdodAgFEGNsYWltUmVzdWx0VHVwbGUCXzUEFWF2YWlsYWJsZVRvQ2xhaW1BcnJheQgFEGNsYWltUmVzdWx0VHVwbGUCXzYEG2F2YWlsYWJsZVByaWNlQW1vdW50VG9DbGFpbQkAkQMCBRVhdmFpbGFibGVUb0NsYWltQXJyYXkAAAQZYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbQkAkQMCBRVhdmFpbGFibGVUb0NsYWltQXJyYXkAAQQIY2ZnQXJyYXkJAQ9yZWFkQ29uZmlnQXJyYXkABA5wcmljZUFzc2V0SWQ1OAkAkQMCBQhjZmdBcnJheQUSSWR4Q2ZnUHJpY2VBc3NldElkBBFwcmljZUFzc2V0QmFsYW5jZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5UHJpY2VBc3NldEJhbGFuY2UBBQ11c2VyQWRkcmVzczU4AAAEHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMJAGgCBRFwcmljZUFzc2V0QmFsYW5jZQBkBC5hdmFpbGFibGVJZG9BbW91bnRUb0NsYWltV2l0aFByaWNlQXNzZXRCYWxhbmNlCQBkAgUZYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbQUccHJpY2VBc3NldEJhbGFuY2VJZG9EZWNpbWFscwQNJHQwMzYzNzQzNjc4NgkBD2ludGVybmFsQ2xhaW1WMgQFDnByaWNlQXNzZXRJZDU4BQ11c2VyQWRkcmVzczU4BQlvdXRBbW91bnQJAJEDAgUKdG90YWxzRGlmZgUiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudAQZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbQgFDSR0MDM2Mzc0MzY3ODYCXzEEG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbQgFDSR0MDM2Mzc0MzY3ODYCXzIEGnBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltCAUNJHQwMzYzNzQzNjc4NgJfMwQZdG90YWxVc2VyQXZhaWxhYmxlVG9DbGFpbQgFDSR0MDM2Mzc0MzY3ODYCXzQEHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8IBQ0kdDAzNjM3NDM2Nzg2Al81BBpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwgFDSR0MDM2Mzc0MzY3ODYCXzYEE2VuZFBlcmlvZEJsb2Nrc0xlZnQIBQ0kdDAzNjM3NDM2Nzg2Al83BBR1cGRhdGVkQ3VycmVudFBlcmlvZAgFDSR0MDM2Mzc0MzY3ODYCXzgEC3BlcmlvZFN0YXJ0CAUNJHQwMzYzNzQzNjc4NgJfOQQJcGVyaW9kRW5kCAUNJHQwMzYzNzQzNjc4NgNfMTAEFmN1cnJlbnRQZXJpb2RFbmRIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVBlcmlvZEVuZEhlaWdodAEFFHVwZGF0ZWRDdXJyZW50UGVyaW9kAAAEGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJARdyZWFkSW52ZXN0b3JBcnJheU9yRmFpbAEFDXVzZXJBZGRyZXNzNTgFHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50BRFwcmljZUFzc2V0QmFsYW5jZQQMcmVzdWx0U3RyaW5nAwkAZgIFBmhlaWdodAUWY3VycmVudFBlcmlvZEVuZEhlaWdodAQMcGVyaW9kTGVuZ2h0CQEFdmFsdWUBCQCfCAEJAQ9rZXlQZXJpb2RMZW5ndGgABBN1c2VyUGVyaW9kQWxsb3dhbmNlCQEFdmFsdWUBCQCfCAEJARZrZXlVc2VyUGVyaW9kQWxsb3dhbmNlAQUOcHJpY2VBc3NldElkNTgEFHRvdGFsUGVyaW9kQWxsb3dhbmNlCQEFdmFsdWUBCQCfCAEJARdrZXlUb3RhbFBlcmlvZEFsbG93YW5jZQEFDnByaWNlQXNzZXRJZDU4CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUuYXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbVdpdGhQcmljZUFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFE3VzZXJQZXJpb2RBbGxvd2FuY2UJAMwIAgkApAMBBRR0b3RhbFBlcmlvZEFsbG93YW5jZQkAzAgCCQCkAwEFHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8JAMwIAgkApAMBBRpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbwkAzAgCCQCkAwEFDHBlcmlvZExlbmdodAkAzAgCCQCkAwEFGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkBQNuaWwFA1NFUAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFLmF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW1XaXRoUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBBRlwZXJpb2RNaW5BdmFpbGFibGVUb0NsYWltCQDMCAIJAKQDAQUbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQDMCAIJAKQDAQUcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwkAzAgCCQCkAwEFGmN1cnJlbnRVc2R0UHJpY2VBc3NldFJhdGlvCQDMCAIJAKQDAQUTZW5kUGVyaW9kQmxvY2tzTGVmdAkAzAgCCQCkAwEFGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkBQNuaWwFA1NFUAkAlAoCBQNuaWwFDHJlc3VsdFN0cmluZwECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleWfQ6JA=", "height": 2932668, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6wXwheUY3rpdrUDcVj4odsPa7cnjXsvPJCCmWXt3xo91 Next: GErWcMS4rUkmR8JXvMYfHgBSDNYMqgBPAKixYt9kNH1M Diff:
OldNewDifferences
392392 let cz = parseIntValue(cw[V])
393393 let cA = parseIntValue(cw[W])
394394 let cB = parseIntValue(cw[X])
395- let m = valueOrElse(getInteger(aD(bu)), 0)
396- let cC = parseIntValue(valueOrElse(getString(aF(bu)), "0"))
397- let cD = (((cy + m) + cC) * 100)
398- let cE = ((cy + cC) * 100)
399- let cF = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString((cA + cE)), toString(height)], c)
400- let cG = bo(bu, 0, cD, bn)
401- $Tuple4(cy, m, cC, ([StringEntry(ai(bu), cF), StringEntry(aF(bu), "0"), IntegerEntry(aD(bu), 0), ScriptTransfer(addressFromStringValue(bu), cD, fromBase58String(M))] :+ cG))
395+ let cC = {
396+ let j = getInteger(aD(bu))
397+ if ($isInstanceOf(j, "Int"))
398+ then {
399+ let cD = j
400+ $Tuple2(cD, [IntegerEntry(aD(bu), 0)])
401+ }
402+ else $Tuple2(0, nil)
403+ }
404+ let m = cC._1
405+ let cE = cC._2
406+ let cF = {
407+ let j = getString(aF(bu))
408+ if ($isInstanceOf(j, "String"))
409+ then {
410+ let cD = j
411+ $Tuple2(parseIntValue(cD), [StringEntry(aF(bu), "0")])
412+ }
413+ else $Tuple2(0, nil)
414+ }
415+ let cG = cF._1
416+ let cH = cF._2
417+ let cI = (((cy + m) + cG) * 100)
418+ let cJ = ((cy + cG) * 100)
419+ let cK = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString((cA + cJ)), toString(height)], c)
420+ let cL = if ((cJ != 0))
421+ then [StringEntry(ai(bu), cK)]
422+ else nil
423+ let cM = if ((cI != 0))
424+ then [ScriptTransfer(addressFromStringValue(bu), cI, fromBase58String(M))]
425+ else nil
426+ let cN = bo(bu, 0, cI, bn)
427+ $Tuple4(cy, m, cG, ((((cM :+ cL) :+ cJ) :+ cE) :+ cN))
402428 }
403429
404430
405431 @Callable(cs)
406432 func constructor (H,I,J,K,o,O,Q) = {
407433 let L = ((100 * 1000) * 1000)
408- let cH = (H + I)
434+ let cO = (H + I)
409435 if (isDefined(getString(ah())))
410436 then throw("already initialized")
411437 else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cs.caller)))
412438 then throw("not authorized")
413439 else if ((size(cs.payments) != 1))
414440 then throw("exactly 1 payment must be attached")
415- else if ((cH >= J))
441+ else if ((cO >= J))
416442 then throw("claimStart must be greater than idoEnd")
417443 else {
418- let cI = value(cs.payments[0])
419- let bs = value(cI.assetId)
420- let cJ = valueOrErrorMessage(assetInfo(bs), "fail to load ido asset info")
444+ let cP = value(cs.payments[0])
445+ let bs = value(cP.assetId)
446+ let cQ = valueOrErrorMessage(assetInfo(bs), "fail to load ido asset info")
421447 let M = toBase58String(bs)
422- let N = pow(10, 0, cJ.decimals, 0, 0, DOWN)
448+ let N = pow(10, 0, cQ.decimals, 0, 0, DOWN)
423449 let bt = fromBase58String(O)
424- let cK = valueOrErrorMessage(assetInfo(bt), "fail to load price asset info")
425- let P = pow(10, 0, cK.decimals, 0, 0, DOWN)
426- let cL = aO()
427- let cM = [0, 0, 0, 0]
428-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cI.amount)), aX(ak(), cL, cM, J, 0)]
450+ let cR = valueOrErrorMessage(assetInfo(bt), "fail to load price asset info")
451+ let P = pow(10, 0, cR.decimals, 0, 0, DOWN)
452+ let cS = aO()
453+ let cT = [0, 0, 0, 0]
454+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cP.amount)), aX(ak(), cS, cT, J, 0)]
429455 }
430456 }
431457
436462 let be = aL()
437463 let H = parseIntValue(be[v])
438464 let I = parseIntValue(be[w])
439- let cH = (H + I)
465+ let cO = (H + I)
440466 let J = parseIntValue(be[x])
441467 let K = parseIntValue(be[y])
442468 let o = parseIntValue(be[z])
447473 let O = be[D]
448474 let bt = fromBase58String(O)
449475 let P = parseIntValue(be[E])
450- let cN = parseIntValue(be[F])
476+ let cU = parseIntValue(be[F])
451477 let aj = toString(cs.caller)
452478 if ((H > height))
453479 then throw("ido has not been started yet")
454- else if ((height > cH))
480+ else if ((height > cO))
455481 then throw("ido has been already ended")
456482 else if ((size(cs.payments) != 1))
457483 then throw("exactly 1 payment is expected")
458484 else {
459- let cI = value(cs.payments[0])
460- let cO = value(cI.assetId)
461- let cP = cI.amount
462- if ((cO != bt))
463- then throw((("invalid payment asset id: " + toBase58String(cO)) + " is expected"))
485+ let cP = value(cs.payments[0])
486+ let cV = value(cP.assetId)
487+ let cW = cP.amount
488+ if ((cV != bt))
489+ then throw((("invalid payment asset id: " + toBase58String(cV)) + " is expected"))
464490 else {
465- let cQ = aP(aj)
466- let cL = aO()
467- let cR = (parseIntValue(cL[T]) + cP)
468- let cS = (cR * 100)
469- if ((cS > assetBalance(this, bs)))
491+ let cX = aP(aj)
492+ let cS = aO()
493+ let cY = (parseIntValue(cS[T]) + cW)
494+ let cZ = (cY * 100)
495+ if ((cZ > assetBalance(this, bs)))
470496 then throw("IDO asset has been - sold consider to use smaller payment")
471497 else {
472- let cM = [cP, cP, 0, 0]
473-[aX(ai(aj), cQ, cM, J, 0), aX(ak(), cL, cM, J, 0), bm(aj, cP, 0, cs.transactionId)]
498+ let cT = [cW, cW, 0, 0]
499+[aX(ai(aj), cX, cT, J, 0), aX(ak(), cS, cT, J, 0), bm(aj, cW, 0, cs.transactionId)]
474500 }
475501 }
476502 }
480506
481507 @Callable(cs)
482508 func claim (bq,bu) = {
483- let cT = toString(cs.caller)
484- if ((bu != cT))
509+ let da = toString(cs.caller)
510+ if ((bu != da))
485511 then throw("not authorized")
486512 else {
487513 let be = aL()
488514 let O = be[D]
489- let cU = bp(bq, cs.caller, cs.transactionId)
490- let cM = cU._1
491- let bH = cU._2
492- let cV = cU._3
493- let bv = cU._4
494- let bz = cU._5
495- let cW = cM[aV]
496- let cX = cM[aW]
515+ let db = bp(bq, cs.caller, cs.transactionId)
516+ let cT = db._1
517+ let bH = db._2
518+ let dc = db._3
519+ let bv = db._4
520+ let bz = db._5
521+ let dd = cT[aV]
522+ let de = cT[aW]
497523 let bb = valueOrElse(getInteger(aD(bu)), 0)
498524 let bf = value(assetInfo(fromBase58String(O))).decimals
499525 let bj = if ((bq == O))
500526 then {
501- let cY = bG(O, bu, bH, cM[aV])
502- let cb = cY._1
503- let bZ = cY._2
504- let ca = cY._3
505- let bI = cY._4
506- let cc = cY._5
507- let cn = cY._6
508- let co = cY._7
509- let bS = cY._8
510- let bT = cY._9
511- let bV = cY._10
527+ let df = bG(O, bu, bH, cT[aV])
528+ let cb = df._1
529+ let bZ = df._2
530+ let ca = df._3
531+ let bI = df._4
532+ let cc = df._5
533+ let cn = df._6
534+ let co = df._7
535+ let bS = df._8
536+ let bT = df._9
537+ let bV = df._10
512538 let bF = [if ((ca > 0))
513539 then true
514540 else f("unavailable to claim because user period allowance reached"), if ((bZ > 0))
526552 else f("Claim is disabled")]
527553 if ((bF == bF))
528554 then {
529- let cZ = (bZ - cb)
530- let da = (ca - cb)
555+ let dg = (bZ - cb)
556+ let dh = (ca - cb)
531557 let bj = if ((bb > cb))
532- then [ScriptTransfer(cs.caller, cb, cV), IntegerEntry(aD(bu), (bb - cb))]
558+ then [ScriptTransfer(cs.caller, cb, dc), IntegerEntry(aD(bu), (bb - cb))]
533559 else {
534- let db = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
535- if ((db == db))
560+ let di = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
561+ if ((di == di))
536562 then {
537- let dc = parseIntValue(db[3])
538- let dd = if ((dc == cb))
563+ let dj = parseIntValue(di[3])
564+ let dk = if ((dj == cb))
539565 then {
540566 let cx = parseIntValue(bv[T])
541567 let cy = parseIntValue(bv[U])
542568 let cz = parseIntValue(bv[V])
543569 let cA = parseIntValue(bv[W])
544570 let cB = parseIntValue(bv[X])
545- let de = [toString(cx), "0", toString(cz), toString(cA), toString(cB)]
546- let df = aO()
547- let dg = parseIntValue(df[T])
548- let dh = parseIntValue(df[U])
549- let di = parseIntValue(df[V])
550- let dj = parseIntValue(df[W])
551- let dk = parseIntValue(df[X])
552- let dl = (dh - cy)
553- let dm = [toString(dg), toString(dl), toString(di), toString(dj), toString(dk)]
554- let dn = (valueOrElse(getInteger(aG()), 0) + cy)
555-[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(dn)), aX(ai(bu), de, cM, bz, 0), aX(ak(), dm, cM, bz, 0)]
571+ let dl = [toString(cx), "0", toString(cz), toString(cA), toString(cB)]
572+ let dm = aO()
573+ let dn = parseIntValue(dm[T])
574+ let do = parseIntValue(dm[U])
575+ let dp = parseIntValue(dm[V])
576+ let dq = parseIntValue(dm[W])
577+ let dr = parseIntValue(dm[X])
578+ let ds = (do - cy)
579+ let dt = [toString(dn), toString(ds), toString(dp), toString(dq), toString(dr)]
580+ let du = (valueOrElse(getInteger(aG()), 0) + cy)
581+[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(du)), aX(ai(bu), dl, cT, bz, 0), aX(ak(), dt, cT, bz, 0)]
556582 }
557- else [aX(ai(bu), bv, cM, bz, 0), aX(ak(), aO(), cM, bz, 0)]
558- let do = ((bb + bH) - cb)
559- ([ScriptTransfer(cs.caller, cb, cV), IntegerEntry(aD(bu), do)] ++ dd)
583+ else [aX(ai(bu), bv, cT, bz, 0), aX(ak(), aO(), cT, bz, 0)]
584+ let dv = ((bb + bH) - cb)
585+ ([ScriptTransfer(cs.caller, cb, dc), IntegerEntry(aD(bu), dv)] ++ dk)
560586 }
561587 else throw("Strict value is not equal to itself.")
562588 }
563- $Tuple2(([IntegerEntry(ar(), bS), IntegerEntry(as(bS), bT), IntegerEntry(au(bS), bV), IntegerEntry(az(O, bS), cZ), IntegerEntry(aA(O, bS, bu), da), bo(bu, cb, cX, cs.transactionId)] ++ bj), unit)
589+ $Tuple2(([IntegerEntry(ar(), bS), IntegerEntry(as(bS), bT), IntegerEntry(au(bS), bV), IntegerEntry(az(O, bS), dg), IntegerEntry(aA(O, bS, bu), dh), bo(bu, cb, de, cs.transactionId)] ++ bj), unit)
564590 }
565591 else throw("Strict value is not equal to itself.")
566592 }
567593 else {
568- let dp = fraction(bb, e, pow(10, 0, bf, 0, 0, DOWN))
569- $Tuple2([ScriptTransfer(cs.caller, (bH + dp), cV), IntegerEntry(aD(bu), 0), aX(ai(bu), bv, cM, bz, bb), aX(ak(), aO(), cM, bz, bb), bo(bu, cW, (cX + dp), cs.transactionId)], unit)
594+ let dw = fraction(bb, e, pow(10, 0, bf, 0, 0, DOWN))
595+ $Tuple2([ScriptTransfer(cs.caller, (bH + dw), dc), IntegerEntry(aD(bu), 0), aX(ai(bu), bv, cT, bz, bb), aX(ak(), aO(), cT, bz, bb), bo(bu, dd, (de + dw), cs.transactionId)], unit)
570596 }
571597 bj
572598 }
577603 @Callable(cs)
578604 func cleanRemaingAmount (bu) = {
579605 let O = aL()[D]
580- let db = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
581- if ((db == db))
606+ let di = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
607+ if ((di == di))
582608 then {
583- let dc = parseIntValue(db[2])
584- let dq = if ((dc == 0))
609+ let dj = parseIntValue(di[2])
610+ let dx = if ((dj == 0))
585611 then true
586612 else f("user have unclaimed assets")
587- if ((dq == dq))
613+ if ((dx == dx))
588614 then {
589615 let cw = split(value(getString(ai(bu))), c)
590616 let cx = parseIntValue(cw[T])
592618 let cz = parseIntValue(cw[V])
593619 let cA = parseIntValue(cw[W])
594620 let cB = parseIntValue(cw[X])
595- let dr = if ((cy != 0))
621+ let dy = if ((cy != 0))
596622 then true
597623 else f("investorRemainingAmount already zero")
598- if ((dr == dr))
624+ if ((dy == dy))
599625 then {
600- let cF = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString(cA), toString(cB)], c)
601- let df = split(value(getString(ak())), c)
602- let dg = parseIntValue(df[T])
603- let dh = parseIntValue(df[U])
604- let di = parseIntValue(df[V])
605- let dj = parseIntValue(df[W])
606- let dk = parseIntValue(df[X])
607- let ds = makeString(["%d%d%d%d%d", toString(dg), toString((dh - cy)), toString(di), toString(dj), toString(dk)], c)
608- let dn = (valueOrElse(getInteger(aG()), 0) + cy)
609-[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(dn)), StringEntry(ai(bu), cF), StringEntry(ak(), ds)]
626+ let cK = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString(cA), toString(cB)], c)
627+ let dm = split(value(getString(ak())), c)
628+ let dn = parseIntValue(dm[T])
629+ let do = parseIntValue(dm[U])
630+ let dp = parseIntValue(dm[V])
631+ let dq = parseIntValue(dm[W])
632+ let dr = parseIntValue(dm[X])
633+ let dz = makeString(["%d%d%d%d%d", toString(dn), toString((do - cy)), toString(dp), toString(dq), toString(dr)], c)
634+ let du = (valueOrElse(getInteger(aG()), 0) + cy)
635+[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(du)), StringEntry(ai(bu), cK), StringEntry(ak(), dz)]
610636 }
611637 else throw("Strict value is not equal to itself.")
612638 }
624650
625651 @Callable(cs)
626652 func claimREADONLY (bq,bu) = {
627- let cU = bp(bq, addressFromStringValue(bu), fromBase58String(""))
628- let cM = cU._1
629- let bH = cU._2
630- let cV = cU._3
631- let bv = cU._4
632- let bz = cU._5
633- let dt = cU._6
634- let dc = dt[0]
635- let du = dt[1]
636- $Tuple2(nil, makeString(["%s%d%d", bu, toString(dc), toString(du)], c))
653+ let db = bp(bq, addressFromStringValue(bu), fromBase58String(""))
654+ let cT = db._1
655+ let bH = db._2
656+ let dc = db._3
657+ let bv = db._4
658+ let bz = db._5
659+ let dA = db._6
660+ let dj = dA[0]
661+ let dB = dA[1]
662+ $Tuple2(nil, makeString(["%s%d%d", bu, toString(dj), toString(dB)], c))
637663 }
638664
639665
640666
641667 @Callable(cs)
642668 func claimV2READONLY (bq,bu) = {
643- let cU = bp(bq, addressFromStringValue(bu), fromBase58String(""))
644- let cM = cU._1
645- let bH = cU._2
646- let cV = cU._3
647- let bv = cU._4
648- let bz = cU._5
649- let dt = cU._6
650- let dc = dt[0]
651- let du = dt[1]
669+ let db = bp(bq, addressFromStringValue(bu), fromBase58String(""))
670+ let cT = db._1
671+ let bH = db._2
672+ let dc = db._3
673+ let bv = db._4
674+ let bz = db._5
675+ let dA = db._6
676+ let dj = dA[0]
677+ let dB = dA[1]
652678 let be = aL()
653679 let O = be[D]
654680 let bb = valueOrElse(getInteger(aD(bu)), 0)
655- let dp = (bb * 100)
656- let dv = (du + dp)
657- let dw = bG(O, bu, bH, cM[aV])
658- let cb = dw._1
659- let bZ = dw._2
660- let ca = dw._3
661- let bI = dw._4
662- let cc = dw._5
663- let cn = dw._6
664- let co = dw._7
665- let bS = dw._8
666- let bT = dw._9
667- let bV = dw._10
668- let dx = valueOrElse(getInteger(au(bS)), 0)
669- let dy = (parseIntValue(aQ(bu)[V]) - bb)
670- let dz = if ((height > dx))
681+ let dw = (bb * 100)
682+ let dC = (dB + dw)
683+ let dD = bG(O, bu, bH, cT[aV])
684+ let cb = dD._1
685+ let bZ = dD._2
686+ let ca = dD._3
687+ let bI = dD._4
688+ let cc = dD._5
689+ let cn = dD._6
690+ let co = dD._7
691+ let bS = dD._8
692+ let bT = dD._9
693+ let bV = dD._10
694+ let dE = valueOrElse(getInteger(au(bS)), 0)
695+ let dF = (parseIntValue(aQ(bu)[V]) - bb)
696+ let dG = if ((height > dE))
671697 then {
672- let dA = value(getInteger(aq()))
673- let dB = value(getInteger(ay(O)))
674- let dC = value(getInteger(aw(O)))
675- makeString(["%d%d%d%d%d%d", toString(dv), toString(dB), toString(dC), toString(cc), toString(cn), toString(dA), toString(dy)], c)
698+ let dH = value(getInteger(aq()))
699+ let dI = value(getInteger(ay(O)))
700+ let dJ = value(getInteger(aw(O)))
701+ makeString(["%d%d%d%d%d%d", toString(dC), toString(dI), toString(dJ), toString(cc), toString(cn), toString(dH), toString(dF)], c)
676702 }
677- else makeString(["%d%d%d%d%d%d", toString(dv), toString(cb), toString(bZ), toString(cc), toString(cn), toString(co), toString(dy)], c)
678- $Tuple2(nil, dz)
703+ else makeString(["%d%d%d%d%d%d", toString(dC), toString(cb), toString(bZ), toString(cc), toString(cn), toString(co), toString(dF)], c)
704+ $Tuple2(nil, dG)
679705 }
680706
681707
682-@Verifier(dD)
683-func dE () = {
684- let dF = {
708+@Verifier(dK)
709+func dL () = {
710+ let dM = {
685711 let j = cp()
686712 if ($isInstanceOf(j, "ByteVector"))
687713 then {
689715 cu
690716 }
691717 else if ($isInstanceOf(j, "Unit"))
692- then dD.senderPublicKey
718+ then dK.senderPublicKey
693719 else throw("Match error")
694720 }
695- sigVerify(dD.bodyBytes, dD.proofs[0], dF)
721+ sigVerify(dK.bodyBytes, dK.proofs[0], dM)
696722 }
697723
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
146146 func aI () = "%s__managerVaultAddress"
147147
148148
149149 func aJ () = "%s__claimClosingHeight"
150150
151151
152152 let aK = valueOrElse(getInteger(this, aJ()), 0)
153153
154154 func aL () = split(a(ah()), c)
155155
156156
157157 func aM (aN) = split(valueOrElse(getString(aN), Y("0", "0", "0", "0", "0")), c)
158158
159159
160160 func aO () = aM(ak())
161161
162162
163163 func aP (aj) = aM(ai(aj))
164164
165165
166166 func aQ (aj) = split(a(ai(aj)), c)
167167
168168
169169 func aR () = {
170170 let j = getString(aI())
171171 if ($isInstanceOf(j, "String"))
172172 then {
173173 let aS = j
174174 addressFromStringValue(aS)
175175 }
176176 else this
177177 }
178178
179179
180180 let aT = 0
181181
182182 let aU = 1
183183
184184 let aV = 2
185185
186186 let aW = 3
187187
188188 func aX (b,aY,aZ,ba,bb) = {
189189 let Z = parseIntValue(aY[T])
190190 let aa = parseIntValue(aY[U])
191191 let ab = parseIntValue(aY[V])
192192 let ac = parseIntValue(aY[W])
193193 let ad = parseIntValue(aY[X])
194194 let bc = (Z + aZ[aT])
195195 let bd = (aa + aZ[aU])
196196 let be = aL()
197197 let O = be[D]
198198 let bf = value(assetInfo(fromBase58String(O))).decimals
199199 let bg = fraction(bb, e, pow(10, 0, bf, 0, 0, DOWN))
200200 let bh = ((ab + aZ[aV]) - bb)
201201 let bi = ((ac + aZ[aW]) + bg)
202202 let bj = if ((0 > bd))
203203 then {
204204 let bk = ((bc - bh) - bi)
205205 let bl = if ((0 > bk))
206206 then 0
207207 else bk
208208 StringEntry(b, ae(bc, bl, bh, bi, ba))
209209 }
210210 else StringEntry(b, ae(bc, bd, bh, bi, ba))
211211 bj
212212 }
213213
214214
215215 func bm (aj,m,ag,bn) = StringEntry(al("invest", aj, toBase58String(bn)), af(m, ag))
216216
217217
218218 func bo (aj,m,ag,bn) = StringEntry(al("claim", aj, toBase58String(bn)), af(m, ag))
219219
220220
221221 func bp (bq,aj,bn) = {
222222 let be = aL()
223223 let J = parseIntValue(be[x])
224224 let K = parseIntValue(be[y])
225225 let br = (J + K)
226226 let o = parseIntValue(be[z])
227227 let L = parseIntValue(be[A])
228228 let M = be[B]
229229 let bs = fromBase58String(M)
230230 let N = parseIntValue(be[C])
231231 let O = be[D]
232232 let bt = fromBase58String(O)
233233 let P = parseIntValue(be[E])
234234 let bu = toString(aj)
235235 let bv = aQ(bu)
236236 let bw = parseIntValue(bv[T])
237237 let bx = parseIntValue(bv[X])
238238 let by = if ((J >= bx))
239239 then J
240240 else bx
241241 let bz = if ((height > br))
242242 then br
243243 else if ((J > height))
244244 then J
245245 else height
246246 let bA = (bz - by)
247247 let bB = fraction(bw, bA, K)
248248 let bC = l(bB, P, o, L, N)
249249 let bD = (bq == O)
250250 let bE = valueOrElse(getBoolean(ao()), false)
251251 let bF = [if (!(if (bD)
252252 then bE
253253 else false))
254254 then true
255255 else throw("USDN claim is disabled")]
256256 if ((bF == bF))
257257 then if ((bq == O))
258258 then $Tuple6([0, -(bB), bB, 0], bB, bt, bv, bz, [bB, bC])
259259 else if ((bq == M))
260260 then $Tuple6([0, -(bB), 0, bC], bC, bs, bv, bz, [bB, bC])
261261 else throw(("unsupported assetId: " + bq))
262262 else throw("Strict value is not equal to itself.")
263263 }
264264
265265
266266 func bG (O,bu,bH,bI) = {
267267 let bJ = value(getInteger(aw(O)))
268268 let bK = value(getInteger(ay(O)))
269269 let bL = value(getInteger(aq()))
270270 let bM = valueOrElse(getInteger(ar()), 0)
271271 let bN = isDefined(getInteger(au(0)))
272272 let bO = if ((bM > 0))
273273 then {
274274 let bP = value(getInteger(as(bM)))
275275 let bQ = value(getInteger(au(bM)))
276276 let bR = if ((height > bQ))
277277 then {
278278 let bS = (bM + 1)
279279 let bT = if ((height > (bQ + bL)))
280280 then {
281281 let bU = ((height - bQ) % bL)
282282 if ((bU == 0))
283283 then ((height - bL) + 1)
284284 else (height - bU)
285285 }
286286 else (bQ + 1)
287287 let bV = ((bT + bL) - 1)
288288 $Tuple3(bS, bT, bV)
289289 }
290290 else $Tuple3(bM, bP, bQ)
291291 let bS = bR._1
292292 let bT = bR._2
293293 let bV = bR._3
294294 $Tuple3(bS, bT, bV)
295295 }
296296 else if (bN)
297297 then {
298298 let bW = value(getInteger(as(0)))
299299 let bX = value(getInteger(au(0)))
300300 let bY = if ((height > bX))
301301 then {
302302 let bS = (bM + 1)
303303 let bT = (bX + 1)
304304 let bV = ((bT + bL) - 1)
305305 $Tuple3(bS, bT, bV)
306306 }
307307 else $Tuple3(bM, bW, bX)
308308 let bS = bY._1
309309 let bT = bY._2
310310 let bV = bY._3
311311 $Tuple3(bS, bT, bV)
312312 }
313313 else $Tuple3(bM, valueOrElse(getInteger(as(bM)), height), valueOrElse(getInteger(au(bM)), ((height + bL) - 1)))
314314 let bS = bO._1
315315 let bT = bO._2
316316 let bV = bO._3
317317 let bZ = valueOrElse(getInteger(az(O, bS)), bJ)
318318 let ca = valueOrElse(getInteger(aA(O, bS, bu)), bK)
319319 let bb = valueOrElse(getInteger(aD(bu)), 0)
320320 let cb = min([(bH + bb), bZ, ca])
321321 let cc = value(getInteger(av()))
322322 let cd = e
323323 let ce = {
324324 let cf = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [cd, O], nil)
325325 if ($isInstanceOf(cf, "(Int, Int, Int)"))
326326 then cf
327327 else throw(($getType(cf) + " couldn't be cast to (Int, Int, Int)"))
328328 }
329329 if ((ce == ce))
330330 then {
331331 let cg = ce._3
332332 let ch = ce._2
333333 let ci = ce._1
334334 let cj = value(getString(aC()))
335335 let ck = {
336336 let cf = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cj, ci], nil)
337337 if ($isInstanceOf(cf, "(Int, Int)"))
338338 then cf
339339 else throw(($getType(cf) + " couldn't be cast to (Int, Int)"))
340340 }
341341 if ((ck == ck))
342342 then {
343343 let cl = ck._2
344344 let cm = ck._1
345345 let cn = fraction(cd, e, cm)
346346 let co = (bV - height)
347347 $Tuple10(cb, bZ, ca, bI, cc, cn, co, bS, bT, bV)
348348 }
349349 else throw("Strict value is not equal to itself.")
350350 }
351351 else throw("Strict value is not equal to itself.")
352352 }
353353
354354
355355 func cp () = {
356356 let cq = aR()
357357 let j = getString(cq, aH())
358358 if ($isInstanceOf(j, "String"))
359359 then {
360360 let aS = j
361361 fromBase58String(aS)
362362 }
363363 else if ($isInstanceOf(j, "Unit"))
364364 then unit
365365 else throw("Match error")
366366 }
367367
368368
369369 func cr (cs) = {
370370 let ct = throw("Permission denied")
371371 let j = cp()
372372 if ($isInstanceOf(j, "ByteVector"))
373373 then {
374374 let cu = j
375375 if ((cs.callerPublicKey == cu))
376376 then true
377377 else ct
378378 }
379379 else if ($isInstanceOf(j, "Unit"))
380380 then if ((cs.caller == this))
381381 then true
382382 else ct
383383 else throw("Match error")
384384 }
385385
386386
387387 func cv (bu,bn) = {
388388 let M = aL()[B]
389389 let cw = split(value(getString(ai(bu))), c)
390390 let cx = parseIntValue(cw[T])
391391 let cy = parseIntValue(cw[U])
392392 let cz = parseIntValue(cw[V])
393393 let cA = parseIntValue(cw[W])
394394 let cB = parseIntValue(cw[X])
395- let m = valueOrElse(getInteger(aD(bu)), 0)
396- let cC = parseIntValue(valueOrElse(getString(aF(bu)), "0"))
397- let cD = (((cy + m) + cC) * 100)
398- let cE = ((cy + cC) * 100)
399- let cF = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString((cA + cE)), toString(height)], c)
400- let cG = bo(bu, 0, cD, bn)
401- $Tuple4(cy, m, cC, ([StringEntry(ai(bu), cF), StringEntry(aF(bu), "0"), IntegerEntry(aD(bu), 0), ScriptTransfer(addressFromStringValue(bu), cD, fromBase58String(M))] :+ cG))
395+ let cC = {
396+ let j = getInteger(aD(bu))
397+ if ($isInstanceOf(j, "Int"))
398+ then {
399+ let cD = j
400+ $Tuple2(cD, [IntegerEntry(aD(bu), 0)])
401+ }
402+ else $Tuple2(0, nil)
403+ }
404+ let m = cC._1
405+ let cE = cC._2
406+ let cF = {
407+ let j = getString(aF(bu))
408+ if ($isInstanceOf(j, "String"))
409+ then {
410+ let cD = j
411+ $Tuple2(parseIntValue(cD), [StringEntry(aF(bu), "0")])
412+ }
413+ else $Tuple2(0, nil)
414+ }
415+ let cG = cF._1
416+ let cH = cF._2
417+ let cI = (((cy + m) + cG) * 100)
418+ let cJ = ((cy + cG) * 100)
419+ let cK = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString((cA + cJ)), toString(height)], c)
420+ let cL = if ((cJ != 0))
421+ then [StringEntry(ai(bu), cK)]
422+ else nil
423+ let cM = if ((cI != 0))
424+ then [ScriptTransfer(addressFromStringValue(bu), cI, fromBase58String(M))]
425+ else nil
426+ let cN = bo(bu, 0, cI, bn)
427+ $Tuple4(cy, m, cG, ((((cM :+ cL) :+ cJ) :+ cE) :+ cN))
402428 }
403429
404430
405431 @Callable(cs)
406432 func constructor (H,I,J,K,o,O,Q) = {
407433 let L = ((100 * 1000) * 1000)
408- let cH = (H + I)
434+ let cO = (H + I)
409435 if (isDefined(getString(ah())))
410436 then throw("already initialized")
411437 else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cs.caller)))
412438 then throw("not authorized")
413439 else if ((size(cs.payments) != 1))
414440 then throw("exactly 1 payment must be attached")
415- else if ((cH >= J))
441+ else if ((cO >= J))
416442 then throw("claimStart must be greater than idoEnd")
417443 else {
418- let cI = value(cs.payments[0])
419- let bs = value(cI.assetId)
420- let cJ = valueOrErrorMessage(assetInfo(bs), "fail to load ido asset info")
444+ let cP = value(cs.payments[0])
445+ let bs = value(cP.assetId)
446+ let cQ = valueOrErrorMessage(assetInfo(bs), "fail to load ido asset info")
421447 let M = toBase58String(bs)
422- let N = pow(10, 0, cJ.decimals, 0, 0, DOWN)
448+ let N = pow(10, 0, cQ.decimals, 0, 0, DOWN)
423449 let bt = fromBase58String(O)
424- let cK = valueOrErrorMessage(assetInfo(bt), "fail to load price asset info")
425- let P = pow(10, 0, cK.decimals, 0, 0, DOWN)
426- let cL = aO()
427- let cM = [0, 0, 0, 0]
428-[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cI.amount)), aX(ak(), cL, cM, J, 0)]
450+ let cR = valueOrErrorMessage(assetInfo(bt), "fail to load price asset info")
451+ let P = pow(10, 0, cR.decimals, 0, 0, DOWN)
452+ let cS = aO()
453+ let cT = [0, 0, 0, 0]
454+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cP.amount)), aX(ak(), cS, cT, J, 0)]
429455 }
430456 }
431457
432458
433459
434460 @Callable(cs)
435461 func invest () = {
436462 let be = aL()
437463 let H = parseIntValue(be[v])
438464 let I = parseIntValue(be[w])
439- let cH = (H + I)
465+ let cO = (H + I)
440466 let J = parseIntValue(be[x])
441467 let K = parseIntValue(be[y])
442468 let o = parseIntValue(be[z])
443469 let L = parseIntValue(be[A])
444470 let M = be[B]
445471 let bs = fromBase58String(M)
446472 let N = parseIntValue(be[C])
447473 let O = be[D]
448474 let bt = fromBase58String(O)
449475 let P = parseIntValue(be[E])
450- let cN = parseIntValue(be[F])
476+ let cU = parseIntValue(be[F])
451477 let aj = toString(cs.caller)
452478 if ((H > height))
453479 then throw("ido has not been started yet")
454- else if ((height > cH))
480+ else if ((height > cO))
455481 then throw("ido has been already ended")
456482 else if ((size(cs.payments) != 1))
457483 then throw("exactly 1 payment is expected")
458484 else {
459- let cI = value(cs.payments[0])
460- let cO = value(cI.assetId)
461- let cP = cI.amount
462- if ((cO != bt))
463- then throw((("invalid payment asset id: " + toBase58String(cO)) + " is expected"))
485+ let cP = value(cs.payments[0])
486+ let cV = value(cP.assetId)
487+ let cW = cP.amount
488+ if ((cV != bt))
489+ then throw((("invalid payment asset id: " + toBase58String(cV)) + " is expected"))
464490 else {
465- let cQ = aP(aj)
466- let cL = aO()
467- let cR = (parseIntValue(cL[T]) + cP)
468- let cS = (cR * 100)
469- if ((cS > assetBalance(this, bs)))
491+ let cX = aP(aj)
492+ let cS = aO()
493+ let cY = (parseIntValue(cS[T]) + cW)
494+ let cZ = (cY * 100)
495+ if ((cZ > assetBalance(this, bs)))
470496 then throw("IDO asset has been - sold consider to use smaller payment")
471497 else {
472- let cM = [cP, cP, 0, 0]
473-[aX(ai(aj), cQ, cM, J, 0), aX(ak(), cL, cM, J, 0), bm(aj, cP, 0, cs.transactionId)]
498+ let cT = [cW, cW, 0, 0]
499+[aX(ai(aj), cX, cT, J, 0), aX(ak(), cS, cT, J, 0), bm(aj, cW, 0, cs.transactionId)]
474500 }
475501 }
476502 }
477503 }
478504
479505
480506
481507 @Callable(cs)
482508 func claim (bq,bu) = {
483- let cT = toString(cs.caller)
484- if ((bu != cT))
509+ let da = toString(cs.caller)
510+ if ((bu != da))
485511 then throw("not authorized")
486512 else {
487513 let be = aL()
488514 let O = be[D]
489- let cU = bp(bq, cs.caller, cs.transactionId)
490- let cM = cU._1
491- let bH = cU._2
492- let cV = cU._3
493- let bv = cU._4
494- let bz = cU._5
495- let cW = cM[aV]
496- let cX = cM[aW]
515+ let db = bp(bq, cs.caller, cs.transactionId)
516+ let cT = db._1
517+ let bH = db._2
518+ let dc = db._3
519+ let bv = db._4
520+ let bz = db._5
521+ let dd = cT[aV]
522+ let de = cT[aW]
497523 let bb = valueOrElse(getInteger(aD(bu)), 0)
498524 let bf = value(assetInfo(fromBase58String(O))).decimals
499525 let bj = if ((bq == O))
500526 then {
501- let cY = bG(O, bu, bH, cM[aV])
502- let cb = cY._1
503- let bZ = cY._2
504- let ca = cY._3
505- let bI = cY._4
506- let cc = cY._5
507- let cn = cY._6
508- let co = cY._7
509- let bS = cY._8
510- let bT = cY._9
511- let bV = cY._10
527+ let df = bG(O, bu, bH, cT[aV])
528+ let cb = df._1
529+ let bZ = df._2
530+ let ca = df._3
531+ let bI = df._4
532+ let cc = df._5
533+ let cn = df._6
534+ let co = df._7
535+ let bS = df._8
536+ let bT = df._9
537+ let bV = df._10
512538 let bF = [if ((ca > 0))
513539 then true
514540 else f("unavailable to claim because user period allowance reached"), if ((bZ > 0))
515541 then true
516542 else f("unavailable to claim because total period allowance reached"), if ((cb > 0))
517543 then true
518544 else f("nothing to claim"), if ((cc > cn))
519545 then true
520546 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio"), if (if (if ((bq != O))
521547 then true
522548 else (aK == 0))
523549 then true
524550 else (aK > height))
525551 then true
526552 else f("Claim is disabled")]
527553 if ((bF == bF))
528554 then {
529- let cZ = (bZ - cb)
530- let da = (ca - cb)
555+ let dg = (bZ - cb)
556+ let dh = (ca - cb)
531557 let bj = if ((bb > cb))
532- then [ScriptTransfer(cs.caller, cb, cV), IntegerEntry(aD(bu), (bb - cb))]
558+ then [ScriptTransfer(cs.caller, cb, dc), IntegerEntry(aD(bu), (bb - cb))]
533559 else {
534- let db = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
535- if ((db == db))
560+ let di = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
561+ if ((di == di))
536562 then {
537- let dc = parseIntValue(db[3])
538- let dd = if ((dc == cb))
563+ let dj = parseIntValue(di[3])
564+ let dk = if ((dj == cb))
539565 then {
540566 let cx = parseIntValue(bv[T])
541567 let cy = parseIntValue(bv[U])
542568 let cz = parseIntValue(bv[V])
543569 let cA = parseIntValue(bv[W])
544570 let cB = parseIntValue(bv[X])
545- let de = [toString(cx), "0", toString(cz), toString(cA), toString(cB)]
546- let df = aO()
547- let dg = parseIntValue(df[T])
548- let dh = parseIntValue(df[U])
549- let di = parseIntValue(df[V])
550- let dj = parseIntValue(df[W])
551- let dk = parseIntValue(df[X])
552- let dl = (dh - cy)
553- let dm = [toString(dg), toString(dl), toString(di), toString(dj), toString(dk)]
554- let dn = (valueOrElse(getInteger(aG()), 0) + cy)
555-[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(dn)), aX(ai(bu), de, cM, bz, 0), aX(ak(), dm, cM, bz, 0)]
571+ let dl = [toString(cx), "0", toString(cz), toString(cA), toString(cB)]
572+ let dm = aO()
573+ let dn = parseIntValue(dm[T])
574+ let do = parseIntValue(dm[U])
575+ let dp = parseIntValue(dm[V])
576+ let dq = parseIntValue(dm[W])
577+ let dr = parseIntValue(dm[X])
578+ let ds = (do - cy)
579+ let dt = [toString(dn), toString(ds), toString(dp), toString(dq), toString(dr)]
580+ let du = (valueOrElse(getInteger(aG()), 0) + cy)
581+[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(du)), aX(ai(bu), dl, cT, bz, 0), aX(ak(), dt, cT, bz, 0)]
556582 }
557- else [aX(ai(bu), bv, cM, bz, 0), aX(ak(), aO(), cM, bz, 0)]
558- let do = ((bb + bH) - cb)
559- ([ScriptTransfer(cs.caller, cb, cV), IntegerEntry(aD(bu), do)] ++ dd)
583+ else [aX(ai(bu), bv, cT, bz, 0), aX(ak(), aO(), cT, bz, 0)]
584+ let dv = ((bb + bH) - cb)
585+ ([ScriptTransfer(cs.caller, cb, dc), IntegerEntry(aD(bu), dv)] ++ dk)
560586 }
561587 else throw("Strict value is not equal to itself.")
562588 }
563- $Tuple2(([IntegerEntry(ar(), bS), IntegerEntry(as(bS), bT), IntegerEntry(au(bS), bV), IntegerEntry(az(O, bS), cZ), IntegerEntry(aA(O, bS, bu), da), bo(bu, cb, cX, cs.transactionId)] ++ bj), unit)
589+ $Tuple2(([IntegerEntry(ar(), bS), IntegerEntry(as(bS), bT), IntegerEntry(au(bS), bV), IntegerEntry(az(O, bS), dg), IntegerEntry(aA(O, bS, bu), dh), bo(bu, cb, de, cs.transactionId)] ++ bj), unit)
564590 }
565591 else throw("Strict value is not equal to itself.")
566592 }
567593 else {
568- let dp = fraction(bb, e, pow(10, 0, bf, 0, 0, DOWN))
569- $Tuple2([ScriptTransfer(cs.caller, (bH + dp), cV), IntegerEntry(aD(bu), 0), aX(ai(bu), bv, cM, bz, bb), aX(ak(), aO(), cM, bz, bb), bo(bu, cW, (cX + dp), cs.transactionId)], unit)
594+ let dw = fraction(bb, e, pow(10, 0, bf, 0, 0, DOWN))
595+ $Tuple2([ScriptTransfer(cs.caller, (bH + dw), dc), IntegerEntry(aD(bu), 0), aX(ai(bu), bv, cT, bz, bb), aX(ak(), aO(), cT, bz, bb), bo(bu, dd, (de + dw), cs.transactionId)], unit)
570596 }
571597 bj
572598 }
573599 }
574600
575601
576602
577603 @Callable(cs)
578604 func cleanRemaingAmount (bu) = {
579605 let O = aL()[D]
580- let db = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
581- if ((db == db))
606+ let di = split(h(invoke(this, "claimREADONLY", [O, bu], nil)), c)
607+ if ((di == di))
582608 then {
583- let dc = parseIntValue(db[2])
584- let dq = if ((dc == 0))
609+ let dj = parseIntValue(di[2])
610+ let dx = if ((dj == 0))
585611 then true
586612 else f("user have unclaimed assets")
587- if ((dq == dq))
613+ if ((dx == dx))
588614 then {
589615 let cw = split(value(getString(ai(bu))), c)
590616 let cx = parseIntValue(cw[T])
591617 let cy = parseIntValue(cw[U])
592618 let cz = parseIntValue(cw[V])
593619 let cA = parseIntValue(cw[W])
594620 let cB = parseIntValue(cw[X])
595- let dr = if ((cy != 0))
621+ let dy = if ((cy != 0))
596622 then true
597623 else f("investorRemainingAmount already zero")
598- if ((dr == dr))
624+ if ((dy == dy))
599625 then {
600- let cF = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString(cA), toString(cB)], c)
601- let df = split(value(getString(ak())), c)
602- let dg = parseIntValue(df[T])
603- let dh = parseIntValue(df[U])
604- let di = parseIntValue(df[V])
605- let dj = parseIntValue(df[W])
606- let dk = parseIntValue(df[X])
607- let ds = makeString(["%d%d%d%d%d", toString(dg), toString((dh - cy)), toString(di), toString(dj), toString(dk)], c)
608- let dn = (valueOrElse(getInteger(aG()), 0) + cy)
609-[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(dn)), StringEntry(ai(bu), cF), StringEntry(ak(), ds)]
626+ let cK = makeString(["%d%d%d%d%d", toString(cx), "0", toString(cz), toString(cA), toString(cB)], c)
627+ let dm = split(value(getString(ak())), c)
628+ let dn = parseIntValue(dm[T])
629+ let do = parseIntValue(dm[U])
630+ let dp = parseIntValue(dm[V])
631+ let dq = parseIntValue(dm[W])
632+ let dr = parseIntValue(dm[X])
633+ let dz = makeString(["%d%d%d%d%d", toString(dn), toString((do - cy)), toString(dp), toString(dq), toString(dr)], c)
634+ let du = (valueOrElse(getInteger(aG()), 0) + cy)
635+[StringEntry(aF(bu), toString(cy)), StringEntry(aG(), toString(du)), StringEntry(ai(bu), cK), StringEntry(ak(), dz)]
610636 }
611637 else throw("Strict value is not equal to itself.")
612638 }
613639 else throw("Strict value is not equal to itself.")
614640 }
615641 else throw("Strict value is not equal to itself.")
616642 }
617643
618644
619645
620646 @Callable(cs)
621647 func claimFor (bu) = nil
622648
623649
624650
625651 @Callable(cs)
626652 func claimREADONLY (bq,bu) = {
627- let cU = bp(bq, addressFromStringValue(bu), fromBase58String(""))
628- let cM = cU._1
629- let bH = cU._2
630- let cV = cU._3
631- let bv = cU._4
632- let bz = cU._5
633- let dt = cU._6
634- let dc = dt[0]
635- let du = dt[1]
636- $Tuple2(nil, makeString(["%s%d%d", bu, toString(dc), toString(du)], c))
653+ let db = bp(bq, addressFromStringValue(bu), fromBase58String(""))
654+ let cT = db._1
655+ let bH = db._2
656+ let dc = db._3
657+ let bv = db._4
658+ let bz = db._5
659+ let dA = db._6
660+ let dj = dA[0]
661+ let dB = dA[1]
662+ $Tuple2(nil, makeString(["%s%d%d", bu, toString(dj), toString(dB)], c))
637663 }
638664
639665
640666
641667 @Callable(cs)
642668 func claimV2READONLY (bq,bu) = {
643- let cU = bp(bq, addressFromStringValue(bu), fromBase58String(""))
644- let cM = cU._1
645- let bH = cU._2
646- let cV = cU._3
647- let bv = cU._4
648- let bz = cU._5
649- let dt = cU._6
650- let dc = dt[0]
651- let du = dt[1]
669+ let db = bp(bq, addressFromStringValue(bu), fromBase58String(""))
670+ let cT = db._1
671+ let bH = db._2
672+ let dc = db._3
673+ let bv = db._4
674+ let bz = db._5
675+ let dA = db._6
676+ let dj = dA[0]
677+ let dB = dA[1]
652678 let be = aL()
653679 let O = be[D]
654680 let bb = valueOrElse(getInteger(aD(bu)), 0)
655- let dp = (bb * 100)
656- let dv = (du + dp)
657- let dw = bG(O, bu, bH, cM[aV])
658- let cb = dw._1
659- let bZ = dw._2
660- let ca = dw._3
661- let bI = dw._4
662- let cc = dw._5
663- let cn = dw._6
664- let co = dw._7
665- let bS = dw._8
666- let bT = dw._9
667- let bV = dw._10
668- let dx = valueOrElse(getInteger(au(bS)), 0)
669- let dy = (parseIntValue(aQ(bu)[V]) - bb)
670- let dz = if ((height > dx))
681+ let dw = (bb * 100)
682+ let dC = (dB + dw)
683+ let dD = bG(O, bu, bH, cT[aV])
684+ let cb = dD._1
685+ let bZ = dD._2
686+ let ca = dD._3
687+ let bI = dD._4
688+ let cc = dD._5
689+ let cn = dD._6
690+ let co = dD._7
691+ let bS = dD._8
692+ let bT = dD._9
693+ let bV = dD._10
694+ let dE = valueOrElse(getInteger(au(bS)), 0)
695+ let dF = (parseIntValue(aQ(bu)[V]) - bb)
696+ let dG = if ((height > dE))
671697 then {
672- let dA = value(getInteger(aq()))
673- let dB = value(getInteger(ay(O)))
674- let dC = value(getInteger(aw(O)))
675- makeString(["%d%d%d%d%d%d", toString(dv), toString(dB), toString(dC), toString(cc), toString(cn), toString(dA), toString(dy)], c)
698+ let dH = value(getInteger(aq()))
699+ let dI = value(getInteger(ay(O)))
700+ let dJ = value(getInteger(aw(O)))
701+ makeString(["%d%d%d%d%d%d", toString(dC), toString(dI), toString(dJ), toString(cc), toString(cn), toString(dH), toString(dF)], c)
676702 }
677- else makeString(["%d%d%d%d%d%d", toString(dv), toString(cb), toString(bZ), toString(cc), toString(cn), toString(co), toString(dy)], c)
678- $Tuple2(nil, dz)
703+ else makeString(["%d%d%d%d%d%d", toString(dC), toString(cb), toString(bZ), toString(cc), toString(cn), toString(co), toString(dF)], c)
704+ $Tuple2(nil, dG)
679705 }
680706
681707
682-@Verifier(dD)
683-func dE () = {
684- let dF = {
708+@Verifier(dK)
709+func dL () = {
710+ let dM = {
685711 let j = cp()
686712 if ($isInstanceOf(j, "ByteVector"))
687713 then {
688714 let cu = j
689715 cu
690716 }
691717 else if ($isInstanceOf(j, "Unit"))
692- then dD.senderPublicKey
718+ then dK.senderPublicKey
693719 else throw("Match error")
694720 }
695- sigVerify(dD.bodyBytes, dD.proofs[0], dF)
721+ sigVerify(dK.bodyBytes, dK.proofs[0], dM)
696722 }
697723

github/deemru/w8io/3ef1775 
295.67 ms