tx · 6HvfrK4zKzbeDbUs2YWW3UUbLkNvk119UBkwhsfdi6HM

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.03500000 Waves

2023.06.08 22:51 [2614133] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "6HvfrK4zKzbeDbUs2YWW3UUbLkNvk119UBkwhsfdi6HM", "fee": 3500000, "feeAssetId": null, "timestamp": 1686253956042, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "2NLicY2sJboTjv1cpHtnvZjHPWXojHyMxWGmY3kC76bafR4K7BhVQBBGzm2WHRj7QFayjzkUAjz3Hc9ADtARHxZt" ], "script": "base64:BgI7CAISBAoCCBgSAwoBCBIECgIRERIECgIRERIDCgEREgQKAgEBEgQKAggIEgUKAwgICBIDCgEREgMKAQhKAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDcAgK3iBAAFTVVMVDgAgMLXLwAGTVVMVDEwAIDIr6AlAApMQU5EUFJFRklYAgRMQU5EAAZOVU1SRVMABgAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAMACUVTQlVZQ09FRgAEAAhyZXNUeXBlcwkAzAgCAgNPaWwJAMwIAgIDT3JlCQDMCAICBFdvb2QJAMwIAgIEU2FuZAkAzAgCAgRDbGF5CQDMCAICB09yZ2FuaWMFA25pbAAIbWF0VHlwZXMJAMwIAgIERnVlbAkAzAgCAgVNZXRhbAkAzAgCAgVQbGFuawkAzAgCAgVHbGFzcwkAzAgCAgdQbGFzdGljCQDMCAICB1Byb3RlaW4FA25pbAAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAhIxXzFfMV8yXzJfNV8xXzEwXzAJAMwIAgITMl8yXzJfNF80XzEwXzFfMTBfMAkAzAgCAhMzXzNfM182XzZfMTVfMV8xMF8wCQDMCAICEzJfNV81XzJfN181XzJfMTAwXzEJAMwIAgIXNF8xMF8xMF80XzE0XzEwXzJfMTAwXzEJAMwIAgIXNl8xNV8xNV82XzIxXzE1XzJfMTAwXzEJAMwIAgISMV8xXzFfMV8xXzhfMV8xMF8yCQDMCAICEzJfMl8yXzJfMl8xNl8xXzEwXzIJAMwIAgITM18zXzNfM18zXzI0XzFfMTBfMgkAzAgCAhM5XzlfMV81XzVfMV81XzEwMF8zCQDMCAICFzE4XzE4XzJfMTBfMTBfMl81XzEwMF8zCQDMCAICFzI3XzI3XzNfMTVfMTVfM181XzEwMF8zCQDMCAICEjJfMl8xXzJfMl8yXzFfMTBfNAkAzAgCAhI0XzRfMl80XzRfNF8xXzEwXzQJAMwIAgISNl82XzNfNl82XzZfMV8xMF80BQNuaWwAEXJlY2lwZUlkeFBhY2tzaXplAAcAEnJlY2lwZUlkeENvbnRpbmVudAAIAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkAQ5rZXlPcmRlckJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKbGFuZE9yZGVyXwULbGFuZEFzc2V0SWQBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUKAQZhZGRNYXQCAmFjAWoJAGQCBQJhYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUBagoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmFkZE1hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgATRkFDVE9SWU1BWFdBUkVIT1VTRQCAyK+gJQAOU0VMTE1VTFRJUExJRVIAyAEADUJVWU1VTFRJUExJRVIArAIACkFVQ1RJT05GRUUAkE4ADk1JTlNIT1BQQVlNRU5UAKCNBgEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAglmYWN0b3J5SWQHcmVzVHlwZQkArAICCQCsAgIJAKwCAgIbZmFjdG9yeVdoQnlDb250aW5lbnRBbmRSZXNfBQlmYWN0b3J5SWQCAV8JAKQDAQUHcmVzVHlwZQAJb3JkSWR4UmVzAAAACW9yZElkeE1hdAABAApvcmRJZHhQcm9kAAIBCGdldE9yZGVyAQZvcmRLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZvcmRLZXkCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgIBOgkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeFJlcwIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQlvcmRJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQlvcmRJZHhNYXQCFzBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwCQDMCAIJAJEDAgUBcAUKb3JkSWR4UHJvZAUDbmlsAQh0b1ZvbHVtZQMGYW1vdW50B3BrZ1NpemUJaXNQcm9kdWN0AwUJaXNQcm9kdWN0BARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgFBmFtb3VudAEMc2VsbEludGVybmFsBAVsb2NJZAdyZXNUeXBlBmFtb3VudAhtaW5QcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHcmVzVHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCcjADCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UAAAMJAGYCCQBkAgUCdzAFBmFtb3VudAUTRkFDVE9SWU1BWFdBUkVIT1VTRQkAZQIFE0ZBQ1RPUllNQVhXQVJFSE9VU0UFAncwBQZhbW91bnQEDHVzZHRSZWNlaXZlZAkAZAIJAGsDBQJyMAkAZQIJAGgCBQ5TRUxMTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGQCCQBoAgBkBQJ3MAkAaAIAMgUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMJAGUCBQZhbW91bnQFAnIwBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQFbWluOTkJAGUCBQhtaW5QcmljZQkAaQIFCG1pblByaWNlAGQDCQBmAgkAaAIFBW1pbjk5BQZhbW91bnQJAGgCBQx1c2R0UmVjZWl2ZWQFBU1VTFQ4CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUMdXNkdFJlY2VpdmVkAgMgLyAJAKQDAQUGYW1vdW50Ag4gPCBtaW5QcmljZSA9IAkApAMBBQhtaW5QcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIcmVzVHlwZXMFB3Jlc1R5cGUCASkJAJQKAgkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBkAgUCdzAFBmFtb3VudAUMdXNkdFJlY2VpdmVkAQtidXlJbnRlcm5hbAQFbG9jSWQHbWF0VHlwZQZhbW91bnQIbWF4UHJpY2UEBXdoS2V5CQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAgUFbG9jSWQFB21hdFR5cGUEAncwCQELdmFsdWVPckVsc2UCCQCfCAEFBXdoS2V5AAAEAm0xAwkAZgIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFCQCXAwEJAMwIAgUGYW1vdW50CQDMCAIJAGUCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQUDbmlsAAAEAm0wCQCXAwEJAMwIAgUCdzAJAMwIAgkAZQIFBmFtb3VudAUCbTEFA25pbAQBbQkAZAIFAm0wBQJtMQQJdXNkdFNwZW50CQBkAgkAawMFAm0wCQBlAgkAaAIFDUJVWU1VTFRJUExJRVIFEFJFU09VUkNFUFJJQ0VNSU4JAGsDCQBlAgkAaAIAZAUCdzAJAGgCADIFAm0wBRBSRVNPVVJDRVBSSUNFTUlOBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQZNVUxUMTAJAGsDBQJtMQkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgEBm1heDEwMQkAZAIFCG1heFByaWNlCQBpAgUIbWF4UHJpY2UAZAMJAGYCCQBoAgUJdXNkdFNwZW50BQVNVUxUOAkAaAIFBm1heDEwMQUBbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPQWN0dWFsIHByaWNlID0gCQCkAwEFCXVzZHRTcGVudAIDIC8gCQCkAwEFAW0CDiA+IG1heFByaWNlID0gCQCkAwEFCG1heFByaWNlAgMsICgFBWxvY0lkAgIsIAkAkQMCBQhtYXRUeXBlcwUHbWF0VHlwZQIBKQkAlQoDCQEMSW50ZWdlckVudHJ5AgUFd2hLZXkJAGUCBQJ3MAUBbQUJdXNkdFNwZW50BQFtAQtnZXRCYWNrcGFjawEFYnBLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBDGNoZWNrQmxvY2tlZAADCQELdmFsdWVPckVsc2UCCQCbCAIFD3N0YWtpbmdDb250cmFjdAkBCmtleUJsb2NrZWQABwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UFBHVuaXQBCXNldENvbW1vbgIDYWNjBGl0ZW0EAWoIBQNhY2MCXzEEBmlzUHJvZAgFA2FjYwJfOAQHcGtnU2l6ZQMFBmlzUHJvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQFqAgFfBRFyZWNpcGVJZHhQYWNrc2l6ZQAABAlpdGVtUGFydHMJALUJAgUEaXRlbQIBQAMJAQIhPQIJAJADAQUJaXRlbVBhcnRzAAIJAAIBAi5JbmNvcnJlY3Qgb3JkZXIgZm9ybWF0LCBzaG91bGQgYmUgYW1vdW50QHByaWNlBAhuZXdPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwAABAhuZXdPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwABBAluZXdPcmRVc2QJAGsDBQhuZXdPcmRBbQUIbmV3T3JkUHIFBU1VTFQ4BAluZXdPcmRWb2wJAQh0b1ZvbHVtZQMFCG5ld09yZEFtBQdwa2dTaXplBQZpc1Byb2QEBndoSW5pdAMJAGYCCQCQAwEIBQNhY2MCXzYFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl82BQFqAAAEC2N1ck9yZFBhcnRzCQC1CQIDCQBmAgkAkAMBCAUDYWNjAl83BQFqCQCRAwIIBQNhY2MCXzcFAWoCAzBAMAIBQAQIY3VyT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJPcmRQYXJ0cwAABAhjdXJPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ck9yZFBhcnRzAAEDAwkAZgIAAAUIY3VyT3JkUHIGCQBmAgAABQhuZXdPcmRQcgkAAgECF1ByaWNlIGNhbid0IGJlIG5lZ2F0aXZlBAljdXJPcmRVc2QJAGsDBQhjdXJPcmRBbQUIY3VyT3JkUHIFBU1VTFQ4BAljdXJPcmRWb2wJAQh0b1ZvbHVtZQMFCGN1ck9yZEFtBQdwa2dTaXplBQZpc1Byb2QDCQAAAgUIbmV3T3JkQW0AAAMJAGYCBQhjdXJPcmRBbQAACQCaCggJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBBQZ3aEluaXQIBQNhY2MCXzMIBQNhY2MCXzQJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkAmgoICQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUIY3VyT3JkQW0IBQNhY2MCXzMIBQNhY2MCXzQIBQNhY2MCXzUIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAMJAGYCBQhuZXdPcmRBbQAAAwkAZgIAAAUIY3VyT3JkQW0JAJoKCAkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCQBkAggFA2FjYwJfMwUJbmV3T3JkVm9sCAUDYWNjAl80CQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAJoKCAkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEFBndoSW5pdAkAZAIIBQNhY2MCXzMFCW5ld09yZFZvbAgFA2FjYwJfNAkAZQIJAGQCCAUDYWNjAl81BQluZXdPcmRVc2QFCWN1ck9yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kAwkAZgIAAAUIY3VyT3JkQW0EBmFtRGlmZgkAZQIFCGN1ck9yZEFtBQhuZXdPcmRBbQMJAGYCAAAJAGUCBQZ3aEluaXQFBmFtRGlmZgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBBQZhbURpZmYCGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAmgoICQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUGYW1EaWZmCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QDCQBmAgAACQBkAgUGd2hJbml0BQhuZXdPcmRBbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFCG5ld09yZEFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQZ3aEluaXQCCiBhdmFpbGFibGUJAJoKCAkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQZ3aEluaXQFCG5ld09yZEFtCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCQBlAggFA2FjYwJfNQUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QBC3NldEludGVybmFsAwljdXJyZW50V2gKY3VycmVudE9yZAZuZXdPcmQECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQNY3VycmVudE9yZFJlcwkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeFJlcwIBXwQNY3VycmVudE9yZE1hdAkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeE1hdAIBXwQOY3VycmVudE9yZFByb2QDCQAAAgkAkQMCBQpjdXJyZW50T3JkBQpvcmRJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCm9yZElkeFByb2QCAV8DCQECIT0CCQCQAwEFBm5ld09yZAADCQACAQIzbmV3T3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQZuZXdPcmQAAgIABQNuaWwJALUJAgkAkQMCBQZuZXdPcmQAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCaCggAAAUDbmlsAAAAAAAABQljdXJyV2hSZXMFDWN1cnJlbnRPcmRSZXMHCgEFJGYw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cgkAAgECF1ByaWNlIGNhbid0IGJlIG5lZ2F0aXZlBAhicE9yZFVzZAkAawMFB2JwT3JkQW0FB2JwT3JkUHIFBU1VTFQ4BAZicEluaXQDCQBmAgkAkAMBCAUDYWNjAl84BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOAUBagAABAZ3aEluaXQDCQBmAgkAkAMBCAUDYWNjAl85BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOQUBagAABAl3aE9yZEluaXQDCQBmAgkAkAMBCAUDYWNjA18xMAUBagkAkQMCCAUDYWNjA18xMAUBagIDMEAwBAp3aE9yZFBhcnRzCQC1CQIFCXdoT3JkSW5pdAIBQAQHd2hPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAAQHd2hPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAQMDCQECIT0CBQdicE9yZEFtAAAJAQIhPQIFB2JwT3JkUHIFB3doT3JkUHIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICClByaWNlcyBvZiAJAJEDAggFA2FjYwNfMTEFAWoCFyBkb24ndCBtYXRjaCEgV0ggcHJpY2U9CQCkAwEFB3doT3JkUHICDSwgeW91ciBwcmljZT0JAKQDAQUHYnBPcmRQcgQId2hPcmRVc2QJAGsDBQd3aE9yZEFtBQd3aE9yZFByBQVNVUxUOAQIZGVsdGFWb2wJAQh0b1ZvbHVtZQMFB2JwT3JkQW0FB3BrZ1NpemUFBmlzUHJvZAMJAAACBQdicE9yZEFtAAAJAJ4KDAkAzQgCCAUDYWNjAl8xCQCkAwEFBndoSW5pdAkAzQgCCAUDYWNjAl8yBQl3aE9yZEluaXQJAM0IAggFA2FjYwJfMwkApAMBBQZicEluaXQIBQNhY2MCXzQIBQNhY2MCXzUIBQNhY2MCXzYJAGQCCAUDYWNjAl83AAEIBQNhY2MCXzgIBQNhY2MCXzkIBQNhY2MDXzEwCAUDYWNjA18xMQUGaXNQcm9kAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhssIGJ1dCB3YXJlaG91c2Ugb25seSBzZWxscyAJAKQDAQkBAS0BBQd3aE9yZEFtCQCeCgwJAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAAgEJAKwCAgkArAICAg9BdHRlbXB0IHRvIGJ1eSAJAJEDAggFA2FjYwNfMTEFAWoCICB3aGlsZSB3YXJlaG91c2UgZG9lc24ndCBzZWxsIGl0AwkAZgIFB3doT3JkQW0AAAMJAGYCCQEBLQEFB2JwT3JkQW0FB3doT3JkQW0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkApAMBCQEBLQEFB2JwT3JkQW0CBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoCGiwgYnV0IHdhcmVob3VzZSBvbmx5IGJ1eXMgCQCkAwEFB3doT3JkQW0DCQBmAgkBAS0BBQdicE9yZEFtBQZicEluaXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkApAMBCQEBLQEFB2JwT3JkQW0CFCwgYnV0IHlvdSBvbmx5IGhhdmUgCQCkAwEFBmJwSW5pdAIEIG9mIAkAkQMCCAUDYWNjA18xMQUBagkAngoMCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFBndoSW5pdAUHYnBPcmRBbQkAzQgCCAUDYWNjAl8yCQCsAgIJAKwCAgkApAMBCQBkAgUHd2hPcmRBbQUHYnBPcmRBbQIBQAkApAMBBQd3aE9yZFByCQDNCAIIBQNhY2MCXzMJAKQDAQkAZAIFBmJwSW5pdAUHYnBPcmRBbQkAZQIIBQNhY2MCXzQFCGRlbHRhVm9sCQBlAggFA2FjYwJfNQUIYnBPcmRVc2QIBQNhY2MCXzYJAGQCCAUDYWNjAl83AAEIBQNhY2MCXzgIBQNhY2MCXzkIBQNhY2MDXzEwCAUDYWNjA18xMQUGaXNQcm9kCQACAQkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAJEDAggFA2FjYwNfMTEFAWoCHyB3aGlsZSB3YXJlaG91c2UgZG9lc24ndCBidXkgaXQKAWkBGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZAgtsYW5kQXNzZXRJZAJ3aAQKY3VycmVudE9yZAkBCGdldE9yZGVyAQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQEAXoJAQtzZXRJbnRlcm5hbAMFAndoBQpjdXJyZW50T3JkBQpjdXJyZW50T3JkCQCUCgIFA25pbAkAZAIIBQF6Al80CAUBegJfNQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQENc2VsbFJlc291cmNlcwIHYW1vdW50cwltaW5QcmljZXMEB2Jsb2NrZWQJAQxjaGVja0Jsb2NrZWQAAwkAAAIFB2Jsb2NrZWQFB2Jsb2NrZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECKnNlbGxSZXNvdXJjZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAVsb2NJZAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHcmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwoBBWFkZGVyAgNhY2MBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkAkQMCBQdyZXNMaXN0BQFqAgQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAhQsIGJ1dCB0cmllZCB0byBzZWxsIAkApAMBCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgAACQCRAwIFB2Ftb3VudHMFAWoJAAIBCQCsAgIJAKwCAgkArAICAiVZb3UgdHJpZWQgdG8gc2VsbCBuZWdhdGl2ZSBhbW91bnQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAgI6IAkApAMBCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgkAkQMCBQdhbW91bnRzBQFqAAAEAWIJAQxzZWxsSW50ZXJuYWwEBQVsb2NJZAUBagkAkQMCBQdhbW91bnRzBQFqCQCRAwIFCW1pblByaWNlcwUBagkAlQoDCQDNCAIIBQNhY2MCXzEIBQFiAl8xCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQCRAwIFB2Ftb3VudHMFAWoJAGQCCAUDYWNjAl8zCAUBYgJfMgkAlQoDCAUDYWNjAl8xCQDNCAIIBQNhY2MCXzIJAJEDAgUHcmVzTGlzdAUBaggFA2FjYwJfMwQGbWVyZ2VkCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwJAJQKAgkAzQgCCAUGbWVyZ2VkAl8xCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMYnV5TWF0ZXJpYWxzAgdhbW91bnRzCW1heFByaWNlcwQHYmxvY2tlZAkBDGNoZWNrQmxvY2tlZAADCQAAAgUHYmxvY2tlZAUHYmxvY2tlZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUYJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgRmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQFbG9jSWQJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8KAQhtVXBkYXRlcgIDYWNjAWoDCQBmAgAACQCRAwIFB2Ftb3VudHMFAWoJAAIBCQCsAgIJAKwCAgkArAICAiRZb3UgdHJpZWQgdG8gYnV5IG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIbWF0VHlwZXMFAWoCAjogCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoAAAQBYgkBC2J1eUludGVybmFsBAUFbG9jSWQFAWoJAJEDAgUHYW1vdW50cwUBagkAkQMCBQltYXhQcmljZXMFAWoJAJUKAwkAzQgCCAUDYWNjAl8xCAUBYgJfMQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHbWF0TGlzdAUBaggFAWICXzMJAGQCCAUDYWNjAl8zCAUBYgJfMgkAlQoDCAUDYWNjAl8xCQDNCAIIBQNhY2MCXzIJAJEDAgUHbWF0TGlzdAUBaggFA2FjYwJfMwQGbWVyZ2VkCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIbVVwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAgFBm1lcmdlZAJfMwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAgFBm1lcmdlZAJfMwULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAggFBm1lcmdlZAJfMwBkCQCUCgIJAM0IAgkAzggCCAUGbWVyZ2VkAl8xBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZXhjaGFuZ2VSZXNvdXJjZXMBB2Ftb3VudHMEB2Jsb2NrZWQJAQxjaGVja0Jsb2NrZWQAAwkAAAIFB2Jsb2NrZWQFB2Jsb2NrZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBWxvY0lkCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfCgEJZXhjaGFuZ2VyAgNhY2MBagQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUBagQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQDYW1qCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgUDYW1qCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAJEDAgUHcmVzTGlzdAUBagIEIG9mIAkAkQMCBQhyZXNUeXBlcwUBagIYLCBidXQgdHJpZWQgdG8gZXhjaGFuZ2UgCQCkAwEFA2FtagMJAGYCAAAFA2FtagkAAgEJAKwCAgkArAICCQCsAgICKVlvdSB0cmllZCB0byBleGNoYW5nZSBuZWdhdGl2ZSBhbW91bnQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAgI6IAkApAMBBQNhbWoDCQBmAgUDYW1qAAAJAJYKBAkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagUDYW1qCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqBQNhbWoJAGQCCAUDYWNjAl8zCQBrAwUDYW1qBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAkAzQgCCAUDYWNjAl80CQEMSW50ZWdlckVudHJ5AgUFd2hLZXkFAncwCQCWCgQJAM0IAggFA2FjYwJfMQkAkQMCBQdyZXNMaXN0BQFqCQDNCAIIBQNhY2MCXzIJAJEDAgUHbWF0TGlzdAUBaggFA2FjYwJfMwgFA2FjYwJfNAQGbWVyZ2VkCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlleGNoYW5nZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC5CQIIBQZtZXJnZWQCXzICAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQIBQZtZXJnZWQCXzMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIIBQZtZXJnZWQCXzMAZAkAlAoCCQDNCAIJAM4IAgUEcmVzdAgFBm1lcmdlZAJfNAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNyYWZ0R29vZHMCCnByb2R1Y3RJZHgIcXVhbnRpdHkEB2Jsb2NrZWQJAQxjaGVja0Jsb2NrZWQAAwkAAAIFB2Jsb2NrZWQFB2Jsb2NrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUFTVVMVDYJAAIBAipleGFjdGx5IDEgVVNEVCBtdXN0IGJlIGF0dGFjaGVkIGFzIHBheW1lbnQDCQBnAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IHNob3VsZCBiZSBwb3NpdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFNCQACAQkArAICAjFEdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIE1hbnVmYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBARjb250CQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgEJAKwCAgIUVW5rbm93biBwcm9kdWN0IGlkeD0JAKQDAQUKcHJvZHVjdElkeAQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMJAQIhPQIJAJADAQUGcmVjaXBlCQBkAgUGTlVNUkVTAAMJAAIBCQCsAgICF0ZhdGFsOiB1bmtub3duIHJlY2lwZTogCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgEDnByb2R1Y3RDb250SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBRJyZWNpcGVJZHhDb250aW5lbnQDCQECIT0CCQCRAwIFCmNvbnRpbmVudHMFDnByb2R1Y3RDb250SWR4BQRjb250CQACAQkArAICCQCsAgIJAKwCAgIdVGhpcyBwcm9kdWN0IGlzIGF2YWlsYWJsZSBpbiAJAJEDAgUKY29udGluZW50cwUOcHJvZHVjdENvbnRJZHgCESwgYnV0IHlvdSBhcmUgaW4gBQRjb250BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBBmZpbGxlcgIDYWNjC2lnbm9yZWRJdGVtBAFuCAUDYWNjAl8yBAJ4cwMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQCRAwIFCHByb2RMaXN0BQFuAgEwBAF4CQENcGFyc2VJbnRWYWx1ZQEFAnhzBAZhbW91bnQJAGgCBQhxdWFudGl0eQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQURcmVjaXBlSWR4UGFja3NpemUEAXkDCQAAAgUBbgUKcHJvZHVjdElkeAkApAMBCQBkAgUBeAUGYW1vdW50BQJ4cwkAlAoCCQDNCAIIBQNhY2MCXzEFAXkJAGQCBQFuAAEEBmJwUHJvZAgKAAIkbAUQcHJvZHVjdGlvbk1h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BHVzZXIFDHJlc3RDb250cmFjdAkBDGNoZWNrQmxvY2tlZAAHBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDCQECIT0CBQR1c2VyBQxyZXN0Q29udHJhY3QJAQIhPQIFBW93bmVyBQRhZGRyBwkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQIbmV3T3JkZXIJALwJAgULbmV3T3JkZXJTdHICAToEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQKd2hPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBAd3aFRvdGFsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUIdm9sVG90YWwEBm9yZEtleQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQECmN1cnJlbnRPcmQJAQhnZXRPcmRlcgEFBm9yZEtleQQBegkBC3NldEludGVybmFsAwUJY3VycmVudFdoBQpjdXJyZW50T3JkBQhuZXdPcmRlcgQLYnV5Vm9sU2FsZG8IBQF6Al80BAxzZWxsVm9sU2FsZG8IBQF6Al81BAh3aExvY2tlZAkAZAIFC2J1eVZvbFNhbGRvBQxzZWxsVm9sU2FsZG8EBndoRnJlZQkAZQIJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkBQh3aExvY2tlZAMJAGYCAAAFBndoRnJlZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgITQXR0ZW1wdCB0byByZXNlcnZlIAkApAMBBQtidXlWb2xTYWxkbwIbIHNwYWNlIGZvciBidXkgb3JkZXJzLCBhbmQgCQCkAwEFDHNlbGxWb2xTYWxkbwI0IHNwYWNlIGZvciBzZWxsIG9yZGVycywgbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSBzcGFjZQQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCCAUBegJfMQIBXwkAzAgCCQC5CQIIBQF6Al8yAgFfCQDMCAIJALkJAggFAXoCXzMCAV8JAMwIAgkApAMBBQh3aExvY2tlZAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQIdXNkU2FsZG8IBQF6Al82BAdhY3Rpb25zAwkAZgIFCHVzZFNhbGRvAAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUIdXNkU2FsZG8JAAIBCQCsAgICElBheW1lbnQgbmVlZGVkIGlzIAkApAMBBQh1c2RTYWxkbwkAzAgCCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld09yZGVyU3RyBQNuaWwDCQAAAgUIdXNkU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAkAzAgCCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld09yZGVyU3RyBQNuaWwDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUFb3duZXIJAQEtAQUIdXNkU2FsZG8FC3VzZHRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAkAlAoCBQdhY3Rpb25zCQCUCgIFBnJlc3VsdAUGd2hTYXZlAWkBFGFjY2VwdFdhcmVob3VzZU9yZGVyAwpicE9yZGVyU3RyC2xhbmRBc3NldElkC2R1Y2tBc3NldElkBAdibG9ja2VkCQEMY2hlY2tCbG9ja2VkAAQGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIECmNhbGxlckFkZHIJAKUIAQUGY2FsbGVyBBFzdGFrZWREdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUKY2FsbGVyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQURc3Rha2VkRHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgURc3Rha2VkRHVja0Fzc2V0SWQFC2R1Y2tBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIUWW91ciBzdGFrZWQgZHVjayBpcyAFEXN0YWtlZER1Y2tBc3NldElkAg0sIGJ1dCBwYXNzZWQgBQtkdWNrQXNzZXRJZAQJbGFuZEFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUJbGFuZEFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAlsYW5kT3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQlsYW5kQXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkAAAIFCWxhbmRPd25lcgUKY2FsbGVyQWRkcgkAAgECHllvdSBjYW5ub3QgdHJhZGUgd2l0aCB5b3Vyc2VsZgQMYnBPcmRlclBhcnRzCQC8CQIFCmJwT3JkZXJTdHICAToDCQECIT0CCQCQAwEFDGJwT3JkZXJQYXJ0cwADCQACAQIyYnBPcmRlclN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECGJwT3JkUmVzCQC1CQIJAJEDAgUMYnBPcmRlclBhcnRzAAACAV8ECGJwT3JkTWF0CQC1CQIJAJEDAgUMYnBPcmRlclBhcnRzAAECAV8ECWJwT3JkUHJvZAMJAAACCQCRAwIFDGJwT3JkZXJQYXJ0cwACAgAFA25pbAkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhicE9yZFJlcwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCGJwT3JkTWF0BQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECWJwUmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQJYnBNYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBApicFByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBAZvcmRLZXkJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkBAV3aE9yZAkBCGdldE9yZGVyAQUGb3JkS2V5BAh3aE9yZFJlcwkAtQkCCQCRAwIFBXdoT3JkBQlvcmRJZHhSZXMCAV8ECHdoT3JkTWF0CQC1CQIJAJEDAgUFd2hPcmQFCW9yZElkeE1hdAIBXwQJd2hPcmRQcm9kAwkAAAIJAJEDAgUFd2hPcmQFCm9yZElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUFd2hPcmQFCm9yZElkeFByb2QCAV8EAXIKAAIkbAUIYnBPcmRSZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCeCgwFA25pbAUDbmlsBQNuaWwAAAAAAAAAAAUJYnBSZXNMaXN0BQljdXJyV2hSZXMFCHdoT3JkUmVzBQhyZXNUeXBlcwcKAQUkZjBf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Al8yAgFfBQNuaWwCAToECG5ld0JwU3RyCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIIBQFyAl8zAgFfCQDMCAIJALkJAggFAW0CXzMCAV8JAMwIAgkAuQkCCAUBcAJfMwIBXwUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQGYnBTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBAdhY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3V2hPcmRTdHIFA25pbAQNdXNkV2gyQnBTYWxkbwgFAXACXzUECGFjdGlvbnMxAwkAZgIFDXVzZFdoMkJwU2FsZG8AAAQLdXNkV2gyQnBGZWUJAGsDCAUBcAJfNQUKQVVDVElPTkZFRQUFTVVMVDYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUKY2FsbGVyQWRkcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBlAggFAXACXzUJAGgCAAMFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFBXJlZkJ5BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAM0IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGUCCAUBcAJfNQkAaAIAAwULdXNkV2gyQnBGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUHYWN0aW9ucwQNdXNkQnAyV2hTYWxkbwgFAXACXzYECGFjdGlvbnMyAwkAZgIFDXVzZEJwMldoU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQ11c2RCcDJXaFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUNdXNkQnAyV2hTYWxkbwMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUDYW10CQACAQkArAICAhtQYXltZW50IHNob3VsZCBiZSBhdCBsZWFzdCAJAKQDAQUOTUlOU0hPUFBBWU1FTlQEC3VzZEJwMldoRmVlCQBrAwgFAXACXzYFCkFVQ1RJT05GRUUFBU1VTFQ2BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCWxhbmRPd25lcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVyZWZCeQULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkBQhhY3Rpb25zMQkAlAoCBQhhY3Rpb25zMgkAlQoDBQdibG9ja2VkBQZ3aFNhdmUFBmJwU2F2ZQFpARBzZWxsUHJvZHVjdHNUb0VTAQdhbW91bnRzBAdibG9ja2VkCQEMY2hlY2tCbG9ja2VkAAMJAAACBQdibG9ja2VkBQdibG9ja2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUEJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgQWlycG9ydCwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQFZXNLZXkJAQ5rZXlFc1dhcmVob3VzZQAECGV4aXN0U3RyCQCiCAEFBWVzS2V5BAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALUJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAoBCG1vdmVQcm9kAgNhY2MJcmVjaXBlU3RyBAFqCAUDYWNjAl8xBAhxdWFudGl0eQMJAGYCCQCQAwEFB2Ftb3VudHMFAWoJAJEDAgUHYW1vdW50cwUBagAAAwkAZgIAAAUIcXVhbnRpdHkJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEBnJlY2lwZQkAtQkCBQlyZWNpcGVTdHICAV8DCQECIT0CCQCQAwEFBnJlY2lwZQkAZAIFBk5VTVJFUwADCQACAQkArAICAhdGYXRhbDogdW5rbm93biByZWNpcGU6IAUJcmVjaXBlU3RyBAhwYWNrU2l6ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQURcmVjaXBlSWR4UGFja3NpemUECW1heEFtb3VudAkAaAIFDUVTTUFYUEFDS0FHRVMFCHBhY2tTaXplBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwUBagAABAZjYW5CdXkJAGUCBQltYXhBbW91bnQFC2V4aXN0QW1vdW50AwkAZgIFCHF1YW50aXR5BQZjYW5CdXkJAAIBCQCsAgIJAKwCAgkArAICAhdXYXJlaG91c2UgY2FuIGJ1eSBvbmx5IAkApAMBBQZjYW5CdXkCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFqBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJdW5pdFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQlFU0JVWUNPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCAAoFCHBhY2tTaXplBAxicFByb2RBbW91bnQDCQBmAgkAkAMBBQhwcm9kTGlzdAUBagkBDXBhcnNlSW50VmFsdWUB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", "height": 2614133, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2Zb5UmkGfpDmPPVD58VB4Wd39UJFoG9ykqXginDhpetu Next: CPrDm4obDHeYaAhoYQV7sKzGXtLmw8BGVVwLz4Dpga33 Diff:
OldNewDifferences
10061006 then throw(((("Warehouse can buy only " + toString(dZ)) + " of ") + r[at]))
10071007 else {
10081008 let ea = ap(aq)
1009- let eb = fraction((ea * o), m, 10)
1009+ let eb = fraction((ea * o), m, (10 * dW))
10101010 let ec = if ((size(cK) > at))
10111011 then parseIntValue(cK[at])
10121012 else 0
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = take(drop(this.bytes, 1), 1)
55
66 let b = {
77 let c = a
88 if ((base58'2W' == c))
99 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1010 else if ((base58'2T' == c))
1111 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1212 else throw("Unknown chain")
1313 }
1414
1515 let d = {
1616 let c = a
1717 if ((base58'2W' == c))
1818 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
1919 else if ((base58'2T' == c))
2020 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
2121 else throw("Unknown chain")
2222 }
2323
2424 let e = "__"
2525
2626 let f = 1000000
2727
2828 let g = 10000000
2929
3030 let h = 100000000
3131
3232 let i = 10000000000
3333
3434 let j = "LAND"
3535
3636 let k = 6
3737
3838 let l = "Africa_F_Africa"
3939
4040 let m = 39637
4141
4242 let n = 3
4343
4444 let o = 4
4545
4646 let p = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
4747
4848 let q = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
4949
5050 let r = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3"]
5151
5252 let s = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
5353
5454 let t = ["1_1_1_2_2_5_1_10_0", "2_2_2_4_4_10_1_10_0", "3_3_3_6_6_15_1_10_0", "2_5_5_2_7_5_2_100_1", "4_10_10_4_14_10_2_100_1", "6_15_15_6_21_15_2_100_1", "1_1_1_1_1_8_1_10_2", "2_2_2_2_2_16_1_10_2", "3_3_3_3_3_24_1_10_2", "9_9_1_5_5_1_5_100_3", "18_18_2_10_10_2_5_100_3", "27_27_3_15_15_3_5_100_3", "2_2_1_2_2_2_1_10_4", "4_4_2_4_4_4_1_10_4", "6_6_3_6_6_6_1_10_4"]
5555
5656 let u = 7
5757
5858 let v = 8
5959
6060 let w = 0
6161
6262 let x = 1
6363
6464 let y = 2
6565
6666 let z = 3
6767
6868 let A = 4
6969
7070 let B = 0
7171
7272 let C = 1
7373
7474 let D = 3
7575
7676 let E = 0
7777
7878 let F = 1
7979
8080 let G = 2
8181
8282 let H = 3
8383
8484 func I (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], ""))
8585
8686
8787 let L = 1
8888
8989 func M () = "%s__restConfig"
9090
9191
9292 func N () = "%s__restAddr"
9393
9494
9595 func O (P) = split_4C(I(P, M()), e)
9696
9797
9898 func Q (R,S) = valueOrErrorMessage(addressFromString(R[S]), ("Rest cfg doesn't contain address at index " + toString(S)))
9999
100100
101101 let T = addressFromStringValue(valueOrElse(getString(this, N()), d))
102102
103103 let R = O(T)
104104
105105 let U = Q(R, L)
106106
107107 func V (W) = ("nftOwner_" + W)
108108
109109
110110 func X (W) = ("stakedTime_" + W)
111111
112112
113113 func Y (Z) = ("accRefBy_" + Z)
114114
115115
116116 func aa (ab) = ("stakedDuckByOwner_" + ab)
117117
118118
119119 func ac (ad) = ("backPack_" + ad)
120120
121121
122122 func ae (ad) = ("duckLocation_" + ad)
123123
124124
125125 func af () = "contractsBlocked"
126126
127127
128128 func ag (ah) = ("landOrder_" + ah)
129129
130130
131131 func ai () = "emergencyWarehouseProducts"
132132
133133
134134 let aj = 0
135135
136136 let ak = 1
137137
138138 let al = 2
139139
140140 func am (an) = {
141141 let c = an
142142 if ($isInstanceOf(c, "String"))
143143 then {
144144 let ao = c
145145 ao
146146 }
147147 else throw("fail to cast into String")
148148 }
149149
150150
151151 func ap (aq) = {
152152 func ar (as,at) = (as + parseIntValue(aq[at]))
153153
154154 let au = [0, 1, 2, 3, 4, 5]
155155 let av = size(au)
156156 let aw = 0
157157 func ax (ay,az) = if ((az >= av))
158158 then ay
159159 else ar(ay, au[az])
160160
161161 func aA (ay,az) = if ((az >= av))
162162 then ay
163163 else throw("List size exceeds 6")
164164
165165 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
166166 }
167167
168168
169169 let aB = 10000000000
170170
171171 let aC = 200
172172
173173 let aD = 300
174174
175175 let aE = 10000
176176
177177 let aF = 100000
178178
179179 func aG (aH,aI) = ((("factoryWhByContinentAndRes_" + aH) + "_") + toString(aI))
180180
181181
182182 let aJ = 0
183183
184184 let aK = 1
185185
186186 let aL = 2
187187
188188 func aM (aN) = {
189189 let aO = split(valueOrElse(getString(aN), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
190190 [if ((size(split(aO[aJ], "_")) == k))
191191 then aO[aJ]
192192 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(aO[aK], "_")) == k))
193193 then aO[aK]
194194 else "0@0_0@0_0@0_0@0_0@0_0@0", aO[aL]]
195195 }
196196
197197
198198 func aP (aQ,aR,aS) = if (aS)
199199 then {
200200 let aT = if ((aQ >= 0))
201201 then (((aQ + aR) - 1) / aR)
202202 else -((((-(aQ) + aR) - 1) / aR))
203203 (aT * h)
204204 }
205205 else aQ
206206
207207
208208 func aU (aV,aI,aQ,aW) = {
209209 let aX = aG(aV, aI)
210210 let aY = valueOrElse(getInteger(aX), 0)
211211 let aZ = if ((aY > aB))
212212 then 0
213213 else if (((aY + aQ) > aB))
214214 then (aB - aY)
215215 else aQ
216216 let ba = (fraction(aZ, ((aC * m) - fraction(((100 * aY) + (50 * aZ)), m, aB)), i) + fraction((aQ - aZ), m, h))
217217 let bb = (aW - (aW / 100))
218218 if (((bb * aQ) > (ba * h)))
219219 then throw((((((((((("Actual price = " + toString(ba)) + " / ") + toString(aQ)) + " < minPrice = ") + toString(aW)) + ", (") + aV) + ", ") + p[aI]) + ")"))
220220 else $Tuple2(IntegerEntry(aX, (aY + aQ)), ba)
221221 }
222222
223223
224224 func bc (aV,bd,aQ,be) = {
225225 let aX = aG(aV, bd)
226226 let aY = valueOrElse(getInteger(aX), 0)
227227 let bf = if ((aY > aB))
228228 then min([aQ, (aY - aB)])
229229 else 0
230230 let bg = min([aY, (aQ - bf)])
231231 let bh = (bg + bf)
232232 let bi = (fraction(bg, ((aD * m) - fraction(((100 * aY) - (50 * bg)), m, aB)), i) + fraction(bf, (2 * m), h))
233233 let bj = (be + (be / 100))
234234 if (((bi * h) > (bj * bh)))
235235 then throw((((((((((("Actual price = " + toString(bi)) + " / ") + toString(bh)) + " > maxPrice = ") + toString(be)) + ", (") + aV) + ", ") + q[bd]) + ")"))
236236 else $Tuple3(IntegerEntry(aX, (aY - bh)), bi, bh)
237237 }
238238
239239
240240 func bk (bl) = {
241241 let aO = split(valueOrElse(getString(U, bl), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
242242 [toString(valueOrElse(parseInt(aO[E]), 0)), if ((size(split(aO[F], "_")) == k))
243243 then aO[F]
244244 else "0_0_0_0_0_0", if ((size(split(aO[G], "_")) == k))
245245 then aO[G]
246246 else "0_0_0_0_0_0", aO[H]]
247247 }
248248
249249
250250 func bm () = if (valueOrElse(getBoolean(U, af()), false))
251251 then throw("Contracts are under maintenance")
252252 else unit
253253
254254
255255 func bn (bo,bp) = {
256256 let at = bo._1
257257 let bq = bo._8
258258 let aR = if (bq)
259259 then parseIntValue(split(t[at], "_")[u])
260260 else 0
261261 let br = split(bp, "@")
262262 if ((size(br) != 2))
263263 then throw("Incorrect order format, should be amount@price")
264264 else {
265265 let bs = parseIntValue(br[0])
266266 let bt = parseIntValue(br[1])
267267 let bu = fraction(bs, bt, h)
268268 let bv = aP(bs, aR, bq)
269269 let bw = if ((size(bo._6) > at))
270270 then parseIntValue(bo._6[at])
271271 else 0
272272 let bx = split(if ((size(bo._7) > at))
273273 then bo._7[at]
274274 else "0@0", "@")
275275 let by = parseIntValue(bx[0])
276276 let bz = parseIntValue(bx[1])
277277 if (if ((0 > bz))
278278 then true
279279 else (0 > bt))
280280 then throw("Price can't be negative")
281281 else {
282282 let bA = fraction(by, bz, h)
283283 let bB = aP(by, aR, bq)
284284 if ((bs == 0))
285285 then if ((by > 0))
286286 then $Tuple8((at + 1), (bo._2 :+ toString(bw)), bo._3, bo._4, (bo._5 - bA), bo._6, bo._7, bq)
287287 else $Tuple8((at + 1), (bo._2 :+ toString((bw - by))), bo._3, bo._4, bo._5, bo._6, bo._7, bq)
288288 else if ((bs > 0))
289289 then if ((0 > by))
290290 then $Tuple8((at + 1), (bo._2 :+ toString((bw - by))), (bo._3 + bv), bo._4, (bo._5 + bu), bo._6, bo._7, bq)
291291 else $Tuple8((at + 1), (bo._2 :+ toString(bw)), (bo._3 + bv), bo._4, ((bo._5 + bu) - bA), bo._6, bo._7, bq)
292292 else if ((0 > by))
293293 then {
294294 let bC = (by - bs)
295295 if ((0 > (bw - bC)))
296296 then throw((((("Attempt to take " + toString(bC)) + " from warehouse, but only ") + toString(bw)) + " available"))
297297 else $Tuple8((at + 1), (bo._2 :+ toString((bw - bC))), bo._3, (bo._4 - bv), bo._5, bo._6, bo._7, bq)
298298 }
299299 else if ((0 > (bw + bs)))
300300 then throw((((("Attempt to take " + toString(-(bs))) + " from warehouse, but only ") + toString(bw)) + " available"))
301301 else $Tuple8((at + 1), (bo._2 :+ toString((bw + bs))), bo._3, (bo._4 - bv), (bo._5 - bA), bo._6, bo._7, bq)
302302 }
303303 }
304304 }
305305
306306
307307 func bD (bE,bF,bG) = {
308308 let bH = split(bE[x], "_")
309309 let bI = split(bE[y], "_")
310310 let bJ = if ((bE[z] == ""))
311311 then nil
312312 else split(bE[z], "_")
313313 let bK = split(bF[aJ], "_")
314314 let bL = split(bF[aK], "_")
315315 let bM = if ((bF[aL] == ""))
316316 then nil
317317 else split(bF[aL], "_")
318318 if ((size(bG) != 3))
319319 then throw("newOrderStr should contain exactly 2 ':' separators")
320320 else {
321321 let bN = split(bG[0], "_")
322322 let bO = split(bG[1], "_")
323323 let bP = if ((bG[2] == ""))
324324 then nil
325325 else split(bG[2], "_")
326326 if ((size(bN) != k))
327327 then throw("All 6 resources should be passed")
328328 else if ((size(bO) != k))
329329 then throw("All 6 materials should be passed")
330330 else {
331331 let bQ = {
332332 let au = bN
333333 let av = size(au)
334334 let aw = $Tuple8(0, nil, 0, 0, 0, bH, bK, false)
335335 func ax (ay,az) = if ((az >= av))
336336 then ay
337337 else bn(ay, au[az])
338338
339339 func aA (ay,az) = if ((az >= av))
340340 then ay
341341 else throw("List size exceeds 6")
342342
343343 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
344344 }
345345 let bh = {
346346 let au = bO
347347 let av = size(au)
348348 let aw = $Tuple8(0, nil, bQ._3, bQ._4, bQ._5, bI, bL, false)
349349 func bR (ay,az) = if ((az >= av))
350350 then ay
351351 else bn(ay, au[az])
352352
353353 func bS (ay,az) = if ((az >= av))
354354 then ay
355355 else throw("List size exceeds 6")
356356
357357 bS(bR(bR(bR(bR(bR(bR(aw, 0), 1), 2), 3), 4), 5), 6)
358358 }
359359 let aO = if ((size(bP) != 0))
360360 then {
361361 let au = bP
362362 let av = size(au)
363363 let aw = $Tuple8(0, nil, bh._3, bh._4, bh._5, bJ, bM, true)
364364 func bT (ay,az) = if ((az >= av))
365365 then ay
366366 else bn(ay, au[az])
367367
368368 func bU (ay,az) = if ((az >= av))
369369 then ay
370370 else throw("List size exceeds 50")
371371
372372 bU(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
373373 }
374374 else $Tuple8(0, bJ, bh._3, bh._4, bh._5, bJ, bM, true)
375375 $Tuple6(bQ._2, bh._2, aO._2, aO._3, aO._4, aO._5)
376376 }
377377 }
378378 }
379379
380380
381381 func bV (bo,bW) = {
382382 let at = bo._7
383383 let bq = bo._12
384384 let aR = if (bq)
385385 then parseIntValue(split(t[at], "_")[u])
386386 else 0
387387 let bX = split(bW, "@")
388388 if ((size(bX) != 2))
389389 then throw("Incorrect order format, should be amount@price")
390390 else {
391391 let bY = parseIntValue(bX[0])
392392 let bZ = parseIntValue(bX[1])
393393 if ((0 > bZ))
394394 then throw("Price can't be negative")
395395 else {
396396 let ca = fraction(bY, bZ, h)
397397 let cb = if ((size(bo._8) > at))
398398 then parseIntValue(bo._8[at])
399399 else 0
400400 let bw = if ((size(bo._9) > at))
401401 then parseIntValue(bo._9[at])
402402 else 0
403403 let cc = if ((size(bo._10) > at))
404404 then bo._10[at]
405405 else "0@0"
406406 let cd = split(cc, "@")
407407 let ce = parseIntValue(cd[0])
408408 let cf = parseIntValue(cd[1])
409409 if (if ((bY != 0))
410410 then (bZ != cf)
411411 else false)
412412 then throw(((((("Prices of " + bo._11[at]) + " don't match! WH price=") + toString(cf)) + ", your price=") + toString(bZ)))
413413 else {
414414 let cg = fraction(ce, cf, h)
415415 let ch = aP(bY, aR, bq)
416416 if ((bY == 0))
417417 then $Tuple12((bo._1 :+ toString(bw)), (bo._2 :+ cc), (bo._3 :+ toString(cb)), bo._4, bo._5, bo._6, (bo._7 + 1), bo._8, bo._9, bo._10, bo._11, bq)
418418 else if ((bY > 0))
419419 then if ((0 > ce))
420420 then if ((bY > -(ce)))
421421 then throw(((((("Attempt to buy " + toString(bY)) + " of ") + bo._11[at]) + ", but warehouse only sells ") + toString(-(ce))))
422422 else $Tuple12((bo._1 :+ toString(bw)), (bo._2 :+ ((toString((ce + bY)) + "@") + toString(cf))), (bo._3 :+ toString((cb + bY))), (bo._4 + ch), bo._5, (bo._6 + ca), (bo._7 + 1), bo._8, bo._9, bo._10, bo._11, bq)
423423 else throw((("Attempt to buy " + bo._11[at]) + " while warehouse doesn't sell it"))
424424 else if ((ce > 0))
425425 then if ((-(bY) > ce))
426426 then throw(((((("Attempt to sell " + toString(-(bY))) + " of ") + bo._11[at]) + ", but warehouse only buys ") + toString(ce)))
427427 else if ((-(bY) > cb))
428428 then throw(((((("Attempt to sell " + toString(-(bY))) + ", but you only have ") + toString(cb)) + " of ") + bo._11[at]))
429429 else $Tuple12((bo._1 :+ toString((bw - bY))), (bo._2 :+ ((toString((ce + bY)) + "@") + toString(cf))), (bo._3 :+ toString((cb + bY))), (bo._4 - ch), (bo._5 - ca), bo._6, (bo._7 + 1), bo._8, bo._9, bo._10, bo._11, bq)
430430 else throw((("Attempt to sell " + bo._11[at]) + " while warehouse doesn't buy it"))
431431 }
432432 }
433433 }
434434 }
435435
436436
437437 @Callable(ci)
438438 func recalcLockedVolumeREADONLY (ah,cj) = {
439439 let bF = aM(ag(ah))
440440 let ck = bD(cj, bF, bF)
441441 $Tuple2(nil, (ck._4 + ck._5))
442442 }
443443
444444
445445
446446 @Callable(ci)
447447 func constructorV1 (cl) = if ((ci.caller != this))
448448 then throw("Permission denied")
449449 else [StringEntry(N(), cl)]
450450
451451
452452
453453 @Callable(ci)
454454 func sellResources (cm,cn) = {
455455 let co = bm()
456456 if ((co == co))
457457 then {
458458 let ad = valueOrErrorMessage(getString(U, aa(toString(ci.caller))), "You don't have a duck staked")
459459 if ((size(ci.payments) != 0))
460460 then throw("sellResources doesn't require any payments")
461461 else {
462462 let cp = split(valueOrElse(getString(U, ae(ad)), l), "_")
463463 if ((cp[ak] != "F"))
464464 then throw(("Duck location type should be Factory, but is " + cp[ak]))
465465 else {
466466 let aV = cp[al]
467467 let cq = bk(ac(ad))
468468 let cr = split(cq[F], "_")
469469 func cs (bo,at) = if ((cm[at] > parseIntValue(cr[at])))
470470 then throw(((((("You have " + cr[at]) + " of ") + p[at]) + ", but tried to sell ") + toString(cm[at])))
471471 else if ((0 > cm[at]))
472472 then throw(((("You tried to sell negative amount of " + p[at]) + ": ") + toString(cm[at])))
473473 else if ((cm[at] > 0))
474474 then {
475475 let ct = aU(aV, at, cm[at], cn[at])
476476 $Tuple3((bo._1 :+ ct._1), (bo._2 :+ toString((parseIntValue(cr[at]) - cm[at]))), (bo._3 + ct._2))
477477 }
478478 else $Tuple3(bo._1, (bo._2 :+ cr[at]), bo._3)
479479
480480 let cu = {
481481 let au = [0, 1, 2, 3, 4, 5]
482482 let av = size(au)
483483 let aw = $Tuple3(nil, nil, 0)
484484 func ax (ay,az) = if ((az >= av))
485485 then ay
486486 else cs(ay, au[az])
487487
488488 func aA (ay,az) = if ((az >= av))
489489 then ay
490490 else throw("List size exceeds 6")
491491
492492 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
493493 }
494494 let cv = makeString([cq[E], makeString(cu._2, "_"), cq[G], cq[H]], ":")
495495 let cw = am(invoke(U, "updateBackpack", [ad, cv], nil))
496496 $Tuple2((cu._1 :+ ScriptTransfer(ci.caller, cu._3, b)), cw)
497497 }
498498 }
499499 }
500500 else throw("Strict value is not equal to itself.")
501501 }
502502
503503
504504
505505 @Callable(ci)
506506 func buyMaterials (cm,cx) = {
507507 let co = bm()
508508 if ((co == co))
509509 then {
510510 let ad = valueOrErrorMessage(getString(U, aa(toString(ci.caller))), "You don't have a duck staked")
511511 if ((size(ci.payments) != 1))
512512 then throw("exactly 1 payment must be attached")
513513 else {
514514 let cy = ci.payments[0]
515515 let cz = cy.amount
516516 let cA = valueOrErrorMessage(cy.assetId, "WAVES can't be used as payment")
517517 if ((cA != b))
518518 then throw("USDT payments only!")
519519 else {
520520 let cp = split(valueOrElse(getString(U, ae(ad)), l), "_")
521521 if ((cp[ak] != "F"))
522522 then throw(("Duck location type should be Factory, but is " + cp[ak]))
523523 else {
524524 let aV = cp[al]
525525 let cq = bk(ac(ad))
526526 let cB = split(cq[G], "_")
527527 func cC (bo,at) = if ((0 > cm[at]))
528528 then throw(((("You tried to buy negative amount of " + q[at]) + ": ") + toString(cm[at])))
529529 else if ((cm[at] > 0))
530530 then {
531531 let ct = bc(aV, at, cm[at], cx[at])
532532 $Tuple3((bo._1 :+ ct._1), (bo._2 :+ toString((parseIntValue(cB[at]) + ct._3))), (bo._3 + ct._2))
533533 }
534534 else $Tuple3(bo._1, (bo._2 :+ cB[at]), bo._3)
535535
536536 let cu = {
537537 let au = [0, 1, 2, 3, 4, 5]
538538 let av = size(au)
539539 let aw = $Tuple3(nil, nil, 0)
540540 func ax (ay,az) = if ((az >= av))
541541 then ay
542542 else cC(ay, au[az])
543543
544544 func aA (ay,az) = if ((az >= av))
545545 then ay
546546 else throw("List size exceeds 6")
547547
548548 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
549549 }
550550 if ((cu._3 > cz))
551551 then throw(((("Insufficient payment! Attached=" + toString(cz)) + ", required=") + toString(cu._3)))
552552 else {
553553 let cv = makeString([cq[E], cq[F], makeString(cu._2, "_"), cq[H]], ":")
554554 let cw = am(invoke(U, "updateBackpack", [ad, cv], nil))
555555 let P = if (((cz - cu._3) > 0))
556556 then [ScriptTransfer(ci.caller, (cz - cu._3), b)]
557557 else nil
558558 let cD = (cu._3 / 100)
559559 $Tuple2(((cu._1 ++ P) :+ ScriptTransfer(T, cD, b)), cw)
560560 }
561561 }
562562 }
563563 }
564564 }
565565 else throw("Strict value is not equal to itself.")
566566 }
567567
568568
569569
570570 @Callable(ci)
571571 func exchangeResources (cm) = {
572572 let co = bm()
573573 if ((co == co))
574574 then {
575575 let ad = valueOrErrorMessage(getString(U, aa(toString(ci.caller))), "You don't have a duck staked")
576576 if ((size(ci.payments) != 1))
577577 then throw("exactly 1 payment must be attached")
578578 else {
579579 let cy = ci.payments[0]
580580 let cz = cy.amount
581581 let cA = valueOrErrorMessage(cy.assetId, "WAVES can't be used as payment")
582582 if ((cA != b))
583583 then throw("USDT payments only!")
584584 else {
585585 let cp = split(valueOrElse(getString(U, ae(ad)), l), "_")
586586 if ((cp[ak] != "F"))
587587 then throw(("Duck location type should be Factory, but is " + cp[ak]))
588588 else {
589589 let aV = cp[al]
590590 let cq = bk(ac(ad))
591591 let cr = split(cq[F], "_")
592592 let cB = split(cq[G], "_")
593593 func cE (bo,at) = {
594594 let aX = aG(aV, at)
595595 let aY = valueOrElse(getInteger(aX), 0)
596596 let cF = cm[at]
597597 if ((cF > parseIntValue(cr[at])))
598598 then throw(((((("You have " + cr[at]) + " of ") + p[at]) + ", but tried to exchange ") + toString(cF)))
599599 else if ((0 > cF))
600600 then throw(((("You tried to exchange negative amount of " + p[at]) + ": ") + toString(cF)))
601601 else if ((cF > 0))
602602 then $Tuple4((bo._1 :+ toString((parseIntValue(cr[at]) - cF))), (bo._2 :+ toString((parseIntValue(cB[at]) + cF))), (bo._3 + fraction(cF, m, h)), (bo._4 :+ IntegerEntry(aX, aY)))
603603 else $Tuple4((bo._1 :+ cr[at]), (bo._2 :+ cB[at]), bo._3, bo._4)
604604 }
605605
606606 let cu = {
607607 let au = [0, 1, 2, 3, 4, 5]
608608 let av = size(au)
609609 let aw = $Tuple4(nil, nil, 0, nil)
610610 func ax (ay,az) = if ((az >= av))
611611 then ay
612612 else cE(ay, au[az])
613613
614614 func aA (ay,az) = if ((az >= av))
615615 then ay
616616 else throw("List size exceeds 6")
617617
618618 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
619619 }
620620 if ((cu._3 > cz))
621621 then throw(((("Insufficient payment! Attached=" + toString(cz)) + ", required=") + toString(cu._3)))
622622 else {
623623 let cv = makeString([cq[E], makeString(cu._1, "_"), makeString(cu._2, "_"), cq[H]], ":")
624624 let cw = am(invoke(U, "updateBackpack", [ad, cv], nil))
625625 let P = if (((cz - cu._3) > 0))
626626 then [ScriptTransfer(ci.caller, (cz - cu._3), b)]
627627 else nil
628628 let cD = (cu._3 / 100)
629629 $Tuple2(((P ++ cu._4) :+ ScriptTransfer(T, cD, b)), cw)
630630 }
631631 }
632632 }
633633 }
634634 }
635635 else throw("Strict value is not equal to itself.")
636636 }
637637
638638
639639
640640 @Callable(ci)
641641 func craftGoods (cG,cH) = {
642642 let co = bm()
643643 if ((co == co))
644644 then if ((size(ci.payments) != 1))
645645 then throw("exactly 1 payment must be attached")
646646 else {
647647 let cy = ci.payments[0]
648648 let cz = cy.amount
649649 let cA = valueOrErrorMessage(cy.assetId, "WAVES can't be used as payment")
650650 if ((cA != b))
651651 then throw("USDT payments only!")
652652 else if ((cz != f))
653653 then throw("exactly 1 USDT must be attached as payment")
654654 else if ((0 >= cH))
655655 then throw("Quantity should be positive")
656656 else {
657657 let ad = valueOrErrorMessage(getString(U, aa(toString(ci.caller))), "You don't have a duck staked")
658658 let cp = split(valueOrElse(getString(U, ae(ad)), l), "_")
659659 if ((cp[ak] != "M"))
660660 then throw(("Duck location type should be Manufactory, but is " + cp[ak]))
661661 else {
662662 let cI = cp[aj]
663663 let cq = bk(ac(ad))
664664 let cB = split(cq[G], "_")
665665 if (if ((0 > cG))
666666 then true
667667 else (cG >= size(t)))
668668 then throw(("Unknown product idx=" + toString(cG)))
669669 else {
670670 let aq = split(t[cG], "_")
671671 if ((size(aq) != (k + 3)))
672672 then throw(("Fatal: unknown recipe: " + t[cG]))
673673 else {
674674 let cJ = parseIntValue(aq[v])
675675 if ((s[cJ] != cI))
676676 then throw(((("This product is available in " + s[cJ]) + ", but you are in ") + cI))
677677 else {
678678 let cK = if ((cq[H] == ""))
679679 then nil
680680 else split(cq[H], "_")
681681 func cL (bo,cM) = {
682682 let cN = bo._2
683683 let cO = if ((size(cK) > cN))
684684 then cK[cN]
685685 else "0"
686686 let cP = parseIntValue(cO)
687687 let aQ = (cH * parseIntValue(aq[u]))
688688 let cQ = if ((cN == cG))
689689 then toString((cP + aQ))
690690 else cO
691691 $Tuple2((bo._1 :+ cQ), (cN + 1))
692692 }
693693
694694 let cR = ( let au = t
695695 let av = size(au)
696696 let aw = $Tuple2(nil, 0)
697697 func ax (ay,az) = if ((az >= av))
698698 then ay
699699 else cL(ay, au[az])
700700
701701 func aA (ay,az) = if ((az >= av))
702702 then ay
703703 else throw("List size exceeds 50")
704704
705705 aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._1
706706 func cS (bo,at) = {
707707 let cT = ((parseIntValue(aq[at]) * g) * cH)
708708 let cU = parseIntValue(cB[at])
709709 if ((cT > cU))
710710 then throw(((((((("You have " + cB[at]) + " of ") + q[at]) + ", but recipe requires ") + toString(cT)) + " for quantity ") + toString(cH)))
711711 else if ((cT > 0))
712712 then (bo :+ toString((cU - cT)))
713713 else (bo :+ cB[at])
714714 }
715715
716716 let cu = {
717717 let au = [0, 1, 2, 3, 4, 5]
718718 let av = size(au)
719719 let aw = nil
720720 func bR (ay,az) = if ((az >= av))
721721 then ay
722722 else cS(ay, au[az])
723723
724724 func bS (ay,az) = if ((az >= av))
725725 then ay
726726 else throw("List size exceeds 6")
727727
728728 bS(bR(bR(bR(bR(bR(bR(aw, 0), 1), 2), 3), 4), 5), 6)
729729 }
730730 let cv = makeString([cq[E], cq[F], makeString(cu, "_"), makeString(cR, "_")], ":")
731731 let cw = am(invoke(U, "updateBackpack", [ad, cv], nil))
732732 $Tuple2(nil, cw)
733733 }
734734 }
735735 }
736736 }
737737 }
738738 }
739739 else throw("Strict value is not equal to itself.")
740740 }
741741
742742
743743
744744 @Callable(ci)
745745 func setWarehouseOrder (cV,ah) = {
746746 let cW = ci.originCaller
747747 let Z = toString(cW)
748748 let cw = if ((cW != T))
749749 then bm()
750750 else false
751751 let cX = value(assetInfo(fromBase58String(ah)))
752752 if (!(isDefined(getInteger(U, X(ah)))))
753753 then throw((("NFT " + cX.name) + " is not staked"))
754754 else {
755755 let cY = valueOrErrorMessage(getString(U, V(ah)), (("NFT " + cX.name) + " is orphaned"))
756756 if (if ((cW != T))
757757 then (cY != Z)
758758 else false)
759759 then throw((j + " is not yours"))
760760 else {
761761 let cZ = split_4C(cV, ":")
762762 let cj = am(invoke(U, "getWarehouseREADONLY", [ah], nil))
763763 let bE = split_4C(cj, ":")
764764 let da = split(bE[A], "_")
765765 let db = parseIntValue(da[C])
766766 let dc = parseIntValue(da[D])
767767 let aN = ag(ah)
768768 let bF = aM(aN)
769769 let ck = bD(bE, bF, cZ)
770770 let dd = ck._4
771771 let de = ck._5
772772 let df = (dd + de)
773773 let dg = ((dc - db) - df)
774774 if ((0 > dg))
775775 then throw((((("Attempt to reserve " + toString(dd)) + " space for buy orders, and ") + toString(de)) + " space for sell orders, leads to negative free space"))
776776 else {
777777 let dh = makeString_2C([bE[w], makeString(ck._1, "_"), makeString(ck._2, "_"), makeString(ck._3, "_"), toString(df)], ":")
778778 let di = am(invoke(U, "saveWarehouse", [dh, ah], nil))
779779 let dj = ck._6
780780 let dk = if ((dj > 0))
781781 then if ((size(ci.payments) != 1))
782782 then throw("exactly 1 payment must be attached")
783783 else {
784784 let cy = ci.payments[0]
785785 let cz = cy.amount
786786 let cA = valueOrErrorMessage(cy.assetId, "WAVES can't be used as payment")
787787 if ((cA != b))
788788 then throw("USDT payments only!")
789789 else if ((cz != dj))
790790 then throw(("Payment needed is " + toString(dj)))
791791 else [StringEntry(aN, cV)]
792792 }
793793 else if ((dj == 0))
794794 then if ((size(ci.payments) != 0))
795795 then throw("No payments needed")
796796 else [StringEntry(aN, cV)]
797797 else if ((size(ci.payments) != 0))
798798 then throw("No payments needed")
799799 else [ScriptTransfer(addressFromStringValue(cY), -(dj), b), StringEntry(aN, cV)]
800800 $Tuple2(dk, $Tuple2(cw, di))
801801 }
802802 }
803803 }
804804 }
805805
806806
807807
808808 @Callable(ci)
809809 func acceptWarehouseOrder (dl,ah,ad) = {
810810 let co = bm()
811811 let dm = ci.originCaller
812812 let dn = toString(dm)
813813 let do = valueOrErrorMessage(getString(U, aa(dn)), "You don't have a duck staked")
814814 let cp = valueOrElse(getString(U, ae(do)), l)
815815 let dp = split(value(cp), "_")
816816 if ((dp[ak] != "L"))
817817 then throw((("Duck location type is " + dp[ak]) + ", but should be L"))
818818 else if ((do != ad))
819819 then throw(((("Your staked duck is " + do) + ", but passed ") + ad))
820820 else {
821821 let dq = value(assetInfo(fromBase58String(ah)))
822822 if (!(isDefined(getInteger(U, X(ah)))))
823823 then throw((("NFT " + dq.name) + " is not staked"))
824824 else {
825825 let dr = valueOrErrorMessage(getString(U, V(ah)), (("NFT " + dq.name) + " is orphaned"))
826826 if ((dr == dn))
827827 then throw("You cannot trade with yourself")
828828 else {
829829 let ds = split_4C(dl, ":")
830830 if ((size(ds) != 3))
831831 then throw("bpOrderStr should contain exactly 2 ':' separators")
832832 else {
833833 let dt = split(ds[0], "_")
834834 let du = split(ds[1], "_")
835835 let dv = if ((ds[2] == ""))
836836 then nil
837837 else split(ds[2], "_")
838838 if ((size(dt) != k))
839839 then throw("All 6 resources should be passed")
840840 else if ((size(du) != k))
841841 then throw("All 6 materials should be passed")
842842 else {
843843 let cj = am(invoke(U, "getWarehouseREADONLY", [ah], nil))
844844 let bE = split_4C(cj, ":")
845845 let bH = split(bE[x], "_")
846846 let bI = split(bE[y], "_")
847847 let bJ = if ((bE[z] == ""))
848848 then nil
849849 else split(bE[z], "_")
850850 let dw = parseIntValue(split(bE[A], "_")[B])
851851 let bl = ac(ad)
852852 let cq = bk(bl)
853853 let dx = split(cq[F], "_")
854854 let dy = split(cq[G], "_")
855855 let dz = if ((cq[H] == ""))
856856 then nil
857857 else split(cq[H], "_")
858858 let aN = ag(ah)
859859 let dA = aM(aN)
860860 let dB = split(dA[aJ], "_")
861861 let dC = split(dA[aK], "_")
862862 let dD = if ((dA[aL] == ""))
863863 then nil
864864 else split(dA[aL], "_")
865865 let bQ = {
866866 let au = dt
867867 let av = size(au)
868868 let aw = $Tuple12(nil, nil, nil, 0, 0, 0, 0, dx, bH, dB, p, false)
869869 func ax (ay,az) = if ((az >= av))
870870 then ay
871871 else bV(ay, au[az])
872872
873873 func aA (ay,az) = if ((az >= av))
874874 then ay
875875 else throw("List size exceeds 6")
876876
877877 aA(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6)
878878 }
879879 let bh = {
880880 let au = du
881881 let av = size(au)
882882 let aw = $Tuple12(nil, nil, nil, bQ._4, bQ._5, bQ._6, 0, dy, bI, dC, q, false)
883883 func bR (ay,az) = if ((az >= av))
884884 then ay
885885 else bV(ay, au[az])
886886
887887 func bS (ay,az) = if ((az >= av))
888888 then ay
889889 else throw("List size exceeds 6")
890890
891891 bS(bR(bR(bR(bR(bR(bR(aw, 0), 1), 2), 3), 4), 5), 6)
892892 }
893893 let aO = if ((size(dv) != 0))
894894 then {
895895 let au = dv
896896 let av = size(au)
897897 let aw = $Tuple12(nil, nil, nil, bh._4, bh._5, bh._6, 0, dz, bJ, dD, r, true)
898898 func bT (ay,az) = if ((az >= av))
899899 then ay
900900 else bV(ay, au[az])
901901
902902 func bU (ay,az) = if ((az >= av))
903903 then ay
904904 else throw("List size exceeds 50")
905905
906906 bU(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
907907 }
908908 else $Tuple12(bJ, dD, dz, bh._4, bh._5, bh._6, 0, dz, bJ, dD, r, true)
909909 let dE = aO._4
910910 let dF = if ((0 > (dw - dE)))
911911 then 0
912912 else (dw - dE)
913913 let dh = makeString_2C([bE[w], makeString(bQ._1, "_"), makeString(bh._1, "_"), makeString(aO._1, "_"), toString(dF)], ":")
914914 let dG = makeString_2C([makeString(bQ._2, "_"), makeString(bh._2, "_"), makeString(aO._2, "_")], ":")
915915 let dH = makeString_2C([cq[E], makeString(bQ._3, "_"), makeString(bh._3, "_"), makeString(aO._3, "_")], ":")
916916 let di = am(invoke(U, "saveWarehouse", [dh, ah], nil))
917917 let dI = am(invoke(U, "updateBackpack", [ad, dH], nil))
918918 let dk = [StringEntry(aN, dG)]
919919 let dJ = aO._5
920920 let dK = if ((dJ > 0))
921921 then {
922922 let dL = fraction(aO._5, aE, f)
923923 let dM = Y(dn)
924924 let dN = getString(U, dM)
925925 if (isDefined(dN))
926926 then (((dk :+ ScriptTransfer(dm, (aO._5 - (3 * dL)), b)) :+ ScriptTransfer(T, dL, b)) :+ ScriptTransfer(addressFromStringValue(value(dN)), dL, b))
927927 else ((dk :+ ScriptTransfer(dm, (aO._5 - (3 * dL)), b)) :+ ScriptTransfer(T, dL, b))
928928 }
929929 else dk
930930 let dO = aO._6
931931 let dP = if ((dO > 0))
932932 then if ((size(ci.payments) != 1))
933933 then throw("exactly 1 payment must be attached")
934934 else {
935935 let cy = ci.payments[0]
936936 let cz = cy.amount
937937 let cA = valueOrErrorMessage(cy.assetId, "WAVES can't be used as payment")
938938 if ((cA != b))
939939 then throw("USDT payments only!")
940940 else if ((cz != dO))
941941 then throw(("Payment needed is " + toString(dO)))
942942 else if ((aF > cz))
943943 then throw(("Payment should be at least " + toString(aF)))
944944 else {
945945 let dQ = fraction(aO._6, aE, f)
946946 let dM = Y(dr)
947947 let dN = getString(U, dM)
948948 if (isDefined(dN))
949949 then (((dK :+ ScriptTransfer(addressFromStringValue(dr), (aO._6 - (3 * dQ)), b)) :+ ScriptTransfer(T, dQ, b)) :+ ScriptTransfer(addressFromStringValue(value(dN)), dQ, b))
950950 else ((dK :+ ScriptTransfer(addressFromStringValue(dr), (aO._6 - (3 * dQ)), b)) :+ ScriptTransfer(T, dQ, b))
951951 }
952952 }
953953 else if ((size(ci.payments) != 0))
954954 then throw("No payments needed")
955955 else dK
956956 $Tuple2(dP, $Tuple3(co, di, dI))
957957 }
958958 }
959959 }
960960 }
961961 }
962962 }
963963
964964
965965
966966 @Callable(ci)
967967 func sellProductsToES (cm) = {
968968 let co = bm()
969969 if ((co == co))
970970 then if ((size(ci.payments) != 0))
971971 then throw("No payments needed")
972972 else {
973973 let ad = valueOrErrorMessage(getString(U, aa(toString(ci.caller))), "You don't have a duck staked")
974974 let cp = split(valueOrElse(getString(U, ae(ad)), l), "_")
975975 if ((cp[ak] != "A"))
976976 then throw(("Duck location type should be Airport, but is " + cp[ak]))
977977 else {
978978 let cq = bk(ac(ad))
979979 let cK = if ((cq[H] == ""))
980980 then nil
981981 else split(cq[H], "_")
982982 let dR = ai()
983983 let dS = getString(dR)
984984 let dT = if (isDefined(dS))
985985 then split(value(dS), "_")
986986 else nil
987987 func dU (bo,dV) = {
988988 let at = bo._1
989989 let cH = if ((size(cm) > at))
990990 then cm[at]
991991 else 0
992992 if ((0 > cH))
993993 then throw("Quantity cannot be negative")
994994 else {
995995 let aq = split(dV, "_")
996996 if ((size(aq) != (k + 3)))
997997 then throw(("Fatal: unknown recipe: " + dV))
998998 else {
999999 let dW = parseIntValue(aq[u])
10001000 let dX = (n * dW)
10011001 let dY = if ((size(dT) > at))
10021002 then parseIntValue(dT[at])
10031003 else 0
10041004 let dZ = (dX - dY)
10051005 if ((cH > dZ))
10061006 then throw(((("Warehouse can buy only " + toString(dZ)) + " of ") + r[at]))
10071007 else {
10081008 let ea = ap(aq)
1009- let eb = fraction((ea * o), m, 10)
1009+ let eb = fraction((ea * o), m, (10 * dW))
10101010 let ec = if ((size(cK) > at))
10111011 then parseIntValue(cK[at])
10121012 else 0
10131013 if ((cH > ec))
10141014 then throw(((("You have only " + toString(ec)) + " of ") + r[at]))
10151015 else $Tuple4((at + 1), (bo._2 + (eb * cH)), (bo._3 :+ toString((ec - cH))), (bo._4 :+ toString((dY + cH))))
10161016 }
10171017 }
10181018 }
10191019 }
10201020
10211021 let cu = {
10221022 let au = t
10231023 let av = size(au)
10241024 let aw = $Tuple4(0, 0, nil, nil)
10251025 func ax (ay,az) = if ((az >= av))
10261026 then ay
10271027 else dU(ay, au[az])
10281028
10291029 func aA (ay,az) = if ((az >= av))
10301030 then ay
10311031 else throw("List size exceeds 50")
10321032
10331033 aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
10341034 }
10351035 let dH = makeString_2C([cq[E], cq[F], cq[G], makeString(cu._3, "_")], ":")
10361036 let dI = am(invoke(U, "updateBackpack", [ad, dH], nil))
10371037 $Tuple2([StringEntry(dR, makeString(cu._4, "_")), ScriptTransfer(ci.caller, cu._2, b)], dI)
10381038 }
10391039 }
10401040 else throw("Strict value is not equal to itself.")
10411041 }
10421042
10431043
10441044
10451045 @Callable(ci)
10461046 func updateEsStorage (ed) = if ((ci.caller != U))
10471047 then throw("Permission denied")
10481048 else $Tuple2([StringEntry(ai(), ed)], ed)
10491049
10501050

github/deemru/w8io/169f3d6 
136.21 ms