tx · zecEs2AB1hhbQJDeDeEX9a2A4jQDwMwanF3Xv6msvPM

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.08100000 Waves

2023.08.06 16:41 [2698802] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "zecEs2AB1hhbQJDeDeEX9a2A4jQDwMwanF3Xv6msvPM", "fee": 8100000, "feeAssetId": null, "timestamp": 1691329280884, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4mx1kivd8Nmoq1doQZQWjjXcREdhvmCwCWCkFFkaoYn91LSdYDhpZabV6VDfG7XynFVCkbtwdNrA6tEuP3K3FRjF" ], "script": "base64:BgK2AQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgUKAwgICBIECgIICBIHCgUBAQEBARIDCgEBEgUKAwEBCBIDCgEIEgMKAQgSABIECgIIARIECgIIARIDCgEIEgMKAQgSABIDCgEI6QEBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMCD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIiOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXwkAzAgCAiI4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfCQDMCAICIjhfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8JAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzUwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfNzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgINbGFuZEFydFN0YXR1cwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAA9LU0FMTE9XWFBMRVZFTFMHAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAMDPJAMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAANwdWIBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAAhtZWRLaXRIcAkAzAgCAB4JAMwIAgA8CQDMCAIAeAUDbmlsABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICDGxhbmRUb0Fzc2V0XwUHbGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRbGFuZEJ5Q3VzdG9tTmFtZV8FBG5hbWUBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICHGluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcl8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMEdHlwZQdhc3NldElkCW93bmVyQWRkcgkAuQkCCQDMCAICImxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkCQDMCAIFCW93bmVyQWRkcgUDbmlsAgFfARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgpsYW5kT3duZXJfBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIABQVvbGRFcQoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCBQNhY2MJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAAAgE6CQCkAwEFBm5ld0FtdAUEdGFpbAoAAiRsCQC1CQIFBXBVc2VkAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUFb2xkRXEKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1YlVzZWQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBDnByb2RTdHJUb0J5dGVzAQdwcm9kU3RyBAVwTGlzdAMJAAACBQdwcm9kU3RyAgAFA25pbAkAtQkCBQdwcm9kU3RyAgFfCgEEdG9CVgIDYWNjBnJlY2lwZQQBagkAaQIJAMgBAQUDYWNjAAgEBGN1cnIDCQBmAgkAkAMBBQVwTGlzdAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBMaXN0BQFqAAAJAMsBAgUDYWNjCQCaAwEFBGN1cnIKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzABAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEdG9CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAQ5ieXRlc1RvUHJvZFN0cgECYnYKAQZmcm9tQlYCA2FjYwZyZWNpcGUEAWoJAJADAQUDYWNjBAFiCQDJAQIJAMoBAgUCYnYJAGgCAAgFAWoACAkAzQgCBQNhY2MJAKQDAQkAsQkBBQFiCQC5CQIKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZnJvbUJWAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICAV8BFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIJZHVja1N0YXRzBHJlcXMKAQVjaGVjawIDYWNjAWoDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHJlcXMFAWoJAJEDAgUJZHVja1N0YXRzBQFqCQACAQkArAICAhtSZXF1aXJlbWVudCBub3Qgc2F0aXNmaWVkOiAJAJEDAgUMcmVxdWlyZW1lbnRzBQFqBgoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNoZWNrAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEcmVxcwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBHJlcXMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQRyZXFzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2Vn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AGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1Jl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ZW0EA3docAMJAGYCCQCQAwEFCmN1cnJXaFByb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyV2hQcm9kBQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALkJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALkJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC1CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBEGV4cGVkaXRpb25Db21tb24EBmNhbGxlcgR0eElkB21lc3NhZ2UDc2lnBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBAVuZXdFcQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIFBmNhbGxlcgUEdHhJZAQCaWQICAUBZQJfMgJfMQkAlQoDCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFlAl8xCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAyOTkzMTMwNDcwAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDI5OTMxMzA0NzACXzEEBmR1Y2tJZAgFDSR0MDI5OTMxMzA0NzACXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzI4NDQzMzcxNQMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzI4NDQzMzcxNQJfMQQFYnBSZXMIBQ0kdDAzMjg0NDMzNzE1Al8yBAVsb2Z0TwgFDSR0MDMyODQ0MzM3MTUCXzMEBWxvZnRGCAUNJHQwMzI4NDQzMzcxNQJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADCQBnAgUIY3VyTGV2ZWwAAwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBASEBBQ9LU0FMTE9XWFBMRVZFTFMJAJQKAgUDbmlsAAAEBmx2bEtleQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkBAV4cEtleQkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFADCQEBIQEFD0tTQUxMT1dYUExFVkVMUwkAlAoCBQNuaWwAAAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkBQRhZGRyBQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJsKCQUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lCQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAmwoJBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQFBGFkZHIIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHBAZyZXN1bHQDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFBnJlc3VsdAUGcmVzdWx0BwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZCQBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMJAGkCBQZwaWVjZXMFBVNTSVpFAAEECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkBQdhZGRyZXNzBQlhcnRQaWVjZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzCQBpAgUGcGllY2VzBQVTU0laRQD///////////8BBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzQgCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUMcHJvbG9nQWN0aW9uAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQkA2AQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEJANgEAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQAAAggFAWYCXzQFC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEBW5ld0VxCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81CQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkDCQBmAggFAWYCXzEAAAgFAWYCXzQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAgFAWYCXzEJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCCAUBZgJfMQAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MLaWdub3JlZEl0ZW0EAW4IBQNhY2MCXzIEAXgD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bHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC1CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkAkQMCBQhtZWRLaXRIcAAABAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDNCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQxwcm9sb2dBY3Rpb24FC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24ICAUGcmVzdWx0Al8yAl8xAWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBEGV4cGVkaXRpb25Db21tb24ECAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzQgCBQZyZXN1bHQFDHByb2xvZ0FjdGlvbgFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3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AFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbgAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAAEBmNhbGxlcggFAWkGY2FsbGVyAwMDCQECIT0CBQZjYWxsZXIFC3dsZ0NvbnRyYWN0CQECIT0CBQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAcJAQIhPQIFBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0BwkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkAzAgCCQEGcHJvbG9nAQUBaQUDbmlsACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECD2NoZWNrVG91cm5hbWVudAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBARyZXFzCQEMZ2V0RHVja1N0YXRzAgUEdGhpcwULZHVja0Fzc2V0SWQECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQRyZXFzBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQRyZXFzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aABkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQ9leGl0VG91cm5hbWVudHMABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAAAALjsqBE=", "height": 2698802, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7eP6qJtzjdYUeyAN5hmAS6RjozUHGApTe6Gha7JhbH8G Next: ELN5oF1je9Nj8PavbF1FEGCVrP7yXsdqdoyDZ7YiEP7q Diff:
OldNewDifferences
5959 func z (b) = ("userFreePoints_" + b)
6060
6161
62-let A = 10000
63-
64-let B = 10000
65-
66-let C = 2000
67-
68-let D = 100000
69-
70-let E = 1000000
71-
72-let F = 5000000
73-
74-let G = 10000
75-
76-let H = 1000000
77-
78-let I = 1000000
79-
80-let J = 10000
81-
82-func K (L) = fraction(d, pow(L, 4, e, 4, 4, DOWN), c)
83-
84-
85-func M (N) = (100 + N)
86-
87-
88-func O (P,Q) = {
89- let R = K(Q)
90-[R, (f * (R - P))]
91- }
92-
93-
94-func S (T,r) = {
95- let U = split(valueOrElse(getString(T, s(r)), "0_0_0_0_0"), "_")
96- let V = valueOrElse(getInteger(T, u(r)), 0)
97- let W = valueOrElse(getInteger(T, q(r)), M(V))
98-[parseIntValue(U[h]), parseIntValue(U[i]), parseIntValue(U[j]), parseIntValue(U[k]), parseIntValue(U[l]), V, W]
99- }
100-
101-
102-let X = "LAND"
103-
104-let Y = "DUCK"
105-
106-let Z = "PRESALE"
107-
108-let aa = 6
109-
110-let ab = 3456000
111-
112-let ac = 86400000
113-
114-let ad = 10000000000
115-
116-let ae = "Africa_F_Africa"
117-
118-let af = 39637
119-
120-let ag = 10
121-
122-let ah = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
123-
124-let ai = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
125-
126-let aj = 10000000
127-
128-let ak = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
129-
130-let al = 6
131-
132-let am = 9
133-
134-let an = 10
135-
136-let ao = 10
137-
138-let ap = 0
139-
140-let aq = 1
141-
142-let ar = 2
143-
144-let as = 3
145-
146-let at = 4
147-
148-let au = 0
149-
150-let av = 1
151-
152-let aw = 2
153-
154-let ax = 3
155-
156-let ay = 0
157-
158-let az = 1
159-
160-let aA = 2
161-
162-let aB = 3
163-
164-func aC (b) = ("lastTxIdByUser_" + b)
165-
166-
167-func aD (aE) = ("nftOwner_" + aE)
168-
169-
170-func aF (aE) = ("landCustomNameByAssetId_" + aE)
171-
172-
173-func aG (aE) = ("stakedTime_" + aE)
174-
175-
176-func aH (aE) = ("infraLevel_" + aE)
177-
178-
179-func aI (aJ,aE) = makeString(["landArtStatus", aJ, aE], "_")
180-
181-
182-func aK (aL,aE,aM) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aL) + "_") + aE) + "_") + aM)
183-
184-
185-func aN (aO) = ("wareHouse_" + aO)
186-
187-
188-func aP (aE) = ("duckCustomNameByAssetId_" + aE)
189-
190-
191-func aQ (b) = ("accountCustomNameByAddr_" + b)
192-
193-
194-func aR (b) = ("accRefBy_" + b)
195-
196-
197-func aS (r) = ("onboardArtActivatedOnDuck_" + r)
198-
199-
200-func aT (b) = ("onboardArtActivatedDuckBy_" + b)
201-
202-
203-func aU (b) = ("accReferrals_" + b)
204-
205-
206-func aV (aE) = ("duckOwner_" + aE)
207-
208-
209-func aW (aM) = ("stakedDuckByOwner_" + aM)
210-
211-
212-func aX (r) = ("backPack_" + r)
213-
214-
215-func aY (r) = ("duckLocation_" + r)
216-
217-
218-func aZ () = "contractsBlocked"
219-
220-
221-func ba (bb) = ("%s%s__userGwlReleaseTime__" + bb)
222-
223-
224-func bc () = "emergencyWarehouseProducts"
225-
226-
227-let bd = 1
228-
229-let be = 2
230-
231-func bf (bg) = (parseIntValue(bg[al]) * aj)
232-
233-
234-let bh = false
235-
236-let bi = take(drop(this.bytes, 1), 1)
237-
238-let bj = {
239- let bk = bi
240- if ((base58'2W' == bk))
62+func A (r) = ("savedHealth_" + r)
63+
64+
65+func B (r) = ("savedLocation_" + r)
66+
67+
68+let C = 10000
69+
70+let D = 10000
71+
72+let E = 2000
73+
74+let F = 100000
75+
76+let G = 1000000
77+
78+let H = 5000000
79+
80+let I = 10000
81+
82+let J = 1000000
83+
84+let K = 1000000
85+
86+let L = 10000
87+
88+func M (N) = fraction(d, pow(N, 4, e, 4, 4, DOWN), c)
89+
90+
91+func O (P) = (100 + P)
92+
93+
94+func Q (R,S) = {
95+ let T = M(S)
96+[T, (f * (T - R))]
97+ }
98+
99+
100+func U (V,r) = {
101+ let W = split(valueOrElse(getString(V, s(r)), "0_0_0_0_0"), "_")
102+ let X = valueOrElse(getInteger(V, u(r)), 0)
103+ let Y = valueOrElse(getInteger(V, q(r)), O(X))
104+[parseIntValue(W[h]), parseIntValue(W[i]), parseIntValue(W[j]), parseIntValue(W[k]), parseIntValue(W[l]), X, Y]
105+ }
106+
107+
108+let Z = "LAND"
109+
110+let aa = "DUCK"
111+
112+let ab = "PRESALE"
113+
114+let ac = 6
115+
116+let ad = 3456000
117+
118+let ae = 86400000
119+
120+let af = 10000000000
121+
122+let ag = "Africa_F_Africa"
123+
124+let ah = 39637
125+
126+let ai = 10
127+
128+let aj = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
129+
130+let ak = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
131+
132+let al = 10000000
133+
134+let am = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
135+
136+let an = 6
137+
138+let ao = 9
139+
140+let ap = 10
141+
142+let aq = 10
143+
144+let ar = 0
145+
146+let as = 1
147+
148+let at = 2
149+
150+let au = 3
151+
152+let av = 4
153+
154+let aw = 0
155+
156+let ax = 1
157+
158+let ay = 2
159+
160+let az = 3
161+
162+let aA = 0
163+
164+let aB = 1
165+
166+let aC = 2
167+
168+let aD = 3
169+
170+func aE (b) = ("lastTxIdByUser_" + b)
171+
172+
173+func aF (aG) = ("nftOwner_" + aG)
174+
175+
176+func aH (aG) = ("landCustomNameByAssetId_" + aG)
177+
178+
179+func aI (aG) = ("stakedTime_" + aG)
180+
181+
182+func aJ (aG) = ("infraLevel_" + aG)
183+
184+
185+func aK (aL,aG) = makeString(["landArtStatus", aL, aG], "_")
186+
187+
188+func aM (aN,aG,aO) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aN) + "_") + aG) + "_") + aO)
189+
190+
191+func aP (aQ) = ("wareHouse_" + aQ)
192+
193+
194+func aR (aG) = ("duckCustomNameByAssetId_" + aG)
195+
196+
197+func aS (b) = ("accountCustomNameByAddr_" + b)
198+
199+
200+func aT (b) = ("accRefBy_" + b)
201+
202+
203+func aU (r) = ("onboardArtActivatedOnDuck_" + r)
204+
205+
206+func aV (b) = ("onboardArtActivatedDuckBy_" + b)
207+
208+
209+func aW (b) = ("accReferrals_" + b)
210+
211+
212+func aX (aG) = ("duckOwner_" + aG)
213+
214+
215+func aY (aO) = ("stakedDuckByOwner_" + aO)
216+
217+
218+func aZ (r) = ("backPack_" + r)
219+
220+
221+func ba (r) = ("duckLocation_" + r)
222+
223+
224+func bb () = "contractsBlocked"
225+
226+
227+func bc (bd) = ("%s%s__userGwlReleaseTime__" + bd)
228+
229+
230+func be () = "emergencyWarehouseProducts"
231+
232+
233+let bf = "%s__lastTourId"
234+
235+func bg (bh) = ("%s%d__tourStaticData__" + toString(bh))
236+
237+
238+func bi (bh) = ("%s%d__tourDynamicData__" + toString(bh))
239+
240+
241+let bj = 0
242+
243+let bk = 1
244+
245+func bl (bm,bh) = {
246+ let bn = split(valueOrErrorMessage(getString(bm, bg(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__")
247+ let bo = split(valueOrErrorMessage(getString(bm, bi(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__")
248+[bn, bo]
249+ }
250+
251+
252+let bp = 6
253+
254+let bq = 1
255+
256+let br = 0
257+
258+let bs = 1
259+
260+let bt = 2
261+
262+func bu (bv) = (parseIntValue(bv[an]) * al)
263+
264+
265+let bw = false
266+
267+let bx = take(drop(this.bytes, 1), 1)
268+
269+let by = {
270+ let bz = bx
271+ if ((base58'2W' == bz))
241272 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
242- else if ((base58'2T' == bk))
273+ else if ((base58'2T' == bz))
243274 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
244275 else throw("Unknown chain")
245276 }
246277
247-let bl = {
248- let bk = bi
249- if ((base58'2W' == bk))
278+let bA = {
279+ let bz = bx
280+ if ((base58'2W' == bz))
250281 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
251- else if ((base58'2T' == bk))
282+ else if ((base58'2T' == bz))
252283 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
253284 else throw("Unknown chain")
254285 }
255286
256-let bm = {
257- let bk = bi
258- if ((base58'2W' == bk))
287+let bB = {
288+ let bz = bx
289+ if ((base58'2W' == bz))
259290 then 10000000000
260- else if ((base58'2T' == bk))
291+ else if ((base58'2T' == bz))
261292 then 100000000
262293 else throw("Unknown chain")
263294 }
264295
265-let bn = {
266- let bk = bi
267- if ((base58'2W' == bk))
296+let bC = {
297+ let bz = bx
298+ if ((base58'2W' == bz))
268299 then 600000
269- else if ((base58'2T' == bk))
300+ else if ((base58'2T' == bz))
270301 then 60000
271302 else throw("Unknown chain")
272303 }
273304
274-let bo = "__"
275-
276-let bp = 1000000
277-
278-let bq = 100000000
279-
280-let br = 25
281-
282-let bs = 100
283-
284-let bt = 225
285-
286-let bu = 400
287-
288-let bv = 625
289-
290-let bw = [0, 1, 2, 3, 4, 5]
291-
292-func bx (by,bz) = valueOrErrorMessage(getString(by, bz), makeString(["mandatory ", toString(by), ".", bz, " is not defined"], ""))
293-
294-
295-let bA = 1
296-
297-let bB = 2
298-
299-let bC = 3
300-
301-let bD = 4
302-
303-let bE = 7
304-
305-func bF () = "%s__restConfig"
306-
307-
308-func bG () = "%s__restAddr"
309-
310-
311-func bH (bI) = split_4C(bx(bI, bF()), bo)
312-
313-
314-func bJ (bK,bL) = valueOrErrorMessage(addressFromString(bK[bL]), ("Rest cfg doesn't contain address at index " + toString(bL)))
315-
316-
317-let bM = addressFromStringValue(valueOrElse(getString(this, bG()), bl))
318-
319-let bK = bH(bM)
320-
321-let T = bJ(bK, bA)
322-
323-let bN = bJ(bK, bB)
324-
325-let bO = bJ(bK, bC)
326-
327-let bP = bJ(bK, bD)
328-
329-let bQ = bJ(bK, bE)
330-
331-let bR = 0
332-
333-let bS = 1
334-
335-let bT = 2
336-
337-let bU = 3
338-
339-let bV = 2
340-
341-func bW (by) = ("finishBlockForAddr_" + by)
342-
343-
344-func bX () = "resTypesProportions"
345-
346-
347-func bY (aM) = ("stakedLandsByOwner_" + aM)
348-
349-
350-func bZ (aM) = ("stakedPiecesByOwner_" + aM)
351-
352-
353-func ca (cb) = {
354- let bk = cb
355- if ($isInstanceOf(bk, "String"))
305+let bD = "__"
306+
307+let bE = 1000000
308+
309+let bF = 100000000
310+
311+let bG = 25
312+
313+let bH = 100
314+
315+let bI = 225
316+
317+let bJ = 400
318+
319+let bK = 625
320+
321+let bL = [0, 1, 2, 3, 4, 5]
322+
323+func bM (bN,bO) = valueOrErrorMessage(getString(bN, bO), makeString(["mandatory ", toString(bN), ".", bO, " is not defined"], ""))
324+
325+
326+let bP = 1
327+
328+let bQ = 2
329+
330+let bR = 3
331+
332+let bS = 4
333+
334+let bT = 7
335+
336+func bU () = "%s__restConfig"
337+
338+
339+func bV () = "%s__restAddr"
340+
341+
342+func bW (bX) = split_4C(bM(bX, bU()), bD)
343+
344+
345+func bY (bZ,ca) = valueOrErrorMessage(addressFromString(bZ[ca]), ("Rest cfg doesn't contain address at index " + toString(ca)))
346+
347+
348+let cb = addressFromStringValue(valueOrElse(getString(this, bV()), bA))
349+
350+let bZ = bW(cb)
351+
352+let V = bY(bZ, bP)
353+
354+let cc = bY(bZ, bQ)
355+
356+let cd = bY(bZ, bR)
357+
358+let ce = bY(bZ, bS)
359+
360+let cf = bY(bZ, bT)
361+
362+let cg = 0
363+
364+let ch = 1
365+
366+let ci = 2
367+
368+let cj = 3
369+
370+let ck = 2
371+
372+func cl (bN) = ("finishBlockForAddr_" + bN)
373+
374+
375+func cm () = "resTypesProportions"
376+
377+
378+func cn (aO) = ("stakedLandsByOwner_" + aO)
379+
380+
381+func co (aO) = ("stakedPiecesByOwner_" + aO)
382+
383+
384+func cp (cq) = {
385+ let bz = cq
386+ if ($isInstanceOf(bz, "String"))
356387 then {
357- let cc = bk
358- cc
388+ let cr = bz
389+ cr
359390 }
360391 else throw("fail to cast into String")
361392 }
362393
363394
364-func cd (cb) = {
365- let bk = cb
366- if ($isInstanceOf(bk, "Int"))
395+func cs (cq) = {
396+ let bz = cq
397+ if ($isInstanceOf(bz, "Int"))
367398 then {
368- let ce = bk
369- ce
399+ let ct = bz
400+ ct
370401 }
371402 else throw("fail to cast into Int")
372403 }
373404
374405
375-func cf (cg) = {
376- let bk = cg
377- if (("S" == bk))
378- then br
379- else if (("M" == bk))
380- then bs
381- else if (("L" == bk))
382- then bt
383- else if (("XL" == bk))
384- then bu
385- else if (("XXL" == bk))
386- then bv
406+func cu (cv) = {
407+ let bz = cv
408+ if (("S" == bz))
409+ then bG
410+ else if (("M" == bz))
411+ then bH
412+ else if (("L" == bz))
413+ then bI
414+ else if (("XL" == bz))
415+ then bJ
416+ else if (("XXL" == bz))
417+ then bK
387418 else throw("Unknown land size")
388419 }
389420
390421
391-func ch (cc) = isDefined(parseInt(cc))
392-
393-
394-let ci = {
395- let bk = bi
396- if ((base58'2W' == bk))
422+func cw (cr) = isDefined(parseInt(cr))
423+
424+
425+let cx = {
426+ let bz = bx
427+ if ((base58'2W' == bz))
397428 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
398- else if ((base58'2T' == bk))
429+ else if ((base58'2T' == bz))
399430 then this
400431 else throw("Unknown chain")
401432 }
402433
403-let cj = {
404- let bk = bi
405- if ((base58'2W' == bk))
434+let cy = {
435+ let bz = bx
436+ if ((base58'2W' == bz))
406437 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
407- else if ((base58'2T' == bk))
438+ else if ((base58'2T' == bz))
408439 then this
409440 else throw("Unknown chain")
410441 }
411442
412-let ck = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
413-
414-let cl = [30, 60, 120]
415-
416-let cm = 300000
417-
418-let cn = 5000000
419-
420-let co = 50
421-
422-let cp = 10000000
423-
424-let cq = {
425- let bk = bi
426- if ((base58'2W' == bk))
443+let cz = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
444+
445+let cA = [30, 60, 120]
446+
447+let cB = 300000
448+
449+let cC = 5000000
450+
451+let cD = 50
452+
453+let cE = 10000000
454+
455+let cF = {
456+ let bz = bx
457+ if ((base58'2W' == bz))
427458 then 252289527462
428- else if ((base58'2T' == bk))
459+ else if ((base58'2T' == bz))
429460 then 2522895274
430461 else throw("Unknown chain")
431462 }
432463
433-let cr = {
434- let bk = bi
435- if ((base58'2W' == bk))
464+let cG = {
465+ let bz = bx
466+ if ((base58'2W' == bz))
436467 then 250000000
437- else if ((base58'2T' == bk))
468+ else if ((base58'2T' == bz))
438469 then 250000000
439470 else throw("Unknown chain")
440471 }
441472
442-let cs = toBigInt(5)
443-
444-let ct = toBigInt(20)
445-
446-let cu = toBigInt((20 * 20))
447-
448-let cv = toBigInt(((20 * 20) * 20))
449-
450-let cw = toBigInt((((20 * 20) * 20) * 20))
451-
452-let cx = toBigInt(((((20 * 20) * 20) * 20) * 20))
453-
454-let cy = 500
455-
456-func cz () = "nextLandNum"
457-
458-
459-func cA (cB) = ("landToAsset_" + cB)
460-
461-
462-func cC (cD) = ("landByCustomName_" + cD)
463-
464-
465-func cE (aE,aM) = ((("infraLevelByAssetIdAndOwner_" + aE) + "_") + aM)
466-
467-
468-func cF (aJ,aE,aM) = makeString(["landArtStatusByTypeAssetIdAndOwner", aJ, aE, aM], "_")
469-
470-
471-func cG (cB) = ("landOwner_" + cB)
472-
473-
474-func cH (cD) = ("duckByCustomName_" + cD)
475-
476-
477-func cI (cD) = ("accountByCustomName_" + cD)
478-
479-
480-func cJ () = "oldiesList"
481-
482-
483-let cK = 0
484-
485-let cL = 1
486-
487-let cM = 2
488-
489-let cN = 0
490-
491-let cO = 5
492-
493-let cP = 6
494-
495-let cQ = 7
496-
497-func cR (cB,cg) = ((X + cB) + cg)
498-
499-
500-func cS (cT,cU) = {
501- let cV = (((((cU[0] + cU[1]) + cU[2]) + cU[3]) + cU[4]) + cU[5])
502- if ((0 >= cV))
473+let cH = toBigInt(5)
474+
475+let cI = toBigInt(20)
476+
477+let cJ = toBigInt((20 * 20))
478+
479+let cK = toBigInt(((20 * 20) * 20))
480+
481+let cL = toBigInt((((20 * 20) * 20) * 20))
482+
483+let cM = toBigInt(((((20 * 20) * 20) * 20) * 20))
484+
485+let cN = 500
486+
487+func cO () = "nextLandNum"
488+
489+
490+func cP (cQ) = ("landToAsset_" + cQ)
491+
492+
493+func cR (cS) = ("landByCustomName_" + cS)
494+
495+
496+func cT (aG,aO) = ((("infraLevelByAssetIdAndOwner_" + aG) + "_") + aO)
497+
498+
499+func cU (aL,aG,aO) = makeString(["landArtStatusByTypeAssetIdAndOwner", aL, aG, aO], "_")
500+
501+
502+func cV (cQ) = ("landOwner_" + cQ)
503+
504+
505+func cW (cS) = ("duckByCustomName_" + cS)
506+
507+
508+func cX (cS) = ("accountByCustomName_" + cS)
509+
510+
511+func cY () = "oldiesList"
512+
513+
514+let cZ = 0
515+
516+let da = 1
517+
518+let db = 2
519+
520+let dc = 0
521+
522+let dd = 5
523+
524+let de = 6
525+
526+let df = 7
527+
528+func dg (cQ,cv) = ((Z + cQ) + cv)
529+
530+
531+func dh (di,dj) = {
532+ let dk = (((((dj[0] + dj[1]) + dj[2]) + dj[3]) + dj[4]) + dj[5])
533+ if ((0 >= dk))
503534 then throw("Zero weights sum")
504535 else {
505- let cW = fraction(cT, bp, cV)
506- func cX (cY,cZ) = (cY :+ fraction(cZ, cW, bp))
507-
508- let da = cU
509- let db = size(da)
510- let dc = nil
511- func dd (de,df) = if ((df >= db))
512- then de
513- else cX(de, da[df])
514-
515- func dg (de,df) = if ((df >= db))
516- then de
536+ let dl = fraction(di, bE, dk)
537+ func dm (dn,do) = (dn :+ fraction(do, dl, bE))
538+
539+ let dp = dj
540+ let dq = size(dp)
541+ let dr = nil
542+ func ds (dt,du) = if ((du >= dq))
543+ then dt
544+ else dm(dt, dp[du])
545+
546+ func dv (dt,du) = if ((du >= dq))
547+ then dt
517548 else throw("List size exceeds 6")
518549
519- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
520- }
521- }
522-
523-
524-func dh (cT) = {
525- let di = split(value(getString(bX())), "_")
526- if ((size(di) != aa))
550+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
551+ }
552+ }
553+
554+
555+func dw (di) = {
556+ let dx = split(value(getString(cm())), "_")
557+ if ((size(dx) != ac))
527558 then throw("Wrong proportions data")
528559 else {
529- let dj = [parseIntValue(di[0]), parseIntValue(di[1]), parseIntValue(di[2]), parseIntValue(di[3]), parseIntValue(di[4]), parseIntValue(di[5])]
530- cS(cT, dj)
531- }
532- }
533-
534-
535-func dk (dl,dm,dn) = {
536- let do = dh(dn)
537- func dp (cY,bL) = {
538- let dq = (parseIntValue(dm[bL]) - do[bL])
539- if ((0 > dq))
540- then throw(((((("Not enough material idx=" + toString(bL)) + ", you have ") + dm[bL]) + ", but need ") + toString(do[bL])))
541- else (cY :+ toString(dq))
542- }
543-
544- if (dl)
560+ let dy = [parseIntValue(dx[0]), parseIntValue(dx[1]), parseIntValue(dx[2]), parseIntValue(dx[3]), parseIntValue(dx[4]), parseIntValue(dx[5])]
561+ dh(di, dy)
562+ }
563+ }
564+
565+
566+func dz (dA,dB,dC) = {
567+ let dD = dw(dC)
568+ func dE (dn,ca) = {
569+ let dF = (parseIntValue(dB[ca]) - dD[ca])
570+ if ((0 > dF))
571+ then throw(((((("Not enough material idx=" + toString(ca)) + ", you have ") + dB[ca]) + ", but need ") + toString(dD[ca])))
572+ else (dn :+ toString(dF))
573+ }
574+
575+ if (dA)
545576 then {
546- let da = bw
547- let db = size(da)
548- let dc = nil
549- func dd (de,df) = if ((df >= db))
550- then de
551- else dp(de, da[df])
552-
553- func dg (de,df) = if ((df >= db))
554- then de
577+ let dp = bL
578+ let dq = size(dp)
579+ let dr = nil
580+ func ds (dt,du) = if ((du >= dq))
581+ then dt
582+ else dE(dt, dp[du])
583+
584+ func dv (dt,du) = if ((du >= dq))
585+ then dt
555586 else throw("List size exceeds 6")
556587
557- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
558- }
559- else dm
560- }
561-
562-
563-func dr (ds,dt) = if ((dt == ""))
564- then ds
588+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
589+ }
590+ else dB
591+ }
592+
593+
594+func dG (dH,dI) = if ((dI == ""))
595+ then dH
565596 else {
566- func du (cY,dv) = {
567- let dw = split(dv, ",")
568- if ((size(dw) != 2))
597+ func dJ (dn,dK) = {
598+ let dL = split(dK, ",")
599+ if ((size(dL) != 2))
569600 then throw("Incorrect format, should be index,amount")
570601 else {
571- let bL = parseIntValue(dw[0])
572- if (if ((0 > bL))
602+ let ca = parseIntValue(dL[0])
603+ if (if ((0 > ca))
573604 then true
574- else (bL >= size(ak)))
605+ else (ca >= size(am)))
575606 then throw("Unknown product idx")
576607 else {
577- let dx = parseIntValue(dw[1])
578- let dy = split(cY, (dw[0] + ":"))
579- if ((size(dy) != 2))
580- then throw((("You don't have " + ah[bL]) + " equipped"))
608+ let dM = parseIntValue(dL[1])
609+ let dN = split(dn, (dL[0] + ":"))
610+ if ((size(dN) != 2))
611+ then throw((("You don't have " + aj[ca]) + " equipped"))
581612 else {
582- let dz = dy[1]
583- let dA = if (ch(take(drop(dz, 1), 1)))
613+ let dO = dN[1]
614+ let dP = if (cw(take(drop(dO, 1), 1)))
584615 then 2
585616 else 1
586- let dB = parseIntValue(take(dz, dA))
587- let dC = drop(dz, dA)
588- let dD = if ((dB >= dx))
589- then (dB - dx)
590- else throw(((((("You equipped " + toString(dB)) + " of ") + ah[bL]) + ", but tried to use ") + toString(dx)))
591- ((((dy[0] + dw[0]) + ":") + toString(dD)) + dC)
617+ let dQ = parseIntValue(take(dO, dP))
618+ let dR = drop(dO, dP)
619+ let dS = if ((dQ >= dM))
620+ then (dQ - dM)
621+ else throw(((((("You equipped " + toString(dQ)) + " of ") + aj[ca]) + ", but tried to use ") + toString(dM)))
622+ ((((dN[0] + dL[0]) + ":") + toString(dS)) + dR)
592623 }
593624 }
594625 }
595626 }
596627
597- let da = split(dt, "_")
598- let db = size(da)
599- let dc = ds
600- func dd (de,df) = if ((df >= db))
601- then de
602- else du(de, da[df])
603-
604- func dg (de,df) = if ((df >= db))
605- then de
628+ let dp = split(dI, "_")
629+ let dq = size(dp)
630+ let dr = dH
631+ func ds (dt,du) = if ((du >= dq))
632+ then dt
633+ else dJ(dt, dp[du])
634+
635+ func dv (dt,du) = if ((du >= dq))
636+ then dt
606637 else throw("List size exceeds 10")
607638
608- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
609- }
610-
611-
612-func dE (dF) = {
613- let dG = if ((dF == ""))
639+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
640+ }
641+
642+
643+func dT (dU) = {
644+ let dV = if ((dU == ""))
614645 then nil
615- else split(dF, "_")
616- func dH (cY,bg) = {
617- let dI = (size(cY) / 8)
618- let dB = if ((size(dG) > dI))
619- then parseIntValue(dG[dI])
646+ else split(dU, "_")
647+ func dW (dn,bv) = {
648+ let dX = (size(dn) / 8)
649+ let dQ = if ((size(dV) > dX))
650+ then parseIntValue(dV[dX])
620651 else 0
621- (cY + toBytes(dB))
622- }
623-
624- let da = ak
625- let db = size(da)
626- let dc = base58''
627- func dd (de,df) = if ((df >= db))
628- then de
629- else dH(de, da[df])
630-
631- func dg (de,df) = if ((df >= db))
632- then de
652+ (dn + toBytes(dQ))
653+ }
654+
655+ let dp = am
656+ let dq = size(dp)
657+ let dr = base58''
658+ func ds (dt,du) = if ((du >= dq))
659+ then dt
660+ else dW(dt, dp[du])
661+
662+ func dv (dt,du) = if ((du >= dq))
663+ then dt
633664 else throw("List size exceeds 50")
634665
635- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
636- }
637-
638-
639-func dJ (dK) = {
640- func dL (cY,bg) = {
641- let dI = size(cY)
642- let dM = take(drop(dK, (8 * dI)), 8)
643- (cY :+ toString(toInt(dM)))
666+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
667+ }
668+
669+
670+func dY (dZ) = {
671+ func ea (dn,bv) = {
672+ let dX = size(dn)
673+ let eb = take(drop(dZ, (8 * dX)), 8)
674+ (dn :+ toString(toInt(eb)))
644675 }
645676
646677 makeString({
647- let da = ak
648- let db = size(da)
649- let dc = nil
650- func dd (de,df) = if ((df >= db))
651- then de
652- else dL(de, da[df])
653-
654- func dg (de,df) = if ((df >= db))
655- then de
678+ let dp = am
679+ let dq = size(dp)
680+ let dr = nil
681+ func ds (dt,du) = if ((du >= dq))
682+ then dt
683+ else ea(dt, dp[du])
684+
685+ func dv (dt,du) = if ((du >= dq))
686+ then dt
656687 else throw("List size exceeds 50")
657688
658- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
689+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
659690 }, "_")
660691 }
661692
662693
663-func dN (dO,dP) = {
664- func dQ (cY,dI) = if ((parseIntValue(dP[dI]) > dO[dI]))
665- then throw(("Requirement not satisfied: " + g[dI]))
694+func ec (ed,ee) = {
695+ func ef (dn,dX) = if ((parseIntValue(ee[dX]) > ed[dX]))
696+ then throw(("Requirement not satisfied: " + g[dX]))
666697 else true
667698
668- let da = [0, 1, 2, 3, 4, 5, 6]
669- let db = size(da)
670- let dc = false
671- func dd (de,df) = if ((df >= db))
672- then de
673- else dQ(de, da[df])
674-
675- func dg (de,df) = if ((df >= db))
676- then de
699+ let dp = [0, 1, 2, 3, 4, 5, 6]
700+ let dq = size(dp)
701+ let dr = false
702+ func ds (dt,du) = if ((du >= dq))
703+ then dt
704+ else ef(dt, dp[du])
705+
706+ func dv (dt,du) = if ((du >= dq))
707+ then dt
677708 else throw("List size exceeds 7")
678709
679- dg(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7)
680- }
681-
682-
683-func dR (dS,dG,dT,dU,dV,dW,dO) = {
684- let dw = split(dS, ":")
685- if ((size(dw) != 2))
710+ dv(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7)
711+ }
712+
713+
714+func eg (eh,dV,ei,ej,ek,el,ed) = {
715+ let dL = split(eh, ":")
716+ if ((size(dL) != 2))
686717 then throw("Incorrect format, should be index:amount")
687- else if (if (!(dT))
688- then (size(dw[0]) != 2)
718+ else if (if (!(ei))
719+ then (size(dL[0]) != 2)
689720 else false)
690721 then throw("Product idx should be 2 digits, zero padded")
691722 else {
692- let dX = parseIntValue(dw[0])
693- let dY = parseIntValue(dw[1])
694- if (if ((0 > dX))
723+ let em = parseIntValue(dL[0])
724+ let en = parseIntValue(dL[1])
725+ if (if ((0 > em))
695726 then true
696- else (dX >= size(ak)))
727+ else (em >= size(am)))
697728 then throw("Unknown product idx")
698- else if ((0 > dY))
729+ else if ((0 > en))
699730 then throw("Count can't be negative")
700- else if ((dY > p))
701- then throw(((("Can't put more than " + toString(p)) + " of ") + ah[dX]))
702- else if ((dY == 0))
703- then $Tuple2(dG, false)
731+ else if ((en > p))
732+ then throw(((("Can't put more than " + toString(p)) + " of ") + aj[em]))
733+ else if ((en == 0))
734+ then $Tuple2(dV, false)
704735 else {
705- let dZ = take(dG, (8 * dX))
706- let dB = toInt(take(drop(dG, (8 * dX)), 8))
707- let dC = drop(dG, (8 * (dX + 1)))
708- let bg = split(ak[dX], "_")
709- if (if (!(dT))
710- then (dY > dB)
736+ let eo = take(dV, (8 * em))
737+ let dQ = toInt(take(drop(dV, (8 * em)), 8))
738+ let dR = drop(dV, (8 * (em + 1)))
739+ let bv = split(am[em], "_")
740+ if (if (!(ei))
741+ then (en > dQ)
711742 else false)
712- then throw(((((("You have " + toString(dB)) + " of ") + ah[dX]) + ", but tried to use ") + toString(dY)))
743+ then throw(((((("You have " + toString(dQ)) + " of ") + aj[em]) + ", but tried to use ") + toString(en)))
713744 else {
714- let ea = if (if (!(dT))
715- then dN(dO, split(bg[am], ","))
745+ let ep = if (if (!(ei))
746+ then ec(ed, split(bv[ao], ","))
716747 else false)
717748 then {
718- let eb = bg[an]
719- if ((eb == ""))
749+ let eq = bv[ap]
750+ if ((eq == ""))
720751 then throw("Item cannot be equipped")
721752 else {
722- let ec = parseIntValue(eb)
723- let ed = (ec / 100)
724- if ((dU != ed))
753+ let er = parseIntValue(eq)
754+ let es = (er / 100)
755+ if ((ej != es))
725756 then throw("Segment incompatible")
726757 else {
727- let ee = ((ec % 100) / 10)
728- if ((dV != ee))
758+ let et = ((er % 100) / 10)
759+ if ((ek != et))
729760 then throw("Slot incompatible")
730761 else {
731- let ef = (ec % 10)
732- if (if ((dW != 0))
733- then (ef > 1)
762+ let eu = (er % 10)
763+ if (if ((el != 0))
764+ then (eu > 1)
734765 else false)
735766 then throw("Big items should occupy slot 0")
736- else (ef > 1)
767+ else (eu > 1)
737768 }
738769 }
739770 }
740771 }
741772 else false
742- $Tuple2(((dZ + toBytes((dB + (if (dT)
743- then dY
744- else -(dY))))) + dC), ea)
773+ $Tuple2(((eo + toBytes((dQ + (if (ei)
774+ then en
775+ else -(en))))) + dR), ep)
745776 }
746777 }
747778 }
748779 }
749780
750781
751-func eg (eh,ei,dT,dU,dV,dP) = if ((eh != ""))
782+func ev (ew,ex,ei,ej,ek,ee) = if ((ew != ""))
752783 then {
753- let ej = split(eh, ",")
754- if ((size(ej) > o))
784+ let ey = split(ew, ",")
785+ if ((size(ey) > o))
755786 then throw("Wrong slots format")
756787 else {
757- let ek = ej[0]
758- let el = if ((size(ej) > 1))
759- then ej[1]
788+ let ez = ey[0]
789+ let eA = if ((size(ey) > 1))
790+ then ey[1]
760791 else ""
761- if (if ((ek == ""))
762- then (el == "")
792+ if (if ((ez == ""))
793+ then (eA == "")
763794 else false)
764- then ei
795+ then ex
765796 else {
766- let em = if ((ek != ""))
767- then dR(ek, ei, dT, dU, dV, 0, dP)
768- else $Tuple2(ei, false)
769- if ((el != ""))
770- then if (em._2)
797+ let eB = if ((ez != ""))
798+ then eg(ez, ex, ei, ej, ek, 0, ee)
799+ else $Tuple2(ex, false)
800+ if ((eA != ""))
801+ then if (eB._2)
771802 then throw("Big item already occupies slot")
772- else dR(el, em._1, dT, dU, dV, 1, dP)._1
773- else em._1
803+ else eg(eA, eB._1, ei, ej, ek, 1, ee)._1
804+ else eB._1
774805 }
775806 }
776807 }
777- else ei
778-
779-
780-func en (eo,ep,dT,dP) = {
781- func dU (cY,eq) = {
782- let dI = cY._1
783- let dV = split(eq, ";")
784- if ((size(dV) != n))
808+ else ex
809+
810+
811+func eC (eD,eE,ei,ee) = {
812+ func ej (dn,eF) = {
813+ let dX = dn._1
814+ let ek = split(eF, ";")
815+ if ((size(ek) != n))
785816 then throw("Wrong segment format")
786817 else {
787- let er = dV[0]
788- let es = dV[1]
789- if (if ((er == ""))
790- then (es == "")
818+ let eG = ek[0]
819+ let eH = ek[1]
820+ if (if ((eG == ""))
821+ then (eH == "")
791822 else false)
792- then $Tuple2((dI + 1), cY._2)
823+ then $Tuple2((dX + 1), dn._2)
793824 else {
794- let et = eg(er, cY._2, dT, dI, 0, dP)
795- $Tuple2((dI + 1), eg(es, et, dT, dI, 1, dP))
825+ let eI = ev(eG, dn._2, ei, dX, 0, ee)
826+ $Tuple2((dX + 1), ev(eH, eI, ei, dX, 1, ee))
796827 }
797828 }
798829 }
799830
800-( let da = eo
801- let db = size(da)
802- let dc = $Tuple2(0, ep)
803- func dd (de,df) = if ((df >= db))
804- then de
805- else dU(de, da[df])
806-
807- func dg (de,df) = if ((df >= db))
808- then de
831+( let dp = eD
832+ let dq = size(dp)
833+ let dr = $Tuple2(0, eE)
834+ func ds (dt,du) = if ((du >= dq))
835+ then dt
836+ else ej(dt, dp[du])
837+
838+ func dv (dt,du) = if ((du >= dq))
839+ then dt
809840 else throw("List size exceeds 6")
810841
811- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6))._2
812- }
813-
814-
815-func eu (ev,ew,ex,ey) = if ((size(ev) != aa))
842+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6))._2
843+ }
844+
845+
846+func eJ (eK,eL,eM,eN) = if ((size(eK) != ac))
816847 then throw("Wrong proportions data")
817848 else {
818- func ez (cY,eA) = {
819- let dq = (parseIntValue(ev[eA]) + ((ey * ew[eA]) * ex))
820- if ((0 > dq))
821- then throw(((((((("Panic! Pieces of type=" + toString(eA)) + ", sign=") + toString(ey)) + ", terrainCounts[i]=") + toString(ew[eA])) + ", landSizeIndex=") + toString(ex)))
822- else (cY :+ toString(dq))
823- }
824-
825- let da = bw
826- let db = size(da)
827- let dc = nil
828- func dd (de,df) = if ((df >= db))
829- then de
830- else ez(de, da[df])
831-
832- func dg (de,df) = if ((df >= db))
833- then de
849+ func eO (dn,eP) = {
850+ let dF = (parseIntValue(eK[eP]) + ((eN * eL[eP]) * eM))
851+ if ((0 > dF))
852+ then throw(((((((("Panic! Pieces of type=" + toString(eP)) + ", sign=") + toString(eN)) + ", terrainCounts[i]=") + toString(eL[eP])) + ", landSizeIndex=") + toString(eM)))
853+ else (dn :+ toString(dF))
854+ }
855+
856+ let dp = bL
857+ let dq = size(dp)
858+ let dr = nil
859+ func ds (dt,du) = if ((du >= dq))
860+ then dt
861+ else eO(dt, dp[du])
862+
863+ func dv (dt,du) = if ((du >= dq))
864+ then dt
834865 else throw("List size exceeds 6")
835866
836- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
837- }
838-
839-
840-func eB (ew,ex,ey) = {
841- let ev = split(valueOrElse(getString(bX()), "0_0_0_0_0_0"), "_")
842- makeString(eu(ev, ew, ex, ey), "_")
843- }
844-
845-
846-func eC (eD) = [(size(split(eD, "A")) - 1), (size(split(eD, "B")) - 1), (size(split(eD, "C")) - 1), (size(split(eD, "D")) - 1), (size(split(eD, "E")) - 1), (size(split(eD, "F")) - 1)]
847-
848-
849-func eE (eF,ew,eG,ex,eH) = {
850- func eI (cY,eA) = {
851- let eJ = ((fraction(eG, eH, ac) * ew[eA]) * ex)
852- (cY :+ toString((parseIntValue(eF[eA]) + eJ)))
853- }
854-
855- let dj = {
856- let da = bw
857- let db = size(da)
858- let dc = nil
859- func dd (de,df) = if ((df >= db))
860- then de
861- else eI(de, da[df])
862-
863- func dg (de,df) = if ((df >= db))
864- then de
867+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
868+ }
869+
870+
871+func eQ (eL,eM,eN) = {
872+ let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_")
873+ makeString(eJ(eK, eL, eM, eN), "_")
874+ }
875+
876+
877+func eR (eS) = [(size(split(eS, "A")) - 1), (size(split(eS, "B")) - 1), (size(split(eS, "C")) - 1), (size(split(eS, "D")) - 1), (size(split(eS, "E")) - 1), (size(split(eS, "F")) - 1)]
878+
879+
880+func eT (eU,eL,eV,eM,eW) = {
881+ func eX (dn,eP) = {
882+ let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM)
883+ (dn :+ toString((parseIntValue(eU[eP]) + eY)))
884+ }
885+
886+ let dy = {
887+ let dp = bL
888+ let dq = size(dp)
889+ let dr = nil
890+ func ds (dt,du) = if ((du >= dq))
891+ then dt
892+ else eX(dt, dp[du])
893+
894+ func dv (dt,du) = if ((du >= dq))
895+ then dt
865896 else throw("List size exceeds 6")
866897
867- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
868- }
869- makeString(dj, "_")
870- }
871-
872-
873-func eK (ew,eG,ex,eH) = {
874- func eI (cY,eA) = {
875- let eJ = ((fraction(eG, eH, ac) * ew[eA]) * ex)
876- $Tuple2((cY._1 :+ eJ), (cY._2 + eJ))
877- }
878-
879- let da = bw
880- let db = size(da)
881- let dc = $Tuple2(nil, 0)
882- func dd (de,df) = if ((df >= db))
883- then de
884- else eI(de, da[df])
885-
886- func dg (de,df) = if ((df >= db))
887- then de
898+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
899+ }
900+ makeString(dy, "_")
901+ }
902+
903+
904+func eZ (eL,eV,eM,eW) = {
905+ func eX (dn,eP) = {
906+ let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM)
907+ $Tuple2((dn._1 :+ eY), (dn._2 + eY))
908+ }
909+
910+ let dp = bL
911+ let dq = size(dp)
912+ let dr = $Tuple2(nil, 0)
913+ func ds (dt,du) = if ((du >= dq))
914+ then dt
915+ else eX(dt, dp[du])
916+
917+ func dv (dt,du) = if ((du >= dq))
918+ then dt
888919 else throw("List size exceeds 6")
889920
890- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
891- }
892-
893-
894-func eL (eM,eN,eO,eP) = {
895- let eQ = eO._1
896- let eR = eO._2
897- if ((eR == 0))
898- then $Tuple2(makeString(eM, "_"), makeString(eN, "_"))
899- else if ((eP >= eR))
921+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
922+ }
923+
924+
925+func fa (fb,fc,fd,fe) = {
926+ let ff = fd._1
927+ let fg = fd._2
928+ if ((fg == 0))
929+ then $Tuple2(makeString(fb, "_"), makeString(fc, "_"))
930+ else if ((fe >= fg))
900931 then {
901- func eS (cY,eA) = (cY :+ toString((parseIntValue(eM[eA]) + eQ[eA])))
902-
903- let dj = {
904- let da = bw
905- let db = size(da)
906- let dc = nil
907- func dd (de,df) = if ((df >= db))
908- then de
909- else eS(de, da[df])
910-
911- func dg (de,df) = if ((df >= db))
912- then de
932+ func fh (dn,eP) = (dn :+ toString((parseIntValue(fb[eP]) + ff[eP])))
933+
934+ let dy = {
935+ let dp = bL
936+ let dq = size(dp)
937+ let dr = nil
938+ func ds (dt,du) = if ((du >= dq))
939+ then dt
940+ else fh(dt, dp[du])
941+
942+ func dv (dt,du) = if ((du >= dq))
943+ then dt
913944 else throw("List size exceeds 6")
914945
915- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
946+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
916947 }
917- $Tuple2(makeString(dj, "_"), makeString(eN, "_"))
948+ $Tuple2(makeString(dy, "_"), makeString(fc, "_"))
918949 }
919950 else {
920- func eT (cY,eA) = {
921- let eU = fraction(eQ[eA], eP, eR)
922- $Tuple2((cY._1 :+ toString((parseIntValue(eM[eA]) + eU))), (cY._2 :+ toString(((parseIntValue(eN[eA]) + eQ[eA]) - eU))))
951+ func fi (dn,eP) = {
952+ let fj = fraction(ff[eP], fe, fg)
953+ $Tuple2((dn._1 :+ toString((parseIntValue(fb[eP]) + fj))), (dn._2 :+ toString(((parseIntValue(fc[eP]) + ff[eP]) - fj))))
923954 }
924955
925- let dj = {
926- let da = bw
927- let db = size(da)
928- let dc = $Tuple2(nil, nil)
929- func dd (de,df) = if ((df >= db))
930- then de
931- else eT(de, da[df])
932-
933- func dg (de,df) = if ((df >= db))
934- then de
956+ let dy = {
957+ let dp = bL
958+ let dq = size(dp)
959+ let dr = $Tuple2(nil, nil)
960+ func ds (dt,du) = if ((du >= dq))
961+ then dt
962+ else fi(dt, dp[du])
963+
964+ func dv (dt,du) = if ((du >= dq))
965+ then dt
935966 else throw("List size exceeds 6")
936967
937- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
968+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
938969 }
939- $Tuple2(makeString(dj._1, "_"), makeString(dj._2, "_"))
970+ $Tuple2(makeString(dy._1, "_"), makeString(dy._2, "_"))
940971 }
941972 }
942973
943974
944-func eV (eW) = if ((eW >= toBigInt(0)))
945- then eW
946- else -(eW)
947-
948-
949-let eX = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
950-
951-func eY (ce,eZ) = {
952- let fa = toInt((ce % ct))
953- let fb = if ((eZ[0] > fa))
975+func fk (fl) = if ((fl >= toBigInt(0)))
976+ then fl
977+ else -(fl)
978+
979+
980+let fm = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
981+
982+func fn (ct,fo) = {
983+ let fp = toInt((ct % cI))
984+ let fq = if ((fo[0] > fp))
954985 then "A"
955- else if ((eZ[1] > fa))
986+ else if ((fo[1] > fp))
956987 then "B"
957- else if ((eZ[2] > fa))
988+ else if ((fo[2] > fp))
958989 then "C"
959- else if ((eZ[3] > fa))
990+ else if ((fo[3] > fp))
960991 then "D"
961- else if ((eZ[4] > fa))
992+ else if ((fo[4] > fp))
962993 then "E"
963994 else "F"
964- fb
965- }
966-
967-
968-func fc (fd,fe) = {
969- let ff = eX[fe]
970- func fg (cY,cZ) = $Tuple2((((((cY._1 + eY(cY._2, ff)) + eY((cY._2 / ct), ff)) + eY((cY._2 / cu), ff)) + eY((cY._2 / cv), ff)) + eY((cY._2 / cw), ff)), (cY._2 / cx))
971-
972- let fh = {
973- let da = [1, 2, 3, 4, 5]
974- let db = size(da)
975- let dc = $Tuple2("", (fd / cs))
976- func dd (de,df) = if ((df >= db))
977- then de
978- else fg(de, da[df])
979-
980- func dg (de,df) = if ((df >= db))
981- then de
995+ fq
996+ }
997+
998+
999+func fr (fs,ft) = {
1000+ let fu = fm[ft]
1001+ func fv (dn,do) = $Tuple2((((((dn._1 + fn(dn._2, fu)) + fn((dn._2 / cI), fu)) + fn((dn._2 / cJ), fu)) + fn((dn._2 / cK), fu)) + fn((dn._2 / cL), fu)), (dn._2 / cM))
1002+
1003+ let fw = {
1004+ let dp = [1, 2, 3, 4, 5]
1005+ let dq = size(dp)
1006+ let dr = $Tuple2("", (fs / cH))
1007+ func ds (dt,du) = if ((du >= dq))
1008+ then dt
1009+ else fv(dt, dp[du])
1010+
1011+ func dv (dt,du) = if ((du >= dq))
1012+ then dt
9821013 else throw("List size exceeds 5")
9831014
984- dg(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5)
985- }
986- fh._1
987- }
988-
989-
990-let fi = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
991-
992-let fj = ["A", "B", "C", "D", "E", "F"]
993-
994-func fk (fl,ex) = {
995- func fm (cY,cc) = {
996- let dI = cY._2
997- let fn = parseIntValue(cc)
998- let eW = if ((fn == 0))
1015+ dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5)
1016+ }
1017+ fw._1
1018+ }
1019+
1020+
1021+let fx = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
1022+
1023+let fy = ["A", "B", "C", "D", "E", "F"]
1024+
1025+func fz (fA,eM) = {
1026+ func fB (dn,cr) = {
1027+ let dX = dn._2
1028+ let fC = parseIntValue(cr)
1029+ let fl = if ((fC == 0))
9991030 then 0
1000- else if ((fn >= (4 * ex)))
1001- then (fn / ex)
1002- else if ((fn > (3 * ex)))
1031+ else if ((fC >= (4 * eM)))
1032+ then (fC / eM)
1033+ else if ((fC > (3 * eM)))
10031034 then 3
1004- else (((fn - 1) / ex) + 1)
1005- $Tuple3((cY._1 :+ eW), (cY._2 + 1), (cY._3 + eW))
1006- }
1007-
1008- let fh = {
1009- let da = fl
1010- let db = size(da)
1011- let dc = $Tuple3(nil, 0, 0)
1012- func dd (de,df) = if ((df >= db))
1013- then de
1014- else fm(de, da[df])
1015-
1016- func dg (de,df) = if ((df >= db))
1017- then de
1035+ else (((fC - 1) / eM) + 1)
1036+ $Tuple3((dn._1 :+ fl), (dn._2 + 1), (dn._3 + fl))
1037+ }
1038+
1039+ let fw = {
1040+ let dp = fA
1041+ let dq = size(dp)
1042+ let dr = $Tuple3(nil, 0, 0)
1043+ func ds (dt,du) = if ((du >= dq))
1044+ then dt
1045+ else fB(dt, dp[du])
1046+
1047+ func dv (dt,du) = if ((du >= dq))
1048+ then dt
10181049 else throw("List size exceeds 6")
10191050
1020- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1021- }
1022- let fo = fh._1
1023- let fp = value(indexOf(fo, max(fo)))
1024- let fq = (fh._3 - 25)
1025- func fr (cY,bL) = {
1026- let fs = if ((bL == fp))
1027- then (fo[bL] - fq)
1028- else fo[bL]
1029- let ft = if ((fs == 0))
1051+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
1052+ }
1053+ let fD = fw._1
1054+ let fE = value(indexOf(fD, max(fD)))
1055+ let fF = (fw._3 - 25)
1056+ func fG (dn,ca) = {
1057+ let fH = if ((ca == fE))
1058+ then (fD[ca] - fF)
1059+ else fD[ca]
1060+ let fI = if ((fH == 0))
10301061 then nil
1031- else split(drop(toString(pow(10, 0, fs, 0, 0, DOWN)), 1), "")
1032- let ec = fj[bL]
1033- func fu (fv,fw) = (fv :+ ec)
1034-
1035- let fx = {
1036- let da = ft
1037- let db = size(da)
1038- let dc = nil
1039- func fy (de,df) = if ((df >= db))
1040- then de
1041- else fu(de, da[df])
1042-
1043- func fz (de,df) = if ((df >= db))
1044- then de
1062+ else split(drop(toString(pow(10, 0, fH, 0, 0, DOWN)), 1), "")
1063+ let er = fy[ca]
1064+ func fJ (fK,fL) = (fK :+ er)
1065+
1066+ let fM = {
1067+ let dp = fI
1068+ let dq = size(dp)
1069+ let dr = nil
1070+ func fN (dt,du) = if ((du >= dq))
1071+ then dt
1072+ else fJ(dt, dp[du])
1073+
1074+ func fO (dt,du) = if ((du >= dq))
1075+ then dt
10451076 else throw("List size exceeds 25")
10461077
1047- fz(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(dc, 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)
1048- }
1049- (cY ++ fx)
1050- }
1051-
1052- let dj = {
1053- let da = bw
1054- let db = size(da)
1055- let dc = nil
1056- func fy (de,df) = if ((df >= db))
1057- then de
1058- else fr(de, da[df])
1059-
1060- func fz (de,df) = if ((df >= db))
1061- then de
1078+ fO(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(dr, 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)
1079+ }
1080+ (dn ++ fM)
1081+ }
1082+
1083+ let dy = {
1084+ let dp = bL
1085+ let dq = size(dp)
1086+ let dr = nil
1087+ func fN (dt,du) = if ((du >= dq))
1088+ then dt
1089+ else fG(dt, dp[du])
1090+
1091+ func fO (dt,du) = if ((du >= dq))
1092+ then dt
10621093 else throw("List size exceeds 6")
10631094
1064- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1065- }
1066- func fA (cY,dI) = (cY + dj[dI])
1067-
1068- let da = fi
1069- let db = size(da)
1070- let dc = ""
1071- func fB (de,df) = if ((df >= db))
1072- then de
1073- else fA(de, da[df])
1074-
1075- func fC (de,df) = if ((df >= db))
1076- then de
1095+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
1096+ }
1097+ func fP (dn,dX) = (dn + dy[dX])
1098+
1099+ let dp = fx
1100+ let dq = size(dp)
1101+ let dr = ""
1102+ func fQ (dt,du) = if ((du >= dq))
1103+ then dt
1104+ else fP(dt, dp[du])
1105+
1106+ func fR (dt,du) = if ((du >= dq))
1107+ then dt
10771108 else throw("List size exceeds 25")
10781109
1079- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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)
1080- }
1081-
1082-
1083-func fD (fE) = {
1084- let fF = split(valueOrElse(getString(fE), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1085-[toString(valueOrElse(parseInt(fF[ay]), 0)), if ((size(split(fF[az], "_")) == aa))
1086- then fF[az]
1087- else "0_0_0_0_0_0", if ((size(split(fF[aA], "_")) == aa))
1088- then fF[aA]
1089- else "0_0_0_0_0_0", fF[aB]]
1090- }
1091-
1092-
1093-func fG (fH) = {
1094- let dw = split(fH, "_")
1095- ((ad * (parseIntValue(dw[1]) + 1)) * parseIntValue(dw[0]))
1096- }
1097-
1098-
1099-func fI (fJ) = {
1100- let fK = fJ[as]
1101- func fL (cY,fM) = (cY + parseIntValue(fM))
1102-
1103- func fN (cY,fM) = {
1104- let bL = cY._1
1105- let fO = (((parseIntValue(fM) + ao) - 1) / ao)
1106- $Tuple2((bL + 1), (cY._2 + (fO * bq)))
1107- }
1108-
1109- let fP = {
1110- let da = split(fJ[aq], "_")
1111- let db = size(da)
1112- let dc = 0
1113- func dd (de,df) = if ((df >= db))
1114- then de
1115- else fL(de, da[df])
1116-
1117- func dg (de,df) = if ((df >= db))
1118- then de
1110+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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)
1111+ }
1112+
1113+
1114+func fS (fT) = {
1115+ let fU = split(valueOrElse(getString(fT), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1116+[toString(valueOrElse(parseInt(fU[aA]), 0)), if ((size(split(fU[aB], "_")) == ac))
1117+ then fU[aB]
1118+ else "0_0_0_0_0_0", if ((size(split(fU[aC], "_")) == ac))
1119+ then fU[aC]
1120+ else "0_0_0_0_0_0", fU[aD]]
1121+ }
1122+
1123+
1124+func fV (fW) = {
1125+ let dL = split(fW, "_")
1126+ ((af * (parseIntValue(dL[1]) + 1)) * parseIntValue(dL[0]))
1127+ }
1128+
1129+
1130+func fX (fY) = {
1131+ let fZ = fY[au]
1132+ func ga (dn,gb) = (dn + parseIntValue(gb))
1133+
1134+ func gc (dn,gb) = {
1135+ let ca = dn._1
1136+ let gd = (((parseIntValue(gb) + aq) - 1) / aq)
1137+ $Tuple2((ca + 1), (dn._2 + (gd * bF)))
1138+ }
1139+
1140+ let ge = {
1141+ let dp = split(fY[as], "_")
1142+ let dq = size(dp)
1143+ let dr = 0
1144+ func ds (dt,du) = if ((du >= dq))
1145+ then dt
1146+ else ga(dt, dp[du])
1147+
1148+ func dv (dt,du) = if ((du >= dq))
1149+ then dt
11191150 else throw("List size exceeds 6")
11201151
1121- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1122- }
1123- let fQ = {
1124- let da = split(fJ[ar], "_")
1125- let db = size(da)
1126- let dc = 0
1127- func fy (de,df) = if ((df >= db))
1128- then de
1129- else fL(de, da[df])
1130-
1131- func fz (de,df) = if ((df >= db))
1132- then de
1152+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
1153+ }
1154+ let gf = {
1155+ let dp = split(fY[at], "_")
1156+ let dq = size(dp)
1157+ let dr = 0
1158+ func fN (dt,du) = if ((du >= dq))
1159+ then dt
1160+ else ga(dt, dp[du])
1161+
1162+ func fO (dt,du) = if ((du >= dq))
1163+ then dt
11331164 else throw("List size exceeds 6")
11341165
1135- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1136- }
1137- let fR = if ((fK == ""))
1166+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
1167+ }
1168+ let gg = if ((fZ == ""))
11381169 then 0
1139- else ( let da = split_4C(fK, "_")
1140- let db = size(da)
1141- let dc = $Tuple2(0, 0)
1142- func fB (de,df) = if ((df >= db))
1143- then de
1144- else fN(de, da[df])
1145-
1146- func fC (de,df) = if ((df >= db))
1147- then de
1170+ else ( let dp = split_4C(fZ, "_")
1171+ let dq = size(dp)
1172+ let dr = $Tuple2(0, 0)
1173+ func fQ (dt,du) = if ((du >= dq))
1174+ then dt
1175+ else gc(dt, dp[du])
1176+
1177+ func fR (dt,du) = if ((du >= dq))
1178+ then dt
11481179 else throw("List size exceeds 50")
11491180
1150- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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))._2
1151- ((fP + fQ) + fR)
1152- }
1153-
1154-
1155-func fS (fT,fU,fV) = {
1156- let fH = ((toString(fU) + "_") + toString(fV))
1157- let fW = fG(fH)
1158- let fX = valueOrElse(getString(fT), (fH + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1159- let fY = split_4C(fX, ":")
1160- let fZ = fI(fY)
1161- let ga = if ((5 > size(fY)))
1162- then makeString(["0", toString(fZ), toString((fW - fZ)), toString(fW)], "_")
1181+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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))._2
1182+ ((ge + gf) + gg)
1183+ }
1184+
1185+
1186+func gh (gi,gj,gk) = {
1187+ let fW = ((toString(gj) + "_") + toString(gk))
1188+ let gl = fV(fW)
1189+ let gm = valueOrElse(getString(gi), (fW + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1190+ let gn = split_4C(gm, ":")
1191+ let go = fX(gn)
1192+ let gp = if ((5 > size(gn)))
1193+ then makeString(["0", toString(go), toString((gl - go)), toString(gl)], "_")
11631194 else {
1164- let gb = split(fY[at], "_")
1165- let gc = parseIntValue(gb[au])
1166- let gd = if ((size(gb) > 1))
1167- then parseIntValue(gb[av])
1168- else fZ
1169- makeString([toString(gc), toString(gd), toString(((fW - gc) - gd)), toString(fW)], "_")
1170- }
1171-[fY[ap], if ((size(split(fY[aq], "_")) == aa))
1172- then fY[aq]
1173- else "0_0_0_0_0_0", if ((size(split(fY[ar], "_")) == aa))
1174- then fY[ar]
1175- else "0_0_0_0_0_0", fY[as], ga]
1176- }
1177-
1178-
1179-func ge (fJ) = {
1180- let gf = fI(fJ)
1181- let gg = parseIntValue(split(fJ[at], "_")[au])
1182- ((fG(fJ[ap]) - gf) - gg)
1183- }
1184-
1185-
1186-func gh (gi,gj) = {
1187- let fO = if ((gi >= 0))
1188- then (((gi + gj) - 1) / gj)
1189- else -((((-(gi) + gj) - 1) / gj))
1190- (fO * bq)
1191- }
1192-
1193-
1194-func gk (gl,fJ,gm) = if ((size(gl) != 3))
1195+ let gq = split(gn[av], "_")
1196+ let gr = parseIntValue(gq[aw])
1197+ let gs = if ((size(gq) > 1))
1198+ then parseIntValue(gq[ax])
1199+ else go
1200+ makeString([toString(gr), toString(gs), toString(((gl - gr) - gs)), toString(gl)], "_")
1201+ }
1202+[gn[ar], if ((size(split(gn[as], "_")) == ac))
1203+ then gn[as]
1204+ else "0_0_0_0_0_0", if ((size(split(gn[at], "_")) == ac))
1205+ then gn[at]
1206+ else "0_0_0_0_0_0", gn[au], gp]
1207+ }
1208+
1209+
1210+func gt (fY) = {
1211+ let gu = fX(fY)
1212+ let gv = parseIntValue(split(fY[av], "_")[aw])
1213+ ((fV(fY[ar]) - gu) - gv)
1214+ }
1215+
1216+
1217+func gw (gx,gy) = {
1218+ let gd = if ((gx >= 0))
1219+ then (((gx + gy) - 1) / gy)
1220+ else -((((-(gx) + gy) - 1) / gy))
1221+ (gd * bF)
1222+ }
1223+
1224+
1225+func gz (gA,fY,gB) = if ((size(gA) != 3))
11951226 then throw("cargoListStr should contain exactly 2 ':' separators")
11961227 else {
1197- let gn = split(gl[0], "_")
1198- let go = split(gl[1], "_")
1199- let gp = if ((gl[2] == ""))
1228+ let gC = split(gA[0], "_")
1229+ let gD = split(gA[1], "_")
1230+ let gE = if ((gA[2] == ""))
12001231 then nil
1201- else split(gl[2], "_")
1202- if ((size(gn) != aa))
1232+ else split(gA[2], "_")
1233+ if ((size(gC) != ac))
12031234 then throw("All 6 resources should be passed")
1204- else if ((size(go) != aa))
1235+ else if ((size(gD) != ac))
12051236 then throw("All 6 materials should be passed")
12061237 else {
1207- let eP = ge(fJ)
1208- let gq = split(fJ[aq], "_")
1209- let gr = split(fJ[ar], "_")
1210- let gs = if ((fJ[as] == ""))
1238+ let fe = gt(fY)
1239+ let gF = split(fY[as], "_")
1240+ let gG = split(fY[at], "_")
1241+ let gH = if ((fY[au] == ""))
12111242 then nil
1212- else split(fJ[as], "_")
1213- let eN = split(gm[az], "_")
1214- let gt = split(gm[aA], "_")
1215- let gu = if ((gm[aB] == ""))
1243+ else split(fY[au], "_")
1244+ let fc = split(gB[aB], "_")
1245+ let gI = split(gB[aC], "_")
1246+ let gJ = if ((gB[aD] == ""))
12161247 then nil
1217- else split(gm[aB], "_")
1218- func gv (cY,fM) = {
1219- let eA = cY._1
1220- let gw = parseIntValue(fM)
1221- let gx = parseIntValue(gq[eA])
1222- let gy = parseIntValue(eN[eA])
1223- if ((gw == 0))
1224- then $Tuple4((eA + 1), (cY._2 :+ gq[eA]), (cY._3 :+ eN[eA]), cY._4)
1225- else if ((gw > 0))
1226- then if ((gw > gy))
1227- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gy)) + " available"))
1228- else $Tuple4((eA + 1), (cY._2 :+ toString((gx + gw))), (cY._3 :+ toString((gy - gw))), (cY._4 + gw))
1229- else if ((-(gw) > gx))
1230- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gx)) + " available"))
1231- else $Tuple4((eA + 1), (cY._2 :+ toString((gx + gw))), (cY._3 :+ toString((gy - gw))), (cY._4 + gw))
1248+ else split(gB[aD], "_")
1249+ func gK (dn,gb) = {
1250+ let eP = dn._1
1251+ let gL = parseIntValue(gb)
1252+ let gM = parseIntValue(gF[eP])
1253+ let gN = parseIntValue(fc[eP])
1254+ if ((gL == 0))
1255+ then $Tuple4((eP + 1), (dn._2 :+ gF[eP]), (dn._3 :+ fc[eP]), dn._4)
1256+ else if ((gL > 0))
1257+ then if ((gL > gN))
1258+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gN)) + " available"))
1259+ else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL))
1260+ else if ((-(gL) > gM))
1261+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gM)) + " available"))
1262+ else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL))
12321263 }
12331264
1234- let dj = {
1235- let da = gn
1236- let db = size(da)
1237- let dc = $Tuple4(0, nil, nil, 0)
1238- func dd (de,df) = if ((df >= db))
1239- then de
1240- else gv(de, da[df])
1241-
1242- func dg (de,df) = if ((df >= db))
1243- then de
1265+ let dy = {
1266+ let dp = gC
1267+ let dq = size(dp)
1268+ let dr = $Tuple4(0, nil, nil, 0)
1269+ func ds (dt,du) = if ((du >= dq))
1270+ then dt
1271+ else gK(dt, dp[du])
1272+
1273+ func dv (dt,du) = if ((du >= dq))
1274+ then dt
12441275 else throw("List size exceeds 6")
12451276
1246- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1277+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
12471278 }
1248- func gz (cY,fM) = {
1249- let eA = cY._1
1250- let gw = parseIntValue(fM)
1251- let gA = parseIntValue(gr[eA])
1252- let gB = parseIntValue(gt[eA])
1253- if ((gw == 0))
1254- then $Tuple4((eA + 1), (cY._2 :+ gr[eA]), (cY._3 :+ gt[eA]), cY._4)
1255- else if ((gw > 0))
1256- then if ((gw > gB))
1257- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gB)) + " available"))
1258- else $Tuple4((eA + 1), (cY._2 :+ toString((gA + gw))), (cY._3 :+ toString((gB - gw))), (cY._4 + gw))
1259- else if ((-(gw) > gA))
1260- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gA)) + " available"))
1261- else $Tuple4((eA + 1), (cY._2 :+ toString((gA + gw))), (cY._3 :+ toString((gB - gw))), (cY._4 + gw))
1279+ func gO (dn,gb) = {
1280+ let eP = dn._1
1281+ let gL = parseIntValue(gb)
1282+ let gP = parseIntValue(gG[eP])
1283+ let gQ = parseIntValue(gI[eP])
1284+ if ((gL == 0))
1285+ then $Tuple4((eP + 1), (dn._2 :+ gG[eP]), (dn._3 :+ gI[eP]), dn._4)
1286+ else if ((gL > 0))
1287+ then if ((gL > gQ))
1288+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gQ)) + " available"))
1289+ else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL))
1290+ else if ((-(gL) > gP))
1291+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gP)) + " available"))
1292+ else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL))
12621293 }
12631294
1264- let er = {
1265- let da = go
1266- let db = size(da)
1267- let dc = $Tuple4(0, nil, nil, dj._4)
1268- func fy (de,df) = if ((df >= db))
1269- then de
1270- else gz(de, da[df])
1271-
1272- func fz (de,df) = if ((df >= db))
1273- then de
1295+ let eG = {
1296+ let dp = gD
1297+ let dq = size(dp)
1298+ let dr = $Tuple4(0, nil, nil, dy._4)
1299+ func fN (dt,du) = if ((du >= dq))
1300+ then dt
1301+ else gO(dt, dp[du])
1302+
1303+ func fO (dt,du) = if ((du >= dq))
1304+ then dt
12741305 else throw("List size exceeds 6")
12751306
1276- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1307+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
12771308 }
1278- func gC (cY,fM) = {
1279- let eA = cY._1
1280- let gw = parseIntValue(fM)
1281- let gD = if ((size(gs) > eA))
1282- then parseIntValue(gs[eA])
1309+ func gR (dn,gb) = {
1310+ let eP = dn._1
1311+ let gL = parseIntValue(gb)
1312+ let gS = if ((size(gH) > eP))
1313+ then parseIntValue(gH[eP])
12831314 else 0
1284- let gE = if ((size(gu) > eA))
1285- then parseIntValue(gu[eA])
1315+ let gT = if ((size(gJ) > eP))
1316+ then parseIntValue(gJ[eP])
12861317 else 0
1287- if ((gw == 0))
1288- then $Tuple4((eA + 1), (cY._2 :+ toString(gD)), (cY._3 :+ toString(gE)), cY._4)
1289- else if ((gw > 0))
1290- then if ((gw > gE))
1291- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gE)) + " available"))
1318+ if ((gL == 0))
1319+ then $Tuple4((eP + 1), (dn._2 :+ toString(gS)), (dn._3 :+ toString(gT)), dn._4)
1320+ else if ((gL > 0))
1321+ then if ((gL > gT))
1322+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gT)) + " available"))
12921323 else {
1293- let gF = (gh((gD + gw), ao) - gh(gD, ao))
1294- $Tuple4((eA + 1), (cY._2 :+ toString((gD + gw))), (cY._3 :+ toString((gE - gw))), (cY._4 + gF))
1324+ let gU = (gw((gS + gL), aq) - gw(gS, aq))
1325+ $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU))
12951326 }
1296- else if ((-(gw) > gD))
1297- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gD)) + " available"))
1327+ else if ((-(gL) > gS))
1328+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gS)) + " available"))
12981329 else {
1299- let gF = (gh((gD + gw), ao) - gh(gD, ao))
1300- $Tuple4((eA + 1), (cY._2 :+ toString((gD + gw))), (cY._3 :+ toString((gE - gw))), (cY._4 + gF))
1330+ let gU = (gw((gS + gL), aq) - gw(gS, aq))
1331+ $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU))
13011332 }
13021333 }
13031334
1304- let fF = if ((size(gp) != 0))
1335+ let fU = if ((size(gE) != 0))
13051336 then {
1306- let da = gp
1307- let db = size(da)
1308- let dc = $Tuple4(0, nil, nil, er._4)
1309- func fB (de,df) = if ((df >= db))
1310- then de
1311- else gC(de, da[df])
1312-
1313- func fC (de,df) = if ((df >= db))
1314- then de
1337+ let dp = gE
1338+ let dq = size(dp)
1339+ let dr = $Tuple4(0, nil, nil, eG._4)
1340+ func fQ (dt,du) = if ((du >= dq))
1341+ then dt
1342+ else gR(dt, dp[du])
1343+
1344+ func fR (dt,du) = if ((du >= dq))
1345+ then dt
13151346 else throw("List size exceeds 50")
13161347
1317- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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)
1348+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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)
13181349 }
1319- else $Tuple4(0, gs, gu, er._4)
1320- let gG = fF._4
1321- if ((gG > eP))
1322- then throw((((("Attempt to put total " + toString(gG)) + " stuff, but only ") + toString(eP)) + " warehouse space left"))
1323- else $Tuple7(makeString(dj._2, "_"), makeString(er._2, "_"), makeString(fF._2, "_"), makeString(dj._3, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), gG)
1350+ else $Tuple4(0, gH, gJ, eG._4)
1351+ let gV = fU._4
1352+ if ((gV > fe))
1353+ then throw((((("Attempt to put total " + toString(gV)) + " stuff, but only ") + toString(fe)) + " warehouse space left"))
1354+ else $Tuple7(makeString(dy._2, "_"), makeString(eG._2, "_"), makeString(fU._2, "_"), makeString(dy._3, "_"), makeString(eG._3, "_"), makeString(fU._3, "_"), gV)
13241355 }
13251356 }
13261357
13271358
1328-func gH (gI,gJ) = {
1329- let bb = toString(gI)
1330- let gK = eV(toBigInt(gJ))
1331- let gL = valueOrElse(getInteger(cz()), (cy + 1))
1332- let cB = toString(gL)
1333- let fe = toInt((gK % cs))
1334- let eD = fc(gK, fe)
1335- let gM = ai[fe]
1336- let gN = Issue(cR(cB, "S"), makeString([cB, "S", eD, gM], "_"), 1, 0, false)
1337- let aE = calculateAssetId(gN)
1338- let gO = toBase58String(aE)
1339- $Tuple2([IntegerEntry(cz(), (gL + 1)), gN, StringEntry(cA(cB), gO), StringEntry(aD(gO), bb), StringEntry(cG(cB), bb), IntegerEntry(aH(gO), 0), IntegerEntry(cE(gO, bb), 0), ScriptTransfer(gI, 1, aE)], $Tuple2(gO, gM))
1340- }
1341-
1342-
1343-func gP (bb,gQ,gR) = if (!(sigVerify_8Kb(gQ, gR, ck)))
1359+func gW (gX,gY) = {
1360+ let bd = toString(gX)
1361+ let gZ = fk(toBigInt(gY))
1362+ let ha = valueOrElse(getInteger(cO()), (cN + 1))
1363+ let cQ = toString(ha)
1364+ let ft = toInt((gZ % cH))
1365+ let eS = fr(gZ, ft)
1366+ let hb = ak[ft]
1367+ let hc = Issue(dg(cQ, "S"), makeString([cQ, "S", eS, hb], "_"), 1, 0, false)
1368+ let aG = calculateAssetId(hc)
1369+ let hd = toBase58String(aG)
1370+ $Tuple2([IntegerEntry(cO(), (ha + 1)), hc, StringEntry(cP(cQ), hd), StringEntry(aF(hd), bd), StringEntry(cV(cQ), bd), IntegerEntry(aJ(hd), 0), IntegerEntry(cT(hd, bd), 0), ScriptTransfer(gX, 1, aG)], $Tuple2(hd, hb))
1371+ }
1372+
1373+
1374+func he (bd,hf,hg) = if (!(sigVerify_8Kb(hf, hg, cz)))
13441375 then throw("signature does not match")
13451376 else {
1346- let dw = split(toUtf8String(gQ), ";")
1347- let gS = split(dw[0], "|")
1348- let gT = split(gS[cN], "_")
1349- let gU = parseIntValue(gT[0])
1350- let gV = parseIntValue(gT[1])
1351- let gW = split(dw[1], ":")
1352- let gX = gW[0]
1353- let gY = parseIntValue(gS[cO])
1354- if (if ((gY > (lastBlock.timestamp + cm)))
1377+ let dL = split(toUtf8String(hf), ";")
1378+ let hh = split(dL[0], "|")
1379+ let hi = split(hh[dc], "_")
1380+ let hj = parseIntValue(hi[0])
1381+ let hk = parseIntValue(hi[1])
1382+ let hl = split(dL[1], ":")
1383+ let hm = hl[0]
1384+ let hn = parseIntValue(hh[dd])
1385+ if (if ((hn > (lastBlock.timestamp + cB)))
13551386 then true
1356- else ((lastBlock.timestamp - cm) > gY))
1357- then throw(((("signature outdated: logTime=" + toString(gY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1387+ else ((lastBlock.timestamp - cB) > hn))
1388+ then throw(((("signature outdated: logTime=" + toString(hn)) + ", bcTime=") + toString(lastBlock.timestamp)))
13581389 else {
1359- let gZ = gW[1]
1360- let ha = valueOrElse(getString(aC(bb)), "")
1361- if ((ha != gZ))
1362- then throw(((("Tx ids don't match! In state: " + ha) + ", in msg: ") + gZ))
1390+ let ho = hl[1]
1391+ let hp = valueOrElse(getString(aE(bd)), "")
1392+ if ((hp != ho))
1393+ then throw(((("Tx ids don't match! In state: " + hp) + ", in msg: ") + ho))
13631394 else {
1364- let r = valueOrErrorMessage(getString(aW(bb)), "You don't have a duck staked")
1365- let hb = q(r)
1366- let hc = M(valueOrElse(getInteger(u(r)), 0))
1367- let hd = valueOrElse(getInteger(hb), hc)
1368- if ((hd != gU))
1369- then throw(((("oldHealth=" + toString(hd)) + " from state does not match one from flight log=") + toString(gU)))
1370- else if ((0 >= gU))
1395+ let r = valueOrErrorMessage(getString(aY(bd)), "You don't have a duck staked")
1396+ let hq = q(r)
1397+ let hr = O(valueOrElse(getInteger(u(r)), 0))
1398+ let hs = valueOrElse(getInteger(hq), hr)
1399+ if ((hs != hj))
1400+ then throw(((("oldHealth=" + toString(hs)) + " from state does not match one from flight log=") + toString(hj)))
1401+ else if ((0 >= hj))
13711402 then throw("You can't fly with zero health")
13721403 else {
1373- let he = if ((size(gS) > cP))
1374- then gS[cP]
1404+ let ht = if ((size(hh) > de))
1405+ then hh[de]
13751406 else ""
1376- let hf = if ((size(gS) > cQ))
1377- then gS[cQ]
1407+ let hu = if ((size(hh) > df))
1408+ then hh[df]
13781409 else ""
1379- let hg = if (if ((gV > 0))
1380- then (he == "$")
1410+ let hv = if (if ((hk > 0))
1411+ then (ht == "$")
13811412 else false)
1382- then cd(invoke(bM, "sendUsdtPrize", [bb], nil))
1413+ then cs(invoke(cb, "sendUsdtPrize", [bd], nil))
13831414 else 0
1384- $Tuple5(gV, r, hg, gX, hf)
1415+ $Tuple5(hk, r, hv, hm, hu)
13851416 }
13861417 }
13871418 }
13881419 }
13891420
13901421
1391-func hh (gI,gJ,gQ,gR) = {
1392- let bb = toString(gI)
1393- let ff = gP(bb, gQ, gR)
1394- let r = ff._2
1395- let hb = q(r)
1396- let fE = aX(r)
1397- let gm = fD(fE)
1398- let hi = split(gm[aA], "_")
1399- let hj = makeString(dk(true, hi, cq), "_")
1400- let hk = w(r)
1401- let hl = valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,")
1402- let hm = dr(hl, ff._5)
1403- if ((0 >= ff._1))
1404- then $Tuple3([IntegerEntry(hb, 0), StringEntry(hk, hm)], "", 0)
1422+func hw (gX,gY,hf,hg) = {
1423+ let bd = toString(gX)
1424+ let fu = he(bd, hf, hg)
1425+ let r = fu._2
1426+ let hq = q(r)
1427+ let fT = aZ(r)
1428+ let gB = fS(fT)
1429+ let hx = split(gB[aC], "_")
1430+ let hy = makeString(dz(true, hx, cF), "_")
1431+ let hz = w(r)
1432+ let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,")
1433+ let hB = dG(hA, fu._5)
1434+ if ((0 >= fu._1))
1435+ then $Tuple3([IntegerEntry(hq, 0), StringEntry(hz, hB)], "", 0)
14051436 else {
1406- let hn = gH(gI, gJ)
1407- let gO = hn._2._1
1408- $Tuple3(((((hn._1 :+ StringEntry(aY(r), makeString([hn._2._2, "L", gO], "_"))) :+ IntegerEntry(hb, ff._1)) :+ StringEntry(hk, hm)) :+ StringEntry(fE, makeString([gm[ay], gm[az], hj, gm[aB]], ":"))), gO, ff._3)
1409- }
1410- }
1411-
1412-
1413-func ho (aO,hp) = {
1414- let fV = valueOrElse(getInteger(aH(aO)), 0)
1415- let hq = valueOrElse(getInteger(aI(Z, aO)), 0)
1416- let hr = (fV / 6)
1417- let hs = (fV / 7)
1418- ((ab + fraction(ab, ((fV + hr) + (2 * hs)), 5)) + fraction(ab, hq, (hp * 5)))
1419- }
1420-
1421-
1422-func ht (b,hu,hv) = {
1423- let hw = if ((hu == cK))
1424- then $Tuple2(hv, valueOrElse(getString(aW(b)), ""))
1437+ let hC = gW(gX, gY)
1438+ let hd = hC._2._1
1439+ $Tuple3(((((hC._1 :+ StringEntry(ba(r), makeString([hC._2._2, "L", hd], "_"))) :+ IntegerEntry(hq, fu._1)) :+ StringEntry(hz, hB)) :+ StringEntry(fT, makeString([gB[aA], gB[aB], hy, gB[aD]], ":"))), hd, fu._3)
1440+ }
1441+ }
1442+
1443+
1444+func hD (aQ,hE) = {
1445+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1446+ let hF = valueOrElse(getInteger(aK(ab, aQ)), 0)
1447+ let hG = (gk / 6)
1448+ let hH = (gk / 7)
1449+ ((ad + fraction(ad, ((gk + hG) + (2 * hH)), 5)) + fraction(ad, hF, (hE * 5)))
1450+ }
1451+
1452+
1453+func hI (b,hJ,hK) = {
1454+ let hL = if ((hJ == cZ))
1455+ then $Tuple2(hK, valueOrElse(getString(aY(b)), ""))
14251456 else {
1426- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1427- let hx = valueOrElse(getString(aY(r)), ae)
1428- let hy = split(value(hx), "_")
1429- if ((hy[bd] != "L"))
1430- then throw((("Duck location type is " + hy[bd]) + ", but should be L"))
1431- else $Tuple2(hy[be], r)
1432- }
1433- let aO = hw._1
1434- let hz = hw._2
1435- let hA = value(assetInfo(fromBase58String(aO)))
1436- let hB = aG(aO)
1437- let hC = valueOrErrorMessage(getInteger(hB), (("Land " + hA.name) + " is not staked"))
1438- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
1439- if ((hD != b))
1440- then throw((X + " is not yours"))
1457+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1458+ let hM = valueOrElse(getString(ba(r)), ag)
1459+ let hN = split(value(hM), "_")
1460+ if ((hN[bs] != "L"))
1461+ then throw((("Duck location type is " + hN[bs]) + ", but should be L"))
1462+ else $Tuple2(hN[bt], r)
1463+ }
1464+ let aQ = hL._1
1465+ let hO = hL._2
1466+ let hP = value(assetInfo(fromBase58String(aQ)))
1467+ let hQ = aI(aQ)
1468+ let hR = valueOrErrorMessage(getInteger(hQ), (("Land " + hP.name) + " is not staked"))
1469+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
1470+ if ((hS != b))
1471+ then throw((Z + " is not yours"))
14411472 else {
1442- let hE = split(hA.description, "_")
1443- $Tuple4(hz, aO, hE, hC)
1444- }
1445- }
1446-
1447-
1448-func hF (b,gi,hu,hv) = if ((0 > gi))
1473+ let hT = split(hP.description, "_")
1474+ $Tuple4(hO, aQ, hT, hR)
1475+ }
1476+ }
1477+
1478+
1479+func hU (b,gx,hJ,hK) = if ((0 > gx))
14491480 then throw("Negative amount")
14501481 else {
1451- let ec = ht(b, hu, hv)
1452- let cg = ec._3[bS]
1453- let ew = eC(ec._3[bT])
1454- let eG = (lastBlock.timestamp - ec._4)
1455- if ((0 > eG))
1456- then throw(((("Saved timestamp is in future, saved = " + toString(ec._4)) + ", current = ") + toString(lastBlock.timestamp)))
1482+ let er = hI(b, hJ, hK)
1483+ let cv = er._3[ch]
1484+ let eL = eR(er._3[ci])
1485+ let eV = (lastBlock.timestamp - er._4)
1486+ if ((0 > eV))
1487+ then throw(((("Saved timestamp is in future, saved = " + toString(er._4)) + ", current = ") + toString(lastBlock.timestamp)))
14571488 else {
1458- let hp = cf(cg)
1459- let hG = ho(ec._2, hp)
1460- let hH = fraction(eG, (hG * hp), ac)
1461- if ((gi > hH))
1462- then throw(((("Not enough resources, available = " + toString(hH)) + ", requested = ") + toString(gi)))
1489+ let hE = cu(cv)
1490+ let hV = hD(er._2, hE)
1491+ let hW = fraction(eV, (hV * hE), ae)
1492+ if ((gx > hW))
1493+ then throw(((("Not enough resources, available = " + toString(hW)) + ", requested = ") + toString(gx)))
14631494 else {
1464- let hI = fraction((hH - gi), ac, (hG * hp))
1465- let hJ = (lastBlock.timestamp - hI)
1466- let fU = (hp / br)
1467- let eO = eK(ew, (eG - hI), fU, hG)
1468- let fT = aN(ec._2)
1469- let fV = valueOrElse(getInteger(aH(ec._2)), 0)
1470- let fJ = fS(fT, fU, fV)
1471- let gb = split(fJ[at], "_")
1472- let eP = parseIntValue(gb[aw])
1473- if (if ((hu == cK))
1474- then (gi > eP)
1495+ let hX = fraction((hW - gx), ae, (hV * hE))
1496+ let hY = (lastBlock.timestamp - hX)
1497+ let gj = (hE / bG)
1498+ let fd = eZ(eL, (eV - hX), gj, hV)
1499+ let gi = aP(er._2)
1500+ let gk = valueOrElse(getInteger(aJ(er._2)), 0)
1501+ let fY = gh(gi, gj, gk)
1502+ let gq = split(fY[av], "_")
1503+ let fe = parseIntValue(gq[ay])
1504+ if (if ((hJ == cZ))
1505+ then (gx > fe)
14751506 else false)
1476- then throw((("Only " + toString(eP)) + " space left in warehouse"))
1507+ then throw((("Only " + toString(fe)) + " space left in warehouse"))
14771508 else {
1478- let fE = aX(ec._1)
1479- let gm = fD(fE)
1480- let eN = split(gm[az], "_")
1481- let eM = split(fJ[aq], "_")
1482- let hK = if ((hu == cK))
1483- then $Tuple4(eE(eM, ew, (eG - hI), fU, hG), gm[az], (parseIntValue(gb[av]) + eO._2), (parseIntValue(gb[aw]) - eO._2))
1484- else if ((hu == cL))
1485- then $Tuple4(fJ[aq], eE(eN, ew, (eG - hI), fU, hG), parseIntValue(gb[av]), parseIntValue(gb[aw]))
1509+ let fT = aZ(er._1)
1510+ let gB = fS(fT)
1511+ let fc = split(gB[aB], "_")
1512+ let fb = split(fY[as], "_")
1513+ let hZ = if ((hJ == cZ))
1514+ then $Tuple4(eT(fb, eL, (eV - hX), gj, hV), gB[aB], (parseIntValue(gq[ax]) + fd._2), (parseIntValue(gq[ay]) - fd._2))
1515+ else if ((hJ == da))
1516+ then $Tuple4(fY[as], eT(fc, eL, (eV - hX), gj, hV), parseIntValue(gq[ax]), parseIntValue(gq[ay]))
14861517 else {
1487- let hL = eL(eM, eN, eO, eP)
1488- let hM = min([parseIntValue(gb[aw]), eO._2])
1489- $Tuple4(hL._1, hL._2, (parseIntValue(gb[av]) + hM), (parseIntValue(gb[aw]) - hM))
1518+ let ia = fa(fb, fc, fd, fe)
1519+ let ib = min([parseIntValue(gq[ay]), fd._2])
1520+ $Tuple4(ia._1, ia._2, (parseIntValue(gq[ax]) + ib), (parseIntValue(gq[ay]) - ib))
14901521 }
1491- let hN = hK._1
1492- let hO = hK._2
1493- let hP = hK._3
1494- let hQ = hK._4
1495- $Tuple5([IntegerEntry(aG(ec._2), hJ), IntegerEntry(aK(X, ec._2, b), hJ)], fE, [gm[ay], hO, gm[aA], gm[aB]], fT, [fJ[ap], hN, fJ[ar], fJ[as], makeString([gb[au], toString(hP), toString(hQ), gb[ax]], "_")])
1522+ let ic = hZ._1
1523+ let id = hZ._2
1524+ let ie = hZ._3
1525+ let if = hZ._4
1526+ $Tuple5([IntegerEntry(aI(er._2), hY), IntegerEntry(aM(Z, er._2, b), hY)], fT, [gB[aA], id, gB[aC], gB[aD]], gi, [fY[ar], ic, fY[at], fY[au], makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")])
14961527 }
14971528 }
14981529 }
14991530 }
15001531
15011532
1502-func hR (b,aO,hp,hu) = {
1503- let hB = aG(aO)
1504- let hC = value(getInteger(hB))
1505- let hH = (fraction((lastBlock.timestamp - hC), ho(aO, hp), ac) * hp)
1506- hF(b, hH, hu, aO)
1507- }
1508-
1509-
1510-func hS (dl,gI,hT,aO) = {
1511- let b = toString(gI)
1512- let ec = ht(b, cM, aO)
1513- let hp = cf(ec._3[bS])
1514- let hU = aH(ec._2)
1515- let hV = valueOrElse(getInteger(hU), 0)
1516- if ((hV >= 3))
1533+func ig (b,aQ,hE,hJ) = {
1534+ let hQ = aI(aQ)
1535+ let hR = value(getInteger(hQ))
1536+ let hW = (fraction((lastBlock.timestamp - hR), hD(aQ, hE), ae) * hE)
1537+ hU(b, hW, hJ, aQ)
1538+ }
1539+
1540+
1541+func ih (dA,gX,ii,aQ) = {
1542+ let b = toString(gX)
1543+ let er = hI(b, db, aQ)
1544+ let hE = cu(er._3[ch])
1545+ let ij = aJ(er._2)
1546+ let ik = valueOrElse(getInteger(ij), 0)
1547+ if ((ik >= 3))
15171548 then throw("Currently max infrastructure level = 3")
15181549 else {
1519- let R = (hV + 1)
1520- let hW = fraction(cp, (hp * R), br)
1521- if (if (!(dl))
1522- then (hT != hW)
1550+ let T = (ik + 1)
1551+ let il = fraction(cE, (hE * T), bG)
1552+ if (if (!(dA))
1553+ then (ii != il)
15231554 else false)
1524- then throw(("Payment attached should be " + toString(hW)))
1555+ then throw(("Payment attached should be " + toString(il)))
15251556 else {
1526- let fE = aX(ec._1)
1527- let gm = fD(fE)
1528- let hi = split(gm[aA], "_")
1529- let hX = fraction(bm, (hp * R), br)
1530- let hj = makeString(dk(dl, hi, hX), "_")
1531- let hY = hR(b, ec._2, hp, cM)
1532- let hZ = hY._5
1533- let ia = fG(hZ[ap])
1534- let ib = makeString([split(hZ[ap], "_")[0], toString(R)], "_")
1535- let ic = fG(ib)
1536- let gb = split(hZ[at], "_")
1537- let id = makeString([gb[au], gb[av], toString(((parseIntValue(gb[aw]) + ic) - ia)), toString(ic)], "_")
1538- $Tuple3(([IntegerEntry(hU, R), IntegerEntry(cE(ec._2, b), R), StringEntry(fE, makeString([gm[ay], hY._3[az], hj, gm[aB]], ":")), StringEntry(hY._4, makeString([ib, hZ[aq], hZ[ar], hZ[as], id], ":"))] ++ hY._1), R, hX)
1557+ let fT = aZ(er._1)
1558+ let gB = fS(fT)
1559+ let hx = split(gB[aC], "_")
1560+ let im = fraction(bB, (hE * T), bG)
1561+ let hy = makeString(dz(dA, hx, im), "_")
1562+ let in = ig(b, er._2, hE, db)
1563+ let io = in._5
1564+ let ip = fV(io[ar])
1565+ let iq = makeString([split(io[ar], "_")[0], toString(T)], "_")
1566+ let ir = fV(iq)
1567+ let gq = split(io[av], "_")
1568+ let is = makeString([gq[aw], gq[ax], toString(((parseIntValue(gq[ay]) + ir) - ip)), toString(ir)], "_")
1569+ $Tuple3(([IntegerEntry(ij, T), IntegerEntry(cT(er._2, b), T), StringEntry(fT, makeString([gB[aA], in._3[aB], hy, gB[aD]], ":")), StringEntry(in._4, makeString([iq, io[as], io[at], io[au], is], ":"))] ++ in._1), T, im)
15391570 }
15401571 }
15411572 }
15421573
15431574
1544-func ie (r,if) = if (!(bh))
1575+func it (r,iu) = if (!(bw))
15451576 then $Tuple2(nil, 0)
15461577 else {
1547- let ig = u(r)
1548- let ih = t(r)
1549- let L = valueOrElse(getInteger(T, ih), 0)
1550- let Q = (L + if)
1551- let ii = O(valueOrElse(getInteger(T, ig), 0), Q)
1552- let ij = v(r)
1553- $Tuple2([IntegerEntry(ig, ii[0]), IntegerEntry(ih, Q), IntegerEntry(ij, (valueOrElse(getInteger(ij), 0) + ii[1]))], Q)
1554- }
1555-
1556-
1557-func ik (b,if) = if (!(bh))
1578+ let iv = u(r)
1579+ let iw = t(r)
1580+ let N = valueOrElse(getInteger(V, iw), 0)
1581+ let S = (N + iu)
1582+ let ix = Q(valueOrElse(getInteger(V, iv), 0), S)
1583+ let iy = v(r)
1584+ $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S)
1585+ }
1586+
1587+
1588+func iz (b,iu) = if (!(bw))
15581589 then $Tuple2(nil, 0)
15591590 else {
1560- let ig = y(b)
1561- let ih = x(b)
1562- let L = valueOrElse(getInteger(T, ih), 0)
1563- let Q = (L + if)
1564- let ii = O(valueOrElse(getInteger(T, ig), 0), Q)
1565- let ij = z(b)
1566- $Tuple2([IntegerEntry(ig, ii[0]), IntegerEntry(ih, Q), IntegerEntry(ij, (valueOrElse(getInteger(ij), 0) + ii[1]))], Q)
1567- }
1568-
1569-
1570-func il (b) = {
1571- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1572- let im = aR(b)
1573- let in = getString(im)
1574- if (!(isDefined(in)))
1591+ let iv = y(b)
1592+ let iw = x(b)
1593+ let N = valueOrElse(getInteger(V, iw), 0)
1594+ let S = (N + iu)
1595+ let ix = Q(valueOrElse(getInteger(V, iv), 0), S)
1596+ let iy = z(b)
1597+ $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S)
1598+ }
1599+
1600+
1601+func iA (b) = {
1602+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1603+ let iB = aT(b)
1604+ let iC = getString(iB)
1605+ if (!(isDefined(iC)))
15751606 then throw("You are not eligible for ONBOARD artifact")
15761607 else {
1577- let io = aT(b)
1578- let ip = getString(io)
1579- if (isDefined(ip))
1580- then throw(("You already used your ONBOARD artifact on duck " + value(ip)))
1608+ let iD = aV(b)
1609+ let iE = getString(iD)
1610+ if (isDefined(iE))
1611+ then throw(("You already used your ONBOARD artifact on duck " + value(iE)))
15811612 else {
1582- let iq = aS(r)
1583- let ir = getString(iq)
1584- if (isDefined(ir))
1585- then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(ir)))
1586- else ([StringEntry(io, r), StringEntry(iq, b)] ++ ie(r, I)._1)
1613+ let iF = aU(r)
1614+ let iG = getString(iF)
1615+ if (isDefined(iG))
1616+ then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(iG)))
1617+ else ([StringEntry(iD, r), StringEntry(iF, b)] ++ it(r, K)._1)
15871618 }
15881619 }
15891620 }
15901621
15911622
1592-func is (b,hv) = {
1593- let ec = ht(b, cM, hv)
1594- let aO = ec._2
1595- let hp = cf(ec._3[bS])
1596- let it = aI(Z, aO)
1597- if ((valueOrElse(getInteger(it), 0) > 0))
1623+func iH (b,hK) = {
1624+ let er = hI(b, db, hK)
1625+ let aQ = er._2
1626+ let hE = cu(er._3[ch])
1627+ let iI = aK(ab, aQ)
1628+ if ((valueOrElse(getInteger(iI), 0) > 0))
15981629 then throw("Presale artifact is already activated")
1599- else if ((parseIntValue(ec._3[bR]) > cy))
1600- then throw((((X + " ") + aO) + " is not eligible for presale artifact"))
1630+ else if ((parseIntValue(er._3[cg]) > cN))
1631+ then throw((((Z + " ") + aQ) + " is not eligible for presale artifact"))
16011632 else {
1602- let hY = hR(b, aO, hp, cM)
1603- ((((hY._1 :+ IntegerEntry(it, hp)) :+ IntegerEntry(cF(Z, aO, b), hp)) :+ StringEntry(hY._2, makeString(hY._3, ":"))) :+ StringEntry(hY._4, makeString(hY._5, ":")))
1633+ let in = ig(b, aQ, hE, db)
1634+ ((((in._1 :+ IntegerEntry(iI, hE)) :+ IntegerEntry(cU(ab, aQ, b), hE)) :+ StringEntry(in._2, makeString(in._3, ":"))) :+ StringEntry(in._4, makeString(in._5, ":")))
16041635 }
16051636 }
16061637
16071638
1608-func iu (iv,R,iw,b,ix,iy) = {
1609- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1610- func iz (cY,aO) = {
1611- let hA = value(assetInfo(fromBase58String(aO)))
1612- let hB = aG(aO)
1613- let hC = valueOrErrorMessage(getInteger(hB), (("NFT " + hA.name) + " is not staked"))
1614- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
1615- if ((hD != b))
1616- then throw((X + " is not yours"))
1639+func iJ (iK,T,iL,b,iM,iN) = {
1640+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1641+ func iO (dn,aQ) = {
1642+ let hP = value(assetInfo(fromBase58String(aQ)))
1643+ let hQ = aI(aQ)
1644+ let hR = valueOrErrorMessage(getInteger(hQ), (("NFT " + hP.name) + " is not staked"))
1645+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
1646+ if ((hS != b))
1647+ then throw((Z + " is not yours"))
16171648 else {
1618- let hE = split(hA.description, "_")
1619- let gM = hE[bU]
1620- if (if ((cY._3 != ""))
1621- then (cY._3 != gM)
1649+ let hT = split(hP.description, "_")
1650+ let hb = hT[cj]
1651+ if (if ((dn._3 != ""))
1652+ then (dn._3 != hb)
16221653 else false)
16231654 then throw("Lands should be on the same continent to merge")
16241655 else {
1625- let cg = hE[bS]
1626- let iA = cY._1
1627- let eA = valueOrErrorMessage(indexOf(iA, cg), "You haven't passed all the lands needed")
1628- let iB = (take(iA, eA) + drop(iA, (eA + 1)))
1629- let hp = cf(cg)
1630- let iC = (cY._2 + valueOrElse(getInteger(aI(Z, aO)), 0))
1631- let fV = valueOrElse(getInteger(aH(aO)), 0)
1632- let iD = {
1633- let bk = cg
1634- if (("S" == bk))
1656+ let cv = hT[ch]
1657+ let iP = dn._1
1658+ let eP = valueOrErrorMessage(indexOf(iP, cv), "You haven't passed all the lands needed")
1659+ let iQ = (take(iP, eP) + drop(iP, (eP + 1)))
1660+ let hE = cu(cv)
1661+ let iR = (dn._2 + valueOrElse(getInteger(aK(ab, aQ)), 0))
1662+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1663+ let iS = {
1664+ let bz = cv
1665+ if (("S" == bz))
16351666 then 3
1636- else if (("M" == bk))
1667+ else if (("M" == bz))
16371668 then 4
1638- else if (("L" == bk))
1669+ else if (("L" == bz))
16391670 then 5
1640- else if (("XL" == bk))
1671+ else if (("XL" == bz))
16411672 then 6
16421673 else throw("Only S, M, L, XL can merge")
16431674 }
1644- if ((fV != iD))
1675+ if ((gk != iS))
16451676 then throw("All lands should be maxed to merge")
16461677 else {
1647- let cB = hE[bR]
1648- let ew = eC(hE[bT])
1649- let eG = (lastBlock.timestamp - hC)
1650- if ((0 > eG))
1651- then throw(((("Saved timestamp is in future, saved = " + toString(hC)) + ", current = ") + toString(lastBlock.timestamp)))
1678+ let cQ = hT[cg]
1679+ let eL = eR(hT[ci])
1680+ let eV = (lastBlock.timestamp - hR)
1681+ if ((0 > eV))
1682+ then throw(((("Saved timestamp is in future, saved = " + toString(hR)) + ", current = ") + toString(lastBlock.timestamp)))
16521683 else {
1653- let hG = ho(aO, hp)
1654- let fU = (hp / br)
1655- let hO = eE(split(cY._4, "_"), ew, eG, fU, hG)
1656- let di = eu(cY._6, ew, fU, -1)
1657- let fl = eu(cY._9, ew, fU, 1)
1658- let iE = cY._7
1659- let bL = indexOf(iE, aO)
1660- if (!(isDefined(bL)))
1661- then throw(("Your staked lands don't contain " + aO))
1684+ let hV = hD(aQ, hE)
1685+ let gj = (hE / bG)
1686+ let id = eT(split(dn._4, "_"), eL, eV, gj, hV)
1687+ let dx = eJ(dn._6, eL, gj, -1)
1688+ let fA = eJ(dn._9, eL, gj, 1)
1689+ let iT = dn._7
1690+ let ca = indexOf(iT, aQ)
1691+ if (!(isDefined(ca)))
1692+ then throw(("Your staked lands don't contain " + aQ))
16621693 else {
1663- let iF = aF(aO)
1664- let iG = valueOrElse(getString(iF), "")
1665- $Tuple9(iB, iC, gM, hO, (((((((((((((cY._5 :+ DeleteEntry(aG(aO))) :+ DeleteEntry(aK(X, aO, b))) :+ DeleteEntry(cA(cB))) :+ DeleteEntry(aD(aO))) :+ DeleteEntry(aH(aO))) :+ DeleteEntry(cE(aO, b))) :+ DeleteEntry(aI(Z, aO))) :+ DeleteEntry(cF(Z, aO, b))) :+ DeleteEntry(cG(cB))) :+ DeleteEntry(aN(aO))) :+ DeleteEntry(iF)) :+ DeleteEntry(cC(iG))) :+ Burn(fromBase58String(aO), 1)), di, removeByIndex(iE, value(bL)), (cY._8 + hp), fl)
1694+ let iU = aH(aQ)
1695+ let iV = valueOrElse(getString(iU), "")
1696+ $Tuple9(iQ, iR, hb, id, (((((((((((((dn._5 :+ DeleteEntry(aI(aQ))) :+ DeleteEntry(aM(Z, aQ, b))) :+ DeleteEntry(cP(cQ))) :+ DeleteEntry(aF(aQ))) :+ DeleteEntry(aJ(aQ))) :+ DeleteEntry(cT(aQ, b))) :+ DeleteEntry(aK(ab, aQ))) :+ DeleteEntry(cU(ab, aQ, b))) :+ DeleteEntry(cV(cQ))) :+ DeleteEntry(aP(aQ))) :+ DeleteEntry(iU)) :+ DeleteEntry(cR(iV))) :+ Burn(fromBase58String(aQ), 1)), dx, removeByIndex(iT, value(ca)), (dn._8 + hE), fA)
16661697 }
16671698 }
16681699 }
16701701 }
16711702 }
16721703
1673- let fE = aX(r)
1674- let gm = fD(fE)
1675- let ev = split(valueOrElse(getString(bX()), "0_0_0_0_0_0"), "_")
1676- let iH = bY(b)
1677- let iI = getString(iH)
1678- let iJ = if (isDefined(iI))
1679- then split_51C(value(iI), "_")
1704+ let fT = aZ(r)
1705+ let gB = fS(fT)
1706+ let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_")
1707+ let iW = cn(b)
1708+ let iX = getString(iW)
1709+ let iY = if (isDefined(iX))
1710+ then split_51C(value(iX), "_")
16801711 else nil
1681- let dj = {
1682- let da = ix
1683- let db = size(da)
1684- let dc = $Tuple9(iw, 0, "", gm[az], nil, ev, iJ, 0, split("0_0_0_0_0_0", "_"))
1685- func dd (de,df) = if ((df >= db))
1686- then de
1687- else iz(de, da[df])
1688-
1689- func dg (de,df) = if ((df >= db))
1690- then de
1712+ let dy = {
1713+ let dp = iM
1714+ let dq = size(dp)
1715+ let dr = $Tuple9(iL, 0, "", gB[aB], nil, eK, iY, 0, split("0_0_0_0_0_0", "_"))
1716+ func ds (dt,du) = if ((du >= dq))
1717+ then dt
1718+ else iO(dt, dp[du])
1719+
1720+ func dv (dt,du) = if ((du >= dq))
1721+ then dt
16911722 else throw("List size exceeds 5")
16921723
1693- dg(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5)
1694- }
1695- let gM = dj._3
1696- let fe = valueOrErrorMessage(indexOf(ai, gM), ("Unknown continent: " + gM))
1697- let eD = fk(dj._9, (cf(iv) / br))
1698- let gL = valueOrElse(getInteger(cz()), (cy + 1))
1699- let iK = toString(gL)
1700- let gN = Issue(cR(iK, iv), makeString([iK, iv, eD, gM], "_"), 1, 0, false)
1701- let aE = calculateAssetId(gN)
1702- let iL = toBase58String(aE)
1703- let hj = makeString(dk((iy > 0), split(gm[aA], "_"), iy), "_")
1704- let iM = bZ(b)
1705- let iN = valueOrElse(getInteger(iM), 0)
1706- $Tuple2((((((((((((((((dj._5 :+ (if ((size(dj._7) > 0))
1707- then StringEntry(iH, makeString_11C(dj._7, "_"))
1708- else DeleteEntry(iH))) :+ IntegerEntry(iM, if ((dj._8 > iN))
1724+ dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5)
1725+ }
1726+ let hb = dy._3
1727+ let ft = valueOrErrorMessage(indexOf(ak, hb), ("Unknown continent: " + hb))
1728+ let eS = fz(dy._9, (cu(iK) / bG))
1729+ let ha = valueOrElse(getInteger(cO()), (cN + 1))
1730+ let iZ = toString(ha)
1731+ let hc = Issue(dg(iZ, iK), makeString([iZ, iK, eS, hb], "_"), 1, 0, false)
1732+ let aG = calculateAssetId(hc)
1733+ let ja = toBase58String(aG)
1734+ let hy = makeString(dz((iN > 0), split(gB[aC], "_"), iN), "_")
1735+ let jb = co(b)
1736+ let jc = valueOrElse(getInteger(jb), 0)
1737+ $Tuple2((((((((((((((((dy._5 :+ (if ((size(dy._7) > 0))
1738+ then StringEntry(iW, makeString_11C(dy._7, "_"))
1739+ else DeleteEntry(iW))) :+ IntegerEntry(jb, if ((dy._8 > jc))
17091740 then 0
1710- else (iN - dj._8))) :+ IntegerEntry(cz(), (gL + 1))) :+ gN) :+ StringEntry(cA(iK), iL)) :+ StringEntry(aD(iL), b)) :+ StringEntry(cG(iK), b)) :+ IntegerEntry(aI(Z, iL), dj._2)) :+ IntegerEntry(cF(Z, iL, b), dj._2)) :+ IntegerEntry(aH(iL), R)) :+ IntegerEntry(cE(iL, b), R)) :+ StringEntry(fE, makeString([gm[ay], dj._4, hj, gm[aB]], ":"))) :+ StringEntry(bX(), makeString(dj._6, "_"))) :+ StringEntry(aY(r), makeString([gM, "L", iL], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aE)), iL)
1711- }
1712-
1713-
1714-func iO (b,ix) = iu("M", 3, "SSSS", b, ix, 0)
1715-
1716-
1717-func iP (b,ix) = iu("L", 4, "SMM", b, ix, (bm * 4))
1718-
1719-
1720-func iQ (b,ix) = iu("XL", 5, "SSSML", b, ix, (bm * 47))
1721-
1722-
1723-func iR (b,ix) = iu("XXL", 6, "LXL", b, ix, (bm * 54))
1724-
1725-
1726-func iS (b,ix) = {
1727- let bk = size(ix)
1728- if ((4 == bk))
1729- then iO(b, ix)
1730- else if ((3 == bk))
1731- then iP(b, ix)
1732- else if ((5 == bk))
1733- then iQ(b, ix)
1734- else if ((2 == bk))
1735- then iR(b, ix)
1741+ else (jc - dy._8))) :+ IntegerEntry(cO(), (ha + 1))) :+ hc) :+ StringEntry(cP(iZ), ja)) :+ StringEntry(aF(ja), b)) :+ StringEntry(cV(iZ), b)) :+ IntegerEntry(aK(ab, ja), dy._2)) :+ IntegerEntry(cU(ab, ja, b), dy._2)) :+ IntegerEntry(aJ(ja), T)) :+ IntegerEntry(cT(ja, b), T)) :+ StringEntry(fT, makeString([gB[aA], dy._4, hy, gB[aD]], ":"))) :+ StringEntry(cm(), makeString(dy._6, "_"))) :+ StringEntry(ba(r), makeString([hb, "L", ja], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aG)), ja)
1742+ }
1743+
1744+
1745+func jd (b,iM) = iJ("M", 3, "SSSS", b, iM, 0)
1746+
1747+
1748+func je (b,iM) = iJ("L", 4, "SMM", b, iM, (bB * 4))
1749+
1750+
1751+func jf (b,iM) = iJ("XL", 5, "SSSML", b, iM, (bB * 47))
1752+
1753+
1754+func jg (b,iM) = iJ("XXL", 6, "LXL", b, iM, (bB * 54))
1755+
1756+
1757+func jh (b,iM) = {
1758+ let bz = size(iM)
1759+ if ((4 == bz))
1760+ then jd(b, iM)
1761+ else if ((3 == bz))
1762+ then je(b, iM)
1763+ else if ((5 == bz))
1764+ then jf(b, iM)
1765+ else if ((2 == bz))
1766+ then jg(b, iM)
17361767 else throw("Unknown merge")
17371768 }
17381769
17391770
1740-func iT (eA) = if (if ((eA.originCaller != bM))
1741- then valueOrElse(getBoolean(aZ()), false)
1771+func ji (r) = {
1772+ let jj = valueOrElse(getInteger(cf, bf), 0)
1773+ let hM = split(valueOrElse(getString(ba(r)), ag), "_")
1774+ let jk = lastBlock.timestamp
1775+ let jl = bl(cf, jj)
1776+ let bn = jl[bj]
1777+ let bo = jl[bk]
1778+ if ((hM[bs] != "T"))
1779+ then false
1780+ else {
1781+ let dF = if (if (if ((parseIntValue(hM[br]) == jj))
1782+ then (bo[bq] == "INPROGRESS")
1783+ else false)
1784+ then (parseIntValue(bn[bp]) > jk)
1785+ else false)
1786+ then throw("Your duck is taking part in the tournament")
1787+ else invoke(this, "exitTournamentInternal", [r], nil)
1788+ if ((dF == dF))
1789+ then false
1790+ else throw("Strict value is not equal to itself.")
1791+ }
1792+ }
1793+
1794+
1795+func jm (eP) = if (if ((eP.originCaller != cb))
1796+ then valueOrElse(getBoolean(bb()), false)
17421797 else false)
17431798 then throw("Contracts are under maintenance")
1744- else StringEntry(aC(toString(eA.originCaller)), toBase58String(eA.transactionId))
1745-
1746-
1747-@Callable(eA)
1748-func constructorV1 (iU) = if ((eA.caller != this))
1799+ else StringEntry(aE(toString(eP.originCaller)), toBase58String(eP.transactionId))
1800+
1801+
1802+@Callable(eP)
1803+func constructorV1 (jn) = if ((eP.caller != this))
17491804 then throw("Permission denied")
1750- else [StringEntry(bG(), iU)]
1751-
1752-
1753-
1754-@Callable(eA)
1755-func setBlocked (iV) = if ((eA.caller != this))
1805+ else [StringEntry(bV(), jn)]
1806+
1807+
1808+
1809+@Callable(eP)
1810+func setBlocked (jo) = if ((eP.caller != this))
17561811 then throw("permission denied")
1757- else [BooleanEntry(aZ(), iV)]
1758-
1759-
1760-
1761-@Callable(eA)
1812+ else [BooleanEntry(bb(), jo)]
1813+
1814+
1815+
1816+@Callable(eP)
17621817 func stakeLand () = {
1763- let iW = iT(eA)
1764- if ((size(eA.payments) != 1))
1818+ let jp = jm(eP)
1819+ if ((size(eP.payments) != 1))
17651820 then throw("Exactly one payment required")
17661821 else {
1767- let iX = value(eA.payments[0])
1768- let aE = value(iX.assetId)
1769- let by = toString(eA.caller)
1770- if ((iX.amount != 1))
1771- then throw((("NFT " + X) + " token should be attached as payment"))
1822+ let jq = value(eP.payments[0])
1823+ let aG = value(jq.assetId)
1824+ let bN = toString(eP.caller)
1825+ if ((jq.amount != 1))
1826+ then throw((("NFT " + Z) + " token should be attached as payment"))
17721827 else {
1773- let hA = value(assetInfo(aE))
1774- if ((hA.issuer != this))
1828+ let hP = value(assetInfo(aG))
1829+ if ((hP.issuer != this))
17751830 then throw("Unknown issuer of token")
1776- else if (!(contains(hA.name, X)))
1777- then throw((("Only NFT " + X) + " tokens are accepted"))
1831+ else if (!(contains(hP.name, Z)))
1832+ then throw((("Only NFT " + Z) + " tokens are accepted"))
17781833 else {
1779- let iY = drop(hA.name, 4)
1780- let cB = if (contains(iY, "XXL"))
1781- then dropRight(iY, 3)
1782- else if (contains(iY, "XL"))
1783- then dropRight(iY, 2)
1784- else dropRight(iY, 1)
1785- if (!(isDefined(parseInt(cB))))
1786- then throw(("Cannot parse land number from " + hA.name))
1834+ let jr = drop(hP.name, 4)
1835+ let cQ = if (contains(jr, "XXL"))
1836+ then dropRight(jr, 3)
1837+ else if (contains(jr, "XL"))
1838+ then dropRight(jr, 2)
1839+ else dropRight(jr, 1)
1840+ if (!(isDefined(parseInt(cQ))))
1841+ then throw(("Cannot parse land number from " + hP.name))
17871842 else {
1788- let aO = toBase58String(aE)
1789- let hB = aG(aO)
1790- if (isDefined(getInteger(hB)))
1791- then throw((("NFT " + hA.name) + " is already staked"))
1843+ let aQ = toBase58String(aG)
1844+ let hQ = aI(aQ)
1845+ if (isDefined(getInteger(hQ)))
1846+ then throw((("NFT " + hP.name) + " is already staked"))
17921847 else {
1793- let hE = split(hA.description, "_")
1794- let ew = eC(hE[bT])
1795- let hp = cf(hE[bS])
1796- let di = eB(ew, (hp / br), 1)
1797- let hq = valueOrElse(getInteger(aI(Z, aO)), 0)
1798- let iH = bY(by)
1799- let iI = getString(iH)
1800- let iE = if (isDefined(iI))
1801- then split_51C(value(iI), "_")
1848+ let hT = split(hP.description, "_")
1849+ let eL = eR(hT[ci])
1850+ let hE = cu(hT[ch])
1851+ let dx = eQ(eL, (hE / bG), 1)
1852+ let hF = valueOrElse(getInteger(aK(ab, aQ)), 0)
1853+ let iW = cn(bN)
1854+ let iX = getString(iW)
1855+ let iT = if (isDefined(iX))
1856+ then split_51C(value(iX), "_")
18021857 else nil
1803- if (containsElement(iE, aO))
1804- then throw(("Your staked lands already contain " + aO))
1858+ if (containsElement(iT, aQ))
1859+ then throw(("Your staked lands already contain " + aQ))
18051860 else {
1806- let fV = valueOrElse(getInteger(aH(aO)), 0)
1807- let iM = bZ(by)
1808- let iZ = valueOrElse(getInteger(iM), 0)
1809- let ja = cd(invoke(bP, "onStakeUnstakeLand", [by], nil))
1810- $Tuple2([IntegerEntry(hB, lastBlock.timestamp), IntegerEntry(aK(X, aO, by), lastBlock.timestamp), StringEntry(iH, makeString_11C((iE :+ aO), "_")), IntegerEntry(iM, (iZ + hp)), StringEntry(aD(aO), by), StringEntry(cG(cB), by), IntegerEntry(cF(Z, aO, by), hq), IntegerEntry(cE(aO, by), fV), StringEntry(bX(), di), iW], ja)
1861+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1862+ let jb = co(bN)
1863+ let js = valueOrElse(getInteger(jb), 0)
1864+ let jt = cs(invoke(ce, "onStakeUnstakeLand", [bN], nil))
1865+ $Tuple2([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(Z, aQ, bN), lastBlock.timestamp), StringEntry(iW, makeString_11C((iT :+ aQ), "_")), IntegerEntry(jb, (js + hE)), StringEntry(aF(aQ), bN), StringEntry(cV(cQ), bN), IntegerEntry(cU(ab, aQ, bN), hF), IntegerEntry(cT(aQ, bN), gk), StringEntry(cm(), dx), jp], jt)
18111866 }
18121867 }
18131868 }
18181873
18191874
18201875
1821-@Callable(eA)
1822-func unstakeLand (hv) = {
1823- let iW = iT(eA)
1824- if ((size(eA.payments) != 0))
1876+@Callable(eP)
1877+func unstakeLand (hK) = {
1878+ let jp = jm(eP)
1879+ if ((size(eP.payments) != 0))
18251880 then throw("No payments required")
18261881 else {
1827- let b = toString(eA.caller)
1828- let ec = ht(b, cL, hv)
1829- let aO = ec._2
1830- let iH = bY(b)
1831- let ew = eC(ec._3[bT])
1832- let hp = cf(ec._3[bS])
1833- let di = eB(ew, (hp / br), -1)
1834- let hY = hR(b, aO, hp, cL)
1835- let iE = split_51C(valueOrElse(getString(iH), ""), "_")
1836- let bL = indexOf(iE, aO)
1837- if (!(isDefined(bL)))
1838- then throw(("Your staked lands don't contain " + aO))
1882+ let b = toString(eP.caller)
1883+ let er = hI(b, da, hK)
1884+ let aQ = er._2
1885+ let iW = cn(b)
1886+ let eL = eR(er._3[ci])
1887+ let hE = cu(er._3[ch])
1888+ let dx = eQ(eL, (hE / bG), -1)
1889+ let in = ig(b, aQ, hE, da)
1890+ let iT = split_51C(valueOrElse(getString(iW), ""), "_")
1891+ let ca = indexOf(iT, aQ)
1892+ if (!(isDefined(ca)))
1893+ then throw(("Your staked lands don't contain " + aQ))
18391894 else {
1840- let jb = lastBlock.timestamp
1841- let jc = valueOrElse(getInteger(bO, ba(b)), 0)
1842- if ((jc >= jb))
1843- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(jc)))
1895+ let jk = lastBlock.timestamp
1896+ let ju = valueOrElse(getInteger(cd, bc(b)), 0)
1897+ if ((ju >= jk))
1898+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ju)))
18441899 else {
1845- let jd = (valueOrElse(getInteger(bP, a(b)), 0) + bn)
1846- if ((jd > jb))
1847- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jd)))
1900+ let jv = (valueOrElse(getInteger(ce, a(b)), 0) + bC)
1901+ if ((jv > jk))
1902+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jv)))
18481903 else {
1849- let iM = bZ(b)
1850- let iN = valueOrElse(getInteger(iM), 0)
1851- let je = if ((hp > iN))
1904+ let jb = co(b)
1905+ let jc = valueOrElse(getInteger(jb), 0)
1906+ let jw = if ((hE > jc))
18521907 then 0
1853- else (iN - hp)
1854- let ja = cd(invoke(bP, "onStakeUnstakeLand", [b], nil))
1855- $Tuple2([ScriptTransfer(eA.caller, 1, fromBase58String(aO)), DeleteEntry(aG(aO)), DeleteEntry(aK(X, aO, b)), StringEntry(bX(), di), StringEntry(hY._2, makeString(hY._3, ":")), if ((size(iE) > 1))
1856- then StringEntry(iH, makeString_11C(removeByIndex(iE, value(bL)), "_"))
1857- else DeleteEntry(iH), IntegerEntry(iM, je), iW], ja)
1908+ else (jc - hE)
1909+ let jt = cs(invoke(ce, "onStakeUnstakeLand", [b], nil))
1910+ $Tuple2([ScriptTransfer(eP.caller, 1, fromBase58String(aQ)), DeleteEntry(aI(aQ)), DeleteEntry(aM(Z, aQ, b)), StringEntry(cm(), dx), StringEntry(in._2, makeString(in._3, ":")), if ((size(iT) > 1))
1911+ then StringEntry(iW, makeString_11C(removeByIndex(iT, value(ca)), "_"))
1912+ else DeleteEntry(iW), IntegerEntry(jb, jw), jp], jt)
18581913 }
18591914 }
18601915 }
18631918
18641919
18651920
1866-@Callable(eA)
1921+@Callable(eP)
18671922 func stakeDuck () = {
1868- let iW = iT(eA)
1869- if ((size(eA.payments) != 1))
1923+ let jp = jm(eP)
1924+ if ((size(eP.payments) != 1))
18701925 then throw("Exactly one payment required")
18711926 else {
1872- let iX = value(eA.payments[0])
1873- let aE = value(iX.assetId)
1874- let by = toString(eA.caller)
1875- if ((iX.amount != 1))
1876- then throw((("NFT " + Y) + " token should be attached as payment"))
1927+ let jq = value(eP.payments[0])
1928+ let aG = value(jq.assetId)
1929+ let bN = toString(eP.caller)
1930+ if ((jq.amount != 1))
1931+ then throw((("NFT " + aa) + " token should be attached as payment"))
18771932 else {
1878- let hA = value(assetInfo(aE))
1879- if (if ((hA.issuer != ci))
1880- then (hA.issuer != cj)
1933+ let hP = value(assetInfo(aG))
1934+ if (if ((hP.issuer != cx))
1935+ then (hP.issuer != cy)
18811936 else false)
1882- then throw((("Unknown issuer of " + Y) + " token"))
1883- else if (!(contains(hA.name, Y)))
1884- then throw((("Only NFT " + Y) + " tokens are accepted"))
1937+ then throw((("Unknown issuer of " + aa) + " token"))
1938+ else if (!(contains(hP.name, aa)))
1939+ then throw((("Only NFT " + aa) + " tokens are accepted"))
18851940 else {
1886- let jf = toBase58String(aE)
1887- let hB = aG(jf)
1888- if (isDefined(getInteger(hB)))
1889- then throw((("NFT " + hA.name) + " is already staked"))
1890- else if (isDefined(getString(aW(by))))
1891- then throw(("You already staked one duck: " + hA.name))
1941+ let jx = toBase58String(aG)
1942+ let hQ = aI(jx)
1943+ if (isDefined(getInteger(hQ)))
1944+ then throw((("NFT " + hP.name) + " is already staked"))
1945+ else if (isDefined(getString(aY(bN))))
1946+ then throw(("You already staked one duck: " + hP.name))
18921947 else {
1893- let jg = aY(jf)
1894- let jh = getString(jg)
1895- let fE = aX(jf)
1896- let ji = getString(fE)
1897- let hb = q(jf)
1898- let hc = M(valueOrElse(getInteger(u(jf)), 0))
1899- let jj = valueOrElse(getInteger(hb), hc)
1900- ([IntegerEntry(hB, lastBlock.timestamp), IntegerEntry(aK(Y, toBase58String(aE), by), lastBlock.timestamp), StringEntry(aV(jf), by), StringEntry(aW(by), jf)] ++ (if (isDefined(jh))
1948+ let jy = ba(jx)
1949+ let jz = getString(jy)
1950+ let fT = aZ(jx)
1951+ let jA = getString(fT)
1952+ let hq = q(jx)
1953+ let hr = O(valueOrElse(getInteger(u(jx)), 0))
1954+ let jB = valueOrElse(getInteger(hq), hr)
1955+ ([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(aa, toBase58String(aG), bN), lastBlock.timestamp), StringEntry(aX(jx), bN), StringEntry(aY(bN), jx)] ++ (if (isDefined(jz))
19011956 then nil
1902- else ([StringEntry(jg, ae)] ++ (if (isDefined(ji))
1957+ else ([StringEntry(jy, ag)] ++ (if (isDefined(jA))
19031958 then nil
1904- else (([StringEntry(fE, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hb, jj)) :+ iW)))))
1959+ else (([StringEntry(fT, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hq, jB)) :+ jp)))))
19051960 }
19061961 }
19071962 }
19101965
19111966
19121967
1913-@Callable(eA)
1914-func unstakeDuck (jf) = {
1915- let iW = iT(eA)
1916- if ((size(eA.payments) != 0))
1968+@Callable(eP)
1969+func unstakeDuck (jx) = {
1970+ let jp = jm(eP)
1971+ if ((size(eP.payments) != 0))
19171972 then throw("No payments required")
19181973 else {
1919- let aE = fromBase58String(jf)
1920- let by = toString(eA.caller)
1921- let hA = value(assetInfo(aE))
1922- let hB = aG(toBase58String(aE))
1923- if (!(isDefined(getInteger(hB))))
1924- then throw((("NFT " + hA.name) + " is not staked"))
1925- else if (!(isDefined(getString(aW(by)))))
1926- then throw((("The duck " + hA.name) + " is not staked"))
1974+ let aG = fromBase58String(jx)
1975+ let bN = toString(eP.caller)
1976+ let hP = value(assetInfo(aG))
1977+ let hQ = aI(toBase58String(aG))
1978+ if (!(isDefined(getInteger(hQ))))
1979+ then throw((("NFT " + hP.name) + " is not staked"))
1980+ else if (!(isDefined(getString(aY(bN)))))
1981+ then throw((("The duck " + hP.name) + " is not staked"))
19271982 else {
1928- let hD = valueOrErrorMessage(getString(aV(toBase58String(aE))), (("NFT " + hA.name) + " is orphaned"))
1929- if ((hD != by))
1983+ let hS = valueOrErrorMessage(getString(aX(toBase58String(aG))), (("NFT " + hP.name) + " is orphaned"))
1984+ if ((hS != bN))
19301985 then throw("Staked NFT is not yours")
19311986 else {
1932- let hb = q(jf)
1933- let hc = M(valueOrElse(getInteger(u(jf)), 0))
1934- let W = valueOrElse(getInteger(hb), hc)
1935- if ((hc > W))
1936- then throw((("Please heal your duck to " + toString(hc)) + "hp before unstaking"))
1937- else [ScriptTransfer(eA.caller, 1, aE), DeleteEntry(hB), DeleteEntry(hb), DeleteEntry(aY(jf)), DeleteEntry(aV(jf)), DeleteEntry(aK(Y, jf, by)), DeleteEntry(aW(by)), iW]
1987+ let hq = q(jx)
1988+ let hr = O(valueOrElse(getInteger(u(jx)), 0))
1989+ let Y = valueOrElse(getInteger(hq), hr)
1990+ if ((hr > Y))
1991+ then throw((("Please heal your duck to " + toString(hr)) + "hp before unstaking"))
1992+ else [ScriptTransfer(eP.caller, 1, aG), DeleteEntry(hQ), DeleteEntry(hq), DeleteEntry(ba(jx)), DeleteEntry(aX(jx)), DeleteEntry(aM(aa, jx, bN)), DeleteEntry(aY(bN)), jp]
19381993 }
19391994 }
19401995 }
19421997
19431998
19441999
1945-@Callable(eA)
1946-func claimRes (gi,jk) = {
1947- let iW = iT(eA)
1948- if ((size(eA.payments) != 0))
2000+@Callable(eP)
2001+func claimRes (gx,jC) = {
2002+ let jp = jm(eP)
2003+ if ((size(eP.payments) != 0))
19492004 then throw("No payments required")
19502005 else {
1951- let b = toString(eA.originCaller)
1952- let dq = hF(b, gi, cL, jk)
1953- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1954- $Tuple2(((((dq._1 ++ ie(r, fraction(A, gi, bq))._1) :+ StringEntry(dq._2, makeString(dq._3, ":"))) :+ StringEntry(dq._4, makeString(dq._5, ":"))) :+ iW), dq._3[az])
1955- }
1956- }
1957-
1958-
1959-
1960-@Callable(eA)
1961-func claimResToWH (gi,jk) = {
1962- let iW = iT(eA)
1963- if ((size(eA.payments) != 0))
2006+ let b = toString(eP.originCaller)
2007+ let dF = hU(b, gx, da, jC)
2008+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2009+ $Tuple2(((((dF._1 ++ it(r, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._3[aB])
2010+ }
2011+ }
2012+
2013+
2014+
2015+@Callable(eP)
2016+func claimResToWH (gx,jC) = {
2017+ let jp = jm(eP)
2018+ if ((size(eP.payments) != 0))
19642019 then throw("No payments required")
19652020 else {
1966- let b = toString(eA.originCaller)
1967- let dq = hF(b, gi, cK, jk)
1968- $Tuple2(((((dq._1 ++ ik(b, fraction(A, gi, bq))._1) :+ StringEntry(dq._2, makeString(dq._3, ":"))) :+ StringEntry(dq._4, makeString(dq._5, ":"))) :+ iW), dq._5[aq])
1969- }
1970- }
1971-
1972-
1973-
1974-@Callable(eA)
1975-func flight (gQ,gR) = {
1976- let iW = iT(eA)
1977- if ((size(eA.payments) != 0))
2021+ let b = toString(eP.originCaller)
2022+ let dF = hU(b, gx, cZ, jC)
2023+ $Tuple2(((((dF._1 ++ iz(b, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._5[as])
2024+ }
2025+ }
2026+
2027+
2028+
2029+@Callable(eP)
2030+func flight (hf,hg) = {
2031+ let jp = jm(eP)
2032+ if ((size(eP.payments) != 0))
19782033 then throw("No payments required")
19792034 else {
1980- let bb = toString(eA.caller)
1981- let ff = gP(bb, gQ, gR)
1982- let r = ff._2
1983- let jg = aY(r)
1984- let hx = valueOrElse(getString(jg), ae)
1985- if ((ff._4 == hx))
2035+ let bd = toString(eP.caller)
2036+ let fu = he(bd, hf, hg)
2037+ let r = fu._2
2038+ let jy = ba(r)
2039+ let hM = valueOrElse(getString(jy), ag)
2040+ if ((fu._4 == hM))
19862041 then throw("You can't fly to the same location")
19872042 else {
1988- let hk = w(r)
1989- let hl = valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,")
1990- let hm = dr(hl, ff._5)
1991- $Tuple2(([StringEntry(jg, if ((ff._1 > 0))
1992- then ff._4
1993- else hx), StringEntry(hk, hm), IntegerEntry(q(r), ff._1), iW] ++ ie(r, if ((ff._1 > 0))
1994- then B
1995- else C)._1), ff._3)
2043+ let hz = w(r)
2044+ let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,")
2045+ let hB = dG(hA, fu._5)
2046+ $Tuple2(([StringEntry(jy, if ((fu._1 > 0))
2047+ then fu._4
2048+ else hM), StringEntry(hz, hB), IntegerEntry(q(r), fu._1), jp] ++ it(r, if ((fu._1 > 0))
2049+ then D
2050+ else E)._1), fu._3)
19962051 }
19972052 }
19982053 }
19992054
20002055
20012056
2002-@Callable(eA)
2003-func heal (jl,jm,jn) = {
2004- let iW = iT(eA)
2005- if (if (if ((0 > jl))
2057+@Callable(eP)
2058+func heal (jD,jE,jF) = {
2059+ let jp = jm(eP)
2060+ if (if (if ((0 > jD))
20062061 then true
2007- else (0 > jm))
2062+ else (0 > jE))
20082063 then true
2009- else (0 > jn))
2064+ else (0 > jF))
20102065 then throw("Quantity cannot be negative")
20112066 else {
2012- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2013- let jo = [jl, jm, jn]
2014- let hb = q(r)
2015- let hc = M(valueOrElse(getInteger(u(r)), 0))
2016- let jp = valueOrElse(getInteger(hb), hc)
2017- if ((jp >= hc))
2018- then throw((("HP should be < " + toString(hc)) + " to heal"))
2067+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2068+ let jG = [jD, jE, jF]
2069+ let hq = q(r)
2070+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2071+ let jH = valueOrElse(getInteger(hq), hr)
2072+ if ((jH >= hr))
2073+ then throw((("HP should be < " + toString(hr)) + " to heal"))
20192074 else {
2020- let fE = aX(r)
2021- let gm = fD(fE)
2022- let jq = if ((gm[aB] == ""))
2075+ let fT = aZ(r)
2076+ let gB = fS(fT)
2077+ let jI = if ((gB[aD] == ""))
20232078 then nil
2024- else split(gm[aB], "_")
2025- func jr (cY,js) = {
2026- let ce = cY._2
2027- let eW = if ((size(jq) > ce))
2028- then parseIntValue(jq[ce])
2079+ else split(gB[aD], "_")
2080+ func jJ (dn,jK) = {
2081+ let ct = dn._2
2082+ let fl = if ((size(jI) > ct))
2083+ then parseIntValue(jI[ct])
20292084 else 0
2030- if ((3 > ce))
2085+ if ((3 > ct))
20312086 then {
2032- let jt = jo[ce]
2033- if ((jt > eW))
2034- then throw(((("You have only " + toString(eW)) + " of ") + ah[ce]))
2035- else $Tuple3((cY._1 :+ toString((eW - jt))), (ce + 1), (cY._3 + (cl[ce] * jt)))
2087+ let jL = jG[ct]
2088+ if ((jL > fl))
2089+ then throw(((("You have only " + toString(fl)) + " of ") + aj[ct]))
2090+ else $Tuple3((dn._1 :+ toString((fl - jL))), (ct + 1), (dn._3 + (cA[ct] * jL)))
20362091 }
2037- else $Tuple3((cY._1 :+ toString(eW)), (ce + 1), cY._3)
2092+ else $Tuple3((dn._1 :+ toString(fl)), (ct + 1), dn._3)
20382093 }
20392094
2040- let dq = {
2041- let da = ak
2042- let db = size(da)
2043- let dc = $Tuple3(nil, 0, 0)
2044- func dd (de,df) = if ((df >= db))
2045- then de
2046- else jr(de, da[df])
2047-
2048- func dg (de,df) = if ((df >= db))
2049- then de
2095+ let dF = {
2096+ let dp = am
2097+ let dq = size(dp)
2098+ let dr = $Tuple3(nil, 0, 0)
2099+ func ds (dt,du) = if ((du >= dq))
2100+ then dt
2101+ else jJ(dt, dp[du])
2102+
2103+ func dv (dt,du) = if ((du >= dq))
2104+ then dt
20502105 else throw("List size exceeds 50")
20512106
2052- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
2107+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
20532108 }
2054- let ju = min([hc, (jp + dq._3)])
2055- $Tuple2(([IntegerEntry(hb, ju), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], makeString(dq._1, "_")], ":")), iW] ++ ie(r, (J * ((jl + jm) + jn)))._1), ju)
2109+ let jM = min([hr, (jH + dF._3)])
2110+ $Tuple2(([IntegerEntry(hq, jM), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], makeString(dF._1, "_")], ":")), jp] ++ it(r, (L * ((jD + jE) + jF)))._1), jM)
20562111 }
20572112 }
20582113 }
20592114
20602115
20612116
2062-@Callable(eA)
2117+@Callable(eP)
20632118 func healES () = {
2064- let iW = iT(eA)
2065- if ((size(eA.payments) != 1))
2119+ let jp = jm(eP)
2120+ if ((size(eP.payments) != 1))
20662121 then throw("Exactly one payment required")
20672122 else {
2068- let iX = value(eA.payments[0])
2069- if ((iX.assetId != bj))
2123+ let jq = value(eP.payments[0])
2124+ if ((jq.assetId != by))
20702125 then throw("Allowed USDT payment only!")
20712126 else {
2072- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2073- let hb = q(r)
2074- let hc = M(valueOrElse(getInteger(u(r)), 0))
2075- let jp = valueOrElse(getInteger(hb), hc)
2076- if ((jp > 0))
2127+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2128+ let hq = q(r)
2129+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2130+ let jH = valueOrElse(getInteger(hq), hr)
2131+ if ((jH > 0))
20772132 then throw("HP should be 0 to call Emergency Service")
20782133 else {
2079- let fE = aX(r)
2080- let gm = fD(fE)
2081- let jq = if ((gm[aB] == ""))
2134+ let fT = aZ(r)
2135+ let gB = fS(fT)
2136+ let jI = if ((gB[aD] == ""))
20822137 then nil
2083- else split(gm[aB], "_")
2084- let jv = if ((size(jq) > 0))
2085- then parseIntValue(jq[0])
2138+ else split(gB[aD], "_")
2139+ let jN = if ((size(jI) > 0))
2140+ then parseIntValue(jI[0])
20862141 else 0
2087- let jw = if ((size(jq) > 1))
2088- then parseIntValue(jq[1])
2142+ let jO = if ((size(jI) > 1))
2143+ then parseIntValue(jI[1])
20892144 else 0
2090- let jx = if ((size(jq) > 2))
2091- then parseIntValue(jq[2])
2145+ let jP = if ((size(jI) > 2))
2146+ then parseIntValue(jI[2])
20922147 else 0
2093- if (if (if ((jv > 0))
2148+ if (if (if ((jN > 0))
20942149 then true
2095- else (jw > 0))
2150+ else (jO > 0))
20962151 then true
2097- else (jx > 0))
2152+ else (jP > 0))
20982153 then throw("You have to use own Medical Kit")
20992154 else {
2100- let jy = getString(bN, bc())
2101- let jz = if (isDefined(jy))
2102- then split(value(jy), "_")
2155+ let jQ = getString(cc, be())
2156+ let jR = if (isDefined(jQ))
2157+ then split(value(jQ), "_")
21032158 else nil
2104- let jA = if ((size(jz) > 0))
2105- then parseIntValue(jz[0])
2159+ let jS = if ((size(jR) > 0))
2160+ then parseIntValue(jR[0])
21062161 else 0
2107- if ((0 >= jA))
2162+ if ((0 >= jS))
21082163 then throw("There are no Medical Kits L1 at Emergency Service storage")
21092164 else {
2110- let ju = (jp + cl[0])
2111- let jB = makeString([toString((jA - 1)), removeByIndex(jz, 0)], "_")
2112- let bg = split(ak[0], "_")
2113- let jC = bf(bg)
2114- let jD = fraction((jC * ag), af, (bq * ao))
2115- if ((iX.amount != jD))
2116- then throw(("Payment attached should be " + toString(jD)))
2165+ let jM = (jH + cA[0])
2166+ let jT = makeString([toString((jS - 1)), removeByIndex(jR, 0)], "_")
2167+ let bv = split(am[0], "_")
2168+ let jU = bu(bv)
2169+ let jV = fraction((jU * ai), ah, (bF * aq))
2170+ if ((jq.amount != jV))
2171+ then throw(("Payment attached should be " + toString(jV)))
21172172 else {
2118- let dq = ca(invoke(bN, "updateEsStorage", [jB], [AttachedPayment(bj, jD)]))
2119- $Tuple2(([IntegerEntry(hb, ju), iW] ++ ie(r, D)._1), dq)
2173+ let dF = cp(invoke(cc, "updateEsStorage", [jT], [AttachedPayment(by, jV)]))
2174+ $Tuple2(([IntegerEntry(hq, jM), jp] ++ it(r, F)._1), dF)
21202175 }
21212176 }
21222177 }
21272182
21282183
21292184
2130-@Callable(eA)
2131-func updateBackpack (r,jE) = if ((eA.caller != bN))
2185+@Callable(eP)
2186+func updateBackpack (r,jW) = if ((eP.caller != cc))
21322187 then throw("permission denied")
2133- else $Tuple2([StringEntry(aX(r), jE)], jE)
2134-
2135-
2136-
2137-@Callable(eA)
2188+ else $Tuple2([StringEntry(aZ(r), jW)], jW)
2189+
2190+
2191+
2192+@Callable(eP)
21382193 func commitForRandom () = {
2139- let iW = iT(eA)
2140- let jF = (height + bV)
2141- let b = toString(eA.caller)
2142- $Tuple2(([IntegerEntry(bW(b), jF)] :+ iW), jF)
2143- }
2144-
2145-
2146-
2147-@Callable(eA)
2194+ let jp = jm(eP)
2195+ let jX = (height + ck)
2196+ let b = toString(eP.caller)
2197+ $Tuple2(([IntegerEntry(cl(b), jX)] :+ jp), jX)
2198+ }
2199+
2200+
2201+
2202+@Callable(eP)
21482203 func buySLand () = {
2149- let iW = iT(eA)
2150- if ((size(eA.payments) != 1))
2204+ let jp = jm(eP)
2205+ if ((size(eP.payments) != 1))
21512206 then throw("Exactly one payment required")
21522207 else {
2153- let iX = value(eA.payments[0])
2154- if ((iX.assetId != bj))
2208+ let jq = value(eP.payments[0])
2209+ if ((jq.assetId != by))
21552210 then throw("Allowed USDT payment only!")
2156- else if ((iX.amount != cr))
2157- then throw(("Payment attached should be " + toString(cr)))
2211+ else if ((jq.amount != cG))
2212+ then throw(("Payment attached should be " + toString(cG)))
21582213 else {
2159- let dq = gH(eA.caller, eA.transactionId)
2160- $Tuple2((((dq._1 :+ ScriptTransfer(bN, iX.amount, bj)) ++ ik(toString(eA.caller), F)._1) :+ iW), dq._2._1)
2214+ let dF = gW(eP.caller, eP.transactionId)
2215+ $Tuple2((((dF._1 :+ ScriptTransfer(cc, jq.amount, by)) ++ iz(toString(eP.caller), H)._1) :+ jp), dF._2._1)
21612216 }
21622217 }
21632218 }
21642219
21652220
21662221
2167-@Callable(eA)
2168-func expedition (gQ,gR) = {
2169- let iW = iT(eA)
2170- if ((size(eA.payments) != 0))
2222+@Callable(eP)
2223+func expedition (hf,hg) = {
2224+ let jp = jm(eP)
2225+ if ((size(eP.payments) != 0))
21712226 then throw("No payments required")
21722227 else {
2173- let dq = hh(eA.caller, eA.transactionId, gQ, gR)
2174- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2175- $Tuple2(((dq._1 ++ ie(r, F)._1) :+ iW), $Tuple2(dq._2, dq._3))
2176- }
2177- }
2178-
2179-
2180-
2181-@Callable(eA)
2182-func upgradeInfra (aO) = {
2183- let iW = iT(eA)
2184- if ((size(eA.payments) != 0))
2228+ let dF = hw(eP.caller, eP.transactionId, hf, hg)
2229+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2230+ $Tuple2(((dF._1 ++ it(r, H)._1) :+ jp), $Tuple2(dF._2, dF._3))
2231+ }
2232+ }
2233+
2234+
2235+
2236+@Callable(eP)
2237+func upgradeInfra (aQ) = {
2238+ let jp = jm(eP)
2239+ if ((size(eP.payments) != 0))
21852240 then throw("No payments required")
21862241 else {
2187- let dq = hS(true, eA.caller, 0, aO)
2188- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2189- $Tuple2(((dq._1 :+ iW) ++ ie(r, fraction(G, dq._3, bq))._1), dq._2)
2190- }
2191- }
2192-
2193-
2194-
2195-@Callable(eA)
2196-func activateArtifact (jG,jH) = {
2197- let iW = iT(eA)
2198- if ((size(eA.payments) != 0))
2242+ let dF = ih(true, eP.caller, 0, aQ)
2243+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2244+ $Tuple2(((dF._1 :+ jp) ++ it(r, fraction(I, dF._3, bF))._1), dF._2)
2245+ }
2246+ }
2247+
2248+
2249+
2250+@Callable(eP)
2251+func activateArtifact (jY,jZ) = {
2252+ let jp = jm(eP)
2253+ if ((size(eP.payments) != 0))
21992254 then throw("No payments required")
22002255 else {
2201- let b = toString(eA.caller)
2202- let dq = {
2203- let bk = jG
2204- if (("PRESALE" == bk))
2205- then is(b, jH)
2206- else if (("ONBOARD" == bk))
2207- then il(b)
2256+ let b = toString(eP.caller)
2257+ let dF = {
2258+ let bz = jY
2259+ if (("PRESALE" == bz))
2260+ then iH(b, jZ)
2261+ else if (("ONBOARD" == bz))
2262+ then iA(b)
22082263 else throw("Unknown artifact")
22092264 }
2210- (dq :+ iW)
2211- }
2212- }
2213-
2214-
2215-
2216-@Callable(eA)
2217-func mergeLands (ix) = {
2218- let iW = iT(eA)
2219- if ((size(eA.payments) != 0))
2265+ (dF :+ jp)
2266+ }
2267+ }
2268+
2269+
2270+
2271+@Callable(eP)
2272+func mergeLands (iM) = {
2273+ let jp = jm(eP)
2274+ if ((size(eP.payments) != 0))
22202275 then throw("No payments required")
22212276 else {
2222- let dq = iS(toString(eA.caller), ix)
2223- $Tuple2(((dq._1 :+ iW) ++ ik(toString(eA.caller), H)._1), dq._2)
2224- }
2225- }
2226-
2227-
2228-
2229-@Callable(eA)
2230-func cargoExchange (jI,aO) = {
2231- let iW = iT(eA)
2232- if ((size(eA.payments) != 0))
2277+ let dF = jh(toString(eP.caller), iM)
2278+ $Tuple2(((dF._1 :+ jp) ++ iz(toString(eP.caller), J)._1), dF._2)
2279+ }
2280+ }
2281+
2282+
2283+
2284+@Callable(eP)
2285+func cargoExchange (ka,aQ) = {
2286+ let jp = jm(eP)
2287+ if ((size(eP.payments) != 0))
22332288 then throw("No payments required")
22342289 else {
2235- let gl = split_4C(jI, ":")
2236- let b = toString(eA.originCaller)
2237- let hA = value(assetInfo(fromBase58String(aO)))
2238- let hB = aG(aO)
2239- if (!(isDefined(getInteger(hB))))
2240- then throw((hA.name + " is not staked"))
2290+ let gA = split_4C(ka, ":")
2291+ let b = toString(eP.originCaller)
2292+ let hP = value(assetInfo(fromBase58String(aQ)))
2293+ let hQ = aI(aQ)
2294+ if (!(isDefined(getInteger(hQ))))
2295+ then throw((hP.name + " is not staked"))
22412296 else {
2242- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
2243- if ((hD != b))
2244- then throw((X + " is not yours"))
2297+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
2298+ if ((hS != b))
2299+ then throw((Z + " is not yours"))
22452300 else {
2246- let fU = (cf(split(hA.description, "_")[bS]) / br)
2247- let fV = valueOrElse(getInteger(aH(aO)), 0)
2248- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2249- let hx = valueOrElse(getString(aY(r)), ae)
2250- let hy = split(value(hx), "_")
2251- if ((hy[bd] != "L"))
2252- then throw((("Duck location type is " + hy[bd]) + ", but should be L"))
2253- else if ((hy[be] != aO))
2254- then throw(("Duck should be on the land " + aO))
2301+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2302+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2303+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2304+ let hM = valueOrElse(getString(ba(r)), ag)
2305+ let hN = split(value(hM), "_")
2306+ if ((hN[bs] != "L"))
2307+ then throw((("Duck location type is " + hN[bs]) + ", but should be L"))
2308+ else if ((hN[bt] != aQ))
2309+ then throw(("Duck should be on the land " + aQ))
22552310 else {
2256- let fT = aN(aO)
2257- let fJ = fS(fT, fU, fV)
2258- let fE = aX(r)
2259- let gm = fD(fE)
2260- let dq = gk(gl, fJ, gm)
2261- let gb = split(fJ[at], "_")
2262- let hP = (parseIntValue(gb[av]) + dq._7)
2263- let hQ = (parseIntValue(gb[aw]) - dq._7)
2264-[StringEntry(fE, makeString_2C([gm[ay], dq._4, dq._5, dq._6], ":")), StringEntry(fT, makeString_2C([fJ[ap], dq._1, dq._2, dq._3, makeString([gb[au], toString(hP), toString(hQ), gb[ax]], "_")], ":")), iW]
2311+ let gi = aP(aQ)
2312+ let fY = gh(gi, gj, gk)
2313+ let fT = aZ(r)
2314+ let gB = fS(fT)
2315+ let dF = gz(gA, fY, gB)
2316+ let gq = split(fY[av], "_")
2317+ let ie = (parseIntValue(gq[ax]) + dF._7)
2318+ let if = (parseIntValue(gq[ay]) - dF._7)
2319+[StringEntry(fT, makeString_2C([gB[aA], dF._4, dF._5, dF._6], ":")), StringEntry(gi, makeString_2C([fY[ar], dF._1, dF._2, dF._3, makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")], ":")), jp]
22652320 }
22662321 }
22672322 }
22702325
22712326
22722327
2273-@Callable(eA)
2274-func saveWarehouse (fX,aO) = if ((eA.caller != bN))
2328+@Callable(eP)
2329+func saveWarehouse (gm,aQ) = if ((eP.caller != cc))
22752330 then throw("Access denied")
22762331 else {
2277- let fT = aN(aO)
2278- let fY = split_4C(fX, ":")
2279- if ((size(fY) != 5))
2332+ let gi = aP(aQ)
2333+ let gn = split_4C(gm, ":")
2334+ if ((size(gn) != 5))
22802335 then throw("warehouse string should contain 4 ':' separators")
22812336 else {
2282- let jJ = split(fY[at], "_")[au]
2283- let hP = fI(fY)
2284- let jK = fG(fY[ap])
2285- let hQ = ((jK - parseIntValue(jJ)) - hP)
2286- let jL = makeString_2C([fY[ap], fY[aq], fY[ar], fY[as], makeString([jJ, toString(hP), toString(hQ), toString(jK)], "_")], ":")
2287- $Tuple2([StringEntry(fT, jL)], jL)
2337+ let kb = split(gn[av], "_")[aw]
2338+ let ie = fX(gn)
2339+ let kc = fV(gn[ar])
2340+ let if = ((kc - parseIntValue(kb)) - ie)
2341+ let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([kb, toString(ie), toString(if), toString(kc)], "_")], ":")
2342+ $Tuple2([StringEntry(gi, kd)], kd)
22882343 }
22892344 }
22902345
22912346
22922347
2293-@Callable(eA)
2294-func fixWarehouseFormat (aO) = if ((eA.caller != bM))
2348+@Callable(eP)
2349+func fixWarehouseFormat (aQ) = if ((eP.caller != cb))
22952350 then throw("Access denied")
22962351 else {
2297- let fT = aN(aO)
2298- let hA = value(assetInfo(fromBase58String(aO)))
2299- let fU = (cf(split(hA.description, "_")[bS]) / br)
2300- let fV = valueOrElse(getInteger(aH(aO)), 0)
2301- let fY = fS(fT, fU, fV)
2302- let jJ = cd(invoke(bN, "recalcLockedVolumeREADONLY", [aO, fY], nil))
2303- let hP = fI(fY)
2304- let jK = fG(fY[ap])
2305- let hQ = ((jK - jJ) - hP)
2306- let jL = makeString_2C([fY[ap], fY[aq], fY[ar], fY[as], makeString([toString(jJ), toString(hP), toString(hQ), toString(jK)], "_")], ":")
2307- $Tuple2([StringEntry(fT, jL)], jL)
2308- }
2309-
2310-
2311-
2312-@Callable(eA)
2313-func fixStakedPieces (by) = if ((eA.caller != bM))
2352+ let gi = aP(aQ)
2353+ let hP = value(assetInfo(fromBase58String(aQ)))
2354+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2355+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2356+ let gn = gh(gi, gj, gk)
2357+ let kb = cs(invoke(cc, "recalcLockedVolumeREADONLY", [aQ, gn], nil))
2358+ let ie = fX(gn)
2359+ let kc = fV(gn[ar])
2360+ let if = ((kc - kb) - ie)
2361+ let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([toString(kb), toString(ie), toString(if), toString(kc)], "_")], ":")
2362+ $Tuple2([StringEntry(gi, kd)], kd)
2363+ }
2364+
2365+
2366+
2367+@Callable(eP)
2368+func fixStakedPieces (bN) = if ((eP.caller != cb))
23142369 then throw("Access denied")
23152370 else {
2316- let iN = if ((by == ""))
2371+ let jc = if ((bN == ""))
23172372 then 0
23182373 else {
2319- let iI = getString(T, bY(by))
2320- let iE = if (isDefined(iI))
2321- then split_51C(value(iI), "_")
2374+ let iX = getString(V, cn(bN))
2375+ let iT = if (isDefined(iX))
2376+ then split_51C(value(iX), "_")
23222377 else nil
2323- func jM (cY,aO) = {
2324- let hA = value(assetInfo(fromBase58String(aO)))
2325- let cg = split(hA.description, "_")[bS]
2326- (cY + cf(cg))
2378+ func ke (dn,aQ) = {
2379+ let hP = value(assetInfo(fromBase58String(aQ)))
2380+ let cv = split(hP.description, "_")[ch]
2381+ (dn + cu(cv))
23272382 }
23282383
2329- let da = iE
2330- let db = size(da)
2331- let dc = 0
2332- func dd (de,df) = if ((df >= db))
2333- then de
2334- else jM(de, da[df])
2335-
2336- func dg (de,df) = if ((df >= db))
2337- then de
2384+ let dp = iT
2385+ let dq = size(dp)
2386+ let dr = 0
2387+ func ds (dt,du) = if ((du >= dq))
2388+ then dt
2389+ else ke(dt, dp[du])
2390+
2391+ func dv (dt,du) = if ((du >= dq))
2392+ then dt
23382393 else throw("List size exceeds 100")
23392394
2340- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
2395+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
23412396 }
2342- $Tuple2([IntegerEntry(bZ(by), iN)], iN)
2343- }
2344-
2345-
2346-
2347-@Callable(eA)
2348-func setCustomName (aE,iG,aJ) = {
2349- let iW = iT(eA)
2350- if ((size(eA.payments) != 1))
2397+ $Tuple2([IntegerEntry(co(bN), jc)], jc)
2398+ }
2399+
2400+
2401+
2402+@Callable(eP)
2403+func setCustomName (aG,iV,aL) = {
2404+ let jp = jm(eP)
2405+ if ((size(eP.payments) != 1))
23512406 then throw("Exactly one payment required")
23522407 else {
2353- let iX = value(eA.payments[0])
2354- if ((iX.assetId != bj))
2408+ let jq = value(eP.payments[0])
2409+ if ((jq.assetId != by))
23552410 then throw("Allowed USDT payment only!")
2356- else if ((iX.amount != cn))
2357- then throw(("Payment should be " + toString(cn)))
2358- else if (contains(iG, "__"))
2359- then throw(("Name should not contain '__': " + iG))
2360- else if ((size(iG) > co))
2361- then throw(("Name too long, maxLength=" + toString(co)))
2411+ else if ((jq.amount != cC))
2412+ then throw(("Payment should be " + toString(cC)))
2413+ else if (contains(iV, "__"))
2414+ then throw(("Name should not contain '__': " + iV))
2415+ else if ((size(iV) > cD))
2416+ then throw(("Name too long, maxLength=" + toString(cD)))
23622417 else {
2363- let b = toString(eA.originCaller)
2364- let jN = {
2365- let bk = aJ
2366- if (("ACCOUNT" == bk))
2418+ let b = toString(eP.originCaller)
2419+ let kf = {
2420+ let bz = aL
2421+ if (("ACCOUNT" == bz))
23672422 then {
2368- let jO = cI(iG)
2369- let jP = getString(jO)
2370- if (isDefined(jP))
2371- then throw(("Name already registered: " + iG))
2423+ let kg = cX(iV)
2424+ let kh = getString(kg)
2425+ if (isDefined(kh))
2426+ then throw(("Name already registered: " + iV))
23722427 else {
2373- let jQ = aQ(b)
2374- let jR = getString(jQ)
2375- let jS = if (isDefined(jR))
2376- then [DeleteEntry(cI(value(jR)))]
2428+ let ki = aS(b)
2429+ let kj = getString(ki)
2430+ let kk = if (isDefined(kj))
2431+ then [DeleteEntry(cX(value(kj)))]
23772432 else nil
2378- (((jS :+ StringEntry(jQ, iG)) :+ StringEntry(jO, b)) ++ ik(b, E)._1)
2433+ (((kk :+ StringEntry(ki, iV)) :+ StringEntry(kg, b)) ++ iz(b, G)._1)
23792434 }
23802435 }
2381- else if (("LAND" == bk))
2436+ else if (("LAND" == bz))
23822437 then {
2383- let hA = value(assetInfo(fromBase58String(aE)))
2384- let hB = aG(aE)
2385- if (!(isDefined(getInteger(hB))))
2386- then throw((hA.name + " is not staked"))
2438+ let hP = value(assetInfo(fromBase58String(aG)))
2439+ let hQ = aI(aG)
2440+ if (!(isDefined(getInteger(hQ))))
2441+ then throw((hP.name + " is not staked"))
23872442 else {
2388- let hD = valueOrErrorMessage(getString(aD(aE)), (("NFT " + hA.name) + " is orphaned"))
2389- if ((hD != b))
2390- then throw((X + " is not yours"))
2443+ let hS = valueOrErrorMessage(getString(aF(aG)), (("NFT " + hP.name) + " is orphaned"))
2444+ if ((hS != b))
2445+ then throw((Z + " is not yours"))
23912446 else {
2392- let jO = cC(iG)
2393- let jP = getString(jO)
2394- if (isDefined(jP))
2395- then throw(("Name already registered: " + iG))
2447+ let kg = cR(iV)
2448+ let kh = getString(kg)
2449+ if (isDefined(kh))
2450+ then throw(("Name already registered: " + iV))
23962451 else {
2397- let jT = aF(aE)
2398- let jR = getString(jT)
2399- let jS = if (isDefined(jR))
2400- then [DeleteEntry(cC(value(jR)))]
2452+ let kl = aH(aG)
2453+ let kj = getString(kl)
2454+ let kk = if (isDefined(kj))
2455+ then [DeleteEntry(cR(value(kj)))]
24012456 else nil
2402- (((jS :+ StringEntry(jT, iG)) :+ StringEntry(jO, aE)) ++ ik(b, E)._1)
2457+ (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ iz(b, G)._1)
24032458 }
24042459 }
24052460 }
24062461 }
2407- else if (("DUCK" == bk))
2462+ else if (("DUCK" == bz))
24082463 then {
2409- let hA = value(assetInfo(fromBase58String(aE)))
2410- let hB = aG(aE)
2411- if (if (!(isDefined(getInteger(hB))))
2464+ let hP = value(assetInfo(fromBase58String(aG)))
2465+ let hQ = aI(aG)
2466+ if (if (!(isDefined(getInteger(hQ))))
24122467 then true
2413- else !(isDefined(getString(aW(b)))))
2414- then throw((hA.name + " is not staked"))
2468+ else !(isDefined(getString(aY(b)))))
2469+ then throw((hP.name + " is not staked"))
24152470 else {
2416- let hD = valueOrErrorMessage(getString(aV(aE)), (("NFT " + hA.name) + " is orphaned"))
2417- if ((hD != b))
2418- then throw((Y + " is not yours"))
2471+ let hS = valueOrErrorMessage(getString(aX(aG)), (("NFT " + hP.name) + " is orphaned"))
2472+ if ((hS != b))
2473+ then throw((aa + " is not yours"))
24192474 else {
2420- let jO = cH(iG)
2421- let jP = getString(jO)
2422- if (isDefined(jP))
2423- then throw(("Name already registered: " + iG))
2475+ let kg = cW(iV)
2476+ let kh = getString(kg)
2477+ if (isDefined(kh))
2478+ then throw(("Name already registered: " + iV))
24242479 else {
2425- let jT = aP(aE)
2426- let jR = getString(jT)
2427- let jS = if (isDefined(jR))
2428- then [DeleteEntry(cH(value(jR)))]
2480+ let kl = aR(aG)
2481+ let kj = getString(kl)
2482+ let kk = if (isDefined(kj))
2483+ then [DeleteEntry(cW(value(kj)))]
24292484 else nil
2430- (((jS :+ StringEntry(jT, iG)) :+ StringEntry(jO, aE)) ++ ie(aE, E)._1)
2485+ (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ it(aG, G)._1)
24312486 }
24322487 }
24332488 }
24342489 }
24352490 else throw("Unknown entity type")
24362491 }
2437- $Tuple2(((jN :+ ScriptTransfer(bN, iX.amount, bj)) :+ iW), 0)
2492+ $Tuple2(((kf :+ ScriptTransfer(cc, jq.amount, by)) :+ jp), 0)
24382493 }
24392494 }
24402495 }
24412496
24422497
24432498
2444-@Callable(eA)
2445-func setReferrals (jU,jV) = if ((eA.callerPublicKey != ck))
2499+@Callable(eP)
2500+func setReferrals (km,kn) = if ((eP.callerPublicKey != cz))
24462501 then throw("Permission denied")
24472502 else {
2448- let iW = iT(eA)
2449- if ((size(eA.payments) != 0))
2503+ let jp = jm(eP)
2504+ if ((size(eP.payments) != 0))
24502505 then throw("No payments required")
2451- else if (!(isDefined(addressFromString(jU))))
2452- then throw(("Invalid address: " + jU))
2453- else if (!(isDefined(addressFromString(jV))))
2454- then throw(("Invalid address: " + jV))
2506+ else if (!(isDefined(addressFromString(km))))
2507+ then throw(("Invalid address: " + km))
2508+ else if (!(isDefined(addressFromString(kn))))
2509+ then throw(("Invalid address: " + kn))
24552510 else {
2456- let jW = cJ()
2457- let jX = getString(jW)
2458- let jY = if (isDefined(jX))
2459- then split_4C(value(jX), "_")
2511+ let ko = cY()
2512+ let kp = getString(ko)
2513+ let kq = if (isDefined(kp))
2514+ then split_4C(value(kp), "_")
24602515 else nil
2461- if (containsElement(jY, jV))
2462- then throw((jV + " is not newbie (already has referrals)"))
2516+ if (containsElement(kq, kn))
2517+ then throw((kn + " is not newbie (already has referrals)"))
24632518 else {
2464- let im = aR(jV)
2465- let in = getString(im)
2466- if (if (isDefined(in))
2467- then isDefined(addressFromString(value(in)))
2519+ let iB = aT(kn)
2520+ let iC = getString(iB)
2521+ if (if (isDefined(iC))
2522+ then isDefined(addressFromString(value(iC)))
24682523 else false)
2469- then throw(((jV + " already has refBy: ") + value(in)))
2524+ then throw(((kn + " already has refBy: ") + value(iC)))
24702525 else {
2471- let jZ = aU(jU)
2472- let ka = getString(jZ)
2473- let kb = if (isDefined(ka))
2474- then split_4C(value(ka), "_")
2526+ let kr = aW(km)
2527+ let ks = getString(kr)
2528+ let kt = if (isDefined(ks))
2529+ then split_4C(value(ks), "_")
24752530 else nil
2476- if (containsElement(kb, jV))
2477- then throw((((jU + " already contains ") + jV) + " within referrals"))
2531+ if (containsElement(kt, kn))
2532+ then throw((((km + " already contains ") + kn) + " within referrals"))
24782533 else {
2479- let kc = makeString_2C((kb :+ jV), "_")
2480- let kd = if (containsElement(jY, jU))
2481- then value(jX)
2482- else makeString_2C((jY :+ jU), "_")
2483- $Tuple2([StringEntry(im, jU), StringEntry(jZ, kc), StringEntry(jW, kd), iW], 0)
2534+ let ku = makeString_2C((kt :+ kn), "_")
2535+ let kv = if (containsElement(kq, km))
2536+ then value(kp)
2537+ else makeString_2C((kq :+ km), "_")
2538+ $Tuple2([StringEntry(iB, km), StringEntry(kr, ku), StringEntry(ko, kv), jp], 0)
24842539 }
24852540 }
24862541 }
24892544
24902545
24912546
2492-@Callable(eA)
2493-func distributePoints (ke,kf,kg,kh,ki) = {
2494- let iW = iT(eA)
2495- if ((size(eA.payments) != 0))
2547+@Callable(eP)
2548+func distributePoints (kw,kx,ky,kz,kA) = {
2549+ let jp = jm(eP)
2550+ if ((size(eP.payments) != 0))
24962551 then throw("No payments required")
24972552 else {
2498- let b = toString(eA.originCaller)
2499- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2500- let kj = z(b)
2501- let kk = valueOrElse(getInteger(T, kj), 0)
2502- let kl = v(r)
2503- let km = valueOrElse(getInteger(T, kl), 0)
2504- let kn = (kk + km)
2505- let ko = ((((ke + kf) + kg) + kh) + ki)
2506- if ((ko > kn))
2507- then throw((("There are only " + toString(kn)) + " free points to distribute"))
2553+ let b = toString(eP.originCaller)
2554+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2555+ let kB = z(b)
2556+ let kC = valueOrElse(getInteger(V, kB), 0)
2557+ let kD = v(r)
2558+ let kE = valueOrElse(getInteger(V, kD), 0)
2559+ let kF = (kC + kE)
2560+ let kG = ((((kw + kx) + ky) + kz) + kA)
2561+ if ((kG > kF))
2562+ then throw((("There are only " + toString(kF)) + " free points to distribute"))
25082563 else {
2509- let kp = s(r)
2510- let U = split(valueOrElse(getString(T, kp), "0_0_0_0_0"), "_")
2511- let kq = (kk - ko)
2512- $Tuple2([IntegerEntry(kj, if ((0 > kq))
2564+ let kH = s(r)
2565+ let W = split(valueOrElse(getString(V, kH), "0_0_0_0_0"), "_")
2566+ let kI = (kC - kG)
2567+ $Tuple2([IntegerEntry(kB, if ((0 > kI))
25132568 then 0
2514- else kq), IntegerEntry(kl, if ((0 > kq))
2515- then (km + kq)
2516- else km), StringEntry(kp, makeString([toString((parseIntValue(U[h]) + ke)), toString((parseIntValue(U[i]) + kf)), toString((parseIntValue(U[j]) + kg)), toString((parseIntValue(U[k]) + kh)), toString((parseIntValue(U[l]) + ki))], "_")), iW], 0)
2569+ else kI), IntegerEntry(kD, if ((0 > kI))
2570+ then (kE + kI)
2571+ else kE), StringEntry(kH, makeString([toString((parseIntValue(W[h]) + kw)), toString((parseIntValue(W[i]) + kx)), toString((parseIntValue(W[j]) + ky)), toString((parseIntValue(W[k]) + kz)), toString((parseIntValue(W[l]) + kA))], "_")), jp], 0)
25172572 }
25182573 }
25192574 }
25202575
25212576
25222577
2523-@Callable(eA)
2524-func splitByGlobalWeightsREADONLY (gi) = $Tuple2(nil, dh(gi))
2525-
2526-
2527-
2528-@Callable(eA)
2529-func splitByGlobalAndLocalWeightsREADONLY (kr,ks,eD) = {
2530- let ew = eC(eD)
2531- $Tuple2(nil, $Tuple2(dh(kr), cS(ks, ew)))
2532- }
2533-
2534-
2535-
2536-@Callable(eA)
2537-func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fD(aX(r)), ":"))
2538-
2539-
2540-
2541-@Callable(eA)
2542-func getWarehouseREADONLY (aO) = {
2543- let hA = value(assetInfo(fromBase58String(aO)))
2544- let fU = (cf(split(hA.description, "_")[bS]) / br)
2545- let fV = valueOrElse(getInteger(aH(aO)), 0)
2546- $Tuple2(nil, makeString_2C(fS(aN(aO), fU, fV), ":"))
2547- }
2548-
2549-
2550-
2551-@Callable(eA)
2578+@Callable(eP)
2579+func splitByGlobalWeightsREADONLY (gx) = $Tuple2(nil, dw(gx))
2580+
2581+
2582+
2583+@Callable(eP)
2584+func splitByGlobalAndLocalWeightsREADONLY (kJ,kK,eS) = {
2585+ let eL = eR(eS)
2586+ $Tuple2(nil, $Tuple2(dw(kJ), dh(kK, eL)))
2587+ }
2588+
2589+
2590+
2591+@Callable(eP)
2592+func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fS(aZ(r)), ":"))
2593+
2594+
2595+
2596+@Callable(eP)
2597+func getWarehouseREADONLY (aQ) = {
2598+ let hP = value(assetInfo(fromBase58String(aQ)))
2599+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2600+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2601+ $Tuple2(nil, makeString_2C(gh(aP(aQ), gj, gk), ":"))
2602+ }
2603+
2604+
2605+
2606+@Callable(eP)
25522607 func saveLastTx () = {
2553- let gI = eA.caller
2554- if (if (if ((gI != bP))
2555- then (gI != bN)
2608+ let gX = eP.caller
2609+ if (if (if ((gX != ce))
2610+ then (gX != cc)
25562611 else false)
2557- then (gI != bQ)
2612+ then (gX != cf)
25582613 else false)
25592614 then throw("Access denied")
2560- else $Tuple2([iT(eA)], 42)
2561- }
2562-
2563-
2564-
2565-@Callable(eA)
2566-func updateDuckStats (r,if) = if ((eA.caller != bN))
2615+ else $Tuple2([jm(eP)], 42)
2616+ }
2617+
2618+
2619+
2620+@Callable(eP)
2621+func updateDuckStats (r,iu) = if ((eP.caller != cc))
25672622 then throw("Access denied")
2568- else ie(r, if)
2569-
2570-
2571-
2572-@Callable(eA)
2573-func updateAccStats (b,if) = if ((eA.caller != bN))
2623+ else it(r, iu)
2624+
2625+
2626+
2627+@Callable(eP)
2628+func updateAccStats (b,iu) = if ((eP.caller != cc))
25742629 then throw("Access denied")
2575- else ik(b, if)
2576-
2577-
2578-
2579-@Callable(eA)
2580-func equipDuck (kt) = {
2581- let iW = iT(eA)
2582- if ((size(eA.payments) != 0))
2630+ else iz(b, iu)
2631+
2632+
2633+
2634+@Callable(eP)
2635+func equipDuck (kL) = {
2636+ let jp = jm(eP)
2637+ if ((size(eP.payments) != 0))
25832638 then throw("No payments required")
25842639 else {
2585- let b = toString(eA.originCaller)
2586- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2587- let hk = w(r)
2588- let ku = split(valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2589- let fE = aX(r)
2590- let gm = fD(fE)
2591- let hm = split(kt, "_")
2592- if ((size(hm) != m))
2593- then throw("Wrong equipment string")
2640+ let b = toString(eP.originCaller)
2641+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2642+ if (ji(r))
2643+ then throw("checkTournament")
25942644 else {
2595- let dP = S(this, r)
2596- let kv = en(ku, dE(gm[aB]), true, dP)
2597- let kw = en(hm, kv, false, dP)
2598- let kx = dJ(kw)
2599- $Tuple2([StringEntry(hk, kt), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], kx], ":")), iW], 0)
2645+ let hz = w(r)
2646+ let kM = split(valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2647+ let fT = aZ(r)
2648+ let gB = fS(fT)
2649+ let hB = split(kL, "_")
2650+ if ((size(hB) != m))
2651+ then throw("Wrong equipment string")
2652+ else {
2653+ let ee = U(this, r)
2654+ let kN = eC(kM, dT(gB[aD]), true, ee)
2655+ let kO = eC(hB, kN, false, ee)
2656+ let kP = dY(kO)
2657+ $Tuple2([StringEntry(hz, kL), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], kP], ":")), jp], 0)
2658+ }
26002659 }
26012660 }
26022661 }
2662+
2663+
2664+
2665+@Callable(eP)
2666+func initDuckTourAttempt (r) = if ((eP.caller != cf))
2667+ then throw("Access denied")
2668+ else {
2669+ let jp = jm(eP)
2670+ let hq = q(r)
2671+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2672+ let jB = valueOrElse(getInteger(hq), hr)
2673+ let kQ = ba(r)
2674+ let hM = valueOrElse(getString(kQ), ag)
2675+ let jj = valueOrElse(getInteger(cf, bf), 0)
2676+ let kR = (toString(jj) + "_T_0")
2677+ $Tuple2([jp, IntegerEntry(A(r), jB), IntegerEntry(hq, 100), StringEntry(B(r), hM), StringEntry(kQ, kR)], kR)
2678+ }
2679+
2680+
2681+
2682+@Callable(eP)
2683+func exitTournaments () = {
2684+ let jp = jm(eP)
2685+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2686+ let kQ = ba(r)
2687+ let hM = valueOrElse(getString(kQ), ag)
2688+ if ((split(hM, "_")[bs] != "T"))
2689+ then throw("Your duck is not in the tournament")
2690+ else {
2691+ let kS = getIntegerValue(A(r))
2692+ let kT = getStringValue(B(r))
2693+ $Tuple2([jp, IntegerEntry(q(r), kS), StringEntry(kQ, kT)], hM)
2694+ }
2695+ }
2696+
2697+
2698+
2699+@Callable(eP)
2700+func exitTournamentInternal (r) = if ((eP.caller != this))
2701+ then throw("Access denied")
2702+ else {
2703+ let kS = getIntegerValue(A(r))
2704+ let kT = getStringValue(B(r))
2705+ $Tuple2([IntegerEntry(q(r), kS), StringEntry(ba(r), kT)], 0)
2706+ }
26032707
26042708
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = ("lastArbTimeUser_" + b)
55
66
77 let c = 100000000
88
99 let d = 3200
1010
1111 let e = 4000
1212
1313 let f = 3
1414
1515 let g = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
1616
1717 let h = 0
1818
1919 let i = 1
2020
2121 let j = 2
2222
2323 let k = 3
2424
2525 let l = 4
2626
2727 let m = 6
2828
2929 let n = 2
3030
3131 let o = 2
3232
3333 let p = 30
3434
3535 func q (r) = ("duckHealth_" + r)
3636
3737
3838 func s (r) = ("duckChars_" + r)
3939
4040
4141 func t (r) = ("duckXP_" + r)
4242
4343
4444 func u (r) = ("duckLevel_" + r)
4545
4646
4747 func v (r) = ("duckFreePoints_" + r)
4848
4949
5050 func w (r) = ("duckEquipment_" + r)
5151
5252
5353 func x (b) = ("userXP_" + b)
5454
5555
5656 func y (b) = ("userLevel_" + b)
5757
5858
5959 func z (b) = ("userFreePoints_" + b)
6060
6161
62-let A = 10000
63-
64-let B = 10000
65-
66-let C = 2000
67-
68-let D = 100000
69-
70-let E = 1000000
71-
72-let F = 5000000
73-
74-let G = 10000
75-
76-let H = 1000000
77-
78-let I = 1000000
79-
80-let J = 10000
81-
82-func K (L) = fraction(d, pow(L, 4, e, 4, 4, DOWN), c)
83-
84-
85-func M (N) = (100 + N)
86-
87-
88-func O (P,Q) = {
89- let R = K(Q)
90-[R, (f * (R - P))]
91- }
92-
93-
94-func S (T,r) = {
95- let U = split(valueOrElse(getString(T, s(r)), "0_0_0_0_0"), "_")
96- let V = valueOrElse(getInteger(T, u(r)), 0)
97- let W = valueOrElse(getInteger(T, q(r)), M(V))
98-[parseIntValue(U[h]), parseIntValue(U[i]), parseIntValue(U[j]), parseIntValue(U[k]), parseIntValue(U[l]), V, W]
99- }
100-
101-
102-let X = "LAND"
103-
104-let Y = "DUCK"
105-
106-let Z = "PRESALE"
107-
108-let aa = 6
109-
110-let ab = 3456000
111-
112-let ac = 86400000
113-
114-let ad = 10000000000
115-
116-let ae = "Africa_F_Africa"
117-
118-let af = 39637
119-
120-let ag = 10
121-
122-let ah = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
123-
124-let ai = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
125-
126-let aj = 10000000
127-
128-let ak = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
129-
130-let al = 6
131-
132-let am = 9
133-
134-let an = 10
135-
136-let ao = 10
137-
138-let ap = 0
139-
140-let aq = 1
141-
142-let ar = 2
143-
144-let as = 3
145-
146-let at = 4
147-
148-let au = 0
149-
150-let av = 1
151-
152-let aw = 2
153-
154-let ax = 3
155-
156-let ay = 0
157-
158-let az = 1
159-
160-let aA = 2
161-
162-let aB = 3
163-
164-func aC (b) = ("lastTxIdByUser_" + b)
165-
166-
167-func aD (aE) = ("nftOwner_" + aE)
168-
169-
170-func aF (aE) = ("landCustomNameByAssetId_" + aE)
171-
172-
173-func aG (aE) = ("stakedTime_" + aE)
174-
175-
176-func aH (aE) = ("infraLevel_" + aE)
177-
178-
179-func aI (aJ,aE) = makeString(["landArtStatus", aJ, aE], "_")
180-
181-
182-func aK (aL,aE,aM) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aL) + "_") + aE) + "_") + aM)
183-
184-
185-func aN (aO) = ("wareHouse_" + aO)
186-
187-
188-func aP (aE) = ("duckCustomNameByAssetId_" + aE)
189-
190-
191-func aQ (b) = ("accountCustomNameByAddr_" + b)
192-
193-
194-func aR (b) = ("accRefBy_" + b)
195-
196-
197-func aS (r) = ("onboardArtActivatedOnDuck_" + r)
198-
199-
200-func aT (b) = ("onboardArtActivatedDuckBy_" + b)
201-
202-
203-func aU (b) = ("accReferrals_" + b)
204-
205-
206-func aV (aE) = ("duckOwner_" + aE)
207-
208-
209-func aW (aM) = ("stakedDuckByOwner_" + aM)
210-
211-
212-func aX (r) = ("backPack_" + r)
213-
214-
215-func aY (r) = ("duckLocation_" + r)
216-
217-
218-func aZ () = "contractsBlocked"
219-
220-
221-func ba (bb) = ("%s%s__userGwlReleaseTime__" + bb)
222-
223-
224-func bc () = "emergencyWarehouseProducts"
225-
226-
227-let bd = 1
228-
229-let be = 2
230-
231-func bf (bg) = (parseIntValue(bg[al]) * aj)
232-
233-
234-let bh = false
235-
236-let bi = take(drop(this.bytes, 1), 1)
237-
238-let bj = {
239- let bk = bi
240- if ((base58'2W' == bk))
62+func A (r) = ("savedHealth_" + r)
63+
64+
65+func B (r) = ("savedLocation_" + r)
66+
67+
68+let C = 10000
69+
70+let D = 10000
71+
72+let E = 2000
73+
74+let F = 100000
75+
76+let G = 1000000
77+
78+let H = 5000000
79+
80+let I = 10000
81+
82+let J = 1000000
83+
84+let K = 1000000
85+
86+let L = 10000
87+
88+func M (N) = fraction(d, pow(N, 4, e, 4, 4, DOWN), c)
89+
90+
91+func O (P) = (100 + P)
92+
93+
94+func Q (R,S) = {
95+ let T = M(S)
96+[T, (f * (T - R))]
97+ }
98+
99+
100+func U (V,r) = {
101+ let W = split(valueOrElse(getString(V, s(r)), "0_0_0_0_0"), "_")
102+ let X = valueOrElse(getInteger(V, u(r)), 0)
103+ let Y = valueOrElse(getInteger(V, q(r)), O(X))
104+[parseIntValue(W[h]), parseIntValue(W[i]), parseIntValue(W[j]), parseIntValue(W[k]), parseIntValue(W[l]), X, Y]
105+ }
106+
107+
108+let Z = "LAND"
109+
110+let aa = "DUCK"
111+
112+let ab = "PRESALE"
113+
114+let ac = 6
115+
116+let ad = 3456000
117+
118+let ae = 86400000
119+
120+let af = 10000000000
121+
122+let ag = "Africa_F_Africa"
123+
124+let ah = 39637
125+
126+let ai = 10
127+
128+let aj = ["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", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
129+
130+let ak = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
131+
132+let al = 10000000
133+
134+let am = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
135+
136+let an = 6
137+
138+let ao = 9
139+
140+let ap = 10
141+
142+let aq = 10
143+
144+let ar = 0
145+
146+let as = 1
147+
148+let at = 2
149+
150+let au = 3
151+
152+let av = 4
153+
154+let aw = 0
155+
156+let ax = 1
157+
158+let ay = 2
159+
160+let az = 3
161+
162+let aA = 0
163+
164+let aB = 1
165+
166+let aC = 2
167+
168+let aD = 3
169+
170+func aE (b) = ("lastTxIdByUser_" + b)
171+
172+
173+func aF (aG) = ("nftOwner_" + aG)
174+
175+
176+func aH (aG) = ("landCustomNameByAssetId_" + aG)
177+
178+
179+func aI (aG) = ("stakedTime_" + aG)
180+
181+
182+func aJ (aG) = ("infraLevel_" + aG)
183+
184+
185+func aK (aL,aG) = makeString(["landArtStatus", aL, aG], "_")
186+
187+
188+func aM (aN,aG,aO) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aN) + "_") + aG) + "_") + aO)
189+
190+
191+func aP (aQ) = ("wareHouse_" + aQ)
192+
193+
194+func aR (aG) = ("duckCustomNameByAssetId_" + aG)
195+
196+
197+func aS (b) = ("accountCustomNameByAddr_" + b)
198+
199+
200+func aT (b) = ("accRefBy_" + b)
201+
202+
203+func aU (r) = ("onboardArtActivatedOnDuck_" + r)
204+
205+
206+func aV (b) = ("onboardArtActivatedDuckBy_" + b)
207+
208+
209+func aW (b) = ("accReferrals_" + b)
210+
211+
212+func aX (aG) = ("duckOwner_" + aG)
213+
214+
215+func aY (aO) = ("stakedDuckByOwner_" + aO)
216+
217+
218+func aZ (r) = ("backPack_" + r)
219+
220+
221+func ba (r) = ("duckLocation_" + r)
222+
223+
224+func bb () = "contractsBlocked"
225+
226+
227+func bc (bd) = ("%s%s__userGwlReleaseTime__" + bd)
228+
229+
230+func be () = "emergencyWarehouseProducts"
231+
232+
233+let bf = "%s__lastTourId"
234+
235+func bg (bh) = ("%s%d__tourStaticData__" + toString(bh))
236+
237+
238+func bi (bh) = ("%s%d__tourDynamicData__" + toString(bh))
239+
240+
241+let bj = 0
242+
243+let bk = 1
244+
245+func bl (bm,bh) = {
246+ let bn = split(valueOrErrorMessage(getString(bm, bg(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__")
247+ let bo = split(valueOrErrorMessage(getString(bm, bi(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__")
248+[bn, bo]
249+ }
250+
251+
252+let bp = 6
253+
254+let bq = 1
255+
256+let br = 0
257+
258+let bs = 1
259+
260+let bt = 2
261+
262+func bu (bv) = (parseIntValue(bv[an]) * al)
263+
264+
265+let bw = false
266+
267+let bx = take(drop(this.bytes, 1), 1)
268+
269+let by = {
270+ let bz = bx
271+ if ((base58'2W' == bz))
241272 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
242- else if ((base58'2T' == bk))
273+ else if ((base58'2T' == bz))
243274 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
244275 else throw("Unknown chain")
245276 }
246277
247-let bl = {
248- let bk = bi
249- if ((base58'2W' == bk))
278+let bA = {
279+ let bz = bx
280+ if ((base58'2W' == bz))
250281 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
251- else if ((base58'2T' == bk))
282+ else if ((base58'2T' == bz))
252283 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
253284 else throw("Unknown chain")
254285 }
255286
256-let bm = {
257- let bk = bi
258- if ((base58'2W' == bk))
287+let bB = {
288+ let bz = bx
289+ if ((base58'2W' == bz))
259290 then 10000000000
260- else if ((base58'2T' == bk))
291+ else if ((base58'2T' == bz))
261292 then 100000000
262293 else throw("Unknown chain")
263294 }
264295
265-let bn = {
266- let bk = bi
267- if ((base58'2W' == bk))
296+let bC = {
297+ let bz = bx
298+ if ((base58'2W' == bz))
268299 then 600000
269- else if ((base58'2T' == bk))
300+ else if ((base58'2T' == bz))
270301 then 60000
271302 else throw("Unknown chain")
272303 }
273304
274-let bo = "__"
275-
276-let bp = 1000000
277-
278-let bq = 100000000
279-
280-let br = 25
281-
282-let bs = 100
283-
284-let bt = 225
285-
286-let bu = 400
287-
288-let bv = 625
289-
290-let bw = [0, 1, 2, 3, 4, 5]
291-
292-func bx (by,bz) = valueOrErrorMessage(getString(by, bz), makeString(["mandatory ", toString(by), ".", bz, " is not defined"], ""))
293-
294-
295-let bA = 1
296-
297-let bB = 2
298-
299-let bC = 3
300-
301-let bD = 4
302-
303-let bE = 7
304-
305-func bF () = "%s__restConfig"
306-
307-
308-func bG () = "%s__restAddr"
309-
310-
311-func bH (bI) = split_4C(bx(bI, bF()), bo)
312-
313-
314-func bJ (bK,bL) = valueOrErrorMessage(addressFromString(bK[bL]), ("Rest cfg doesn't contain address at index " + toString(bL)))
315-
316-
317-let bM = addressFromStringValue(valueOrElse(getString(this, bG()), bl))
318-
319-let bK = bH(bM)
320-
321-let T = bJ(bK, bA)
322-
323-let bN = bJ(bK, bB)
324-
325-let bO = bJ(bK, bC)
326-
327-let bP = bJ(bK, bD)
328-
329-let bQ = bJ(bK, bE)
330-
331-let bR = 0
332-
333-let bS = 1
334-
335-let bT = 2
336-
337-let bU = 3
338-
339-let bV = 2
340-
341-func bW (by) = ("finishBlockForAddr_" + by)
342-
343-
344-func bX () = "resTypesProportions"
345-
346-
347-func bY (aM) = ("stakedLandsByOwner_" + aM)
348-
349-
350-func bZ (aM) = ("stakedPiecesByOwner_" + aM)
351-
352-
353-func ca (cb) = {
354- let bk = cb
355- if ($isInstanceOf(bk, "String"))
305+let bD = "__"
306+
307+let bE = 1000000
308+
309+let bF = 100000000
310+
311+let bG = 25
312+
313+let bH = 100
314+
315+let bI = 225
316+
317+let bJ = 400
318+
319+let bK = 625
320+
321+let bL = [0, 1, 2, 3, 4, 5]
322+
323+func bM (bN,bO) = valueOrErrorMessage(getString(bN, bO), makeString(["mandatory ", toString(bN), ".", bO, " is not defined"], ""))
324+
325+
326+let bP = 1
327+
328+let bQ = 2
329+
330+let bR = 3
331+
332+let bS = 4
333+
334+let bT = 7
335+
336+func bU () = "%s__restConfig"
337+
338+
339+func bV () = "%s__restAddr"
340+
341+
342+func bW (bX) = split_4C(bM(bX, bU()), bD)
343+
344+
345+func bY (bZ,ca) = valueOrErrorMessage(addressFromString(bZ[ca]), ("Rest cfg doesn't contain address at index " + toString(ca)))
346+
347+
348+let cb = addressFromStringValue(valueOrElse(getString(this, bV()), bA))
349+
350+let bZ = bW(cb)
351+
352+let V = bY(bZ, bP)
353+
354+let cc = bY(bZ, bQ)
355+
356+let cd = bY(bZ, bR)
357+
358+let ce = bY(bZ, bS)
359+
360+let cf = bY(bZ, bT)
361+
362+let cg = 0
363+
364+let ch = 1
365+
366+let ci = 2
367+
368+let cj = 3
369+
370+let ck = 2
371+
372+func cl (bN) = ("finishBlockForAddr_" + bN)
373+
374+
375+func cm () = "resTypesProportions"
376+
377+
378+func cn (aO) = ("stakedLandsByOwner_" + aO)
379+
380+
381+func co (aO) = ("stakedPiecesByOwner_" + aO)
382+
383+
384+func cp (cq) = {
385+ let bz = cq
386+ if ($isInstanceOf(bz, "String"))
356387 then {
357- let cc = bk
358- cc
388+ let cr = bz
389+ cr
359390 }
360391 else throw("fail to cast into String")
361392 }
362393
363394
364-func cd (cb) = {
365- let bk = cb
366- if ($isInstanceOf(bk, "Int"))
395+func cs (cq) = {
396+ let bz = cq
397+ if ($isInstanceOf(bz, "Int"))
367398 then {
368- let ce = bk
369- ce
399+ let ct = bz
400+ ct
370401 }
371402 else throw("fail to cast into Int")
372403 }
373404
374405
375-func cf (cg) = {
376- let bk = cg
377- if (("S" == bk))
378- then br
379- else if (("M" == bk))
380- then bs
381- else if (("L" == bk))
382- then bt
383- else if (("XL" == bk))
384- then bu
385- else if (("XXL" == bk))
386- then bv
406+func cu (cv) = {
407+ let bz = cv
408+ if (("S" == bz))
409+ then bG
410+ else if (("M" == bz))
411+ then bH
412+ else if (("L" == bz))
413+ then bI
414+ else if (("XL" == bz))
415+ then bJ
416+ else if (("XXL" == bz))
417+ then bK
387418 else throw("Unknown land size")
388419 }
389420
390421
391-func ch (cc) = isDefined(parseInt(cc))
392-
393-
394-let ci = {
395- let bk = bi
396- if ((base58'2W' == bk))
422+func cw (cr) = isDefined(parseInt(cr))
423+
424+
425+let cx = {
426+ let bz = bx
427+ if ((base58'2W' == bz))
397428 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
398- else if ((base58'2T' == bk))
429+ else if ((base58'2T' == bz))
399430 then this
400431 else throw("Unknown chain")
401432 }
402433
403-let cj = {
404- let bk = bi
405- if ((base58'2W' == bk))
434+let cy = {
435+ let bz = bx
436+ if ((base58'2W' == bz))
406437 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
407- else if ((base58'2T' == bk))
438+ else if ((base58'2T' == bz))
408439 then this
409440 else throw("Unknown chain")
410441 }
411442
412-let ck = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
413-
414-let cl = [30, 60, 120]
415-
416-let cm = 300000
417-
418-let cn = 5000000
419-
420-let co = 50
421-
422-let cp = 10000000
423-
424-let cq = {
425- let bk = bi
426- if ((base58'2W' == bk))
443+let cz = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
444+
445+let cA = [30, 60, 120]
446+
447+let cB = 300000
448+
449+let cC = 5000000
450+
451+let cD = 50
452+
453+let cE = 10000000
454+
455+let cF = {
456+ let bz = bx
457+ if ((base58'2W' == bz))
427458 then 252289527462
428- else if ((base58'2T' == bk))
459+ else if ((base58'2T' == bz))
429460 then 2522895274
430461 else throw("Unknown chain")
431462 }
432463
433-let cr = {
434- let bk = bi
435- if ((base58'2W' == bk))
464+let cG = {
465+ let bz = bx
466+ if ((base58'2W' == bz))
436467 then 250000000
437- else if ((base58'2T' == bk))
468+ else if ((base58'2T' == bz))
438469 then 250000000
439470 else throw("Unknown chain")
440471 }
441472
442-let cs = toBigInt(5)
443-
444-let ct = toBigInt(20)
445-
446-let cu = toBigInt((20 * 20))
447-
448-let cv = toBigInt(((20 * 20) * 20))
449-
450-let cw = toBigInt((((20 * 20) * 20) * 20))
451-
452-let cx = toBigInt(((((20 * 20) * 20) * 20) * 20))
453-
454-let cy = 500
455-
456-func cz () = "nextLandNum"
457-
458-
459-func cA (cB) = ("landToAsset_" + cB)
460-
461-
462-func cC (cD) = ("landByCustomName_" + cD)
463-
464-
465-func cE (aE,aM) = ((("infraLevelByAssetIdAndOwner_" + aE) + "_") + aM)
466-
467-
468-func cF (aJ,aE,aM) = makeString(["landArtStatusByTypeAssetIdAndOwner", aJ, aE, aM], "_")
469-
470-
471-func cG (cB) = ("landOwner_" + cB)
472-
473-
474-func cH (cD) = ("duckByCustomName_" + cD)
475-
476-
477-func cI (cD) = ("accountByCustomName_" + cD)
478-
479-
480-func cJ () = "oldiesList"
481-
482-
483-let cK = 0
484-
485-let cL = 1
486-
487-let cM = 2
488-
489-let cN = 0
490-
491-let cO = 5
492-
493-let cP = 6
494-
495-let cQ = 7
496-
497-func cR (cB,cg) = ((X + cB) + cg)
498-
499-
500-func cS (cT,cU) = {
501- let cV = (((((cU[0] + cU[1]) + cU[2]) + cU[3]) + cU[4]) + cU[5])
502- if ((0 >= cV))
473+let cH = toBigInt(5)
474+
475+let cI = toBigInt(20)
476+
477+let cJ = toBigInt((20 * 20))
478+
479+let cK = toBigInt(((20 * 20) * 20))
480+
481+let cL = toBigInt((((20 * 20) * 20) * 20))
482+
483+let cM = toBigInt(((((20 * 20) * 20) * 20) * 20))
484+
485+let cN = 500
486+
487+func cO () = "nextLandNum"
488+
489+
490+func cP (cQ) = ("landToAsset_" + cQ)
491+
492+
493+func cR (cS) = ("landByCustomName_" + cS)
494+
495+
496+func cT (aG,aO) = ((("infraLevelByAssetIdAndOwner_" + aG) + "_") + aO)
497+
498+
499+func cU (aL,aG,aO) = makeString(["landArtStatusByTypeAssetIdAndOwner", aL, aG, aO], "_")
500+
501+
502+func cV (cQ) = ("landOwner_" + cQ)
503+
504+
505+func cW (cS) = ("duckByCustomName_" + cS)
506+
507+
508+func cX (cS) = ("accountByCustomName_" + cS)
509+
510+
511+func cY () = "oldiesList"
512+
513+
514+let cZ = 0
515+
516+let da = 1
517+
518+let db = 2
519+
520+let dc = 0
521+
522+let dd = 5
523+
524+let de = 6
525+
526+let df = 7
527+
528+func dg (cQ,cv) = ((Z + cQ) + cv)
529+
530+
531+func dh (di,dj) = {
532+ let dk = (((((dj[0] + dj[1]) + dj[2]) + dj[3]) + dj[4]) + dj[5])
533+ if ((0 >= dk))
503534 then throw("Zero weights sum")
504535 else {
505- let cW = fraction(cT, bp, cV)
506- func cX (cY,cZ) = (cY :+ fraction(cZ, cW, bp))
507-
508- let da = cU
509- let db = size(da)
510- let dc = nil
511- func dd (de,df) = if ((df >= db))
512- then de
513- else cX(de, da[df])
514-
515- func dg (de,df) = if ((df >= db))
516- then de
536+ let dl = fraction(di, bE, dk)
537+ func dm (dn,do) = (dn :+ fraction(do, dl, bE))
538+
539+ let dp = dj
540+ let dq = size(dp)
541+ let dr = nil
542+ func ds (dt,du) = if ((du >= dq))
543+ then dt
544+ else dm(dt, dp[du])
545+
546+ func dv (dt,du) = if ((du >= dq))
547+ then dt
517548 else throw("List size exceeds 6")
518549
519- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
520- }
521- }
522-
523-
524-func dh (cT) = {
525- let di = split(value(getString(bX())), "_")
526- if ((size(di) != aa))
550+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
551+ }
552+ }
553+
554+
555+func dw (di) = {
556+ let dx = split(value(getString(cm())), "_")
557+ if ((size(dx) != ac))
527558 then throw("Wrong proportions data")
528559 else {
529- let dj = [parseIntValue(di[0]), parseIntValue(di[1]), parseIntValue(di[2]), parseIntValue(di[3]), parseIntValue(di[4]), parseIntValue(di[5])]
530- cS(cT, dj)
531- }
532- }
533-
534-
535-func dk (dl,dm,dn) = {
536- let do = dh(dn)
537- func dp (cY,bL) = {
538- let dq = (parseIntValue(dm[bL]) - do[bL])
539- if ((0 > dq))
540- then throw(((((("Not enough material idx=" + toString(bL)) + ", you have ") + dm[bL]) + ", but need ") + toString(do[bL])))
541- else (cY :+ toString(dq))
542- }
543-
544- if (dl)
560+ let dy = [parseIntValue(dx[0]), parseIntValue(dx[1]), parseIntValue(dx[2]), parseIntValue(dx[3]), parseIntValue(dx[4]), parseIntValue(dx[5])]
561+ dh(di, dy)
562+ }
563+ }
564+
565+
566+func dz (dA,dB,dC) = {
567+ let dD = dw(dC)
568+ func dE (dn,ca) = {
569+ let dF = (parseIntValue(dB[ca]) - dD[ca])
570+ if ((0 > dF))
571+ then throw(((((("Not enough material idx=" + toString(ca)) + ", you have ") + dB[ca]) + ", but need ") + toString(dD[ca])))
572+ else (dn :+ toString(dF))
573+ }
574+
575+ if (dA)
545576 then {
546- let da = bw
547- let db = size(da)
548- let dc = nil
549- func dd (de,df) = if ((df >= db))
550- then de
551- else dp(de, da[df])
552-
553- func dg (de,df) = if ((df >= db))
554- then de
577+ let dp = bL
578+ let dq = size(dp)
579+ let dr = nil
580+ func ds (dt,du) = if ((du >= dq))
581+ then dt
582+ else dE(dt, dp[du])
583+
584+ func dv (dt,du) = if ((du >= dq))
585+ then dt
555586 else throw("List size exceeds 6")
556587
557- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
558- }
559- else dm
560- }
561-
562-
563-func dr (ds,dt) = if ((dt == ""))
564- then ds
588+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
589+ }
590+ else dB
591+ }
592+
593+
594+func dG (dH,dI) = if ((dI == ""))
595+ then dH
565596 else {
566- func du (cY,dv) = {
567- let dw = split(dv, ",")
568- if ((size(dw) != 2))
597+ func dJ (dn,dK) = {
598+ let dL = split(dK, ",")
599+ if ((size(dL) != 2))
569600 then throw("Incorrect format, should be index,amount")
570601 else {
571- let bL = parseIntValue(dw[0])
572- if (if ((0 > bL))
602+ let ca = parseIntValue(dL[0])
603+ if (if ((0 > ca))
573604 then true
574- else (bL >= size(ak)))
605+ else (ca >= size(am)))
575606 then throw("Unknown product idx")
576607 else {
577- let dx = parseIntValue(dw[1])
578- let dy = split(cY, (dw[0] + ":"))
579- if ((size(dy) != 2))
580- then throw((("You don't have " + ah[bL]) + " equipped"))
608+ let dM = parseIntValue(dL[1])
609+ let dN = split(dn, (dL[0] + ":"))
610+ if ((size(dN) != 2))
611+ then throw((("You don't have " + aj[ca]) + " equipped"))
581612 else {
582- let dz = dy[1]
583- let dA = if (ch(take(drop(dz, 1), 1)))
613+ let dO = dN[1]
614+ let dP = if (cw(take(drop(dO, 1), 1)))
584615 then 2
585616 else 1
586- let dB = parseIntValue(take(dz, dA))
587- let dC = drop(dz, dA)
588- let dD = if ((dB >= dx))
589- then (dB - dx)
590- else throw(((((("You equipped " + toString(dB)) + " of ") + ah[bL]) + ", but tried to use ") + toString(dx)))
591- ((((dy[0] + dw[0]) + ":") + toString(dD)) + dC)
617+ let dQ = parseIntValue(take(dO, dP))
618+ let dR = drop(dO, dP)
619+ let dS = if ((dQ >= dM))
620+ then (dQ - dM)
621+ else throw(((((("You equipped " + toString(dQ)) + " of ") + aj[ca]) + ", but tried to use ") + toString(dM)))
622+ ((((dN[0] + dL[0]) + ":") + toString(dS)) + dR)
592623 }
593624 }
594625 }
595626 }
596627
597- let da = split(dt, "_")
598- let db = size(da)
599- let dc = ds
600- func dd (de,df) = if ((df >= db))
601- then de
602- else du(de, da[df])
603-
604- func dg (de,df) = if ((df >= db))
605- then de
628+ let dp = split(dI, "_")
629+ let dq = size(dp)
630+ let dr = dH
631+ func ds (dt,du) = if ((du >= dq))
632+ then dt
633+ else dJ(dt, dp[du])
634+
635+ func dv (dt,du) = if ((du >= dq))
636+ then dt
606637 else throw("List size exceeds 10")
607638
608- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
609- }
610-
611-
612-func dE (dF) = {
613- let dG = if ((dF == ""))
639+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
640+ }
641+
642+
643+func dT (dU) = {
644+ let dV = if ((dU == ""))
614645 then nil
615- else split(dF, "_")
616- func dH (cY,bg) = {
617- let dI = (size(cY) / 8)
618- let dB = if ((size(dG) > dI))
619- then parseIntValue(dG[dI])
646+ else split(dU, "_")
647+ func dW (dn,bv) = {
648+ let dX = (size(dn) / 8)
649+ let dQ = if ((size(dV) > dX))
650+ then parseIntValue(dV[dX])
620651 else 0
621- (cY + toBytes(dB))
622- }
623-
624- let da = ak
625- let db = size(da)
626- let dc = base58''
627- func dd (de,df) = if ((df >= db))
628- then de
629- else dH(de, da[df])
630-
631- func dg (de,df) = if ((df >= db))
632- then de
652+ (dn + toBytes(dQ))
653+ }
654+
655+ let dp = am
656+ let dq = size(dp)
657+ let dr = base58''
658+ func ds (dt,du) = if ((du >= dq))
659+ then dt
660+ else dW(dt, dp[du])
661+
662+ func dv (dt,du) = if ((du >= dq))
663+ then dt
633664 else throw("List size exceeds 50")
634665
635- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
636- }
637-
638-
639-func dJ (dK) = {
640- func dL (cY,bg) = {
641- let dI = size(cY)
642- let dM = take(drop(dK, (8 * dI)), 8)
643- (cY :+ toString(toInt(dM)))
666+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
667+ }
668+
669+
670+func dY (dZ) = {
671+ func ea (dn,bv) = {
672+ let dX = size(dn)
673+ let eb = take(drop(dZ, (8 * dX)), 8)
674+ (dn :+ toString(toInt(eb)))
644675 }
645676
646677 makeString({
647- let da = ak
648- let db = size(da)
649- let dc = nil
650- func dd (de,df) = if ((df >= db))
651- then de
652- else dL(de, da[df])
653-
654- func dg (de,df) = if ((df >= db))
655- then de
678+ let dp = am
679+ let dq = size(dp)
680+ let dr = nil
681+ func ds (dt,du) = if ((du >= dq))
682+ then dt
683+ else ea(dt, dp[du])
684+
685+ func dv (dt,du) = if ((du >= dq))
686+ then dt
656687 else throw("List size exceeds 50")
657688
658- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
689+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
659690 }, "_")
660691 }
661692
662693
663-func dN (dO,dP) = {
664- func dQ (cY,dI) = if ((parseIntValue(dP[dI]) > dO[dI]))
665- then throw(("Requirement not satisfied: " + g[dI]))
694+func ec (ed,ee) = {
695+ func ef (dn,dX) = if ((parseIntValue(ee[dX]) > ed[dX]))
696+ then throw(("Requirement not satisfied: " + g[dX]))
666697 else true
667698
668- let da = [0, 1, 2, 3, 4, 5, 6]
669- let db = size(da)
670- let dc = false
671- func dd (de,df) = if ((df >= db))
672- then de
673- else dQ(de, da[df])
674-
675- func dg (de,df) = if ((df >= db))
676- then de
699+ let dp = [0, 1, 2, 3, 4, 5, 6]
700+ let dq = size(dp)
701+ let dr = false
702+ func ds (dt,du) = if ((du >= dq))
703+ then dt
704+ else ef(dt, dp[du])
705+
706+ func dv (dt,du) = if ((du >= dq))
707+ then dt
677708 else throw("List size exceeds 7")
678709
679- dg(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7)
680- }
681-
682-
683-func dR (dS,dG,dT,dU,dV,dW,dO) = {
684- let dw = split(dS, ":")
685- if ((size(dw) != 2))
710+ dv(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7)
711+ }
712+
713+
714+func eg (eh,dV,ei,ej,ek,el,ed) = {
715+ let dL = split(eh, ":")
716+ if ((size(dL) != 2))
686717 then throw("Incorrect format, should be index:amount")
687- else if (if (!(dT))
688- then (size(dw[0]) != 2)
718+ else if (if (!(ei))
719+ then (size(dL[0]) != 2)
689720 else false)
690721 then throw("Product idx should be 2 digits, zero padded")
691722 else {
692- let dX = parseIntValue(dw[0])
693- let dY = parseIntValue(dw[1])
694- if (if ((0 > dX))
723+ let em = parseIntValue(dL[0])
724+ let en = parseIntValue(dL[1])
725+ if (if ((0 > em))
695726 then true
696- else (dX >= size(ak)))
727+ else (em >= size(am)))
697728 then throw("Unknown product idx")
698- else if ((0 > dY))
729+ else if ((0 > en))
699730 then throw("Count can't be negative")
700- else if ((dY > p))
701- then throw(((("Can't put more than " + toString(p)) + " of ") + ah[dX]))
702- else if ((dY == 0))
703- then $Tuple2(dG, false)
731+ else if ((en > p))
732+ then throw(((("Can't put more than " + toString(p)) + " of ") + aj[em]))
733+ else if ((en == 0))
734+ then $Tuple2(dV, false)
704735 else {
705- let dZ = take(dG, (8 * dX))
706- let dB = toInt(take(drop(dG, (8 * dX)), 8))
707- let dC = drop(dG, (8 * (dX + 1)))
708- let bg = split(ak[dX], "_")
709- if (if (!(dT))
710- then (dY > dB)
736+ let eo = take(dV, (8 * em))
737+ let dQ = toInt(take(drop(dV, (8 * em)), 8))
738+ let dR = drop(dV, (8 * (em + 1)))
739+ let bv = split(am[em], "_")
740+ if (if (!(ei))
741+ then (en > dQ)
711742 else false)
712- then throw(((((("You have " + toString(dB)) + " of ") + ah[dX]) + ", but tried to use ") + toString(dY)))
743+ then throw(((((("You have " + toString(dQ)) + " of ") + aj[em]) + ", but tried to use ") + toString(en)))
713744 else {
714- let ea = if (if (!(dT))
715- then dN(dO, split(bg[am], ","))
745+ let ep = if (if (!(ei))
746+ then ec(ed, split(bv[ao], ","))
716747 else false)
717748 then {
718- let eb = bg[an]
719- if ((eb == ""))
749+ let eq = bv[ap]
750+ if ((eq == ""))
720751 then throw("Item cannot be equipped")
721752 else {
722- let ec = parseIntValue(eb)
723- let ed = (ec / 100)
724- if ((dU != ed))
753+ let er = parseIntValue(eq)
754+ let es = (er / 100)
755+ if ((ej != es))
725756 then throw("Segment incompatible")
726757 else {
727- let ee = ((ec % 100) / 10)
728- if ((dV != ee))
758+ let et = ((er % 100) / 10)
759+ if ((ek != et))
729760 then throw("Slot incompatible")
730761 else {
731- let ef = (ec % 10)
732- if (if ((dW != 0))
733- then (ef > 1)
762+ let eu = (er % 10)
763+ if (if ((el != 0))
764+ then (eu > 1)
734765 else false)
735766 then throw("Big items should occupy slot 0")
736- else (ef > 1)
767+ else (eu > 1)
737768 }
738769 }
739770 }
740771 }
741772 else false
742- $Tuple2(((dZ + toBytes((dB + (if (dT)
743- then dY
744- else -(dY))))) + dC), ea)
773+ $Tuple2(((eo + toBytes((dQ + (if (ei)
774+ then en
775+ else -(en))))) + dR), ep)
745776 }
746777 }
747778 }
748779 }
749780
750781
751-func eg (eh,ei,dT,dU,dV,dP) = if ((eh != ""))
782+func ev (ew,ex,ei,ej,ek,ee) = if ((ew != ""))
752783 then {
753- let ej = split(eh, ",")
754- if ((size(ej) > o))
784+ let ey = split(ew, ",")
785+ if ((size(ey) > o))
755786 then throw("Wrong slots format")
756787 else {
757- let ek = ej[0]
758- let el = if ((size(ej) > 1))
759- then ej[1]
788+ let ez = ey[0]
789+ let eA = if ((size(ey) > 1))
790+ then ey[1]
760791 else ""
761- if (if ((ek == ""))
762- then (el == "")
792+ if (if ((ez == ""))
793+ then (eA == "")
763794 else false)
764- then ei
795+ then ex
765796 else {
766- let em = if ((ek != ""))
767- then dR(ek, ei, dT, dU, dV, 0, dP)
768- else $Tuple2(ei, false)
769- if ((el != ""))
770- then if (em._2)
797+ let eB = if ((ez != ""))
798+ then eg(ez, ex, ei, ej, ek, 0, ee)
799+ else $Tuple2(ex, false)
800+ if ((eA != ""))
801+ then if (eB._2)
771802 then throw("Big item already occupies slot")
772- else dR(el, em._1, dT, dU, dV, 1, dP)._1
773- else em._1
803+ else eg(eA, eB._1, ei, ej, ek, 1, ee)._1
804+ else eB._1
774805 }
775806 }
776807 }
777- else ei
778-
779-
780-func en (eo,ep,dT,dP) = {
781- func dU (cY,eq) = {
782- let dI = cY._1
783- let dV = split(eq, ";")
784- if ((size(dV) != n))
808+ else ex
809+
810+
811+func eC (eD,eE,ei,ee) = {
812+ func ej (dn,eF) = {
813+ let dX = dn._1
814+ let ek = split(eF, ";")
815+ if ((size(ek) != n))
785816 then throw("Wrong segment format")
786817 else {
787- let er = dV[0]
788- let es = dV[1]
789- if (if ((er == ""))
790- then (es == "")
818+ let eG = ek[0]
819+ let eH = ek[1]
820+ if (if ((eG == ""))
821+ then (eH == "")
791822 else false)
792- then $Tuple2((dI + 1), cY._2)
823+ then $Tuple2((dX + 1), dn._2)
793824 else {
794- let et = eg(er, cY._2, dT, dI, 0, dP)
795- $Tuple2((dI + 1), eg(es, et, dT, dI, 1, dP))
825+ let eI = ev(eG, dn._2, ei, dX, 0, ee)
826+ $Tuple2((dX + 1), ev(eH, eI, ei, dX, 1, ee))
796827 }
797828 }
798829 }
799830
800-( let da = eo
801- let db = size(da)
802- let dc = $Tuple2(0, ep)
803- func dd (de,df) = if ((df >= db))
804- then de
805- else dU(de, da[df])
806-
807- func dg (de,df) = if ((df >= db))
808- then de
831+( let dp = eD
832+ let dq = size(dp)
833+ let dr = $Tuple2(0, eE)
834+ func ds (dt,du) = if ((du >= dq))
835+ then dt
836+ else ej(dt, dp[du])
837+
838+ func dv (dt,du) = if ((du >= dq))
839+ then dt
809840 else throw("List size exceeds 6")
810841
811- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6))._2
812- }
813-
814-
815-func eu (ev,ew,ex,ey) = if ((size(ev) != aa))
842+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6))._2
843+ }
844+
845+
846+func eJ (eK,eL,eM,eN) = if ((size(eK) != ac))
816847 then throw("Wrong proportions data")
817848 else {
818- func ez (cY,eA) = {
819- let dq = (parseIntValue(ev[eA]) + ((ey * ew[eA]) * ex))
820- if ((0 > dq))
821- then throw(((((((("Panic! Pieces of type=" + toString(eA)) + ", sign=") + toString(ey)) + ", terrainCounts[i]=") + toString(ew[eA])) + ", landSizeIndex=") + toString(ex)))
822- else (cY :+ toString(dq))
823- }
824-
825- let da = bw
826- let db = size(da)
827- let dc = nil
828- func dd (de,df) = if ((df >= db))
829- then de
830- else ez(de, da[df])
831-
832- func dg (de,df) = if ((df >= db))
833- then de
849+ func eO (dn,eP) = {
850+ let dF = (parseIntValue(eK[eP]) + ((eN * eL[eP]) * eM))
851+ if ((0 > dF))
852+ then throw(((((((("Panic! Pieces of type=" + toString(eP)) + ", sign=") + toString(eN)) + ", terrainCounts[i]=") + toString(eL[eP])) + ", landSizeIndex=") + toString(eM)))
853+ else (dn :+ toString(dF))
854+ }
855+
856+ let dp = bL
857+ let dq = size(dp)
858+ let dr = nil
859+ func ds (dt,du) = if ((du >= dq))
860+ then dt
861+ else eO(dt, dp[du])
862+
863+ func dv (dt,du) = if ((du >= dq))
864+ then dt
834865 else throw("List size exceeds 6")
835866
836- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
837- }
838-
839-
840-func eB (ew,ex,ey) = {
841- let ev = split(valueOrElse(getString(bX()), "0_0_0_0_0_0"), "_")
842- makeString(eu(ev, ew, ex, ey), "_")
843- }
844-
845-
846-func eC (eD) = [(size(split(eD, "A")) - 1), (size(split(eD, "B")) - 1), (size(split(eD, "C")) - 1), (size(split(eD, "D")) - 1), (size(split(eD, "E")) - 1), (size(split(eD, "F")) - 1)]
847-
848-
849-func eE (eF,ew,eG,ex,eH) = {
850- func eI (cY,eA) = {
851- let eJ = ((fraction(eG, eH, ac) * ew[eA]) * ex)
852- (cY :+ toString((parseIntValue(eF[eA]) + eJ)))
853- }
854-
855- let dj = {
856- let da = bw
857- let db = size(da)
858- let dc = nil
859- func dd (de,df) = if ((df >= db))
860- then de
861- else eI(de, da[df])
862-
863- func dg (de,df) = if ((df >= db))
864- then de
867+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
868+ }
869+
870+
871+func eQ (eL,eM,eN) = {
872+ let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_")
873+ makeString(eJ(eK, eL, eM, eN), "_")
874+ }
875+
876+
877+func eR (eS) = [(size(split(eS, "A")) - 1), (size(split(eS, "B")) - 1), (size(split(eS, "C")) - 1), (size(split(eS, "D")) - 1), (size(split(eS, "E")) - 1), (size(split(eS, "F")) - 1)]
878+
879+
880+func eT (eU,eL,eV,eM,eW) = {
881+ func eX (dn,eP) = {
882+ let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM)
883+ (dn :+ toString((parseIntValue(eU[eP]) + eY)))
884+ }
885+
886+ let dy = {
887+ let dp = bL
888+ let dq = size(dp)
889+ let dr = nil
890+ func ds (dt,du) = if ((du >= dq))
891+ then dt
892+ else eX(dt, dp[du])
893+
894+ func dv (dt,du) = if ((du >= dq))
895+ then dt
865896 else throw("List size exceeds 6")
866897
867- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
868- }
869- makeString(dj, "_")
870- }
871-
872-
873-func eK (ew,eG,ex,eH) = {
874- func eI (cY,eA) = {
875- let eJ = ((fraction(eG, eH, ac) * ew[eA]) * ex)
876- $Tuple2((cY._1 :+ eJ), (cY._2 + eJ))
877- }
878-
879- let da = bw
880- let db = size(da)
881- let dc = $Tuple2(nil, 0)
882- func dd (de,df) = if ((df >= db))
883- then de
884- else eI(de, da[df])
885-
886- func dg (de,df) = if ((df >= db))
887- then de
898+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
899+ }
900+ makeString(dy, "_")
901+ }
902+
903+
904+func eZ (eL,eV,eM,eW) = {
905+ func eX (dn,eP) = {
906+ let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM)
907+ $Tuple2((dn._1 :+ eY), (dn._2 + eY))
908+ }
909+
910+ let dp = bL
911+ let dq = size(dp)
912+ let dr = $Tuple2(nil, 0)
913+ func ds (dt,du) = if ((du >= dq))
914+ then dt
915+ else eX(dt, dp[du])
916+
917+ func dv (dt,du) = if ((du >= dq))
918+ then dt
888919 else throw("List size exceeds 6")
889920
890- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
891- }
892-
893-
894-func eL (eM,eN,eO,eP) = {
895- let eQ = eO._1
896- let eR = eO._2
897- if ((eR == 0))
898- then $Tuple2(makeString(eM, "_"), makeString(eN, "_"))
899- else if ((eP >= eR))
921+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
922+ }
923+
924+
925+func fa (fb,fc,fd,fe) = {
926+ let ff = fd._1
927+ let fg = fd._2
928+ if ((fg == 0))
929+ then $Tuple2(makeString(fb, "_"), makeString(fc, "_"))
930+ else if ((fe >= fg))
900931 then {
901- func eS (cY,eA) = (cY :+ toString((parseIntValue(eM[eA]) + eQ[eA])))
902-
903- let dj = {
904- let da = bw
905- let db = size(da)
906- let dc = nil
907- func dd (de,df) = if ((df >= db))
908- then de
909- else eS(de, da[df])
910-
911- func dg (de,df) = if ((df >= db))
912- then de
932+ func fh (dn,eP) = (dn :+ toString((parseIntValue(fb[eP]) + ff[eP])))
933+
934+ let dy = {
935+ let dp = bL
936+ let dq = size(dp)
937+ let dr = nil
938+ func ds (dt,du) = if ((du >= dq))
939+ then dt
940+ else fh(dt, dp[du])
941+
942+ func dv (dt,du) = if ((du >= dq))
943+ then dt
913944 else throw("List size exceeds 6")
914945
915- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
946+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
916947 }
917- $Tuple2(makeString(dj, "_"), makeString(eN, "_"))
948+ $Tuple2(makeString(dy, "_"), makeString(fc, "_"))
918949 }
919950 else {
920- func eT (cY,eA) = {
921- let eU = fraction(eQ[eA], eP, eR)
922- $Tuple2((cY._1 :+ toString((parseIntValue(eM[eA]) + eU))), (cY._2 :+ toString(((parseIntValue(eN[eA]) + eQ[eA]) - eU))))
951+ func fi (dn,eP) = {
952+ let fj = fraction(ff[eP], fe, fg)
953+ $Tuple2((dn._1 :+ toString((parseIntValue(fb[eP]) + fj))), (dn._2 :+ toString(((parseIntValue(fc[eP]) + ff[eP]) - fj))))
923954 }
924955
925- let dj = {
926- let da = bw
927- let db = size(da)
928- let dc = $Tuple2(nil, nil)
929- func dd (de,df) = if ((df >= db))
930- then de
931- else eT(de, da[df])
932-
933- func dg (de,df) = if ((df >= db))
934- then de
956+ let dy = {
957+ let dp = bL
958+ let dq = size(dp)
959+ let dr = $Tuple2(nil, nil)
960+ func ds (dt,du) = if ((du >= dq))
961+ then dt
962+ else fi(dt, dp[du])
963+
964+ func dv (dt,du) = if ((du >= dq))
965+ then dt
935966 else throw("List size exceeds 6")
936967
937- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
968+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
938969 }
939- $Tuple2(makeString(dj._1, "_"), makeString(dj._2, "_"))
970+ $Tuple2(makeString(dy._1, "_"), makeString(dy._2, "_"))
940971 }
941972 }
942973
943974
944-func eV (eW) = if ((eW >= toBigInt(0)))
945- then eW
946- else -(eW)
947-
948-
949-let eX = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
950-
951-func eY (ce,eZ) = {
952- let fa = toInt((ce % ct))
953- let fb = if ((eZ[0] > fa))
975+func fk (fl) = if ((fl >= toBigInt(0)))
976+ then fl
977+ else -(fl)
978+
979+
980+let fm = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
981+
982+func fn (ct,fo) = {
983+ let fp = toInt((ct % cI))
984+ let fq = if ((fo[0] > fp))
954985 then "A"
955- else if ((eZ[1] > fa))
986+ else if ((fo[1] > fp))
956987 then "B"
957- else if ((eZ[2] > fa))
988+ else if ((fo[2] > fp))
958989 then "C"
959- else if ((eZ[3] > fa))
990+ else if ((fo[3] > fp))
960991 then "D"
961- else if ((eZ[4] > fa))
992+ else if ((fo[4] > fp))
962993 then "E"
963994 else "F"
964- fb
965- }
966-
967-
968-func fc (fd,fe) = {
969- let ff = eX[fe]
970- func fg (cY,cZ) = $Tuple2((((((cY._1 + eY(cY._2, ff)) + eY((cY._2 / ct), ff)) + eY((cY._2 / cu), ff)) + eY((cY._2 / cv), ff)) + eY((cY._2 / cw), ff)), (cY._2 / cx))
971-
972- let fh = {
973- let da = [1, 2, 3, 4, 5]
974- let db = size(da)
975- let dc = $Tuple2("", (fd / cs))
976- func dd (de,df) = if ((df >= db))
977- then de
978- else fg(de, da[df])
979-
980- func dg (de,df) = if ((df >= db))
981- then de
995+ fq
996+ }
997+
998+
999+func fr (fs,ft) = {
1000+ let fu = fm[ft]
1001+ func fv (dn,do) = $Tuple2((((((dn._1 + fn(dn._2, fu)) + fn((dn._2 / cI), fu)) + fn((dn._2 / cJ), fu)) + fn((dn._2 / cK), fu)) + fn((dn._2 / cL), fu)), (dn._2 / cM))
1002+
1003+ let fw = {
1004+ let dp = [1, 2, 3, 4, 5]
1005+ let dq = size(dp)
1006+ let dr = $Tuple2("", (fs / cH))
1007+ func ds (dt,du) = if ((du >= dq))
1008+ then dt
1009+ else fv(dt, dp[du])
1010+
1011+ func dv (dt,du) = if ((du >= dq))
1012+ then dt
9821013 else throw("List size exceeds 5")
9831014
984- dg(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5)
985- }
986- fh._1
987- }
988-
989-
990-let fi = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
991-
992-let fj = ["A", "B", "C", "D", "E", "F"]
993-
994-func fk (fl,ex) = {
995- func fm (cY,cc) = {
996- let dI = cY._2
997- let fn = parseIntValue(cc)
998- let eW = if ((fn == 0))
1015+ dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5)
1016+ }
1017+ fw._1
1018+ }
1019+
1020+
1021+let fx = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
1022+
1023+let fy = ["A", "B", "C", "D", "E", "F"]
1024+
1025+func fz (fA,eM) = {
1026+ func fB (dn,cr) = {
1027+ let dX = dn._2
1028+ let fC = parseIntValue(cr)
1029+ let fl = if ((fC == 0))
9991030 then 0
1000- else if ((fn >= (4 * ex)))
1001- then (fn / ex)
1002- else if ((fn > (3 * ex)))
1031+ else if ((fC >= (4 * eM)))
1032+ then (fC / eM)
1033+ else if ((fC > (3 * eM)))
10031034 then 3
1004- else (((fn - 1) / ex) + 1)
1005- $Tuple3((cY._1 :+ eW), (cY._2 + 1), (cY._3 + eW))
1006- }
1007-
1008- let fh = {
1009- let da = fl
1010- let db = size(da)
1011- let dc = $Tuple3(nil, 0, 0)
1012- func dd (de,df) = if ((df >= db))
1013- then de
1014- else fm(de, da[df])
1015-
1016- func dg (de,df) = if ((df >= db))
1017- then de
1035+ else (((fC - 1) / eM) + 1)
1036+ $Tuple3((dn._1 :+ fl), (dn._2 + 1), (dn._3 + fl))
1037+ }
1038+
1039+ let fw = {
1040+ let dp = fA
1041+ let dq = size(dp)
1042+ let dr = $Tuple3(nil, 0, 0)
1043+ func ds (dt,du) = if ((du >= dq))
1044+ then dt
1045+ else fB(dt, dp[du])
1046+
1047+ func dv (dt,du) = if ((du >= dq))
1048+ then dt
10181049 else throw("List size exceeds 6")
10191050
1020- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1021- }
1022- let fo = fh._1
1023- let fp = value(indexOf(fo, max(fo)))
1024- let fq = (fh._3 - 25)
1025- func fr (cY,bL) = {
1026- let fs = if ((bL == fp))
1027- then (fo[bL] - fq)
1028- else fo[bL]
1029- let ft = if ((fs == 0))
1051+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
1052+ }
1053+ let fD = fw._1
1054+ let fE = value(indexOf(fD, max(fD)))
1055+ let fF = (fw._3 - 25)
1056+ func fG (dn,ca) = {
1057+ let fH = if ((ca == fE))
1058+ then (fD[ca] - fF)
1059+ else fD[ca]
1060+ let fI = if ((fH == 0))
10301061 then nil
1031- else split(drop(toString(pow(10, 0, fs, 0, 0, DOWN)), 1), "")
1032- let ec = fj[bL]
1033- func fu (fv,fw) = (fv :+ ec)
1034-
1035- let fx = {
1036- let da = ft
1037- let db = size(da)
1038- let dc = nil
1039- func fy (de,df) = if ((df >= db))
1040- then de
1041- else fu(de, da[df])
1042-
1043- func fz (de,df) = if ((df >= db))
1044- then de
1062+ else split(drop(toString(pow(10, 0, fH, 0, 0, DOWN)), 1), "")
1063+ let er = fy[ca]
1064+ func fJ (fK,fL) = (fK :+ er)
1065+
1066+ let fM = {
1067+ let dp = fI
1068+ let dq = size(dp)
1069+ let dr = nil
1070+ func fN (dt,du) = if ((du >= dq))
1071+ then dt
1072+ else fJ(dt, dp[du])
1073+
1074+ func fO (dt,du) = if ((du >= dq))
1075+ then dt
10451076 else throw("List size exceeds 25")
10461077
1047- fz(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(fy(dc, 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)
1048- }
1049- (cY ++ fx)
1050- }
1051-
1052- let dj = {
1053- let da = bw
1054- let db = size(da)
1055- let dc = nil
1056- func fy (de,df) = if ((df >= db))
1057- then de
1058- else fr(de, da[df])
1059-
1060- func fz (de,df) = if ((df >= db))
1061- then de
1078+ fO(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(dr, 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)
1079+ }
1080+ (dn ++ fM)
1081+ }
1082+
1083+ let dy = {
1084+ let dp = bL
1085+ let dq = size(dp)
1086+ let dr = nil
1087+ func fN (dt,du) = if ((du >= dq))
1088+ then dt
1089+ else fG(dt, dp[du])
1090+
1091+ func fO (dt,du) = if ((du >= dq))
1092+ then dt
10621093 else throw("List size exceeds 6")
10631094
1064- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1065- }
1066- func fA (cY,dI) = (cY + dj[dI])
1067-
1068- let da = fi
1069- let db = size(da)
1070- let dc = ""
1071- func fB (de,df) = if ((df >= db))
1072- then de
1073- else fA(de, da[df])
1074-
1075- func fC (de,df) = if ((df >= db))
1076- then de
1095+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
1096+ }
1097+ func fP (dn,dX) = (dn + dy[dX])
1098+
1099+ let dp = fx
1100+ let dq = size(dp)
1101+ let dr = ""
1102+ func fQ (dt,du) = if ((du >= dq))
1103+ then dt
1104+ else fP(dt, dp[du])
1105+
1106+ func fR (dt,du) = if ((du >= dq))
1107+ then dt
10771108 else throw("List size exceeds 25")
10781109
1079- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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)
1080- }
1081-
1082-
1083-func fD (fE) = {
1084- let fF = split(valueOrElse(getString(fE), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1085-[toString(valueOrElse(parseInt(fF[ay]), 0)), if ((size(split(fF[az], "_")) == aa))
1086- then fF[az]
1087- else "0_0_0_0_0_0", if ((size(split(fF[aA], "_")) == aa))
1088- then fF[aA]
1089- else "0_0_0_0_0_0", fF[aB]]
1090- }
1091-
1092-
1093-func fG (fH) = {
1094- let dw = split(fH, "_")
1095- ((ad * (parseIntValue(dw[1]) + 1)) * parseIntValue(dw[0]))
1096- }
1097-
1098-
1099-func fI (fJ) = {
1100- let fK = fJ[as]
1101- func fL (cY,fM) = (cY + parseIntValue(fM))
1102-
1103- func fN (cY,fM) = {
1104- let bL = cY._1
1105- let fO = (((parseIntValue(fM) + ao) - 1) / ao)
1106- $Tuple2((bL + 1), (cY._2 + (fO * bq)))
1107- }
1108-
1109- let fP = {
1110- let da = split(fJ[aq], "_")
1111- let db = size(da)
1112- let dc = 0
1113- func dd (de,df) = if ((df >= db))
1114- then de
1115- else fL(de, da[df])
1116-
1117- func dg (de,df) = if ((df >= db))
1118- then de
1110+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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)
1111+ }
1112+
1113+
1114+func fS (fT) = {
1115+ let fU = split(valueOrElse(getString(fT), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1116+[toString(valueOrElse(parseInt(fU[aA]), 0)), if ((size(split(fU[aB], "_")) == ac))
1117+ then fU[aB]
1118+ else "0_0_0_0_0_0", if ((size(split(fU[aC], "_")) == ac))
1119+ then fU[aC]
1120+ else "0_0_0_0_0_0", fU[aD]]
1121+ }
1122+
1123+
1124+func fV (fW) = {
1125+ let dL = split(fW, "_")
1126+ ((af * (parseIntValue(dL[1]) + 1)) * parseIntValue(dL[0]))
1127+ }
1128+
1129+
1130+func fX (fY) = {
1131+ let fZ = fY[au]
1132+ func ga (dn,gb) = (dn + parseIntValue(gb))
1133+
1134+ func gc (dn,gb) = {
1135+ let ca = dn._1
1136+ let gd = (((parseIntValue(gb) + aq) - 1) / aq)
1137+ $Tuple2((ca + 1), (dn._2 + (gd * bF)))
1138+ }
1139+
1140+ let ge = {
1141+ let dp = split(fY[as], "_")
1142+ let dq = size(dp)
1143+ let dr = 0
1144+ func ds (dt,du) = if ((du >= dq))
1145+ then dt
1146+ else ga(dt, dp[du])
1147+
1148+ func dv (dt,du) = if ((du >= dq))
1149+ then dt
11191150 else throw("List size exceeds 6")
11201151
1121- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1122- }
1123- let fQ = {
1124- let da = split(fJ[ar], "_")
1125- let db = size(da)
1126- let dc = 0
1127- func fy (de,df) = if ((df >= db))
1128- then de
1129- else fL(de, da[df])
1130-
1131- func fz (de,df) = if ((df >= db))
1132- then de
1152+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
1153+ }
1154+ let gf = {
1155+ let dp = split(fY[at], "_")
1156+ let dq = size(dp)
1157+ let dr = 0
1158+ func fN (dt,du) = if ((du >= dq))
1159+ then dt
1160+ else ga(dt, dp[du])
1161+
1162+ func fO (dt,du) = if ((du >= dq))
1163+ then dt
11331164 else throw("List size exceeds 6")
11341165
1135- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1136- }
1137- let fR = if ((fK == ""))
1166+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
1167+ }
1168+ let gg = if ((fZ == ""))
11381169 then 0
1139- else ( let da = split_4C(fK, "_")
1140- let db = size(da)
1141- let dc = $Tuple2(0, 0)
1142- func fB (de,df) = if ((df >= db))
1143- then de
1144- else fN(de, da[df])
1145-
1146- func fC (de,df) = if ((df >= db))
1147- then de
1170+ else ( let dp = split_4C(fZ, "_")
1171+ let dq = size(dp)
1172+ let dr = $Tuple2(0, 0)
1173+ func fQ (dt,du) = if ((du >= dq))
1174+ then dt
1175+ else gc(dt, dp[du])
1176+
1177+ func fR (dt,du) = if ((du >= dq))
1178+ then dt
11481179 else throw("List size exceeds 50")
11491180
1150- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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))._2
1151- ((fP + fQ) + fR)
1152- }
1153-
1154-
1155-func fS (fT,fU,fV) = {
1156- let fH = ((toString(fU) + "_") + toString(fV))
1157- let fW = fG(fH)
1158- let fX = valueOrElse(getString(fT), (fH + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1159- let fY = split_4C(fX, ":")
1160- let fZ = fI(fY)
1161- let ga = if ((5 > size(fY)))
1162- then makeString(["0", toString(fZ), toString((fW - fZ)), toString(fW)], "_")
1181+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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))._2
1182+ ((ge + gf) + gg)
1183+ }
1184+
1185+
1186+func gh (gi,gj,gk) = {
1187+ let fW = ((toString(gj) + "_") + toString(gk))
1188+ let gl = fV(fW)
1189+ let gm = valueOrElse(getString(gi), (fW + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1190+ let gn = split_4C(gm, ":")
1191+ let go = fX(gn)
1192+ let gp = if ((5 > size(gn)))
1193+ then makeString(["0", toString(go), toString((gl - go)), toString(gl)], "_")
11631194 else {
1164- let gb = split(fY[at], "_")
1165- let gc = parseIntValue(gb[au])
1166- let gd = if ((size(gb) > 1))
1167- then parseIntValue(gb[av])
1168- else fZ
1169- makeString([toString(gc), toString(gd), toString(((fW - gc) - gd)), toString(fW)], "_")
1170- }
1171-[fY[ap], if ((size(split(fY[aq], "_")) == aa))
1172- then fY[aq]
1173- else "0_0_0_0_0_0", if ((size(split(fY[ar], "_")) == aa))
1174- then fY[ar]
1175- else "0_0_0_0_0_0", fY[as], ga]
1176- }
1177-
1178-
1179-func ge (fJ) = {
1180- let gf = fI(fJ)
1181- let gg = parseIntValue(split(fJ[at], "_")[au])
1182- ((fG(fJ[ap]) - gf) - gg)
1183- }
1184-
1185-
1186-func gh (gi,gj) = {
1187- let fO = if ((gi >= 0))
1188- then (((gi + gj) - 1) / gj)
1189- else -((((-(gi) + gj) - 1) / gj))
1190- (fO * bq)
1191- }
1192-
1193-
1194-func gk (gl,fJ,gm) = if ((size(gl) != 3))
1195+ let gq = split(gn[av], "_")
1196+ let gr = parseIntValue(gq[aw])
1197+ let gs = if ((size(gq) > 1))
1198+ then parseIntValue(gq[ax])
1199+ else go
1200+ makeString([toString(gr), toString(gs), toString(((gl - gr) - gs)), toString(gl)], "_")
1201+ }
1202+[gn[ar], if ((size(split(gn[as], "_")) == ac))
1203+ then gn[as]
1204+ else "0_0_0_0_0_0", if ((size(split(gn[at], "_")) == ac))
1205+ then gn[at]
1206+ else "0_0_0_0_0_0", gn[au], gp]
1207+ }
1208+
1209+
1210+func gt (fY) = {
1211+ let gu = fX(fY)
1212+ let gv = parseIntValue(split(fY[av], "_")[aw])
1213+ ((fV(fY[ar]) - gu) - gv)
1214+ }
1215+
1216+
1217+func gw (gx,gy) = {
1218+ let gd = if ((gx >= 0))
1219+ then (((gx + gy) - 1) / gy)
1220+ else -((((-(gx) + gy) - 1) / gy))
1221+ (gd * bF)
1222+ }
1223+
1224+
1225+func gz (gA,fY,gB) = if ((size(gA) != 3))
11951226 then throw("cargoListStr should contain exactly 2 ':' separators")
11961227 else {
1197- let gn = split(gl[0], "_")
1198- let go = split(gl[1], "_")
1199- let gp = if ((gl[2] == ""))
1228+ let gC = split(gA[0], "_")
1229+ let gD = split(gA[1], "_")
1230+ let gE = if ((gA[2] == ""))
12001231 then nil
1201- else split(gl[2], "_")
1202- if ((size(gn) != aa))
1232+ else split(gA[2], "_")
1233+ if ((size(gC) != ac))
12031234 then throw("All 6 resources should be passed")
1204- else if ((size(go) != aa))
1235+ else if ((size(gD) != ac))
12051236 then throw("All 6 materials should be passed")
12061237 else {
1207- let eP = ge(fJ)
1208- let gq = split(fJ[aq], "_")
1209- let gr = split(fJ[ar], "_")
1210- let gs = if ((fJ[as] == ""))
1238+ let fe = gt(fY)
1239+ let gF = split(fY[as], "_")
1240+ let gG = split(fY[at], "_")
1241+ let gH = if ((fY[au] == ""))
12111242 then nil
1212- else split(fJ[as], "_")
1213- let eN = split(gm[az], "_")
1214- let gt = split(gm[aA], "_")
1215- let gu = if ((gm[aB] == ""))
1243+ else split(fY[au], "_")
1244+ let fc = split(gB[aB], "_")
1245+ let gI = split(gB[aC], "_")
1246+ let gJ = if ((gB[aD] == ""))
12161247 then nil
1217- else split(gm[aB], "_")
1218- func gv (cY,fM) = {
1219- let eA = cY._1
1220- let gw = parseIntValue(fM)
1221- let gx = parseIntValue(gq[eA])
1222- let gy = parseIntValue(eN[eA])
1223- if ((gw == 0))
1224- then $Tuple4((eA + 1), (cY._2 :+ gq[eA]), (cY._3 :+ eN[eA]), cY._4)
1225- else if ((gw > 0))
1226- then if ((gw > gy))
1227- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gy)) + " available"))
1228- else $Tuple4((eA + 1), (cY._2 :+ toString((gx + gw))), (cY._3 :+ toString((gy - gw))), (cY._4 + gw))
1229- else if ((-(gw) > gx))
1230- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gx)) + " available"))
1231- else $Tuple4((eA + 1), (cY._2 :+ toString((gx + gw))), (cY._3 :+ toString((gy - gw))), (cY._4 + gw))
1248+ else split(gB[aD], "_")
1249+ func gK (dn,gb) = {
1250+ let eP = dn._1
1251+ let gL = parseIntValue(gb)
1252+ let gM = parseIntValue(gF[eP])
1253+ let gN = parseIntValue(fc[eP])
1254+ if ((gL == 0))
1255+ then $Tuple4((eP + 1), (dn._2 :+ gF[eP]), (dn._3 :+ fc[eP]), dn._4)
1256+ else if ((gL > 0))
1257+ then if ((gL > gN))
1258+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gN)) + " available"))
1259+ else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL))
1260+ else if ((-(gL) > gM))
1261+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gM)) + " available"))
1262+ else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL))
12321263 }
12331264
1234- let dj = {
1235- let da = gn
1236- let db = size(da)
1237- let dc = $Tuple4(0, nil, nil, 0)
1238- func dd (de,df) = if ((df >= db))
1239- then de
1240- else gv(de, da[df])
1241-
1242- func dg (de,df) = if ((df >= db))
1243- then de
1265+ let dy = {
1266+ let dp = gC
1267+ let dq = size(dp)
1268+ let dr = $Tuple4(0, nil, nil, 0)
1269+ func ds (dt,du) = if ((du >= dq))
1270+ then dt
1271+ else gK(dt, dp[du])
1272+
1273+ func dv (dt,du) = if ((du >= dq))
1274+ then dt
12441275 else throw("List size exceeds 6")
12451276
1246- dg(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6)
1277+ dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6)
12471278 }
1248- func gz (cY,fM) = {
1249- let eA = cY._1
1250- let gw = parseIntValue(fM)
1251- let gA = parseIntValue(gr[eA])
1252- let gB = parseIntValue(gt[eA])
1253- if ((gw == 0))
1254- then $Tuple4((eA + 1), (cY._2 :+ gr[eA]), (cY._3 :+ gt[eA]), cY._4)
1255- else if ((gw > 0))
1256- then if ((gw > gB))
1257- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gB)) + " available"))
1258- else $Tuple4((eA + 1), (cY._2 :+ toString((gA + gw))), (cY._3 :+ toString((gB - gw))), (cY._4 + gw))
1259- else if ((-(gw) > gA))
1260- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gA)) + " available"))
1261- else $Tuple4((eA + 1), (cY._2 :+ toString((gA + gw))), (cY._3 :+ toString((gB - gw))), (cY._4 + gw))
1279+ func gO (dn,gb) = {
1280+ let eP = dn._1
1281+ let gL = parseIntValue(gb)
1282+ let gP = parseIntValue(gG[eP])
1283+ let gQ = parseIntValue(gI[eP])
1284+ if ((gL == 0))
1285+ then $Tuple4((eP + 1), (dn._2 :+ gG[eP]), (dn._3 :+ gI[eP]), dn._4)
1286+ else if ((gL > 0))
1287+ then if ((gL > gQ))
1288+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gQ)) + " available"))
1289+ else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL))
1290+ else if ((-(gL) > gP))
1291+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gP)) + " available"))
1292+ else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL))
12621293 }
12631294
1264- let er = {
1265- let da = go
1266- let db = size(da)
1267- let dc = $Tuple4(0, nil, nil, dj._4)
1268- func fy (de,df) = if ((df >= db))
1269- then de
1270- else gz(de, da[df])
1271-
1272- func fz (de,df) = if ((df >= db))
1273- then de
1295+ let eG = {
1296+ let dp = gD
1297+ let dq = size(dp)
1298+ let dr = $Tuple4(0, nil, nil, dy._4)
1299+ func fN (dt,du) = if ((du >= dq))
1300+ then dt
1301+ else gO(dt, dp[du])
1302+
1303+ func fO (dt,du) = if ((du >= dq))
1304+ then dt
12741305 else throw("List size exceeds 6")
12751306
1276- fz(fy(fy(fy(fy(fy(fy(dc, 0), 1), 2), 3), 4), 5), 6)
1307+ fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6)
12771308 }
1278- func gC (cY,fM) = {
1279- let eA = cY._1
1280- let gw = parseIntValue(fM)
1281- let gD = if ((size(gs) > eA))
1282- then parseIntValue(gs[eA])
1309+ func gR (dn,gb) = {
1310+ let eP = dn._1
1311+ let gL = parseIntValue(gb)
1312+ let gS = if ((size(gH) > eP))
1313+ then parseIntValue(gH[eP])
12831314 else 0
1284- let gE = if ((size(gu) > eA))
1285- then parseIntValue(gu[eA])
1315+ let gT = if ((size(gJ) > eP))
1316+ then parseIntValue(gJ[eP])
12861317 else 0
1287- if ((gw == 0))
1288- then $Tuple4((eA + 1), (cY._2 :+ toString(gD)), (cY._3 :+ toString(gE)), cY._4)
1289- else if ((gw > 0))
1290- then if ((gw > gE))
1291- then throw((((("Attempt to take " + fM) + " from backpack, but only ") + toString(gE)) + " available"))
1318+ if ((gL == 0))
1319+ then $Tuple4((eP + 1), (dn._2 :+ toString(gS)), (dn._3 :+ toString(gT)), dn._4)
1320+ else if ((gL > 0))
1321+ then if ((gL > gT))
1322+ then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gT)) + " available"))
12921323 else {
1293- let gF = (gh((gD + gw), ao) - gh(gD, ao))
1294- $Tuple4((eA + 1), (cY._2 :+ toString((gD + gw))), (cY._3 :+ toString((gE - gw))), (cY._4 + gF))
1324+ let gU = (gw((gS + gL), aq) - gw(gS, aq))
1325+ $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU))
12951326 }
1296- else if ((-(gw) > gD))
1297- then throw((((("Attempt to take " + toString(-(gw))) + " from warehouse, but only ") + toString(gD)) + " available"))
1327+ else if ((-(gL) > gS))
1328+ then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gS)) + " available"))
12981329 else {
1299- let gF = (gh((gD + gw), ao) - gh(gD, ao))
1300- $Tuple4((eA + 1), (cY._2 :+ toString((gD + gw))), (cY._3 :+ toString((gE - gw))), (cY._4 + gF))
1330+ let gU = (gw((gS + gL), aq) - gw(gS, aq))
1331+ $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU))
13011332 }
13021333 }
13031334
1304- let fF = if ((size(gp) != 0))
1335+ let fU = if ((size(gE) != 0))
13051336 then {
1306- let da = gp
1307- let db = size(da)
1308- let dc = $Tuple4(0, nil, nil, er._4)
1309- func fB (de,df) = if ((df >= db))
1310- then de
1311- else gC(de, da[df])
1312-
1313- func fC (de,df) = if ((df >= db))
1314- then de
1337+ let dp = gE
1338+ let dq = size(dp)
1339+ let dr = $Tuple4(0, nil, nil, eG._4)
1340+ func fQ (dt,du) = if ((du >= dq))
1341+ then dt
1342+ else gR(dt, dp[du])
1343+
1344+ func fR (dt,du) = if ((du >= dq))
1345+ then dt
13151346 else throw("List size exceeds 50")
13161347
1317- fC(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(fB(dc, 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)
1348+ fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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)
13181349 }
1319- else $Tuple4(0, gs, gu, er._4)
1320- let gG = fF._4
1321- if ((gG > eP))
1322- then throw((((("Attempt to put total " + toString(gG)) + " stuff, but only ") + toString(eP)) + " warehouse space left"))
1323- else $Tuple7(makeString(dj._2, "_"), makeString(er._2, "_"), makeString(fF._2, "_"), makeString(dj._3, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), gG)
1350+ else $Tuple4(0, gH, gJ, eG._4)
1351+ let gV = fU._4
1352+ if ((gV > fe))
1353+ then throw((((("Attempt to put total " + toString(gV)) + " stuff, but only ") + toString(fe)) + " warehouse space left"))
1354+ else $Tuple7(makeString(dy._2, "_"), makeString(eG._2, "_"), makeString(fU._2, "_"), makeString(dy._3, "_"), makeString(eG._3, "_"), makeString(fU._3, "_"), gV)
13241355 }
13251356 }
13261357
13271358
1328-func gH (gI,gJ) = {
1329- let bb = toString(gI)
1330- let gK = eV(toBigInt(gJ))
1331- let gL = valueOrElse(getInteger(cz()), (cy + 1))
1332- let cB = toString(gL)
1333- let fe = toInt((gK % cs))
1334- let eD = fc(gK, fe)
1335- let gM = ai[fe]
1336- let gN = Issue(cR(cB, "S"), makeString([cB, "S", eD, gM], "_"), 1, 0, false)
1337- let aE = calculateAssetId(gN)
1338- let gO = toBase58String(aE)
1339- $Tuple2([IntegerEntry(cz(), (gL + 1)), gN, StringEntry(cA(cB), gO), StringEntry(aD(gO), bb), StringEntry(cG(cB), bb), IntegerEntry(aH(gO), 0), IntegerEntry(cE(gO, bb), 0), ScriptTransfer(gI, 1, aE)], $Tuple2(gO, gM))
1340- }
1341-
1342-
1343-func gP (bb,gQ,gR) = if (!(sigVerify_8Kb(gQ, gR, ck)))
1359+func gW (gX,gY) = {
1360+ let bd = toString(gX)
1361+ let gZ = fk(toBigInt(gY))
1362+ let ha = valueOrElse(getInteger(cO()), (cN + 1))
1363+ let cQ = toString(ha)
1364+ let ft = toInt((gZ % cH))
1365+ let eS = fr(gZ, ft)
1366+ let hb = ak[ft]
1367+ let hc = Issue(dg(cQ, "S"), makeString([cQ, "S", eS, hb], "_"), 1, 0, false)
1368+ let aG = calculateAssetId(hc)
1369+ let hd = toBase58String(aG)
1370+ $Tuple2([IntegerEntry(cO(), (ha + 1)), hc, StringEntry(cP(cQ), hd), StringEntry(aF(hd), bd), StringEntry(cV(cQ), bd), IntegerEntry(aJ(hd), 0), IntegerEntry(cT(hd, bd), 0), ScriptTransfer(gX, 1, aG)], $Tuple2(hd, hb))
1371+ }
1372+
1373+
1374+func he (bd,hf,hg) = if (!(sigVerify_8Kb(hf, hg, cz)))
13441375 then throw("signature does not match")
13451376 else {
1346- let dw = split(toUtf8String(gQ), ";")
1347- let gS = split(dw[0], "|")
1348- let gT = split(gS[cN], "_")
1349- let gU = parseIntValue(gT[0])
1350- let gV = parseIntValue(gT[1])
1351- let gW = split(dw[1], ":")
1352- let gX = gW[0]
1353- let gY = parseIntValue(gS[cO])
1354- if (if ((gY > (lastBlock.timestamp + cm)))
1377+ let dL = split(toUtf8String(hf), ";")
1378+ let hh = split(dL[0], "|")
1379+ let hi = split(hh[dc], "_")
1380+ let hj = parseIntValue(hi[0])
1381+ let hk = parseIntValue(hi[1])
1382+ let hl = split(dL[1], ":")
1383+ let hm = hl[0]
1384+ let hn = parseIntValue(hh[dd])
1385+ if (if ((hn > (lastBlock.timestamp + cB)))
13551386 then true
1356- else ((lastBlock.timestamp - cm) > gY))
1357- then throw(((("signature outdated: logTime=" + toString(gY)) + ", bcTime=") + toString(lastBlock.timestamp)))
1387+ else ((lastBlock.timestamp - cB) > hn))
1388+ then throw(((("signature outdated: logTime=" + toString(hn)) + ", bcTime=") + toString(lastBlock.timestamp)))
13581389 else {
1359- let gZ = gW[1]
1360- let ha = valueOrElse(getString(aC(bb)), "")
1361- if ((ha != gZ))
1362- then throw(((("Tx ids don't match! In state: " + ha) + ", in msg: ") + gZ))
1390+ let ho = hl[1]
1391+ let hp = valueOrElse(getString(aE(bd)), "")
1392+ if ((hp != ho))
1393+ then throw(((("Tx ids don't match! In state: " + hp) + ", in msg: ") + ho))
13631394 else {
1364- let r = valueOrErrorMessage(getString(aW(bb)), "You don't have a duck staked")
1365- let hb = q(r)
1366- let hc = M(valueOrElse(getInteger(u(r)), 0))
1367- let hd = valueOrElse(getInteger(hb), hc)
1368- if ((hd != gU))
1369- then throw(((("oldHealth=" + toString(hd)) + " from state does not match one from flight log=") + toString(gU)))
1370- else if ((0 >= gU))
1395+ let r = valueOrErrorMessage(getString(aY(bd)), "You don't have a duck staked")
1396+ let hq = q(r)
1397+ let hr = O(valueOrElse(getInteger(u(r)), 0))
1398+ let hs = valueOrElse(getInteger(hq), hr)
1399+ if ((hs != hj))
1400+ then throw(((("oldHealth=" + toString(hs)) + " from state does not match one from flight log=") + toString(hj)))
1401+ else if ((0 >= hj))
13711402 then throw("You can't fly with zero health")
13721403 else {
1373- let he = if ((size(gS) > cP))
1374- then gS[cP]
1404+ let ht = if ((size(hh) > de))
1405+ then hh[de]
13751406 else ""
1376- let hf = if ((size(gS) > cQ))
1377- then gS[cQ]
1407+ let hu = if ((size(hh) > df))
1408+ then hh[df]
13781409 else ""
1379- let hg = if (if ((gV > 0))
1380- then (he == "$")
1410+ let hv = if (if ((hk > 0))
1411+ then (ht == "$")
13811412 else false)
1382- then cd(invoke(bM, "sendUsdtPrize", [bb], nil))
1413+ then cs(invoke(cb, "sendUsdtPrize", [bd], nil))
13831414 else 0
1384- $Tuple5(gV, r, hg, gX, hf)
1415+ $Tuple5(hk, r, hv, hm, hu)
13851416 }
13861417 }
13871418 }
13881419 }
13891420
13901421
1391-func hh (gI,gJ,gQ,gR) = {
1392- let bb = toString(gI)
1393- let ff = gP(bb, gQ, gR)
1394- let r = ff._2
1395- let hb = q(r)
1396- let fE = aX(r)
1397- let gm = fD(fE)
1398- let hi = split(gm[aA], "_")
1399- let hj = makeString(dk(true, hi, cq), "_")
1400- let hk = w(r)
1401- let hl = valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,")
1402- let hm = dr(hl, ff._5)
1403- if ((0 >= ff._1))
1404- then $Tuple3([IntegerEntry(hb, 0), StringEntry(hk, hm)], "", 0)
1422+func hw (gX,gY,hf,hg) = {
1423+ let bd = toString(gX)
1424+ let fu = he(bd, hf, hg)
1425+ let r = fu._2
1426+ let hq = q(r)
1427+ let fT = aZ(r)
1428+ let gB = fS(fT)
1429+ let hx = split(gB[aC], "_")
1430+ let hy = makeString(dz(true, hx, cF), "_")
1431+ let hz = w(r)
1432+ let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,")
1433+ let hB = dG(hA, fu._5)
1434+ if ((0 >= fu._1))
1435+ then $Tuple3([IntegerEntry(hq, 0), StringEntry(hz, hB)], "", 0)
14051436 else {
1406- let hn = gH(gI, gJ)
1407- let gO = hn._2._1
1408- $Tuple3(((((hn._1 :+ StringEntry(aY(r), makeString([hn._2._2, "L", gO], "_"))) :+ IntegerEntry(hb, ff._1)) :+ StringEntry(hk, hm)) :+ StringEntry(fE, makeString([gm[ay], gm[az], hj, gm[aB]], ":"))), gO, ff._3)
1409- }
1410- }
1411-
1412-
1413-func ho (aO,hp) = {
1414- let fV = valueOrElse(getInteger(aH(aO)), 0)
1415- let hq = valueOrElse(getInteger(aI(Z, aO)), 0)
1416- let hr = (fV / 6)
1417- let hs = (fV / 7)
1418- ((ab + fraction(ab, ((fV + hr) + (2 * hs)), 5)) + fraction(ab, hq, (hp * 5)))
1419- }
1420-
1421-
1422-func ht (b,hu,hv) = {
1423- let hw = if ((hu == cK))
1424- then $Tuple2(hv, valueOrElse(getString(aW(b)), ""))
1437+ let hC = gW(gX, gY)
1438+ let hd = hC._2._1
1439+ $Tuple3(((((hC._1 :+ StringEntry(ba(r), makeString([hC._2._2, "L", hd], "_"))) :+ IntegerEntry(hq, fu._1)) :+ StringEntry(hz, hB)) :+ StringEntry(fT, makeString([gB[aA], gB[aB], hy, gB[aD]], ":"))), hd, fu._3)
1440+ }
1441+ }
1442+
1443+
1444+func hD (aQ,hE) = {
1445+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1446+ let hF = valueOrElse(getInteger(aK(ab, aQ)), 0)
1447+ let hG = (gk / 6)
1448+ let hH = (gk / 7)
1449+ ((ad + fraction(ad, ((gk + hG) + (2 * hH)), 5)) + fraction(ad, hF, (hE * 5)))
1450+ }
1451+
1452+
1453+func hI (b,hJ,hK) = {
1454+ let hL = if ((hJ == cZ))
1455+ then $Tuple2(hK, valueOrElse(getString(aY(b)), ""))
14251456 else {
1426- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1427- let hx = valueOrElse(getString(aY(r)), ae)
1428- let hy = split(value(hx), "_")
1429- if ((hy[bd] != "L"))
1430- then throw((("Duck location type is " + hy[bd]) + ", but should be L"))
1431- else $Tuple2(hy[be], r)
1432- }
1433- let aO = hw._1
1434- let hz = hw._2
1435- let hA = value(assetInfo(fromBase58String(aO)))
1436- let hB = aG(aO)
1437- let hC = valueOrErrorMessage(getInteger(hB), (("Land " + hA.name) + " is not staked"))
1438- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
1439- if ((hD != b))
1440- then throw((X + " is not yours"))
1457+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1458+ let hM = valueOrElse(getString(ba(r)), ag)
1459+ let hN = split(value(hM), "_")
1460+ if ((hN[bs] != "L"))
1461+ then throw((("Duck location type is " + hN[bs]) + ", but should be L"))
1462+ else $Tuple2(hN[bt], r)
1463+ }
1464+ let aQ = hL._1
1465+ let hO = hL._2
1466+ let hP = value(assetInfo(fromBase58String(aQ)))
1467+ let hQ = aI(aQ)
1468+ let hR = valueOrErrorMessage(getInteger(hQ), (("Land " + hP.name) + " is not staked"))
1469+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
1470+ if ((hS != b))
1471+ then throw((Z + " is not yours"))
14411472 else {
1442- let hE = split(hA.description, "_")
1443- $Tuple4(hz, aO, hE, hC)
1444- }
1445- }
1446-
1447-
1448-func hF (b,gi,hu,hv) = if ((0 > gi))
1473+ let hT = split(hP.description, "_")
1474+ $Tuple4(hO, aQ, hT, hR)
1475+ }
1476+ }
1477+
1478+
1479+func hU (b,gx,hJ,hK) = if ((0 > gx))
14491480 then throw("Negative amount")
14501481 else {
1451- let ec = ht(b, hu, hv)
1452- let cg = ec._3[bS]
1453- let ew = eC(ec._3[bT])
1454- let eG = (lastBlock.timestamp - ec._4)
1455- if ((0 > eG))
1456- then throw(((("Saved timestamp is in future, saved = " + toString(ec._4)) + ", current = ") + toString(lastBlock.timestamp)))
1482+ let er = hI(b, hJ, hK)
1483+ let cv = er._3[ch]
1484+ let eL = eR(er._3[ci])
1485+ let eV = (lastBlock.timestamp - er._4)
1486+ if ((0 > eV))
1487+ then throw(((("Saved timestamp is in future, saved = " + toString(er._4)) + ", current = ") + toString(lastBlock.timestamp)))
14571488 else {
1458- let hp = cf(cg)
1459- let hG = ho(ec._2, hp)
1460- let hH = fraction(eG, (hG * hp), ac)
1461- if ((gi > hH))
1462- then throw(((("Not enough resources, available = " + toString(hH)) + ", requested = ") + toString(gi)))
1489+ let hE = cu(cv)
1490+ let hV = hD(er._2, hE)
1491+ let hW = fraction(eV, (hV * hE), ae)
1492+ if ((gx > hW))
1493+ then throw(((("Not enough resources, available = " + toString(hW)) + ", requested = ") + toString(gx)))
14631494 else {
1464- let hI = fraction((hH - gi), ac, (hG * hp))
1465- let hJ = (lastBlock.timestamp - hI)
1466- let fU = (hp / br)
1467- let eO = eK(ew, (eG - hI), fU, hG)
1468- let fT = aN(ec._2)
1469- let fV = valueOrElse(getInteger(aH(ec._2)), 0)
1470- let fJ = fS(fT, fU, fV)
1471- let gb = split(fJ[at], "_")
1472- let eP = parseIntValue(gb[aw])
1473- if (if ((hu == cK))
1474- then (gi > eP)
1495+ let hX = fraction((hW - gx), ae, (hV * hE))
1496+ let hY = (lastBlock.timestamp - hX)
1497+ let gj = (hE / bG)
1498+ let fd = eZ(eL, (eV - hX), gj, hV)
1499+ let gi = aP(er._2)
1500+ let gk = valueOrElse(getInteger(aJ(er._2)), 0)
1501+ let fY = gh(gi, gj, gk)
1502+ let gq = split(fY[av], "_")
1503+ let fe = parseIntValue(gq[ay])
1504+ if (if ((hJ == cZ))
1505+ then (gx > fe)
14751506 else false)
1476- then throw((("Only " + toString(eP)) + " space left in warehouse"))
1507+ then throw((("Only " + toString(fe)) + " space left in warehouse"))
14771508 else {
1478- let fE = aX(ec._1)
1479- let gm = fD(fE)
1480- let eN = split(gm[az], "_")
1481- let eM = split(fJ[aq], "_")
1482- let hK = if ((hu == cK))
1483- then $Tuple4(eE(eM, ew, (eG - hI), fU, hG), gm[az], (parseIntValue(gb[av]) + eO._2), (parseIntValue(gb[aw]) - eO._2))
1484- else if ((hu == cL))
1485- then $Tuple4(fJ[aq], eE(eN, ew, (eG - hI), fU, hG), parseIntValue(gb[av]), parseIntValue(gb[aw]))
1509+ let fT = aZ(er._1)
1510+ let gB = fS(fT)
1511+ let fc = split(gB[aB], "_")
1512+ let fb = split(fY[as], "_")
1513+ let hZ = if ((hJ == cZ))
1514+ then $Tuple4(eT(fb, eL, (eV - hX), gj, hV), gB[aB], (parseIntValue(gq[ax]) + fd._2), (parseIntValue(gq[ay]) - fd._2))
1515+ else if ((hJ == da))
1516+ then $Tuple4(fY[as], eT(fc, eL, (eV - hX), gj, hV), parseIntValue(gq[ax]), parseIntValue(gq[ay]))
14861517 else {
1487- let hL = eL(eM, eN, eO, eP)
1488- let hM = min([parseIntValue(gb[aw]), eO._2])
1489- $Tuple4(hL._1, hL._2, (parseIntValue(gb[av]) + hM), (parseIntValue(gb[aw]) - hM))
1518+ let ia = fa(fb, fc, fd, fe)
1519+ let ib = min([parseIntValue(gq[ay]), fd._2])
1520+ $Tuple4(ia._1, ia._2, (parseIntValue(gq[ax]) + ib), (parseIntValue(gq[ay]) - ib))
14901521 }
1491- let hN = hK._1
1492- let hO = hK._2
1493- let hP = hK._3
1494- let hQ = hK._4
1495- $Tuple5([IntegerEntry(aG(ec._2), hJ), IntegerEntry(aK(X, ec._2, b), hJ)], fE, [gm[ay], hO, gm[aA], gm[aB]], fT, [fJ[ap], hN, fJ[ar], fJ[as], makeString([gb[au], toString(hP), toString(hQ), gb[ax]], "_")])
1522+ let ic = hZ._1
1523+ let id = hZ._2
1524+ let ie = hZ._3
1525+ let if = hZ._4
1526+ $Tuple5([IntegerEntry(aI(er._2), hY), IntegerEntry(aM(Z, er._2, b), hY)], fT, [gB[aA], id, gB[aC], gB[aD]], gi, [fY[ar], ic, fY[at], fY[au], makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")])
14961527 }
14971528 }
14981529 }
14991530 }
15001531
15011532
1502-func hR (b,aO,hp,hu) = {
1503- let hB = aG(aO)
1504- let hC = value(getInteger(hB))
1505- let hH = (fraction((lastBlock.timestamp - hC), ho(aO, hp), ac) * hp)
1506- hF(b, hH, hu, aO)
1507- }
1508-
1509-
1510-func hS (dl,gI,hT,aO) = {
1511- let b = toString(gI)
1512- let ec = ht(b, cM, aO)
1513- let hp = cf(ec._3[bS])
1514- let hU = aH(ec._2)
1515- let hV = valueOrElse(getInteger(hU), 0)
1516- if ((hV >= 3))
1533+func ig (b,aQ,hE,hJ) = {
1534+ let hQ = aI(aQ)
1535+ let hR = value(getInteger(hQ))
1536+ let hW = (fraction((lastBlock.timestamp - hR), hD(aQ, hE), ae) * hE)
1537+ hU(b, hW, hJ, aQ)
1538+ }
1539+
1540+
1541+func ih (dA,gX,ii,aQ) = {
1542+ let b = toString(gX)
1543+ let er = hI(b, db, aQ)
1544+ let hE = cu(er._3[ch])
1545+ let ij = aJ(er._2)
1546+ let ik = valueOrElse(getInteger(ij), 0)
1547+ if ((ik >= 3))
15171548 then throw("Currently max infrastructure level = 3")
15181549 else {
1519- let R = (hV + 1)
1520- let hW = fraction(cp, (hp * R), br)
1521- if (if (!(dl))
1522- then (hT != hW)
1550+ let T = (ik + 1)
1551+ let il = fraction(cE, (hE * T), bG)
1552+ if (if (!(dA))
1553+ then (ii != il)
15231554 else false)
1524- then throw(("Payment attached should be " + toString(hW)))
1555+ then throw(("Payment attached should be " + toString(il)))
15251556 else {
1526- let fE = aX(ec._1)
1527- let gm = fD(fE)
1528- let hi = split(gm[aA], "_")
1529- let hX = fraction(bm, (hp * R), br)
1530- let hj = makeString(dk(dl, hi, hX), "_")
1531- let hY = hR(b, ec._2, hp, cM)
1532- let hZ = hY._5
1533- let ia = fG(hZ[ap])
1534- let ib = makeString([split(hZ[ap], "_")[0], toString(R)], "_")
1535- let ic = fG(ib)
1536- let gb = split(hZ[at], "_")
1537- let id = makeString([gb[au], gb[av], toString(((parseIntValue(gb[aw]) + ic) - ia)), toString(ic)], "_")
1538- $Tuple3(([IntegerEntry(hU, R), IntegerEntry(cE(ec._2, b), R), StringEntry(fE, makeString([gm[ay], hY._3[az], hj, gm[aB]], ":")), StringEntry(hY._4, makeString([ib, hZ[aq], hZ[ar], hZ[as], id], ":"))] ++ hY._1), R, hX)
1557+ let fT = aZ(er._1)
1558+ let gB = fS(fT)
1559+ let hx = split(gB[aC], "_")
1560+ let im = fraction(bB, (hE * T), bG)
1561+ let hy = makeString(dz(dA, hx, im), "_")
1562+ let in = ig(b, er._2, hE, db)
1563+ let io = in._5
1564+ let ip = fV(io[ar])
1565+ let iq = makeString([split(io[ar], "_")[0], toString(T)], "_")
1566+ let ir = fV(iq)
1567+ let gq = split(io[av], "_")
1568+ let is = makeString([gq[aw], gq[ax], toString(((parseIntValue(gq[ay]) + ir) - ip)), toString(ir)], "_")
1569+ $Tuple3(([IntegerEntry(ij, T), IntegerEntry(cT(er._2, b), T), StringEntry(fT, makeString([gB[aA], in._3[aB], hy, gB[aD]], ":")), StringEntry(in._4, makeString([iq, io[as], io[at], io[au], is], ":"))] ++ in._1), T, im)
15391570 }
15401571 }
15411572 }
15421573
15431574
1544-func ie (r,if) = if (!(bh))
1575+func it (r,iu) = if (!(bw))
15451576 then $Tuple2(nil, 0)
15461577 else {
1547- let ig = u(r)
1548- let ih = t(r)
1549- let L = valueOrElse(getInteger(T, ih), 0)
1550- let Q = (L + if)
1551- let ii = O(valueOrElse(getInteger(T, ig), 0), Q)
1552- let ij = v(r)
1553- $Tuple2([IntegerEntry(ig, ii[0]), IntegerEntry(ih, Q), IntegerEntry(ij, (valueOrElse(getInteger(ij), 0) + ii[1]))], Q)
1554- }
1555-
1556-
1557-func ik (b,if) = if (!(bh))
1578+ let iv = u(r)
1579+ let iw = t(r)
1580+ let N = valueOrElse(getInteger(V, iw), 0)
1581+ let S = (N + iu)
1582+ let ix = Q(valueOrElse(getInteger(V, iv), 0), S)
1583+ let iy = v(r)
1584+ $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S)
1585+ }
1586+
1587+
1588+func iz (b,iu) = if (!(bw))
15581589 then $Tuple2(nil, 0)
15591590 else {
1560- let ig = y(b)
1561- let ih = x(b)
1562- let L = valueOrElse(getInteger(T, ih), 0)
1563- let Q = (L + if)
1564- let ii = O(valueOrElse(getInteger(T, ig), 0), Q)
1565- let ij = z(b)
1566- $Tuple2([IntegerEntry(ig, ii[0]), IntegerEntry(ih, Q), IntegerEntry(ij, (valueOrElse(getInteger(ij), 0) + ii[1]))], Q)
1567- }
1568-
1569-
1570-func il (b) = {
1571- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1572- let im = aR(b)
1573- let in = getString(im)
1574- if (!(isDefined(in)))
1591+ let iv = y(b)
1592+ let iw = x(b)
1593+ let N = valueOrElse(getInteger(V, iw), 0)
1594+ let S = (N + iu)
1595+ let ix = Q(valueOrElse(getInteger(V, iv), 0), S)
1596+ let iy = z(b)
1597+ $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S)
1598+ }
1599+
1600+
1601+func iA (b) = {
1602+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1603+ let iB = aT(b)
1604+ let iC = getString(iB)
1605+ if (!(isDefined(iC)))
15751606 then throw("You are not eligible for ONBOARD artifact")
15761607 else {
1577- let io = aT(b)
1578- let ip = getString(io)
1579- if (isDefined(ip))
1580- then throw(("You already used your ONBOARD artifact on duck " + value(ip)))
1608+ let iD = aV(b)
1609+ let iE = getString(iD)
1610+ if (isDefined(iE))
1611+ then throw(("You already used your ONBOARD artifact on duck " + value(iE)))
15811612 else {
1582- let iq = aS(r)
1583- let ir = getString(iq)
1584- if (isDefined(ir))
1585- then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(ir)))
1586- else ([StringEntry(io, r), StringEntry(iq, b)] ++ ie(r, I)._1)
1613+ let iF = aU(r)
1614+ let iG = getString(iF)
1615+ if (isDefined(iG))
1616+ then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(iG)))
1617+ else ([StringEntry(iD, r), StringEntry(iF, b)] ++ it(r, K)._1)
15871618 }
15881619 }
15891620 }
15901621
15911622
1592-func is (b,hv) = {
1593- let ec = ht(b, cM, hv)
1594- let aO = ec._2
1595- let hp = cf(ec._3[bS])
1596- let it = aI(Z, aO)
1597- if ((valueOrElse(getInteger(it), 0) > 0))
1623+func iH (b,hK) = {
1624+ let er = hI(b, db, hK)
1625+ let aQ = er._2
1626+ let hE = cu(er._3[ch])
1627+ let iI = aK(ab, aQ)
1628+ if ((valueOrElse(getInteger(iI), 0) > 0))
15981629 then throw("Presale artifact is already activated")
1599- else if ((parseIntValue(ec._3[bR]) > cy))
1600- then throw((((X + " ") + aO) + " is not eligible for presale artifact"))
1630+ else if ((parseIntValue(er._3[cg]) > cN))
1631+ then throw((((Z + " ") + aQ) + " is not eligible for presale artifact"))
16011632 else {
1602- let hY = hR(b, aO, hp, cM)
1603- ((((hY._1 :+ IntegerEntry(it, hp)) :+ IntegerEntry(cF(Z, aO, b), hp)) :+ StringEntry(hY._2, makeString(hY._3, ":"))) :+ StringEntry(hY._4, makeString(hY._5, ":")))
1633+ let in = ig(b, aQ, hE, db)
1634+ ((((in._1 :+ IntegerEntry(iI, hE)) :+ IntegerEntry(cU(ab, aQ, b), hE)) :+ StringEntry(in._2, makeString(in._3, ":"))) :+ StringEntry(in._4, makeString(in._5, ":")))
16041635 }
16051636 }
16061637
16071638
1608-func iu (iv,R,iw,b,ix,iy) = {
1609- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1610- func iz (cY,aO) = {
1611- let hA = value(assetInfo(fromBase58String(aO)))
1612- let hB = aG(aO)
1613- let hC = valueOrErrorMessage(getInteger(hB), (("NFT " + hA.name) + " is not staked"))
1614- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
1615- if ((hD != b))
1616- then throw((X + " is not yours"))
1639+func iJ (iK,T,iL,b,iM,iN) = {
1640+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
1641+ func iO (dn,aQ) = {
1642+ let hP = value(assetInfo(fromBase58String(aQ)))
1643+ let hQ = aI(aQ)
1644+ let hR = valueOrErrorMessage(getInteger(hQ), (("NFT " + hP.name) + " is not staked"))
1645+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
1646+ if ((hS != b))
1647+ then throw((Z + " is not yours"))
16171648 else {
1618- let hE = split(hA.description, "_")
1619- let gM = hE[bU]
1620- if (if ((cY._3 != ""))
1621- then (cY._3 != gM)
1649+ let hT = split(hP.description, "_")
1650+ let hb = hT[cj]
1651+ if (if ((dn._3 != ""))
1652+ then (dn._3 != hb)
16221653 else false)
16231654 then throw("Lands should be on the same continent to merge")
16241655 else {
1625- let cg = hE[bS]
1626- let iA = cY._1
1627- let eA = valueOrErrorMessage(indexOf(iA, cg), "You haven't passed all the lands needed")
1628- let iB = (take(iA, eA) + drop(iA, (eA + 1)))
1629- let hp = cf(cg)
1630- let iC = (cY._2 + valueOrElse(getInteger(aI(Z, aO)), 0))
1631- let fV = valueOrElse(getInteger(aH(aO)), 0)
1632- let iD = {
1633- let bk = cg
1634- if (("S" == bk))
1656+ let cv = hT[ch]
1657+ let iP = dn._1
1658+ let eP = valueOrErrorMessage(indexOf(iP, cv), "You haven't passed all the lands needed")
1659+ let iQ = (take(iP, eP) + drop(iP, (eP + 1)))
1660+ let hE = cu(cv)
1661+ let iR = (dn._2 + valueOrElse(getInteger(aK(ab, aQ)), 0))
1662+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1663+ let iS = {
1664+ let bz = cv
1665+ if (("S" == bz))
16351666 then 3
1636- else if (("M" == bk))
1667+ else if (("M" == bz))
16371668 then 4
1638- else if (("L" == bk))
1669+ else if (("L" == bz))
16391670 then 5
1640- else if (("XL" == bk))
1671+ else if (("XL" == bz))
16411672 then 6
16421673 else throw("Only S, M, L, XL can merge")
16431674 }
1644- if ((fV != iD))
1675+ if ((gk != iS))
16451676 then throw("All lands should be maxed to merge")
16461677 else {
1647- let cB = hE[bR]
1648- let ew = eC(hE[bT])
1649- let eG = (lastBlock.timestamp - hC)
1650- if ((0 > eG))
1651- then throw(((("Saved timestamp is in future, saved = " + toString(hC)) + ", current = ") + toString(lastBlock.timestamp)))
1678+ let cQ = hT[cg]
1679+ let eL = eR(hT[ci])
1680+ let eV = (lastBlock.timestamp - hR)
1681+ if ((0 > eV))
1682+ then throw(((("Saved timestamp is in future, saved = " + toString(hR)) + ", current = ") + toString(lastBlock.timestamp)))
16521683 else {
1653- let hG = ho(aO, hp)
1654- let fU = (hp / br)
1655- let hO = eE(split(cY._4, "_"), ew, eG, fU, hG)
1656- let di = eu(cY._6, ew, fU, -1)
1657- let fl = eu(cY._9, ew, fU, 1)
1658- let iE = cY._7
1659- let bL = indexOf(iE, aO)
1660- if (!(isDefined(bL)))
1661- then throw(("Your staked lands don't contain " + aO))
1684+ let hV = hD(aQ, hE)
1685+ let gj = (hE / bG)
1686+ let id = eT(split(dn._4, "_"), eL, eV, gj, hV)
1687+ let dx = eJ(dn._6, eL, gj, -1)
1688+ let fA = eJ(dn._9, eL, gj, 1)
1689+ let iT = dn._7
1690+ let ca = indexOf(iT, aQ)
1691+ if (!(isDefined(ca)))
1692+ then throw(("Your staked lands don't contain " + aQ))
16621693 else {
1663- let iF = aF(aO)
1664- let iG = valueOrElse(getString(iF), "")
1665- $Tuple9(iB, iC, gM, hO, (((((((((((((cY._5 :+ DeleteEntry(aG(aO))) :+ DeleteEntry(aK(X, aO, b))) :+ DeleteEntry(cA(cB))) :+ DeleteEntry(aD(aO))) :+ DeleteEntry(aH(aO))) :+ DeleteEntry(cE(aO, b))) :+ DeleteEntry(aI(Z, aO))) :+ DeleteEntry(cF(Z, aO, b))) :+ DeleteEntry(cG(cB))) :+ DeleteEntry(aN(aO))) :+ DeleteEntry(iF)) :+ DeleteEntry(cC(iG))) :+ Burn(fromBase58String(aO), 1)), di, removeByIndex(iE, value(bL)), (cY._8 + hp), fl)
1694+ let iU = aH(aQ)
1695+ let iV = valueOrElse(getString(iU), "")
1696+ $Tuple9(iQ, iR, hb, id, (((((((((((((dn._5 :+ DeleteEntry(aI(aQ))) :+ DeleteEntry(aM(Z, aQ, b))) :+ DeleteEntry(cP(cQ))) :+ DeleteEntry(aF(aQ))) :+ DeleteEntry(aJ(aQ))) :+ DeleteEntry(cT(aQ, b))) :+ DeleteEntry(aK(ab, aQ))) :+ DeleteEntry(cU(ab, aQ, b))) :+ DeleteEntry(cV(cQ))) :+ DeleteEntry(aP(aQ))) :+ DeleteEntry(iU)) :+ DeleteEntry(cR(iV))) :+ Burn(fromBase58String(aQ), 1)), dx, removeByIndex(iT, value(ca)), (dn._8 + hE), fA)
16661697 }
16671698 }
16681699 }
16691700 }
16701701 }
16711702 }
16721703
1673- let fE = aX(r)
1674- let gm = fD(fE)
1675- let ev = split(valueOrElse(getString(bX()), "0_0_0_0_0_0"), "_")
1676- let iH = bY(b)
1677- let iI = getString(iH)
1678- let iJ = if (isDefined(iI))
1679- then split_51C(value(iI), "_")
1704+ let fT = aZ(r)
1705+ let gB = fS(fT)
1706+ let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_")
1707+ let iW = cn(b)
1708+ let iX = getString(iW)
1709+ let iY = if (isDefined(iX))
1710+ then split_51C(value(iX), "_")
16801711 else nil
1681- let dj = {
1682- let da = ix
1683- let db = size(da)
1684- let dc = $Tuple9(iw, 0, "", gm[az], nil, ev, iJ, 0, split("0_0_0_0_0_0", "_"))
1685- func dd (de,df) = if ((df >= db))
1686- then de
1687- else iz(de, da[df])
1688-
1689- func dg (de,df) = if ((df >= db))
1690- then de
1712+ let dy = {
1713+ let dp = iM
1714+ let dq = size(dp)
1715+ let dr = $Tuple9(iL, 0, "", gB[aB], nil, eK, iY, 0, split("0_0_0_0_0_0", "_"))
1716+ func ds (dt,du) = if ((du >= dq))
1717+ then dt
1718+ else iO(dt, dp[du])
1719+
1720+ func dv (dt,du) = if ((du >= dq))
1721+ then dt
16911722 else throw("List size exceeds 5")
16921723
1693- dg(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5)
1694- }
1695- let gM = dj._3
1696- let fe = valueOrErrorMessage(indexOf(ai, gM), ("Unknown continent: " + gM))
1697- let eD = fk(dj._9, (cf(iv) / br))
1698- let gL = valueOrElse(getInteger(cz()), (cy + 1))
1699- let iK = toString(gL)
1700- let gN = Issue(cR(iK, iv), makeString([iK, iv, eD, gM], "_"), 1, 0, false)
1701- let aE = calculateAssetId(gN)
1702- let iL = toBase58String(aE)
1703- let hj = makeString(dk((iy > 0), split(gm[aA], "_"), iy), "_")
1704- let iM = bZ(b)
1705- let iN = valueOrElse(getInteger(iM), 0)
1706- $Tuple2((((((((((((((((dj._5 :+ (if ((size(dj._7) > 0))
1707- then StringEntry(iH, makeString_11C(dj._7, "_"))
1708- else DeleteEntry(iH))) :+ IntegerEntry(iM, if ((dj._8 > iN))
1724+ dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5)
1725+ }
1726+ let hb = dy._3
1727+ let ft = valueOrErrorMessage(indexOf(ak, hb), ("Unknown continent: " + hb))
1728+ let eS = fz(dy._9, (cu(iK) / bG))
1729+ let ha = valueOrElse(getInteger(cO()), (cN + 1))
1730+ let iZ = toString(ha)
1731+ let hc = Issue(dg(iZ, iK), makeString([iZ, iK, eS, hb], "_"), 1, 0, false)
1732+ let aG = calculateAssetId(hc)
1733+ let ja = toBase58String(aG)
1734+ let hy = makeString(dz((iN > 0), split(gB[aC], "_"), iN), "_")
1735+ let jb = co(b)
1736+ let jc = valueOrElse(getInteger(jb), 0)
1737+ $Tuple2((((((((((((((((dy._5 :+ (if ((size(dy._7) > 0))
1738+ then StringEntry(iW, makeString_11C(dy._7, "_"))
1739+ else DeleteEntry(iW))) :+ IntegerEntry(jb, if ((dy._8 > jc))
17091740 then 0
1710- else (iN - dj._8))) :+ IntegerEntry(cz(), (gL + 1))) :+ gN) :+ StringEntry(cA(iK), iL)) :+ StringEntry(aD(iL), b)) :+ StringEntry(cG(iK), b)) :+ IntegerEntry(aI(Z, iL), dj._2)) :+ IntegerEntry(cF(Z, iL, b), dj._2)) :+ IntegerEntry(aH(iL), R)) :+ IntegerEntry(cE(iL, b), R)) :+ StringEntry(fE, makeString([gm[ay], dj._4, hj, gm[aB]], ":"))) :+ StringEntry(bX(), makeString(dj._6, "_"))) :+ StringEntry(aY(r), makeString([gM, "L", iL], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aE)), iL)
1711- }
1712-
1713-
1714-func iO (b,ix) = iu("M", 3, "SSSS", b, ix, 0)
1715-
1716-
1717-func iP (b,ix) = iu("L", 4, "SMM", b, ix, (bm * 4))
1718-
1719-
1720-func iQ (b,ix) = iu("XL", 5, "SSSML", b, ix, (bm * 47))
1721-
1722-
1723-func iR (b,ix) = iu("XXL", 6, "LXL", b, ix, (bm * 54))
1724-
1725-
1726-func iS (b,ix) = {
1727- let bk = size(ix)
1728- if ((4 == bk))
1729- then iO(b, ix)
1730- else if ((3 == bk))
1731- then iP(b, ix)
1732- else if ((5 == bk))
1733- then iQ(b, ix)
1734- else if ((2 == bk))
1735- then iR(b, ix)
1741+ else (jc - dy._8))) :+ IntegerEntry(cO(), (ha + 1))) :+ hc) :+ StringEntry(cP(iZ), ja)) :+ StringEntry(aF(ja), b)) :+ StringEntry(cV(iZ), b)) :+ IntegerEntry(aK(ab, ja), dy._2)) :+ IntegerEntry(cU(ab, ja, b), dy._2)) :+ IntegerEntry(aJ(ja), T)) :+ IntegerEntry(cT(ja, b), T)) :+ StringEntry(fT, makeString([gB[aA], dy._4, hy, gB[aD]], ":"))) :+ StringEntry(cm(), makeString(dy._6, "_"))) :+ StringEntry(ba(r), makeString([hb, "L", ja], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aG)), ja)
1742+ }
1743+
1744+
1745+func jd (b,iM) = iJ("M", 3, "SSSS", b, iM, 0)
1746+
1747+
1748+func je (b,iM) = iJ("L", 4, "SMM", b, iM, (bB * 4))
1749+
1750+
1751+func jf (b,iM) = iJ("XL", 5, "SSSML", b, iM, (bB * 47))
1752+
1753+
1754+func jg (b,iM) = iJ("XXL", 6, "LXL", b, iM, (bB * 54))
1755+
1756+
1757+func jh (b,iM) = {
1758+ let bz = size(iM)
1759+ if ((4 == bz))
1760+ then jd(b, iM)
1761+ else if ((3 == bz))
1762+ then je(b, iM)
1763+ else if ((5 == bz))
1764+ then jf(b, iM)
1765+ else if ((2 == bz))
1766+ then jg(b, iM)
17361767 else throw("Unknown merge")
17371768 }
17381769
17391770
1740-func iT (eA) = if (if ((eA.originCaller != bM))
1741- then valueOrElse(getBoolean(aZ()), false)
1771+func ji (r) = {
1772+ let jj = valueOrElse(getInteger(cf, bf), 0)
1773+ let hM = split(valueOrElse(getString(ba(r)), ag), "_")
1774+ let jk = lastBlock.timestamp
1775+ let jl = bl(cf, jj)
1776+ let bn = jl[bj]
1777+ let bo = jl[bk]
1778+ if ((hM[bs] != "T"))
1779+ then false
1780+ else {
1781+ let dF = if (if (if ((parseIntValue(hM[br]) == jj))
1782+ then (bo[bq] == "INPROGRESS")
1783+ else false)
1784+ then (parseIntValue(bn[bp]) > jk)
1785+ else false)
1786+ then throw("Your duck is taking part in the tournament")
1787+ else invoke(this, "exitTournamentInternal", [r], nil)
1788+ if ((dF == dF))
1789+ then false
1790+ else throw("Strict value is not equal to itself.")
1791+ }
1792+ }
1793+
1794+
1795+func jm (eP) = if (if ((eP.originCaller != cb))
1796+ then valueOrElse(getBoolean(bb()), false)
17421797 else false)
17431798 then throw("Contracts are under maintenance")
1744- else StringEntry(aC(toString(eA.originCaller)), toBase58String(eA.transactionId))
1745-
1746-
1747-@Callable(eA)
1748-func constructorV1 (iU) = if ((eA.caller != this))
1799+ else StringEntry(aE(toString(eP.originCaller)), toBase58String(eP.transactionId))
1800+
1801+
1802+@Callable(eP)
1803+func constructorV1 (jn) = if ((eP.caller != this))
17491804 then throw("Permission denied")
1750- else [StringEntry(bG(), iU)]
1751-
1752-
1753-
1754-@Callable(eA)
1755-func setBlocked (iV) = if ((eA.caller != this))
1805+ else [StringEntry(bV(), jn)]
1806+
1807+
1808+
1809+@Callable(eP)
1810+func setBlocked (jo) = if ((eP.caller != this))
17561811 then throw("permission denied")
1757- else [BooleanEntry(aZ(), iV)]
1758-
1759-
1760-
1761-@Callable(eA)
1812+ else [BooleanEntry(bb(), jo)]
1813+
1814+
1815+
1816+@Callable(eP)
17621817 func stakeLand () = {
1763- let iW = iT(eA)
1764- if ((size(eA.payments) != 1))
1818+ let jp = jm(eP)
1819+ if ((size(eP.payments) != 1))
17651820 then throw("Exactly one payment required")
17661821 else {
1767- let iX = value(eA.payments[0])
1768- let aE = value(iX.assetId)
1769- let by = toString(eA.caller)
1770- if ((iX.amount != 1))
1771- then throw((("NFT " + X) + " token should be attached as payment"))
1822+ let jq = value(eP.payments[0])
1823+ let aG = value(jq.assetId)
1824+ let bN = toString(eP.caller)
1825+ if ((jq.amount != 1))
1826+ then throw((("NFT " + Z) + " token should be attached as payment"))
17721827 else {
1773- let hA = value(assetInfo(aE))
1774- if ((hA.issuer != this))
1828+ let hP = value(assetInfo(aG))
1829+ if ((hP.issuer != this))
17751830 then throw("Unknown issuer of token")
1776- else if (!(contains(hA.name, X)))
1777- then throw((("Only NFT " + X) + " tokens are accepted"))
1831+ else if (!(contains(hP.name, Z)))
1832+ then throw((("Only NFT " + Z) + " tokens are accepted"))
17781833 else {
1779- let iY = drop(hA.name, 4)
1780- let cB = if (contains(iY, "XXL"))
1781- then dropRight(iY, 3)
1782- else if (contains(iY, "XL"))
1783- then dropRight(iY, 2)
1784- else dropRight(iY, 1)
1785- if (!(isDefined(parseInt(cB))))
1786- then throw(("Cannot parse land number from " + hA.name))
1834+ let jr = drop(hP.name, 4)
1835+ let cQ = if (contains(jr, "XXL"))
1836+ then dropRight(jr, 3)
1837+ else if (contains(jr, "XL"))
1838+ then dropRight(jr, 2)
1839+ else dropRight(jr, 1)
1840+ if (!(isDefined(parseInt(cQ))))
1841+ then throw(("Cannot parse land number from " + hP.name))
17871842 else {
1788- let aO = toBase58String(aE)
1789- let hB = aG(aO)
1790- if (isDefined(getInteger(hB)))
1791- then throw((("NFT " + hA.name) + " is already staked"))
1843+ let aQ = toBase58String(aG)
1844+ let hQ = aI(aQ)
1845+ if (isDefined(getInteger(hQ)))
1846+ then throw((("NFT " + hP.name) + " is already staked"))
17921847 else {
1793- let hE = split(hA.description, "_")
1794- let ew = eC(hE[bT])
1795- let hp = cf(hE[bS])
1796- let di = eB(ew, (hp / br), 1)
1797- let hq = valueOrElse(getInteger(aI(Z, aO)), 0)
1798- let iH = bY(by)
1799- let iI = getString(iH)
1800- let iE = if (isDefined(iI))
1801- then split_51C(value(iI), "_")
1848+ let hT = split(hP.description, "_")
1849+ let eL = eR(hT[ci])
1850+ let hE = cu(hT[ch])
1851+ let dx = eQ(eL, (hE / bG), 1)
1852+ let hF = valueOrElse(getInteger(aK(ab, aQ)), 0)
1853+ let iW = cn(bN)
1854+ let iX = getString(iW)
1855+ let iT = if (isDefined(iX))
1856+ then split_51C(value(iX), "_")
18021857 else nil
1803- if (containsElement(iE, aO))
1804- then throw(("Your staked lands already contain " + aO))
1858+ if (containsElement(iT, aQ))
1859+ then throw(("Your staked lands already contain " + aQ))
18051860 else {
1806- let fV = valueOrElse(getInteger(aH(aO)), 0)
1807- let iM = bZ(by)
1808- let iZ = valueOrElse(getInteger(iM), 0)
1809- let ja = cd(invoke(bP, "onStakeUnstakeLand", [by], nil))
1810- $Tuple2([IntegerEntry(hB, lastBlock.timestamp), IntegerEntry(aK(X, aO, by), lastBlock.timestamp), StringEntry(iH, makeString_11C((iE :+ aO), "_")), IntegerEntry(iM, (iZ + hp)), StringEntry(aD(aO), by), StringEntry(cG(cB), by), IntegerEntry(cF(Z, aO, by), hq), IntegerEntry(cE(aO, by), fV), StringEntry(bX(), di), iW], ja)
1861+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
1862+ let jb = co(bN)
1863+ let js = valueOrElse(getInteger(jb), 0)
1864+ let jt = cs(invoke(ce, "onStakeUnstakeLand", [bN], nil))
1865+ $Tuple2([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(Z, aQ, bN), lastBlock.timestamp), StringEntry(iW, makeString_11C((iT :+ aQ), "_")), IntegerEntry(jb, (js + hE)), StringEntry(aF(aQ), bN), StringEntry(cV(cQ), bN), IntegerEntry(cU(ab, aQ, bN), hF), IntegerEntry(cT(aQ, bN), gk), StringEntry(cm(), dx), jp], jt)
18111866 }
18121867 }
18131868 }
18141869 }
18151870 }
18161871 }
18171872 }
18181873
18191874
18201875
1821-@Callable(eA)
1822-func unstakeLand (hv) = {
1823- let iW = iT(eA)
1824- if ((size(eA.payments) != 0))
1876+@Callable(eP)
1877+func unstakeLand (hK) = {
1878+ let jp = jm(eP)
1879+ if ((size(eP.payments) != 0))
18251880 then throw("No payments required")
18261881 else {
1827- let b = toString(eA.caller)
1828- let ec = ht(b, cL, hv)
1829- let aO = ec._2
1830- let iH = bY(b)
1831- let ew = eC(ec._3[bT])
1832- let hp = cf(ec._3[bS])
1833- let di = eB(ew, (hp / br), -1)
1834- let hY = hR(b, aO, hp, cL)
1835- let iE = split_51C(valueOrElse(getString(iH), ""), "_")
1836- let bL = indexOf(iE, aO)
1837- if (!(isDefined(bL)))
1838- then throw(("Your staked lands don't contain " + aO))
1882+ let b = toString(eP.caller)
1883+ let er = hI(b, da, hK)
1884+ let aQ = er._2
1885+ let iW = cn(b)
1886+ let eL = eR(er._3[ci])
1887+ let hE = cu(er._3[ch])
1888+ let dx = eQ(eL, (hE / bG), -1)
1889+ let in = ig(b, aQ, hE, da)
1890+ let iT = split_51C(valueOrElse(getString(iW), ""), "_")
1891+ let ca = indexOf(iT, aQ)
1892+ if (!(isDefined(ca)))
1893+ then throw(("Your staked lands don't contain " + aQ))
18391894 else {
1840- let jb = lastBlock.timestamp
1841- let jc = valueOrElse(getInteger(bO, ba(b)), 0)
1842- if ((jc >= jb))
1843- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(jc)))
1895+ let jk = lastBlock.timestamp
1896+ let ju = valueOrElse(getInteger(cd, bc(b)), 0)
1897+ if ((ju >= jk))
1898+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ju)))
18441899 else {
1845- let jd = (valueOrElse(getInteger(bP, a(b)), 0) + bn)
1846- if ((jd > jb))
1847- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jd)))
1900+ let jv = (valueOrElse(getInteger(ce, a(b)), 0) + bC)
1901+ if ((jv > jk))
1902+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jv)))
18481903 else {
1849- let iM = bZ(b)
1850- let iN = valueOrElse(getInteger(iM), 0)
1851- let je = if ((hp > iN))
1904+ let jb = co(b)
1905+ let jc = valueOrElse(getInteger(jb), 0)
1906+ let jw = if ((hE > jc))
18521907 then 0
1853- else (iN - hp)
1854- let ja = cd(invoke(bP, "onStakeUnstakeLand", [b], nil))
1855- $Tuple2([ScriptTransfer(eA.caller, 1, fromBase58String(aO)), DeleteEntry(aG(aO)), DeleteEntry(aK(X, aO, b)), StringEntry(bX(), di), StringEntry(hY._2, makeString(hY._3, ":")), if ((size(iE) > 1))
1856- then StringEntry(iH, makeString_11C(removeByIndex(iE, value(bL)), "_"))
1857- else DeleteEntry(iH), IntegerEntry(iM, je), iW], ja)
1908+ else (jc - hE)
1909+ let jt = cs(invoke(ce, "onStakeUnstakeLand", [b], nil))
1910+ $Tuple2([ScriptTransfer(eP.caller, 1, fromBase58String(aQ)), DeleteEntry(aI(aQ)), DeleteEntry(aM(Z, aQ, b)), StringEntry(cm(), dx), StringEntry(in._2, makeString(in._3, ":")), if ((size(iT) > 1))
1911+ then StringEntry(iW, makeString_11C(removeByIndex(iT, value(ca)), "_"))
1912+ else DeleteEntry(iW), IntegerEntry(jb, jw), jp], jt)
18581913 }
18591914 }
18601915 }
18611916 }
18621917 }
18631918
18641919
18651920
1866-@Callable(eA)
1921+@Callable(eP)
18671922 func stakeDuck () = {
1868- let iW = iT(eA)
1869- if ((size(eA.payments) != 1))
1923+ let jp = jm(eP)
1924+ if ((size(eP.payments) != 1))
18701925 then throw("Exactly one payment required")
18711926 else {
1872- let iX = value(eA.payments[0])
1873- let aE = value(iX.assetId)
1874- let by = toString(eA.caller)
1875- if ((iX.amount != 1))
1876- then throw((("NFT " + Y) + " token should be attached as payment"))
1927+ let jq = value(eP.payments[0])
1928+ let aG = value(jq.assetId)
1929+ let bN = toString(eP.caller)
1930+ if ((jq.amount != 1))
1931+ then throw((("NFT " + aa) + " token should be attached as payment"))
18771932 else {
1878- let hA = value(assetInfo(aE))
1879- if (if ((hA.issuer != ci))
1880- then (hA.issuer != cj)
1933+ let hP = value(assetInfo(aG))
1934+ if (if ((hP.issuer != cx))
1935+ then (hP.issuer != cy)
18811936 else false)
1882- then throw((("Unknown issuer of " + Y) + " token"))
1883- else if (!(contains(hA.name, Y)))
1884- then throw((("Only NFT " + Y) + " tokens are accepted"))
1937+ then throw((("Unknown issuer of " + aa) + " token"))
1938+ else if (!(contains(hP.name, aa)))
1939+ then throw((("Only NFT " + aa) + " tokens are accepted"))
18851940 else {
1886- let jf = toBase58String(aE)
1887- let hB = aG(jf)
1888- if (isDefined(getInteger(hB)))
1889- then throw((("NFT " + hA.name) + " is already staked"))
1890- else if (isDefined(getString(aW(by))))
1891- then throw(("You already staked one duck: " + hA.name))
1941+ let jx = toBase58String(aG)
1942+ let hQ = aI(jx)
1943+ if (isDefined(getInteger(hQ)))
1944+ then throw((("NFT " + hP.name) + " is already staked"))
1945+ else if (isDefined(getString(aY(bN))))
1946+ then throw(("You already staked one duck: " + hP.name))
18921947 else {
1893- let jg = aY(jf)
1894- let jh = getString(jg)
1895- let fE = aX(jf)
1896- let ji = getString(fE)
1897- let hb = q(jf)
1898- let hc = M(valueOrElse(getInteger(u(jf)), 0))
1899- let jj = valueOrElse(getInteger(hb), hc)
1900- ([IntegerEntry(hB, lastBlock.timestamp), IntegerEntry(aK(Y, toBase58String(aE), by), lastBlock.timestamp), StringEntry(aV(jf), by), StringEntry(aW(by), jf)] ++ (if (isDefined(jh))
1948+ let jy = ba(jx)
1949+ let jz = getString(jy)
1950+ let fT = aZ(jx)
1951+ let jA = getString(fT)
1952+ let hq = q(jx)
1953+ let hr = O(valueOrElse(getInteger(u(jx)), 0))
1954+ let jB = valueOrElse(getInteger(hq), hr)
1955+ ([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(aa, toBase58String(aG), bN), lastBlock.timestamp), StringEntry(aX(jx), bN), StringEntry(aY(bN), jx)] ++ (if (isDefined(jz))
19011956 then nil
1902- else ([StringEntry(jg, ae)] ++ (if (isDefined(ji))
1957+ else ([StringEntry(jy, ag)] ++ (if (isDefined(jA))
19031958 then nil
1904- else (([StringEntry(fE, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hb, jj)) :+ iW)))))
1959+ else (([StringEntry(fT, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hq, jB)) :+ jp)))))
19051960 }
19061961 }
19071962 }
19081963 }
19091964 }
19101965
19111966
19121967
1913-@Callable(eA)
1914-func unstakeDuck (jf) = {
1915- let iW = iT(eA)
1916- if ((size(eA.payments) != 0))
1968+@Callable(eP)
1969+func unstakeDuck (jx) = {
1970+ let jp = jm(eP)
1971+ if ((size(eP.payments) != 0))
19171972 then throw("No payments required")
19181973 else {
1919- let aE = fromBase58String(jf)
1920- let by = toString(eA.caller)
1921- let hA = value(assetInfo(aE))
1922- let hB = aG(toBase58String(aE))
1923- if (!(isDefined(getInteger(hB))))
1924- then throw((("NFT " + hA.name) + " is not staked"))
1925- else if (!(isDefined(getString(aW(by)))))
1926- then throw((("The duck " + hA.name) + " is not staked"))
1974+ let aG = fromBase58String(jx)
1975+ let bN = toString(eP.caller)
1976+ let hP = value(assetInfo(aG))
1977+ let hQ = aI(toBase58String(aG))
1978+ if (!(isDefined(getInteger(hQ))))
1979+ then throw((("NFT " + hP.name) + " is not staked"))
1980+ else if (!(isDefined(getString(aY(bN)))))
1981+ then throw((("The duck " + hP.name) + " is not staked"))
19271982 else {
1928- let hD = valueOrErrorMessage(getString(aV(toBase58String(aE))), (("NFT " + hA.name) + " is orphaned"))
1929- if ((hD != by))
1983+ let hS = valueOrErrorMessage(getString(aX(toBase58String(aG))), (("NFT " + hP.name) + " is orphaned"))
1984+ if ((hS != bN))
19301985 then throw("Staked NFT is not yours")
19311986 else {
1932- let hb = q(jf)
1933- let hc = M(valueOrElse(getInteger(u(jf)), 0))
1934- let W = valueOrElse(getInteger(hb), hc)
1935- if ((hc > W))
1936- then throw((("Please heal your duck to " + toString(hc)) + "hp before unstaking"))
1937- else [ScriptTransfer(eA.caller, 1, aE), DeleteEntry(hB), DeleteEntry(hb), DeleteEntry(aY(jf)), DeleteEntry(aV(jf)), DeleteEntry(aK(Y, jf, by)), DeleteEntry(aW(by)), iW]
1987+ let hq = q(jx)
1988+ let hr = O(valueOrElse(getInteger(u(jx)), 0))
1989+ let Y = valueOrElse(getInteger(hq), hr)
1990+ if ((hr > Y))
1991+ then throw((("Please heal your duck to " + toString(hr)) + "hp before unstaking"))
1992+ else [ScriptTransfer(eP.caller, 1, aG), DeleteEntry(hQ), DeleteEntry(hq), DeleteEntry(ba(jx)), DeleteEntry(aX(jx)), DeleteEntry(aM(aa, jx, bN)), DeleteEntry(aY(bN)), jp]
19381993 }
19391994 }
19401995 }
19411996 }
19421997
19431998
19441999
1945-@Callable(eA)
1946-func claimRes (gi,jk) = {
1947- let iW = iT(eA)
1948- if ((size(eA.payments) != 0))
2000+@Callable(eP)
2001+func claimRes (gx,jC) = {
2002+ let jp = jm(eP)
2003+ if ((size(eP.payments) != 0))
19492004 then throw("No payments required")
19502005 else {
1951- let b = toString(eA.originCaller)
1952- let dq = hF(b, gi, cL, jk)
1953- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
1954- $Tuple2(((((dq._1 ++ ie(r, fraction(A, gi, bq))._1) :+ StringEntry(dq._2, makeString(dq._3, ":"))) :+ StringEntry(dq._4, makeString(dq._5, ":"))) :+ iW), dq._3[az])
1955- }
1956- }
1957-
1958-
1959-
1960-@Callable(eA)
1961-func claimResToWH (gi,jk) = {
1962- let iW = iT(eA)
1963- if ((size(eA.payments) != 0))
2006+ let b = toString(eP.originCaller)
2007+ let dF = hU(b, gx, da, jC)
2008+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2009+ $Tuple2(((((dF._1 ++ it(r, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._3[aB])
2010+ }
2011+ }
2012+
2013+
2014+
2015+@Callable(eP)
2016+func claimResToWH (gx,jC) = {
2017+ let jp = jm(eP)
2018+ if ((size(eP.payments) != 0))
19642019 then throw("No payments required")
19652020 else {
1966- let b = toString(eA.originCaller)
1967- let dq = hF(b, gi, cK, jk)
1968- $Tuple2(((((dq._1 ++ ik(b, fraction(A, gi, bq))._1) :+ StringEntry(dq._2, makeString(dq._3, ":"))) :+ StringEntry(dq._4, makeString(dq._5, ":"))) :+ iW), dq._5[aq])
1969- }
1970- }
1971-
1972-
1973-
1974-@Callable(eA)
1975-func flight (gQ,gR) = {
1976- let iW = iT(eA)
1977- if ((size(eA.payments) != 0))
2021+ let b = toString(eP.originCaller)
2022+ let dF = hU(b, gx, cZ, jC)
2023+ $Tuple2(((((dF._1 ++ iz(b, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._5[as])
2024+ }
2025+ }
2026+
2027+
2028+
2029+@Callable(eP)
2030+func flight (hf,hg) = {
2031+ let jp = jm(eP)
2032+ if ((size(eP.payments) != 0))
19782033 then throw("No payments required")
19792034 else {
1980- let bb = toString(eA.caller)
1981- let ff = gP(bb, gQ, gR)
1982- let r = ff._2
1983- let jg = aY(r)
1984- let hx = valueOrElse(getString(jg), ae)
1985- if ((ff._4 == hx))
2035+ let bd = toString(eP.caller)
2036+ let fu = he(bd, hf, hg)
2037+ let r = fu._2
2038+ let jy = ba(r)
2039+ let hM = valueOrElse(getString(jy), ag)
2040+ if ((fu._4 == hM))
19862041 then throw("You can't fly to the same location")
19872042 else {
1988- let hk = w(r)
1989- let hl = valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,")
1990- let hm = dr(hl, ff._5)
1991- $Tuple2(([StringEntry(jg, if ((ff._1 > 0))
1992- then ff._4
1993- else hx), StringEntry(hk, hm), IntegerEntry(q(r), ff._1), iW] ++ ie(r, if ((ff._1 > 0))
1994- then B
1995- else C)._1), ff._3)
2043+ let hz = w(r)
2044+ let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,")
2045+ let hB = dG(hA, fu._5)
2046+ $Tuple2(([StringEntry(jy, if ((fu._1 > 0))
2047+ then fu._4
2048+ else hM), StringEntry(hz, hB), IntegerEntry(q(r), fu._1), jp] ++ it(r, if ((fu._1 > 0))
2049+ then D
2050+ else E)._1), fu._3)
19962051 }
19972052 }
19982053 }
19992054
20002055
20012056
2002-@Callable(eA)
2003-func heal (jl,jm,jn) = {
2004- let iW = iT(eA)
2005- if (if (if ((0 > jl))
2057+@Callable(eP)
2058+func heal (jD,jE,jF) = {
2059+ let jp = jm(eP)
2060+ if (if (if ((0 > jD))
20062061 then true
2007- else (0 > jm))
2062+ else (0 > jE))
20082063 then true
2009- else (0 > jn))
2064+ else (0 > jF))
20102065 then throw("Quantity cannot be negative")
20112066 else {
2012- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2013- let jo = [jl, jm, jn]
2014- let hb = q(r)
2015- let hc = M(valueOrElse(getInteger(u(r)), 0))
2016- let jp = valueOrElse(getInteger(hb), hc)
2017- if ((jp >= hc))
2018- then throw((("HP should be < " + toString(hc)) + " to heal"))
2067+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2068+ let jG = [jD, jE, jF]
2069+ let hq = q(r)
2070+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2071+ let jH = valueOrElse(getInteger(hq), hr)
2072+ if ((jH >= hr))
2073+ then throw((("HP should be < " + toString(hr)) + " to heal"))
20192074 else {
2020- let fE = aX(r)
2021- let gm = fD(fE)
2022- let jq = if ((gm[aB] == ""))
2075+ let fT = aZ(r)
2076+ let gB = fS(fT)
2077+ let jI = if ((gB[aD] == ""))
20232078 then nil
2024- else split(gm[aB], "_")
2025- func jr (cY,js) = {
2026- let ce = cY._2
2027- let eW = if ((size(jq) > ce))
2028- then parseIntValue(jq[ce])
2079+ else split(gB[aD], "_")
2080+ func jJ (dn,jK) = {
2081+ let ct = dn._2
2082+ let fl = if ((size(jI) > ct))
2083+ then parseIntValue(jI[ct])
20292084 else 0
2030- if ((3 > ce))
2085+ if ((3 > ct))
20312086 then {
2032- let jt = jo[ce]
2033- if ((jt > eW))
2034- then throw(((("You have only " + toString(eW)) + " of ") + ah[ce]))
2035- else $Tuple3((cY._1 :+ toString((eW - jt))), (ce + 1), (cY._3 + (cl[ce] * jt)))
2087+ let jL = jG[ct]
2088+ if ((jL > fl))
2089+ then throw(((("You have only " + toString(fl)) + " of ") + aj[ct]))
2090+ else $Tuple3((dn._1 :+ toString((fl - jL))), (ct + 1), (dn._3 + (cA[ct] * jL)))
20362091 }
2037- else $Tuple3((cY._1 :+ toString(eW)), (ce + 1), cY._3)
2092+ else $Tuple3((dn._1 :+ toString(fl)), (ct + 1), dn._3)
20382093 }
20392094
2040- let dq = {
2041- let da = ak
2042- let db = size(da)
2043- let dc = $Tuple3(nil, 0, 0)
2044- func dd (de,df) = if ((df >= db))
2045- then de
2046- else jr(de, da[df])
2047-
2048- func dg (de,df) = if ((df >= db))
2049- then de
2095+ let dF = {
2096+ let dp = am
2097+ let dq = size(dp)
2098+ let dr = $Tuple3(nil, 0, 0)
2099+ func ds (dt,du) = if ((du >= dq))
2100+ then dt
2101+ else jJ(dt, dp[du])
2102+
2103+ func dv (dt,du) = if ((du >= dq))
2104+ then dt
20502105 else throw("List size exceeds 50")
20512106
2052- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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)
2107+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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)
20532108 }
2054- let ju = min([hc, (jp + dq._3)])
2055- $Tuple2(([IntegerEntry(hb, ju), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], makeString(dq._1, "_")], ":")), iW] ++ ie(r, (J * ((jl + jm) + jn)))._1), ju)
2109+ let jM = min([hr, (jH + dF._3)])
2110+ $Tuple2(([IntegerEntry(hq, jM), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], makeString(dF._1, "_")], ":")), jp] ++ it(r, (L * ((jD + jE) + jF)))._1), jM)
20562111 }
20572112 }
20582113 }
20592114
20602115
20612116
2062-@Callable(eA)
2117+@Callable(eP)
20632118 func healES () = {
2064- let iW = iT(eA)
2065- if ((size(eA.payments) != 1))
2119+ let jp = jm(eP)
2120+ if ((size(eP.payments) != 1))
20662121 then throw("Exactly one payment required")
20672122 else {
2068- let iX = value(eA.payments[0])
2069- if ((iX.assetId != bj))
2123+ let jq = value(eP.payments[0])
2124+ if ((jq.assetId != by))
20702125 then throw("Allowed USDT payment only!")
20712126 else {
2072- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2073- let hb = q(r)
2074- let hc = M(valueOrElse(getInteger(u(r)), 0))
2075- let jp = valueOrElse(getInteger(hb), hc)
2076- if ((jp > 0))
2127+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2128+ let hq = q(r)
2129+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2130+ let jH = valueOrElse(getInteger(hq), hr)
2131+ if ((jH > 0))
20772132 then throw("HP should be 0 to call Emergency Service")
20782133 else {
2079- let fE = aX(r)
2080- let gm = fD(fE)
2081- let jq = if ((gm[aB] == ""))
2134+ let fT = aZ(r)
2135+ let gB = fS(fT)
2136+ let jI = if ((gB[aD] == ""))
20822137 then nil
2083- else split(gm[aB], "_")
2084- let jv = if ((size(jq) > 0))
2085- then parseIntValue(jq[0])
2138+ else split(gB[aD], "_")
2139+ let jN = if ((size(jI) > 0))
2140+ then parseIntValue(jI[0])
20862141 else 0
2087- let jw = if ((size(jq) > 1))
2088- then parseIntValue(jq[1])
2142+ let jO = if ((size(jI) > 1))
2143+ then parseIntValue(jI[1])
20892144 else 0
2090- let jx = if ((size(jq) > 2))
2091- then parseIntValue(jq[2])
2145+ let jP = if ((size(jI) > 2))
2146+ then parseIntValue(jI[2])
20922147 else 0
2093- if (if (if ((jv > 0))
2148+ if (if (if ((jN > 0))
20942149 then true
2095- else (jw > 0))
2150+ else (jO > 0))
20962151 then true
2097- else (jx > 0))
2152+ else (jP > 0))
20982153 then throw("You have to use own Medical Kit")
20992154 else {
2100- let jy = getString(bN, bc())
2101- let jz = if (isDefined(jy))
2102- then split(value(jy), "_")
2155+ let jQ = getString(cc, be())
2156+ let jR = if (isDefined(jQ))
2157+ then split(value(jQ), "_")
21032158 else nil
2104- let jA = if ((size(jz) > 0))
2105- then parseIntValue(jz[0])
2159+ let jS = if ((size(jR) > 0))
2160+ then parseIntValue(jR[0])
21062161 else 0
2107- if ((0 >= jA))
2162+ if ((0 >= jS))
21082163 then throw("There are no Medical Kits L1 at Emergency Service storage")
21092164 else {
2110- let ju = (jp + cl[0])
2111- let jB = makeString([toString((jA - 1)), removeByIndex(jz, 0)], "_")
2112- let bg = split(ak[0], "_")
2113- let jC = bf(bg)
2114- let jD = fraction((jC * ag), af, (bq * ao))
2115- if ((iX.amount != jD))
2116- then throw(("Payment attached should be " + toString(jD)))
2165+ let jM = (jH + cA[0])
2166+ let jT = makeString([toString((jS - 1)), removeByIndex(jR, 0)], "_")
2167+ let bv = split(am[0], "_")
2168+ let jU = bu(bv)
2169+ let jV = fraction((jU * ai), ah, (bF * aq))
2170+ if ((jq.amount != jV))
2171+ then throw(("Payment attached should be " + toString(jV)))
21172172 else {
2118- let dq = ca(invoke(bN, "updateEsStorage", [jB], [AttachedPayment(bj, jD)]))
2119- $Tuple2(([IntegerEntry(hb, ju), iW] ++ ie(r, D)._1), dq)
2173+ let dF = cp(invoke(cc, "updateEsStorage", [jT], [AttachedPayment(by, jV)]))
2174+ $Tuple2(([IntegerEntry(hq, jM), jp] ++ it(r, F)._1), dF)
21202175 }
21212176 }
21222177 }
21232178 }
21242179 }
21252180 }
21262181 }
21272182
21282183
21292184
2130-@Callable(eA)
2131-func updateBackpack (r,jE) = if ((eA.caller != bN))
2185+@Callable(eP)
2186+func updateBackpack (r,jW) = if ((eP.caller != cc))
21322187 then throw("permission denied")
2133- else $Tuple2([StringEntry(aX(r), jE)], jE)
2134-
2135-
2136-
2137-@Callable(eA)
2188+ else $Tuple2([StringEntry(aZ(r), jW)], jW)
2189+
2190+
2191+
2192+@Callable(eP)
21382193 func commitForRandom () = {
2139- let iW = iT(eA)
2140- let jF = (height + bV)
2141- let b = toString(eA.caller)
2142- $Tuple2(([IntegerEntry(bW(b), jF)] :+ iW), jF)
2143- }
2144-
2145-
2146-
2147-@Callable(eA)
2194+ let jp = jm(eP)
2195+ let jX = (height + ck)
2196+ let b = toString(eP.caller)
2197+ $Tuple2(([IntegerEntry(cl(b), jX)] :+ jp), jX)
2198+ }
2199+
2200+
2201+
2202+@Callable(eP)
21482203 func buySLand () = {
2149- let iW = iT(eA)
2150- if ((size(eA.payments) != 1))
2204+ let jp = jm(eP)
2205+ if ((size(eP.payments) != 1))
21512206 then throw("Exactly one payment required")
21522207 else {
2153- let iX = value(eA.payments[0])
2154- if ((iX.assetId != bj))
2208+ let jq = value(eP.payments[0])
2209+ if ((jq.assetId != by))
21552210 then throw("Allowed USDT payment only!")
2156- else if ((iX.amount != cr))
2157- then throw(("Payment attached should be " + toString(cr)))
2211+ else if ((jq.amount != cG))
2212+ then throw(("Payment attached should be " + toString(cG)))
21582213 else {
2159- let dq = gH(eA.caller, eA.transactionId)
2160- $Tuple2((((dq._1 :+ ScriptTransfer(bN, iX.amount, bj)) ++ ik(toString(eA.caller), F)._1) :+ iW), dq._2._1)
2214+ let dF = gW(eP.caller, eP.transactionId)
2215+ $Tuple2((((dF._1 :+ ScriptTransfer(cc, jq.amount, by)) ++ iz(toString(eP.caller), H)._1) :+ jp), dF._2._1)
21612216 }
21622217 }
21632218 }
21642219
21652220
21662221
2167-@Callable(eA)
2168-func expedition (gQ,gR) = {
2169- let iW = iT(eA)
2170- if ((size(eA.payments) != 0))
2222+@Callable(eP)
2223+func expedition (hf,hg) = {
2224+ let jp = jm(eP)
2225+ if ((size(eP.payments) != 0))
21712226 then throw("No payments required")
21722227 else {
2173- let dq = hh(eA.caller, eA.transactionId, gQ, gR)
2174- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2175- $Tuple2(((dq._1 ++ ie(r, F)._1) :+ iW), $Tuple2(dq._2, dq._3))
2176- }
2177- }
2178-
2179-
2180-
2181-@Callable(eA)
2182-func upgradeInfra (aO) = {
2183- let iW = iT(eA)
2184- if ((size(eA.payments) != 0))
2228+ let dF = hw(eP.caller, eP.transactionId, hf, hg)
2229+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2230+ $Tuple2(((dF._1 ++ it(r, H)._1) :+ jp), $Tuple2(dF._2, dF._3))
2231+ }
2232+ }
2233+
2234+
2235+
2236+@Callable(eP)
2237+func upgradeInfra (aQ) = {
2238+ let jp = jm(eP)
2239+ if ((size(eP.payments) != 0))
21852240 then throw("No payments required")
21862241 else {
2187- let dq = hS(true, eA.caller, 0, aO)
2188- let r = valueOrErrorMessage(getString(aW(toString(eA.caller))), "You don't have a duck staked")
2189- $Tuple2(((dq._1 :+ iW) ++ ie(r, fraction(G, dq._3, bq))._1), dq._2)
2190- }
2191- }
2192-
2193-
2194-
2195-@Callable(eA)
2196-func activateArtifact (jG,jH) = {
2197- let iW = iT(eA)
2198- if ((size(eA.payments) != 0))
2242+ let dF = ih(true, eP.caller, 0, aQ)
2243+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2244+ $Tuple2(((dF._1 :+ jp) ++ it(r, fraction(I, dF._3, bF))._1), dF._2)
2245+ }
2246+ }
2247+
2248+
2249+
2250+@Callable(eP)
2251+func activateArtifact (jY,jZ) = {
2252+ let jp = jm(eP)
2253+ if ((size(eP.payments) != 0))
21992254 then throw("No payments required")
22002255 else {
2201- let b = toString(eA.caller)
2202- let dq = {
2203- let bk = jG
2204- if (("PRESALE" == bk))
2205- then is(b, jH)
2206- else if (("ONBOARD" == bk))
2207- then il(b)
2256+ let b = toString(eP.caller)
2257+ let dF = {
2258+ let bz = jY
2259+ if (("PRESALE" == bz))
2260+ then iH(b, jZ)
2261+ else if (("ONBOARD" == bz))
2262+ then iA(b)
22082263 else throw("Unknown artifact")
22092264 }
2210- (dq :+ iW)
2211- }
2212- }
2213-
2214-
2215-
2216-@Callable(eA)
2217-func mergeLands (ix) = {
2218- let iW = iT(eA)
2219- if ((size(eA.payments) != 0))
2265+ (dF :+ jp)
2266+ }
2267+ }
2268+
2269+
2270+
2271+@Callable(eP)
2272+func mergeLands (iM) = {
2273+ let jp = jm(eP)
2274+ if ((size(eP.payments) != 0))
22202275 then throw("No payments required")
22212276 else {
2222- let dq = iS(toString(eA.caller), ix)
2223- $Tuple2(((dq._1 :+ iW) ++ ik(toString(eA.caller), H)._1), dq._2)
2224- }
2225- }
2226-
2227-
2228-
2229-@Callable(eA)
2230-func cargoExchange (jI,aO) = {
2231- let iW = iT(eA)
2232- if ((size(eA.payments) != 0))
2277+ let dF = jh(toString(eP.caller), iM)
2278+ $Tuple2(((dF._1 :+ jp) ++ iz(toString(eP.caller), J)._1), dF._2)
2279+ }
2280+ }
2281+
2282+
2283+
2284+@Callable(eP)
2285+func cargoExchange (ka,aQ) = {
2286+ let jp = jm(eP)
2287+ if ((size(eP.payments) != 0))
22332288 then throw("No payments required")
22342289 else {
2235- let gl = split_4C(jI, ":")
2236- let b = toString(eA.originCaller)
2237- let hA = value(assetInfo(fromBase58String(aO)))
2238- let hB = aG(aO)
2239- if (!(isDefined(getInteger(hB))))
2240- then throw((hA.name + " is not staked"))
2290+ let gA = split_4C(ka, ":")
2291+ let b = toString(eP.originCaller)
2292+ let hP = value(assetInfo(fromBase58String(aQ)))
2293+ let hQ = aI(aQ)
2294+ if (!(isDefined(getInteger(hQ))))
2295+ then throw((hP.name + " is not staked"))
22412296 else {
2242- let hD = valueOrErrorMessage(getString(aD(aO)), (("NFT " + hA.name) + " is orphaned"))
2243- if ((hD != b))
2244- then throw((X + " is not yours"))
2297+ let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned"))
2298+ if ((hS != b))
2299+ then throw((Z + " is not yours"))
22452300 else {
2246- let fU = (cf(split(hA.description, "_")[bS]) / br)
2247- let fV = valueOrElse(getInteger(aH(aO)), 0)
2248- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2249- let hx = valueOrElse(getString(aY(r)), ae)
2250- let hy = split(value(hx), "_")
2251- if ((hy[bd] != "L"))
2252- then throw((("Duck location type is " + hy[bd]) + ", but should be L"))
2253- else if ((hy[be] != aO))
2254- then throw(("Duck should be on the land " + aO))
2301+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2302+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2303+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2304+ let hM = valueOrElse(getString(ba(r)), ag)
2305+ let hN = split(value(hM), "_")
2306+ if ((hN[bs] != "L"))
2307+ then throw((("Duck location type is " + hN[bs]) + ", but should be L"))
2308+ else if ((hN[bt] != aQ))
2309+ then throw(("Duck should be on the land " + aQ))
22552310 else {
2256- let fT = aN(aO)
2257- let fJ = fS(fT, fU, fV)
2258- let fE = aX(r)
2259- let gm = fD(fE)
2260- let dq = gk(gl, fJ, gm)
2261- let gb = split(fJ[at], "_")
2262- let hP = (parseIntValue(gb[av]) + dq._7)
2263- let hQ = (parseIntValue(gb[aw]) - dq._7)
2264-[StringEntry(fE, makeString_2C([gm[ay], dq._4, dq._5, dq._6], ":")), StringEntry(fT, makeString_2C([fJ[ap], dq._1, dq._2, dq._3, makeString([gb[au], toString(hP), toString(hQ), gb[ax]], "_")], ":")), iW]
2311+ let gi = aP(aQ)
2312+ let fY = gh(gi, gj, gk)
2313+ let fT = aZ(r)
2314+ let gB = fS(fT)
2315+ let dF = gz(gA, fY, gB)
2316+ let gq = split(fY[av], "_")
2317+ let ie = (parseIntValue(gq[ax]) + dF._7)
2318+ let if = (parseIntValue(gq[ay]) - dF._7)
2319+[StringEntry(fT, makeString_2C([gB[aA], dF._4, dF._5, dF._6], ":")), StringEntry(gi, makeString_2C([fY[ar], dF._1, dF._2, dF._3, makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")], ":")), jp]
22652320 }
22662321 }
22672322 }
22682323 }
22692324 }
22702325
22712326
22722327
2273-@Callable(eA)
2274-func saveWarehouse (fX,aO) = if ((eA.caller != bN))
2328+@Callable(eP)
2329+func saveWarehouse (gm,aQ) = if ((eP.caller != cc))
22752330 then throw("Access denied")
22762331 else {
2277- let fT = aN(aO)
2278- let fY = split_4C(fX, ":")
2279- if ((size(fY) != 5))
2332+ let gi = aP(aQ)
2333+ let gn = split_4C(gm, ":")
2334+ if ((size(gn) != 5))
22802335 then throw("warehouse string should contain 4 ':' separators")
22812336 else {
2282- let jJ = split(fY[at], "_")[au]
2283- let hP = fI(fY)
2284- let jK = fG(fY[ap])
2285- let hQ = ((jK - parseIntValue(jJ)) - hP)
2286- let jL = makeString_2C([fY[ap], fY[aq], fY[ar], fY[as], makeString([jJ, toString(hP), toString(hQ), toString(jK)], "_")], ":")
2287- $Tuple2([StringEntry(fT, jL)], jL)
2337+ let kb = split(gn[av], "_")[aw]
2338+ let ie = fX(gn)
2339+ let kc = fV(gn[ar])
2340+ let if = ((kc - parseIntValue(kb)) - ie)
2341+ let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([kb, toString(ie), toString(if), toString(kc)], "_")], ":")
2342+ $Tuple2([StringEntry(gi, kd)], kd)
22882343 }
22892344 }
22902345
22912346
22922347
2293-@Callable(eA)
2294-func fixWarehouseFormat (aO) = if ((eA.caller != bM))
2348+@Callable(eP)
2349+func fixWarehouseFormat (aQ) = if ((eP.caller != cb))
22952350 then throw("Access denied")
22962351 else {
2297- let fT = aN(aO)
2298- let hA = value(assetInfo(fromBase58String(aO)))
2299- let fU = (cf(split(hA.description, "_")[bS]) / br)
2300- let fV = valueOrElse(getInteger(aH(aO)), 0)
2301- let fY = fS(fT, fU, fV)
2302- let jJ = cd(invoke(bN, "recalcLockedVolumeREADONLY", [aO, fY], nil))
2303- let hP = fI(fY)
2304- let jK = fG(fY[ap])
2305- let hQ = ((jK - jJ) - hP)
2306- let jL = makeString_2C([fY[ap], fY[aq], fY[ar], fY[as], makeString([toString(jJ), toString(hP), toString(hQ), toString(jK)], "_")], ":")
2307- $Tuple2([StringEntry(fT, jL)], jL)
2308- }
2309-
2310-
2311-
2312-@Callable(eA)
2313-func fixStakedPieces (by) = if ((eA.caller != bM))
2352+ let gi = aP(aQ)
2353+ let hP = value(assetInfo(fromBase58String(aQ)))
2354+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2355+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2356+ let gn = gh(gi, gj, gk)
2357+ let kb = cs(invoke(cc, "recalcLockedVolumeREADONLY", [aQ, gn], nil))
2358+ let ie = fX(gn)
2359+ let kc = fV(gn[ar])
2360+ let if = ((kc - kb) - ie)
2361+ let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([toString(kb), toString(ie), toString(if), toString(kc)], "_")], ":")
2362+ $Tuple2([StringEntry(gi, kd)], kd)
2363+ }
2364+
2365+
2366+
2367+@Callable(eP)
2368+func fixStakedPieces (bN) = if ((eP.caller != cb))
23142369 then throw("Access denied")
23152370 else {
2316- let iN = if ((by == ""))
2371+ let jc = if ((bN == ""))
23172372 then 0
23182373 else {
2319- let iI = getString(T, bY(by))
2320- let iE = if (isDefined(iI))
2321- then split_51C(value(iI), "_")
2374+ let iX = getString(V, cn(bN))
2375+ let iT = if (isDefined(iX))
2376+ then split_51C(value(iX), "_")
23222377 else nil
2323- func jM (cY,aO) = {
2324- let hA = value(assetInfo(fromBase58String(aO)))
2325- let cg = split(hA.description, "_")[bS]
2326- (cY + cf(cg))
2378+ func ke (dn,aQ) = {
2379+ let hP = value(assetInfo(fromBase58String(aQ)))
2380+ let cv = split(hP.description, "_")[ch]
2381+ (dn + cu(cv))
23272382 }
23282383
2329- let da = iE
2330- let db = size(da)
2331- let dc = 0
2332- func dd (de,df) = if ((df >= db))
2333- then de
2334- else jM(de, da[df])
2335-
2336- func dg (de,df) = if ((df >= db))
2337- then de
2384+ let dp = iT
2385+ let dq = size(dp)
2386+ let dr = 0
2387+ func ds (dt,du) = if ((du >= dq))
2388+ then dt
2389+ else ke(dt, dp[du])
2390+
2391+ func dv (dt,du) = if ((du >= dq))
2392+ then dt
23382393 else throw("List size exceeds 100")
23392394
2340- dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
2395+ dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
23412396 }
2342- $Tuple2([IntegerEntry(bZ(by), iN)], iN)
2343- }
2344-
2345-
2346-
2347-@Callable(eA)
2348-func setCustomName (aE,iG,aJ) = {
2349- let iW = iT(eA)
2350- if ((size(eA.payments) != 1))
2397+ $Tuple2([IntegerEntry(co(bN), jc)], jc)
2398+ }
2399+
2400+
2401+
2402+@Callable(eP)
2403+func setCustomName (aG,iV,aL) = {
2404+ let jp = jm(eP)
2405+ if ((size(eP.payments) != 1))
23512406 then throw("Exactly one payment required")
23522407 else {
2353- let iX = value(eA.payments[0])
2354- if ((iX.assetId != bj))
2408+ let jq = value(eP.payments[0])
2409+ if ((jq.assetId != by))
23552410 then throw("Allowed USDT payment only!")
2356- else if ((iX.amount != cn))
2357- then throw(("Payment should be " + toString(cn)))
2358- else if (contains(iG, "__"))
2359- then throw(("Name should not contain '__': " + iG))
2360- else if ((size(iG) > co))
2361- then throw(("Name too long, maxLength=" + toString(co)))
2411+ else if ((jq.amount != cC))
2412+ then throw(("Payment should be " + toString(cC)))
2413+ else if (contains(iV, "__"))
2414+ then throw(("Name should not contain '__': " + iV))
2415+ else if ((size(iV) > cD))
2416+ then throw(("Name too long, maxLength=" + toString(cD)))
23622417 else {
2363- let b = toString(eA.originCaller)
2364- let jN = {
2365- let bk = aJ
2366- if (("ACCOUNT" == bk))
2418+ let b = toString(eP.originCaller)
2419+ let kf = {
2420+ let bz = aL
2421+ if (("ACCOUNT" == bz))
23672422 then {
2368- let jO = cI(iG)
2369- let jP = getString(jO)
2370- if (isDefined(jP))
2371- then throw(("Name already registered: " + iG))
2423+ let kg = cX(iV)
2424+ let kh = getString(kg)
2425+ if (isDefined(kh))
2426+ then throw(("Name already registered: " + iV))
23722427 else {
2373- let jQ = aQ(b)
2374- let jR = getString(jQ)
2375- let jS = if (isDefined(jR))
2376- then [DeleteEntry(cI(value(jR)))]
2428+ let ki = aS(b)
2429+ let kj = getString(ki)
2430+ let kk = if (isDefined(kj))
2431+ then [DeleteEntry(cX(value(kj)))]
23772432 else nil
2378- (((jS :+ StringEntry(jQ, iG)) :+ StringEntry(jO, b)) ++ ik(b, E)._1)
2433+ (((kk :+ StringEntry(ki, iV)) :+ StringEntry(kg, b)) ++ iz(b, G)._1)
23792434 }
23802435 }
2381- else if (("LAND" == bk))
2436+ else if (("LAND" == bz))
23822437 then {
2383- let hA = value(assetInfo(fromBase58String(aE)))
2384- let hB = aG(aE)
2385- if (!(isDefined(getInteger(hB))))
2386- then throw((hA.name + " is not staked"))
2438+ let hP = value(assetInfo(fromBase58String(aG)))
2439+ let hQ = aI(aG)
2440+ if (!(isDefined(getInteger(hQ))))
2441+ then throw((hP.name + " is not staked"))
23872442 else {
2388- let hD = valueOrErrorMessage(getString(aD(aE)), (("NFT " + hA.name) + " is orphaned"))
2389- if ((hD != b))
2390- then throw((X + " is not yours"))
2443+ let hS = valueOrErrorMessage(getString(aF(aG)), (("NFT " + hP.name) + " is orphaned"))
2444+ if ((hS != b))
2445+ then throw((Z + " is not yours"))
23912446 else {
2392- let jO = cC(iG)
2393- let jP = getString(jO)
2394- if (isDefined(jP))
2395- then throw(("Name already registered: " + iG))
2447+ let kg = cR(iV)
2448+ let kh = getString(kg)
2449+ if (isDefined(kh))
2450+ then throw(("Name already registered: " + iV))
23962451 else {
2397- let jT = aF(aE)
2398- let jR = getString(jT)
2399- let jS = if (isDefined(jR))
2400- then [DeleteEntry(cC(value(jR)))]
2452+ let kl = aH(aG)
2453+ let kj = getString(kl)
2454+ let kk = if (isDefined(kj))
2455+ then [DeleteEntry(cR(value(kj)))]
24012456 else nil
2402- (((jS :+ StringEntry(jT, iG)) :+ StringEntry(jO, aE)) ++ ik(b, E)._1)
2457+ (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ iz(b, G)._1)
24032458 }
24042459 }
24052460 }
24062461 }
2407- else if (("DUCK" == bk))
2462+ else if (("DUCK" == bz))
24082463 then {
2409- let hA = value(assetInfo(fromBase58String(aE)))
2410- let hB = aG(aE)
2411- if (if (!(isDefined(getInteger(hB))))
2464+ let hP = value(assetInfo(fromBase58String(aG)))
2465+ let hQ = aI(aG)
2466+ if (if (!(isDefined(getInteger(hQ))))
24122467 then true
2413- else !(isDefined(getString(aW(b)))))
2414- then throw((hA.name + " is not staked"))
2468+ else !(isDefined(getString(aY(b)))))
2469+ then throw((hP.name + " is not staked"))
24152470 else {
2416- let hD = valueOrErrorMessage(getString(aV(aE)), (("NFT " + hA.name) + " is orphaned"))
2417- if ((hD != b))
2418- then throw((Y + " is not yours"))
2471+ let hS = valueOrErrorMessage(getString(aX(aG)), (("NFT " + hP.name) + " is orphaned"))
2472+ if ((hS != b))
2473+ then throw((aa + " is not yours"))
24192474 else {
2420- let jO = cH(iG)
2421- let jP = getString(jO)
2422- if (isDefined(jP))
2423- then throw(("Name already registered: " + iG))
2475+ let kg = cW(iV)
2476+ let kh = getString(kg)
2477+ if (isDefined(kh))
2478+ then throw(("Name already registered: " + iV))
24242479 else {
2425- let jT = aP(aE)
2426- let jR = getString(jT)
2427- let jS = if (isDefined(jR))
2428- then [DeleteEntry(cH(value(jR)))]
2480+ let kl = aR(aG)
2481+ let kj = getString(kl)
2482+ let kk = if (isDefined(kj))
2483+ then [DeleteEntry(cW(value(kj)))]
24292484 else nil
2430- (((jS :+ StringEntry(jT, iG)) :+ StringEntry(jO, aE)) ++ ie(aE, E)._1)
2485+ (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ it(aG, G)._1)
24312486 }
24322487 }
24332488 }
24342489 }
24352490 else throw("Unknown entity type")
24362491 }
2437- $Tuple2(((jN :+ ScriptTransfer(bN, iX.amount, bj)) :+ iW), 0)
2492+ $Tuple2(((kf :+ ScriptTransfer(cc, jq.amount, by)) :+ jp), 0)
24382493 }
24392494 }
24402495 }
24412496
24422497
24432498
2444-@Callable(eA)
2445-func setReferrals (jU,jV) = if ((eA.callerPublicKey != ck))
2499+@Callable(eP)
2500+func setReferrals (km,kn) = if ((eP.callerPublicKey != cz))
24462501 then throw("Permission denied")
24472502 else {
2448- let iW = iT(eA)
2449- if ((size(eA.payments) != 0))
2503+ let jp = jm(eP)
2504+ if ((size(eP.payments) != 0))
24502505 then throw("No payments required")
2451- else if (!(isDefined(addressFromString(jU))))
2452- then throw(("Invalid address: " + jU))
2453- else if (!(isDefined(addressFromString(jV))))
2454- then throw(("Invalid address: " + jV))
2506+ else if (!(isDefined(addressFromString(km))))
2507+ then throw(("Invalid address: " + km))
2508+ else if (!(isDefined(addressFromString(kn))))
2509+ then throw(("Invalid address: " + kn))
24552510 else {
2456- let jW = cJ()
2457- let jX = getString(jW)
2458- let jY = if (isDefined(jX))
2459- then split_4C(value(jX), "_")
2511+ let ko = cY()
2512+ let kp = getString(ko)
2513+ let kq = if (isDefined(kp))
2514+ then split_4C(value(kp), "_")
24602515 else nil
2461- if (containsElement(jY, jV))
2462- then throw((jV + " is not newbie (already has referrals)"))
2516+ if (containsElement(kq, kn))
2517+ then throw((kn + " is not newbie (already has referrals)"))
24632518 else {
2464- let im = aR(jV)
2465- let in = getString(im)
2466- if (if (isDefined(in))
2467- then isDefined(addressFromString(value(in)))
2519+ let iB = aT(kn)
2520+ let iC = getString(iB)
2521+ if (if (isDefined(iC))
2522+ then isDefined(addressFromString(value(iC)))
24682523 else false)
2469- then throw(((jV + " already has refBy: ") + value(in)))
2524+ then throw(((kn + " already has refBy: ") + value(iC)))
24702525 else {
2471- let jZ = aU(jU)
2472- let ka = getString(jZ)
2473- let kb = if (isDefined(ka))
2474- then split_4C(value(ka), "_")
2526+ let kr = aW(km)
2527+ let ks = getString(kr)
2528+ let kt = if (isDefined(ks))
2529+ then split_4C(value(ks), "_")
24752530 else nil
2476- if (containsElement(kb, jV))
2477- then throw((((jU + " already contains ") + jV) + " within referrals"))
2531+ if (containsElement(kt, kn))
2532+ then throw((((km + " already contains ") + kn) + " within referrals"))
24782533 else {
2479- let kc = makeString_2C((kb :+ jV), "_")
2480- let kd = if (containsElement(jY, jU))
2481- then value(jX)
2482- else makeString_2C((jY :+ jU), "_")
2483- $Tuple2([StringEntry(im, jU), StringEntry(jZ, kc), StringEntry(jW, kd), iW], 0)
2534+ let ku = makeString_2C((kt :+ kn), "_")
2535+ let kv = if (containsElement(kq, km))
2536+ then value(kp)
2537+ else makeString_2C((kq :+ km), "_")
2538+ $Tuple2([StringEntry(iB, km), StringEntry(kr, ku), StringEntry(ko, kv), jp], 0)
24842539 }
24852540 }
24862541 }
24872542 }
24882543 }
24892544
24902545
24912546
2492-@Callable(eA)
2493-func distributePoints (ke,kf,kg,kh,ki) = {
2494- let iW = iT(eA)
2495- if ((size(eA.payments) != 0))
2547+@Callable(eP)
2548+func distributePoints (kw,kx,ky,kz,kA) = {
2549+ let jp = jm(eP)
2550+ if ((size(eP.payments) != 0))
24962551 then throw("No payments required")
24972552 else {
2498- let b = toString(eA.originCaller)
2499- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2500- let kj = z(b)
2501- let kk = valueOrElse(getInteger(T, kj), 0)
2502- let kl = v(r)
2503- let km = valueOrElse(getInteger(T, kl), 0)
2504- let kn = (kk + km)
2505- let ko = ((((ke + kf) + kg) + kh) + ki)
2506- if ((ko > kn))
2507- then throw((("There are only " + toString(kn)) + " free points to distribute"))
2553+ let b = toString(eP.originCaller)
2554+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2555+ let kB = z(b)
2556+ let kC = valueOrElse(getInteger(V, kB), 0)
2557+ let kD = v(r)
2558+ let kE = valueOrElse(getInteger(V, kD), 0)
2559+ let kF = (kC + kE)
2560+ let kG = ((((kw + kx) + ky) + kz) + kA)
2561+ if ((kG > kF))
2562+ then throw((("There are only " + toString(kF)) + " free points to distribute"))
25082563 else {
2509- let kp = s(r)
2510- let U = split(valueOrElse(getString(T, kp), "0_0_0_0_0"), "_")
2511- let kq = (kk - ko)
2512- $Tuple2([IntegerEntry(kj, if ((0 > kq))
2564+ let kH = s(r)
2565+ let W = split(valueOrElse(getString(V, kH), "0_0_0_0_0"), "_")
2566+ let kI = (kC - kG)
2567+ $Tuple2([IntegerEntry(kB, if ((0 > kI))
25132568 then 0
2514- else kq), IntegerEntry(kl, if ((0 > kq))
2515- then (km + kq)
2516- else km), StringEntry(kp, makeString([toString((parseIntValue(U[h]) + ke)), toString((parseIntValue(U[i]) + kf)), toString((parseIntValue(U[j]) + kg)), toString((parseIntValue(U[k]) + kh)), toString((parseIntValue(U[l]) + ki))], "_")), iW], 0)
2569+ else kI), IntegerEntry(kD, if ((0 > kI))
2570+ then (kE + kI)
2571+ else kE), StringEntry(kH, makeString([toString((parseIntValue(W[h]) + kw)), toString((parseIntValue(W[i]) + kx)), toString((parseIntValue(W[j]) + ky)), toString((parseIntValue(W[k]) + kz)), toString((parseIntValue(W[l]) + kA))], "_")), jp], 0)
25172572 }
25182573 }
25192574 }
25202575
25212576
25222577
2523-@Callable(eA)
2524-func splitByGlobalWeightsREADONLY (gi) = $Tuple2(nil, dh(gi))
2525-
2526-
2527-
2528-@Callable(eA)
2529-func splitByGlobalAndLocalWeightsREADONLY (kr,ks,eD) = {
2530- let ew = eC(eD)
2531- $Tuple2(nil, $Tuple2(dh(kr), cS(ks, ew)))
2532- }
2533-
2534-
2535-
2536-@Callable(eA)
2537-func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fD(aX(r)), ":"))
2538-
2539-
2540-
2541-@Callable(eA)
2542-func getWarehouseREADONLY (aO) = {
2543- let hA = value(assetInfo(fromBase58String(aO)))
2544- let fU = (cf(split(hA.description, "_")[bS]) / br)
2545- let fV = valueOrElse(getInteger(aH(aO)), 0)
2546- $Tuple2(nil, makeString_2C(fS(aN(aO), fU, fV), ":"))
2547- }
2548-
2549-
2550-
2551-@Callable(eA)
2578+@Callable(eP)
2579+func splitByGlobalWeightsREADONLY (gx) = $Tuple2(nil, dw(gx))
2580+
2581+
2582+
2583+@Callable(eP)
2584+func splitByGlobalAndLocalWeightsREADONLY (kJ,kK,eS) = {
2585+ let eL = eR(eS)
2586+ $Tuple2(nil, $Tuple2(dw(kJ), dh(kK, eL)))
2587+ }
2588+
2589+
2590+
2591+@Callable(eP)
2592+func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fS(aZ(r)), ":"))
2593+
2594+
2595+
2596+@Callable(eP)
2597+func getWarehouseREADONLY (aQ) = {
2598+ let hP = value(assetInfo(fromBase58String(aQ)))
2599+ let gj = (cu(split(hP.description, "_")[ch]) / bG)
2600+ let gk = valueOrElse(getInteger(aJ(aQ)), 0)
2601+ $Tuple2(nil, makeString_2C(gh(aP(aQ), gj, gk), ":"))
2602+ }
2603+
2604+
2605+
2606+@Callable(eP)
25522607 func saveLastTx () = {
2553- let gI = eA.caller
2554- if (if (if ((gI != bP))
2555- then (gI != bN)
2608+ let gX = eP.caller
2609+ if (if (if ((gX != ce))
2610+ then (gX != cc)
25562611 else false)
2557- then (gI != bQ)
2612+ then (gX != cf)
25582613 else false)
25592614 then throw("Access denied")
2560- else $Tuple2([iT(eA)], 42)
2561- }
2562-
2563-
2564-
2565-@Callable(eA)
2566-func updateDuckStats (r,if) = if ((eA.caller != bN))
2615+ else $Tuple2([jm(eP)], 42)
2616+ }
2617+
2618+
2619+
2620+@Callable(eP)
2621+func updateDuckStats (r,iu) = if ((eP.caller != cc))
25672622 then throw("Access denied")
2568- else ie(r, if)
2569-
2570-
2571-
2572-@Callable(eA)
2573-func updateAccStats (b,if) = if ((eA.caller != bN))
2623+ else it(r, iu)
2624+
2625+
2626+
2627+@Callable(eP)
2628+func updateAccStats (b,iu) = if ((eP.caller != cc))
25742629 then throw("Access denied")
2575- else ik(b, if)
2576-
2577-
2578-
2579-@Callable(eA)
2580-func equipDuck (kt) = {
2581- let iW = iT(eA)
2582- if ((size(eA.payments) != 0))
2630+ else iz(b, iu)
2631+
2632+
2633+
2634+@Callable(eP)
2635+func equipDuck (kL) = {
2636+ let jp = jm(eP)
2637+ if ((size(eP.payments) != 0))
25832638 then throw("No payments required")
25842639 else {
2585- let b = toString(eA.originCaller)
2586- let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked")
2587- let hk = w(r)
2588- let ku = split(valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2589- let fE = aX(r)
2590- let gm = fD(fE)
2591- let hm = split(kt, "_")
2592- if ((size(hm) != m))
2593- then throw("Wrong equipment string")
2640+ let b = toString(eP.originCaller)
2641+ let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked")
2642+ if (ji(r))
2643+ then throw("checkTournament")
25942644 else {
2595- let dP = S(this, r)
2596- let kv = en(ku, dE(gm[aB]), true, dP)
2597- let kw = en(hm, kv, false, dP)
2598- let kx = dJ(kw)
2599- $Tuple2([StringEntry(hk, kt), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], kx], ":")), iW], 0)
2645+ let hz = w(r)
2646+ let kM = split(valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2647+ let fT = aZ(r)
2648+ let gB = fS(fT)
2649+ let hB = split(kL, "_")
2650+ if ((size(hB) != m))
2651+ then throw("Wrong equipment string")
2652+ else {
2653+ let ee = U(this, r)
2654+ let kN = eC(kM, dT(gB[aD]), true, ee)
2655+ let kO = eC(hB, kN, false, ee)
2656+ let kP = dY(kO)
2657+ $Tuple2([StringEntry(hz, kL), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], kP], ":")), jp], 0)
2658+ }
26002659 }
26012660 }
26022661 }
2662+
2663+
2664+
2665+@Callable(eP)
2666+func initDuckTourAttempt (r) = if ((eP.caller != cf))
2667+ then throw("Access denied")
2668+ else {
2669+ let jp = jm(eP)
2670+ let hq = q(r)
2671+ let hr = O(valueOrElse(getInteger(u(r)), 0))
2672+ let jB = valueOrElse(getInteger(hq), hr)
2673+ let kQ = ba(r)
2674+ let hM = valueOrElse(getString(kQ), ag)
2675+ let jj = valueOrElse(getInteger(cf, bf), 0)
2676+ let kR = (toString(jj) + "_T_0")
2677+ $Tuple2([jp, IntegerEntry(A(r), jB), IntegerEntry(hq, 100), StringEntry(B(r), hM), StringEntry(kQ, kR)], kR)
2678+ }
2679+
2680+
2681+
2682+@Callable(eP)
2683+func exitTournaments () = {
2684+ let jp = jm(eP)
2685+ let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked")
2686+ let kQ = ba(r)
2687+ let hM = valueOrElse(getString(kQ), ag)
2688+ if ((split(hM, "_")[bs] != "T"))
2689+ then throw("Your duck is not in the tournament")
2690+ else {
2691+ let kS = getIntegerValue(A(r))
2692+ let kT = getStringValue(B(r))
2693+ $Tuple2([jp, IntegerEntry(q(r), kS), StringEntry(kQ, kT)], hM)
2694+ }
2695+ }
2696+
2697+
2698+
2699+@Callable(eP)
2700+func exitTournamentInternal (r) = if ((eP.caller != this))
2701+ then throw("Access denied")
2702+ else {
2703+ let kS = getIntegerValue(A(r))
2704+ let kT = getStringValue(B(r))
2705+ $Tuple2([IntegerEntry(q(r), kS), StringEntry(ba(r), kT)], 0)
2706+ }
26032707
26042708

github/deemru/w8io/169f3d6 
1358.94 ms